diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 000000000000..9f4502e4644e --- /dev/null +++ b/.bazelignore @@ -0,0 +1 @@ +infra/bots/.recipe_deps diff --git a/.bazelrc b/.bazelrc index 27219017d277..3a3b2a31cf26 100644 --- a/.bazelrc +++ b/.bazelrc @@ -63,8 +63,6 @@ build --flag_alias=disable_native_interface=no//src/gpu/ganesh/gl:enable_native_ build --flag_alias=enable_native_interface=//src/gpu/ganesh/gl:enable_native_interface build --flag_alias=disable_pdf_backend=no//src/pdf:enable_pdf_backend build --flag_alias=enable_pdf_backend=//src/pdf:enable_pdf_backend -build --flag_alias=disable_sksl=no//src/sksl:enable_sksl -build --flag_alias=enable_sksl=//src/sksl:enable_sksl build --flag_alias=disable_skslc=no//src/sksl:enable_skslc build --flag_alias=enable_skslc=//src/sksl:enable_skslc build --flag_alias=disable_sksl_tracing=no//src/sksl:enable_sksl_tracing @@ -133,9 +131,9 @@ build:remote --spawn_strategy=remote,sandboxed # Enable remote execution so actions are performed on the remote systems. build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com -# No compile task should take more than 180 seconds. Really long running tasks -# are probably a result of spinning up new workers. -build:remote --remote_timeout=180 +# Some long running tasks are linking because the workers have relatively little RAM +# (at least as of now). +build:remote --remote_timeout=300 # Enable authentication. This will pick up application default credentials by # default. You can use --google_credentials=some_file.json to use a service diff --git a/.disabled.go.mod b/.disabled.go.mod index 19eacc72f691..4d60f0256979 100644 --- a/.disabled.go.mod +++ b/.disabled.go.mod @@ -1,18 +1,78 @@ module go.skia.org/skia -go 1.12 +go 1.18 require ( cloud.google.com/go/pubsub v1.8.3 cloud.google.com/go/storage v1.14.0 - github.com/bazelbuild/remote-apis-sdks v0.0.0-20201120151053-8f976b9bf4fc // indirect github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/google/uuid v1.1.2 - github.com/klauspost/compress v1.11.3 // indirect github.com/stretchr/testify v1.7.0 go.chromium.org/luci v0.0.0-20201121231857-b9ab316d7198 // indirect - go.skia.org/infra v0.0.0-20230807174633-333a87d1ef8a + go.skia.org/infra v0.0.0-20230904042911-f5590cb5133d google.golang.org/api v0.74.0 google.golang.org/protobuf v1.28.0 ) + +require ( + cloud.google.com/go v0.100.2 // indirect + cloud.google.com/go/compute v1.5.0 // indirect + cloud.google.com/go/iam v0.3.0 // indirect + cloud.google.com/go/logging v1.1.1 // indirect + cloud.google.com/go/secretmanager v1.4.0 // indirect + github.com/aclements/go-moremath v0.0.0-20190830160640-d16893ddf098 // indirect + github.com/bazelbuild/remote-apis v0.0.0-20201209220655-9e72daff42c9 // indirect + github.com/bazelbuild/remote-apis-sdks v0.0.0-20201120151053-8f976b9bf4fc // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cenkalti/backoff v2.2.1+incompatible // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/danjacques/gofslock v0.0.0-20200623023034-5d0bd0fa6ef0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fiorix/go-web v1.0.1-0.20150221144011-5b593f1e8966 // indirect + github.com/go-chi/chi/v5 v5.0.8 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-cmp v0.5.7 // indirect + github.com/googleapis/gax-go/v2 v2.3.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.0 // indirect + github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect + github.com/invopop/jsonschema v0.7.0 // indirect + github.com/jcgregorio/logger v0.1.3 // indirect + github.com/jcgregorio/slog v0.0.0-20190423190439-e6f2d537f900 // indirect + github.com/julienschmidt/httprouter v1.3.0 // indirect + github.com/klauspost/compress v1.11.3 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/pborman/uuid v1.2.1 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.11.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.26.0 // indirect + github.com/prometheus/procfs v0.6.0 // indirect + github.com/smartystreets/goconvey v1.8.1 // indirect + github.com/stretchr/objx v0.3.0 // indirect + github.com/texttheater/golang-levenshtein v1.0.1 // indirect + github.com/willf/bitset v1.1.11 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/zeebo/bencode v1.0.0 // indirect + go.opencensus.io v0.23.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a // indirect + golang.org/x/sync v0.2.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46 // indirect + google.golang.org/grpc v1.45.0 // indirect + gopkg.in/fsnotify.v1 v1.4.7 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/.disabled.go.sum b/.disabled.go.sum index ee6483ecde77..a37b741f3ae0 100644 --- a/.disabled.go.sum +++ b/.disabled.go.sum @@ -3,7 +3,6 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -29,9 +28,7 @@ cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aD cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -40,31 +37,21 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.17.0/go.mod h1:pUlbH9kNOnp6ayShsqKLB6w49z14ILAaq0hrjh93Ajw= -cloud.google.com/go/bigtable v1.6.0/go.mod h1:tqUJmGg13x13j3xXf6oUXsB7ZEI1mxd5wGMvLStr8y0= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0 h1:b1zWmYuuHz7gO9kDcM/EpHGr06UgsYNRpNJzI2kFiLM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/container v1.2.0/go.mod h1:Cj2AgMsCUfMVfbGh0Fx7u5Ah/qeC0ajLrqqGGiAdCGw= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.3.0/go.mod h1:HMXIAklx0N49XfVDSw1orj80NgkzaLRO9MW/uEIzoD0= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/kms v1.4.0 h1:iElbfoE61VeLhnZcGOltqL8HIly8Nhbe5t6JlH9GXjo= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/logging v1.1.1 h1:mU+6wZyP0llWyobJ+aJFqeEfDzMp95R449wEPPILVX0= cloud.google.com/go/logging v1.1.1/go.mod h1:oShOorPr2XGlPEXXI9VUJQH10md4lW25RYpSJjhE0TM= -cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.8.2/go.mod h1:tQ1zYqOrDLXxRyNeL/CQW58NaVOTnPPDYFxmJQ1k3QI= cloud.google.com/go/pubsub v1.8.3 h1:kl5QdIn98mYhX+G7OzdQ9W3SQ0XXdhHlTw0GHa723pI= cloud.google.com/go/pubsub v1.8.3/go.mod h1:m8NMRz5lt0YjbQQ40RjocDVRjgYyzyYpP6ix3dxwRno= cloud.google.com/go/secretmanager v1.4.0 h1:Cl+kDYvKHjPQ1l2DZDr2FG/cXUzNGCZkh05BARgddo8= @@ -76,41 +63,15 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0 h1:6RRlFMv1omScs6iq2hfE3IvgE+l6RfJPampq8UZc5TU= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= -contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/Jeffail/gabs/v2 v2.6.0/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/a8m/envsubst v1.2.0/go.mod h1:PpvLvNWa+Rvu/10qXmFbFiGICIU5hZvFJNPCCkUaObg= github.com/aclements/go-gg v0.0.0-20170323211221-abd1f791f5ee/go.mod h1:55qNq4vcpkIuHowELi5C8e+1yUHtoLoOUR9QU5j7Tes= github.com/aclements/go-moremath v0.0.0-20190830160640-d16893ddf098 h1:a7+Y8VlXRC2VX5ue6tpCutr4PsrkRkWWVZv4zqfaHuc= github.com/aclements/go-moremath v0.0.0-20190830160640-d16893ddf098/go.mod h1:idZL3yvz4kzx1dsBOAC+oYv6L92P1oFEhUXUB1A/lwQ= github.com/ajstarks/deck v0.0.0-20191009173945-82d717002242/go.mod h1:j3f/59diR4DorW5A78eDYvRkdrkh+nps4p5LA1Tl05U= github.com/ajstarks/svgo v0.0.0-20190826172357-de52242f3d65/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= -github.com/alecthomas/jsonschema v0.0.0-20210526225647-edb03dcab7bc h1:mT8qSzuyEAkxbv4GBln7yeuQZpBnfikr3PTuiPs6Z3k= -github.com/alecthomas/jsonschema v0.0.0-20210526225647-edb03dcab7bc/go.mod h1:/n6+1/DWPltRLWL/VKyUxg6tzsl5kHUCcraimt4vr60= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -118,56 +79,28 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.29.11/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= -github.com/aws/aws-sdk-go v1.35.18/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= -github.com/bazelbuild/bazel-gazelle v0.23.0/go.mod h1:3mHi4TYn0QxwdMKPJfj3FKhZxYgWm46DjWQQPOg20BY= -github.com/bazelbuild/buildtools v0.0.0-20200718160251-b1667ff58f71/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= -github.com/bazelbuild/buildtools v0.0.0-20201102150426-f0f162f0456b/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= github.com/bazelbuild/remote-apis v0.0.0-20200904140912-1aeb39973178/go.mod h1:9Y+1FnaNUGVV6wKE0Jdh+mguqDUsyd9uUqokalrC7DQ= github.com/bazelbuild/remote-apis v0.0.0-20201209220655-9e72daff42c9 h1:/EMHYfINZDLrrr4f72+MxCYvmJ9EYcL8PYbQFHrnm38= github.com/bazelbuild/remote-apis v0.0.0-20201209220655-9e72daff42c9/go.mod h1:9Y+1FnaNUGVV6wKE0Jdh+mguqDUsyd9uUqokalrC7DQ= -github.com/bazelbuild/remote-apis-sdks v0.0.0-20201110004117-e776219c9bb7/go.mod h1:SvHtabqK9r562BLgmQfd+s5hzd9UUS903b0OmQHvzrI= github.com/bazelbuild/remote-apis-sdks v0.0.0-20201120151053-8f976b9bf4fc h1:T8tt5LPzm/nE/+DdopIs+6qOOAUNme01K7+d5y5lkxc= github.com/bazelbuild/remote-apis-sdks v0.0.0-20201120151053-8f976b9bf4fc/go.mod h1:SvHtabqK9r562BLgmQfd+s5hzd9UUS903b0OmQHvzrI= -github.com/bazelbuild/rules_go v0.0.0-20190719190356-6dae44dc5cab/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar v1.2.2/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -176,29 +109,9 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/cockroach-go/v2 v2.1.0/go.mod h1:ilhrLnPDDwGHL+iK2UxQhp1UzUhst8sfItSAgCYwAyg= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/cc v0.0.0-20181122101902-d673e9b70d4d/go.mod h1:m3fD/V+XTB35Kh9zw6dzjMY+We0Q7PMf6LLIC4vuG9k= github.com/cznic/fileutil v0.0.0-20181122101858-4d67cfea8c87/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg= github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= @@ -214,18 +127,8 @@ github.com/danjacques/gofslock v0.0.0-20200623023034-5d0bd0fa6ef0/go.mod h1:DC3J github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -234,37 +137,20 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fiorix/go-web v1.0.1-0.20150221144011-5b593f1e8966 h1:P/Czr+qFBdKELw4nys0x2e5nkT9niVq/2FS63ArJzm4= github.com/fiorix/go-web v1.0.1-0.20150221144011-5b593f1e8966/go.mod h1:5OPf/2cFhfql2NdV8pCcv9fZJ0e0LC//L+72iX1cqDM= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633/go.mod h1:NJDK3/o7abx6PP54EOe0G0n0RLmhCo9xv61gUYpI0EY= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -274,32 +160,13 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-python/gpython v0.0.3/go.mod h1:bmk0l57W/7Cs67MMnz4U28SoYyvz5NTMYyJvUqytJhs= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -334,9 +201,7 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= @@ -344,7 +209,6 @@ github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2 github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -361,13 +225,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-github/v29 v29.0.3/go.mod h1:CHKiKKPHJ0REzfwc14QMklvtHwCveD0PxlMjLlzAM5E= -github.com/google/go-licenses v0.0.0-20210816172045-3099c18c36e1/go.mod h1:WkPB6PtjnM1pF4qeK8RcFmk7z+TIsrPYOng7OPlFDiw= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148/go.mod h1:rq9F0RSpNKlrefnf6ZYMHKUnEJBCNzf6AcCXMYBeYvE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -391,12 +250,9 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -405,315 +261,84 @@ github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0 github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= -github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherwasm v1.0.0/go.mod h1:SkZ8z7CWBz5VXbhJel8TxCmAcsQqzgWGR/8nMhyhZSI= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= -github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= -github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= -github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= -github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.7.0/go.mod h1:sF/lPpNEMEOp+IYhyQGdAvrG20gWf6A1tKlr0v7JMeA= -github.com/jackc/pgconn v1.7.2/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= -github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= -github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= -github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= -github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= -github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= -github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= -github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.0.5/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= -github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= -github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= -github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= -github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= -github.com/jackc/pgtype v1.5.0/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= -github.com/jackc/pgtype v1.6.1/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= -github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= -github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= -github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= -github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= -github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= -github.com/jackc/pgx/v4 v4.9.0/go.mod h1:MNGWmViCgqbZck9ujOOBN63gK9XVGILXWCvKLGKmnms= -github.com/jackc/pgx/v4 v4.9.2/go.mod h1:Jt/xJDqjUDUOMSv8VMWPQlCObVgF2XOgqKsW8S4ROYA= -github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= -github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.2/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= +github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/jcgregorio/logger v0.1.3 h1:KKKWn4Q0bPpGtLFWEF3Pkv0VtX8Oru3cK0OH0ZozYik= github.com/jcgregorio/logger v0.1.3/go.mod h1:bluD21Aj6/H3hUey6bnsZsIUf/IzO880aQ5iwBWWEy4= github.com/jcgregorio/slog v0.0.0-20190423190439-e6f2d537f900 h1:H8hiPQr5PtkrB5z3Do/9iR5tEwuAFNim68cqcoAlHeY= github.com/jcgregorio/slog v0.0.0-20190423190439-e6f2d537f900/go.mod h1:YT3uVwwZ2P4vmZcM3xICUNJ6dqBwoiSgVAqxHu3rcoo= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.13.0/go.mod h1:1hl7y57EsiPAkLbOwzpzqgx1A30nQCk/YmFV8S2vmK0= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.11.3 h1:dB4Bn0tN3wdCzQxnS8r06kV74qN/TAfaIS0bVE8h3jc= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.4.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/luci/gtreap v0.0.0-20161228054646-35df89791e8f h1:Kkxfmkf53vnIADWIhzvJ0GvwVR/gz9U7F7Wqofqd7dU= -github.com/luci/gtreap v0.0.0-20161228054646-35df89791e8f/go.mod h1:OjKOY0UvVOOH5nWXSIWTbQWESn8dDiGlaEZx6IAsWhU= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= -github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.5/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/olivere/elastic/v7 v7.0.12/go.mod h1:14rWX28Pnh3qCKYRVnSGXWLf9MbLonYS/4FDCY3LAPo= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/peterh/liner v1.1.0/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/phpdave11/gofpdi v1.0.7/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -721,96 +346,29 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/protocolbuffers/txtpbfmt v0.0.0-20230412060525-fa9f017c0ded/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= -github.com/r3labs/sse/v2 v2.8.1/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac h1:kYPjbEN6YPYWWHI6ky1J813KzIq/8+Wg4TO4xU7A/KU= -github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= -github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= -github.com/santhosh-tekuri/jsonschema/v5 v5.1.1/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= -github.com/sendgrid/sendgrid-go v3.11.1+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shopspring/decimal v0.0.0-20200419222939-1884f454f8ea/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/skia-dev/google-api-go-client v0.10.1-0.20200109184256-16c3d6f408b2/go.mod h1:N0iTzjbw95ZVfOL7wVngmVXE2kG0NP+LYlq3QMwf9Qo= -github.com/skia-dev/protoc-gen-twirp_typescript v0.0.0-20220429132620-ad26708b7787/go.mod h1:efuG5t1DxtOE1haLWmHVSoKdJZQY46uwb91GIg1G3II= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY= github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= -github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/gunit v1.1.3/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= +github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.0/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -824,56 +382,27 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/twitchtv/twirp v5.5.0+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= -github.com/twitchtv/twirp v7.1.0+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/unrolled/secure v1.0.8/go.mod h1:fO+mEan+FLB0CdEnHf6Q4ZZVNqG+5fuLFnP8p0BXDPI= -github.com/urfave/cli/v2 v2.17.0/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/vektra/mockery/v2 v2.11.0/go.mod h1:8vf4KDDUptfkyypzdHLuE7OE2xA7Gdt60WgIS8PgD+U= github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yannh/kubeconform v0.6.3/go.mod h1:4E6oaL+lh7KgCG2SaOabeeAFBkyKu5D9ab0OEekGcbs= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/bencode v1.0.0 h1:zgop0Wu1nu4IexAZeCZ5qbsjU4O1vMrfCrVgUjbHVuA= github.com/zeebo/bencode v1.0.0/go.mod h1:Ct7CkrWIQuLWAy9M3atFHYq4kG9Ao/SsY5cdtCXmp9Y= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.chromium.org/luci v0.0.0-20201029184154-594d11850ebf/go.mod h1:MIQewVTLvOvc0UioV0JNqTNO/RspKFS0XEeoKrOxsdM= go.chromium.org/luci v0.0.0-20201121231857-b9ab316d7198 h1:Qe0s5XpxD36QC+7OVnc1Ce8igF3sfTo3f3ad4WKEpNo= go.chromium.org/luci v0.0.0-20201121231857-b9ab316d7198/go.mod h1:MIQewVTLvOvc0UioV0JNqTNO/RspKFS0XEeoKrOxsdM= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -882,66 +411,19 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.skia.org/infra v0.0.0-20230807174633-333a87d1ef8a h1:5ey8a/Kk8G/ASNk1SEYhq0CxVzX4uC6kPfgcVRjLf+o= -go.skia.org/infra v0.0.0-20230807174633-333a87d1ef8a/go.mod h1:ciR8wDS8SF4JQnDDPyYcjTjs0N5l4lp4Zl/sMryVl+I= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.skia.org/infra v0.0.0-20230904042911-f5590cb5133d h1:JBd/8D0tRHOPtoaX8mvzjRvSIHVal3HlX77SORwlNxY= +go.skia.org/infra v0.0.0-20230904042911-f5590cb5133d/go.mod h1:/ODF6heqsRI2bDfexYJWLYRrehjO1FMlSnjSEN4CBaU= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20191031202223-0706ea4fce0c/go.mod h1:Nl5grlQor/lxfX9FfGLe+g2cVSCiURG36KQgsg/ODs4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190424203555-c05e17bb3b2d/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce h1:Roh6XWxHFKrPgC/EQhVubSAGQ6Ozk6IdxHSzt1mR0EI= -golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -981,16 +463,10 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -998,17 +474,11 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191119073136-fc4aabc6c914/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1019,13 +489,11 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1037,19 +505,12 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1066,7 +527,6 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a h1:qfl7ob3DIEs3Ml9oLuPwY2N04gymzAW04WsUQHIClgM= @@ -1080,26 +540,17 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201008141435-b3e1573b7520/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1108,26 +559,12 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191119060738-e882bf8e40c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1137,13 +574,10 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1153,14 +587,11 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1169,32 +600,20 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1204,51 +623,37 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190909214602-067311248421/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191118222007-07fc4c7f2b98/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1261,26 +666,19 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200910222312-571a207697e7/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916150407-587cf2330ce8/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201017001424-6003fad69a88/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201021122455-2be66b663cb6/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1288,11 +686,6 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1302,7 +695,6 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -1315,8 +707,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo= -google.golang.org/api v0.32.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.33.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= @@ -1332,9 +722,7 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= @@ -1345,7 +733,6 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -1380,12 +767,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200916143405-f6a2fa72f0c4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201021134325-0d71844de594/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1398,7 +781,6 @@ google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210406143921-e86de6bf7a46/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1415,11 +797,7 @@ google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -1432,15 +810,12 @@ google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46 h1:G1IeWbjrqEq9ChWxEuRPJu6laA67+XgTFHVSAvepr38= google.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1464,8 +839,6 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= @@ -1486,51 +859,28 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.3/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/olivere/elastic.v5 v5.0.86/go.mod h1:M3WNlsF+WhYn7api4D87NIflwTV/c0iVs8cqfWhK+68= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= -gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/postgres v1.0.5/go.mod h1:qrD92UurYzNctBMVCJ8C3VQEjffEuphycXtxOudXNCA= -gorm.io/gorm v1.20.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1539,31 +889,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= -k8s.io/api v0.22.12/go.mod h1:hq8Rf/y5AFS0k0aVBAZu0Zj9EjymBPqPqtv4oXaSfXM= -k8s.io/apimachinery v0.22.12/go.mod h1:ZvVLP5iLhwVFg2Yx9Gh5W0um0DUauExbRhe+2Z8I1EU= -k8s.io/cli-runtime v0.22.12/go.mod h1:7s4SHaluyZC22nfdwMjfYpMUpSm9ArQtkCollrr52N0= -k8s.io/client-go v0.22.12/go.mod h1:/hziHTGMHw5AuX8zVgY06v29t6F5B5+kROh58nOD+J0= -k8s.io/code-generator v0.22.12/go.mod h1:iOZwYADSgFPNGWfqHFfg1V0TNJnl1t0WyZluQp4baqU= -k8s.io/component-base v0.22.12/go.mod h1:dCer/bJrq097R6tE8KlfTg+5m8boUKyR5mO8XlVcLR8= -k8s.io/component-helpers v0.22.12/go.mod h1:PYjMRl7txwfPUmQgEgx9P9SRJSa4APtkjxL+ulPRhoM= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kubectl v0.22.12/go.mod h1:sD8HkM7iAP86yJqXsr4oRl8fIr6DqxE5uhCHca70Tgw= -k8s.io/metrics v0.22.12/go.mod h1:7Vax19t9ZeVMz6On/upPdzNCz/WNkXdpsn6mMJx2ZM4= -k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/kustomize/api v0.8.11/go.mod h1:a77Ls36JdfCWojpUqR6m60pdGY1AYFix4AH83nJtY1g= -sigs.k8s.io/kustomize/cmd/config v0.9.13/go.mod h1:7547FLF8W/lTaDf0BDqFTbZxM9zqwEJqCKN9sSR0xSs= -sigs.k8s.io/kustomize/kustomize/v4 v4.2.0/go.mod h1:MOkR6fmhwG7hEDRXBYELTi5GSFcLwfqwzTRHW3kv5go= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/.disabled.go_repositories.bzl b/.disabled.go_repositories.bzl index e057e98ef4cd..04e79a500c79 100644 --- a/.disabled.go_repositories.bzl +++ b/.disabled.go_repositories.bzl @@ -268,8 +268,8 @@ def go_repositories(): go_repository( name = "com_github_burntsushi_toml", importpath = "github.com/BurntSushi/toml", - sum = "h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=", - version = "v1.1.0", + sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=", + version = "v0.3.1", ) go_repository( name = "com_github_burntsushi_xgb", @@ -363,8 +363,8 @@ def go_repositories(): go_repository( name = "com_github_cncf_xds_go", importpath = "github.com/cncf/xds/go", - sum = "h1:KwaoQzs/WeUxxJqiJsZ4euOly1Az/IgZXXSxlD/UBNk=", - version = "v0.0.0-20211130200136-a8f946100490", + sum = "h1:zH8ljVhhq7yC0MIeUL/IviMtY8hx2mK8cN9wEYb8ggw=", + version = "v0.0.0-20211011173535-cb28da3451f1", ) go_repository( @@ -408,8 +408,8 @@ def go_repositories(): go_repository( name = "com_github_coreos_go_systemd", importpath = "github.com/coreos/go-systemd", - sum = "h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=", - version = "v0.0.0-20190719114852-fd7a80b32e1f", + sum = "h1:t5Wuyh53qYyg9eqn4BbnlIT+vmhyww0TatL+zT3uWgI=", + version = "v0.0.0-20181012123002-c6f51f82210d", ) go_repository( name = "com_github_coreos_go_systemd_v22", @@ -596,14 +596,14 @@ def go_repositories(): go_repository( name = "com_github_envoyproxy_go_control_plane", importpath = "github.com/envoyproxy/go-control-plane", - sum = "h1:cgDRLG7bs59Zd+apAWuzLQL95obVYAymNJek76W3mgw=", - version = "v0.10.1", + sum = "h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs=", + version = "v0.9.10-0.20210907150352-cf90f659a021", ) go_repository( name = "com_github_envoyproxy_protoc_gen_validate", importpath = "github.com/envoyproxy/protoc-gen-validate", - sum = "h1:JiO+kJTpmYGjEodY7O1Zk8oZcNz1+f30UtwtXoFUPzE=", - version = "v0.6.2", + sum = "h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=", + version = "v0.1.0", ) go_repository( name = "com_github_evanphx_json_patch", @@ -703,8 +703,8 @@ def go_repositories(): go_repository( name = "com_github_gliderlabs_ssh", importpath = "github.com/gliderlabs/ssh", - sum = "h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=", - version = "v0.2.2", + sum = "h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw=", + version = "v0.1.1", ) go_repository( name = "com_github_go_chi_chi_v5", @@ -912,8 +912,8 @@ def go_repositories(): go_repository( name = "com_github_google_btree", importpath = "github.com/google/btree", - sum = "h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=", - version = "v1.0.1", + sum = "h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=", + version = "v1.0.0", ) go_repository( @@ -1022,8 +1022,8 @@ def go_repositories(): go_repository( name = "com_github_gopherjs_gopherjs", importpath = "github.com/gopherjs/gopherjs", - sum = "h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=", - version = "v0.0.0-20200217142428-fce0ec30dd00", + sum = "h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=", + version = "v1.17.2", ) go_repository( name = "com_github_gopherjs_gopherwasm", @@ -1248,6 +1248,12 @@ def go_repositories(): sum = "h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=", version = "v1.0.0", ) + go_repository( + name = "com_github_invopop_jsonschema", + importpath = "github.com/invopop/jsonschema", + sum = "h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So=", + version = "v0.7.0", + ) go_repository( name = "com_github_jackc_chunkreader", @@ -1491,20 +1497,20 @@ def go_repositories(): go_repository( name = "com_github_kr_pretty", importpath = "github.com/kr/pretty", - sum = "h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=", - version = "v0.2.0", + sum = "h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=", + version = "v0.1.0", ) go_repository( name = "com_github_kr_pty", importpath = "github.com/kr/pty", - sum = "h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=", - version = "v1.1.8", + sum = "h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk=", + version = "v1.1.3", ) go_repository( name = "com_github_kr_text", importpath = "github.com/kr/text", - sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=", - version = "v0.2.0", + sum = "h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=", + version = "v0.1.0", ) go_repository( name = "com_github_kylelemons_godebug", @@ -1610,8 +1616,8 @@ def go_repositories(): go_repository( name = "com_github_mattn_go_sqlite3", importpath = "github.com/mattn/go-sqlite3", - sum = "h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=", - version = "v2.0.3+incompatible", + sum = "h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=", + version = "v1.11.0", ) go_repository( name = "com_github_matttproud_golang_protobuf_extensions", @@ -2133,6 +2139,12 @@ def go_repositories(): sum = "h1:NDEFg8RXMMmc3j5fE+M7fJ2vqoCRRBu1excmvrhmA6Y=", version = "v0.0.0-20220429132620-ad26708b7787", ) + go_repository( + name = "com_github_smarty_assertions", + importpath = "github.com/smarty/assertions", + sum = "h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=", + version = "v1.15.0", + ) go_repository( name = "com_github_smartystreets_assertions", @@ -2149,8 +2161,8 @@ def go_repositories(): go_repository( name = "com_github_smartystreets_goconvey", importpath = "github.com/smartystreets/goconvey", - sum = "h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=", - version = "v1.6.4", + sum = "h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=", + version = "v1.8.1", ) go_repository( name = "com_github_smartystreets_gunit", @@ -2395,8 +2407,8 @@ def go_repositories(): go_repository( name = "com_github_yuin_goldmark", importpath = "github.com/yuin/goldmark", - sum = "h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=", - version = "v1.4.13", + sum = "h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs=", + version = "v1.3.5", ) go_repository( name = "com_github_yusufpapurcu_wmi", @@ -2427,8 +2439,8 @@ def go_repositories(): go_repository( name = "com_google_cloud_go_bigquery", importpath = "cloud.google.com/go/bigquery", - sum = "h1:oq1PIpl9u1thzdsX0K9w5H8OlqH5gRu3zGc7FCk19IY=", - version = "v1.17.0", + sum = "h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=", + version = "v1.8.0", ) go_repository( name = "com_google_cloud_go_bigtable", @@ -3001,14 +3013,14 @@ def go_repositories(): go_repository( name = "org_golang_x_mod", importpath = "golang.org/x/mod", - sum = "h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=", - version = "v0.6.0-dev.0.20220419223038-86c51ed26bb4", + sum = "h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=", + version = "v0.9.0", ) go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", - sum = "h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=", - version = "v0.7.0", + sum = "h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=", + version = "v0.8.0", ) go_repository( name = "org_golang_x_oauth2", @@ -3031,20 +3043,20 @@ def go_repositories(): go_repository( name = "org_golang_x_sys", importpath = "golang.org/x/sys", - sum = "h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=", - version = "v0.5.0", + sum = "h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=", + version = "v0.6.0", ) go_repository( name = "org_golang_x_term", importpath = "golang.org/x/term", - sum = "h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=", - version = "v0.5.0", + sum = "h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=", + version = "v0.6.0", ) go_repository( name = "org_golang_x_text", importpath = "golang.org/x/text", - sum = "h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=", - version = "v0.7.0", + sum = "h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=", + version = "v0.8.0", ) go_repository( name = "org_golang_x_time", @@ -3055,8 +3067,8 @@ def go_repositories(): go_repository( name = "org_golang_x_tools", importpath = "golang.org/x/tools", - sum = "h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=", - version = "v0.1.12", + sum = "h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=", + version = "v0.7.0", ) go_repository( name = "org_golang_x_xerrors", @@ -3068,8 +3080,8 @@ def go_repositories(): go_repository( name = "org_skia_go_infra", importpath = "go.skia.org/infra", - sum = "h1:5ey8a/Kk8G/ASNk1SEYhq0CxVzX4uC6kPfgcVRjLf+o=", - version = "v0.0.0-20230807174633-333a87d1ef8a", + sum = "h1:JBd/8D0tRHOPtoaX8mvzjRvSIHVal3HlX77SORwlNxY=", + version = "v0.0.0-20230904042911-f5590cb5133d", ) go_repository( name = "org_uber_go_atomic", diff --git a/.gitignore b/.gitignore index d9f62d1d7b2c..ec840c85953b 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,6 @@ bin/sk bin/sk.exe bin/sk.version third_party/ninja -third_party/rust-toolchain bin/ninja bin/ninja.exe bin/ninja.version diff --git a/AUTHORS b/AUTHORS index 78a79a773e85..00cbb344f818 100755 --- a/AUTHORS +++ b/AUTHORS @@ -92,6 +92,7 @@ Yandex LLC <*@yandex-team.ru> Yong-Hwan Baek Zhuo Qingliang Zoho Corporation Private Limited <*@zohocorp.com> +Soso Tsertsvadze # Trusted service accounts. GitHub Dependabot <(\d+)\+dependabot\[bot\]@users.noreply.github.com> diff --git a/BUILD.bazel b/BUILD.bazel index f6a975f5ec41..dfc33d719419 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -98,12 +98,6 @@ alias( visibility = ["//visibility:public"], ) -alias( - name = "default_logging", - actual = "//src/ports:default_logging", - visibility = ["//visibility:public"], -) - # Load bearing comment below - gazelle looks here (and not in any other BUILD.bazel files) # for a special comment indicating the prefix. # gazelle:prefix go.skia.org/skia @@ -139,3 +133,16 @@ config_setting( name = "always_true_1", values = {"stamp": "1"}, ) + +test_suite( + name = "all_go_tests", + tests = [ + # Go tests in this list will be tested in CI. Please add any new Go tests to this suite. + "//bazel/exporter:exporter_test", + "//infra/bots/task_drivers/bazel_test_gm:bazel_test_gm_test", + "//infra/bots/task_drivers/codesize:codesize_test", + "//infra/bots/task_drivers/perf_puppeteer_canvas:perf_puppeteer_canvas_test", + "//infra/bots/task_drivers/perf_puppeteer_render_skps:perf_puppeteer_render_skps_test", + "//infra/bots/task_drivers/perf_puppeteer_skottie_frames:perf_puppeteer_skottie_frames_test", + ], +) diff --git a/BUILD.gn b/BUILD.gn index 8c5b21e46554..cf977186c097 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -45,9 +45,6 @@ config("skia_public") { "SK_FORCE_AAA", ] } - if (skia_enable_sksl) { - defines += [ "SK_ENABLE_SKSL" ] - } if (skia_enable_precompile) { defines += [ "SK_ENABLE_PRECOMPILE" ] } @@ -172,26 +169,6 @@ template("opts") { is_x86 = current_cpu == "x64" || current_cpu == "x86" -opts("ssse3") { - enabled = is_x86 - sources = skia_opts.ssse3_sources - if (!is_clang && is_win) { - defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSSE3" ] - } else { - cflags = [ "-mssse3" ] - } -} - -opts("avx") { - enabled = is_x86 - sources = skia_opts.avx_sources - if (is_win) { - cflags = [ "/arch:AVX" ] - } else { - cflags = [ "-mavx" ] - } -} - opts("hsw") { enabled = is_x86 sources = skia_opts.hsw_sources @@ -777,7 +754,7 @@ if (skia_compile_sksl_tests) { include_dirs = [ "." ] deps = [ ":run_sksllex", - "//third_party/externals/dawn/src/tint:libtint", + "//third_party/externals/dawn/src/tint/api:api", "//third_party/externals/spirv-tools:spvtools", "//third_party/externals/spirv-tools:spvtools_val", "//third_party/spirv-cross:spirv_cross", @@ -1056,11 +1033,6 @@ optional("gpu") { } } - if (skia_use_dawn) { - public += skia_gpu_dawn_public - sources += skia_gpu_dawn_private - } - if (skia_use_direct3d) { public_defines += [ "SK_DIRECT3D" ] deps += [ "//third_party/d3d12allocator" ] @@ -1365,11 +1337,19 @@ if (skia_use_fontations) { "src/ports/fontations/BUILD.bazel", "src/ports/fontations/src/ffi.rs", ] - outputs = [ "$root_out_dir/libfontations_ffi.a" ] + outputs = [ + "$root_out_dir/libfontations_ffi.a", + "$root_out_dir/src/ports/fontations/src/ffi.rs.h", + ] args = [ "//src/ports/fontations:fontations_ffi", rebase_path("//bazel-bin/src/ports/fontations/libfontations_ffi.a", root_build_dir), + + # we want the header to not simply be copied into the output directory, + # but in the same path as the Bazel build uses. + rebase_path("//bazel-bin/src/ports/fontations/src/ffi.rs.h", + root_build_dir) + "=src/ports/fontations/src/ffi.rs.h", ] + bazel_args } } @@ -1378,7 +1358,8 @@ optional("typeface_fontations") { public_defines = [ "SK_TYPEFACE_FACTORY_FONTATIONS" ] enabled = skia_use_fontations if (enabled) { - public_include_dirs = [ "bazel-bin/" ] + # this is where src/ports/fontations/src/ffi.rs.h was generated and exists. + public_include_dirs = [ "$root_out_dir" ] } deps = [ @@ -1394,6 +1375,8 @@ optional("typeface_fontations") { "src/ports/SkTypeface_fontations.cpp", "src/ports/SkTypeface_fontations_priv.h", ] + + sources_for_tests = [ "tests/FontationsTest.cpp" ] } optional("webp_decode") { @@ -1483,16 +1466,15 @@ skia_component("skia") { deps = [ ":android_utils", ":avif", - ":avx", ":fontmgr_factory", ":heif", ":hsw", ":jpeg_decode", ":jpegxl_decode", + ":minify_sksl", ":ndk_images", ":png_decode", ":raw", - ":ssse3", ":typeface_fontations", ":vello", ":webp_decode", @@ -1516,6 +1498,7 @@ skia_component("skia") { sources += skia_codec_core sources += skia_codec_decode_bmp sources += skia_encode_srcs + sources += skia_sksl_sources sources += [ "src/android/SkAndroidFrameworkUtils.cpp", "src/android/SkAnimatedImage.cpp", @@ -1536,18 +1519,9 @@ skia_component("skia") { defines = [] libs = [] - if (skia_enable_sksl) { - deps += [ ":minify_sksl" ] - sources += skia_sksl_sources - sources += skia_needs_sksl_sources - sources += skia_colorfilters_sksl_sources - - if (skia_enable_sksl_tracing) { - defines += [ "SKSL_ENABLE_TRACING" ] - sources += skia_sksl_tracing_sources - } - } else { - sources += skia_colorfilters_nosksl_sources + if (skia_enable_sksl_tracing) { + defines += [ "SKSL_ENABLE_TRACING" ] + sources += skia_sksl_tracing_sources } if (skia_build_for_debugger) { @@ -1682,11 +1656,7 @@ skia_static_library("pathkit") { public_configs = [ ":skia_public" ] configs = skia_library_configs - deps = [ - ":avx", - ":hsw", - ":ssse3", - ] + deps = [ ":hsw" ] sources = [] sources += skia_pathops_sources @@ -1748,6 +1718,7 @@ skia_static_library("pathkit") { group("modules") { deps = [ + "modules/bentleyottmann", "modules/skottie", "modules/skparagraph", "modules/skshaper", @@ -1978,9 +1949,12 @@ if (skia_enable_tools) { "tools/gpu/BackendSurfaceFactory.h", "tools/gpu/BackendTextureImageFactory.cpp", "tools/gpu/BackendTextureImageFactory.h", + "tools/gpu/ContextType.cpp", + "tools/gpu/ContextType.h", "tools/gpu/FlushFinishTracker.cpp", "tools/gpu/FlushFinishTracker.h", "tools/gpu/GrContextFactory.cpp", + "tools/gpu/GrContextFactory.h", "tools/gpu/GrTest.cpp", "tools/gpu/ManagedBackendTexture.cpp", "tools/gpu/ManagedBackendTexture.h", @@ -2056,7 +2030,6 @@ if (skia_enable_tools) { } if (skia_use_dawn) { public_deps += [ "//third_party/externals/dawn/include/dawn:headers" ] - sources += [ "tools/gpu/dawn/DawnTestContext.cpp" ] if (is_clang) { cflags_cc = [ "-Wno-microsoft-cast" ] } @@ -2092,11 +2065,18 @@ if (skia_enable_tools) { } # test_lib("gpu_tool_utils") test_lib("flags") { - sources = [ "tools/flags/CommandLineFlags.cpp" ] + sources = [ + "tools/flags/CommandLineFlags.cpp", + "tools/flags/CommandLineFlags.h", + ] } test_lib("common_flags_config") { - sources = [ "tools/flags/CommonFlagsConfig.cpp" ] + sources = [ + "tools/flags/CommonFlags.h", + "tools/flags/CommonFlagsConfig.cpp", + "tools/flags/CommonFlagsConfig.h", + ] deps = [ ":flags" ] public_deps = [ ":gpu_tool_utils" ] } @@ -2315,7 +2295,9 @@ if (skia_enable_tools) { ":skia", ":test", ":tool_utils", + ":typeface_fontations_tests", "experimental/sktext:tests", + "modules/bentleyottmann:tests", "modules/skottie:tests", "modules/skparagraph:tests", "modules/sksg:tests", @@ -2429,7 +2411,7 @@ if (skia_enable_tools) { ] } - if (!skia_enable_optimize_size) { + if (!skia_enable_optimize_size && !skia_use_fontations) { # optional separate library to dlopen when running CanvasStateTests. skia_shared_library("canvas_state_lib") { sources = [ @@ -2701,7 +2683,7 @@ if (skia_enable_tools) { } } if (is_android) { - shared_library("libskqp_app") { # Not a skia_shared_library + shared_library("libskqp_jni") { # Not a skia_shared_library configs += [ ":skia_private" ] testonly = true sources = [ "tools/skqp/src/jni_skqp.cpp" ] @@ -2941,8 +2923,6 @@ if (skia_enable_tools) { "tools/viewer/SkSLSlide.h", "tools/viewer/SkottieSlide.cpp", "tools/viewer/SkottieSlide.h", - "tools/viewer/SkottieTextEditor.cpp", - "tools/viewer/SkottieTextEditor.h", "tools/viewer/Slide.h", "tools/viewer/SlideDir.cpp", "tools/viewer/SlideDir.h", diff --git a/DEPS b/DEPS index 3205bf6bfefa..6d7894e6e0d6 100644 --- a/DEPS +++ b/DEPS @@ -4,7 +4,7 @@ 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:333a87d1ef8ae6440d475a82695ed44d02803673', + 'sk_tool_revision': 'git_revision:eca28238b5a3dc3646f5d1d3f2064628da55a28e', # ninja CIPD package version. # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja @@ -19,20 +19,20 @@ vars = { # ./tools/git-sync-deps deps = { "buildtools" : "https://chromium.googlesource.com/chromium/src/buildtools.git@b138e6ce86ae843c42a1a08f37903207bebcca75", - "third_party/externals/angle2" : "https://chromium.googlesource.com/angle/angle.git@f7d7be8d2ff0bbee438b6030419a0b13082de198", + "third_party/externals/angle2" : "https://chromium.googlesource.com/angle/angle.git@e691a4edb19a9a3deef0108966697e786e40dc9d", "third_party/externals/brotli" : "https://skia.googlesource.com/external/github.com/google/brotli.git@6d03dfbedda1615c4cba1211f8d81735575209c8", "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@beaf20f90f1bf21d235c99d5b49b8bb507b722b2", - "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/dawn" : "https://dawn.googlesource.com/dawn.git@b9afa50913de862e388195589917e7fbf30d2810", + "third_party/externals/jinja2" : "https://chromium.googlesource.com/chromium/src/third_party/jinja2@515dd10de9bf63040045902a4a310d2ba25213a0", + "third_party/externals/markupsafe" : "https://chromium.googlesource.com/chromium/src/third_party/markupsafe@006709ba3ed87660a17bd4548c45663628f5ed85", "third_party/externals/abseil-cpp" : "https://skia.googlesource.com/external/github.com/abseil/abseil-cpp.git@cb436cf0142b4cbe47aae94223443df7f82e2920", "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/emsdk" : "https://skia.googlesource.com/external/github.com/emscripten-core/emsdk.git@4a48a752e6a8bef6f222622f2b4926d5eb3bdeb3", + "third_party/externals/egl-registry" : "https://skia.googlesource.com/external/github.com/KhronosGroup/EGL-Registry@b055c9b483e70ecd57b3cf7204db21f5a06f9ffe", + #"third_party/externals/emsdk" : "https://skia.googlesource.com/external/github.com/emscripten-core/emsdk.git@a896e3d066448b3530dbcaa48869fafefd738f57", "third_party/externals/expat" : "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git@624da0f593bb8d7e146b9f42b06d8e6c80d032a3", - "third_party/externals/freetype" : "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@5769f13a6b9fafa3840726f06dde07e755501a16", + "third_party/externals/freetype" : "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@2d9fce53d4ce89f36075168282fcdd7289e082f9", "third_party/externals/harfbuzz" : "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git@894a1f72ee93a1fd8dc1d9218cb3fd8f048be29a", "third_party/externals/highway" : "https://chromium.googlesource.com/external/github.com/google/highway.git@424360251cdcfc314cfc528f53c872ecd63af0f0", "third_party/externals/icu" : "https://chromium.googlesource.com/chromium/deps/icu.git@a0718d4f121727e30b8d52c7a189ebf5ab52421f", @@ -51,17 +51,17 @@ deps = { # "third_party/externals/perfetto" : "https://android.googlesource.com/platform/external/perfetto@93885509be1c9240bc55fa515ceb34811e54a394", "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/swiftshader" : "https://swiftshader.googlesource.com/SwiftShader@729e92f8ae07d7b695bdcf346318dec4d11d899e", + "third_party/externals/swiftshader" : "https://swiftshader.googlesource.com/SwiftShader@32f9332d1d7aacbdba7c1aa5df894bb1890bb2cc", "third_party/externals/vulkanmemoryallocator" : "https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator@a6bfc237255a6bac1513f7c1ebde6d8aed6b5191", # vulkan-deps is a meta-repo containing several interdependent Khronos Vulkan repositories. # When the vulkan-deps revision is updated, those repos (spirv-*, vulkan-*) should be updated as well. - "third_party/externals/vulkan-deps" : "https://chromium.googlesource.com/vulkan-deps@c46d48f777b73fa492cdc6424e54e4004bd9ee01", - "third_party/externals/spirv-cross" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross@bccaa94db814af33d8ef05c153e7c34d8bd4d685", - "third_party/externals/spirv-headers" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git@124a9665e464ef98b8b718d572d5f329311061eb", - "third_party/externals/spirv-tools" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@4a9881fe9b32086d4ceac89a498b0dd34084b574", + "third_party/externals/vulkan-deps" : "https://chromium.googlesource.com/vulkan-deps@f2f4bb6f20eca8292dde8aeb54448a0ed92ba3af", + "third_party/externals/spirv-cross" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross@54997fb4bc3adeb47b9b9f7bb67f1c25eaca2204", + "third_party/externals/spirv-headers" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git@d790ced752b5bfc06b6988baadef6eb2d16bdf96", + "third_party/externals/spirv-tools" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@3cc7e1c4c318aa4c4a7a8972b6066ab2d9d217cc", "third_party/externals/vello" : "https://skia.googlesource.com/external/github.com/linebender/vello.git@443539891c4c1eb3ca4ed891d251cbf4097c9a9c", - "third_party/externals/vulkan-headers" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers@450ead13e1064584da027d91192bd7bfb724640f", - "third_party/externals/vulkan-tools" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools@1d8188a974ccd08caffb5bd7fec58751e0c7d786", + "third_party/externals/vulkan-headers" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers@2634c969d7dc0e983f005f7f2e665cce8449efe6", + "third_party/externals/vulkan-tools" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools@389110e4600669d82bca042859fddf898387c0d2", "third_party/externals/unicodetools" : "https://chromium.googlesource.com/external/github.com/unicode-org/unicodetools@66a3fa9dbdca3b67053a483d130564eabc5fe095", #"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@e3f919ccfe3ef542cfc983a82146070258fb57f8", diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 1d2d59c2276b..3b90009fbfa9 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -295,7 +295,7 @@ def _CheckBazelBUILDFiles(input_api, output_api): "modules/canvaskit/go/", "experimental/", "bazel/platform", "third_party/", "tests/", "resources/", "bazel/deps_parser/", "bazel/exporter_tool/", "tools/gpu/gl/interface/", "bazel/utils/", "include/config/", - "bench/"] + "bench/", "example/external_client/"] is_excluded = any(affected_file_path.startswith(n) for n in excluded_paths) if is_bazel and not is_excluded: with open(affected_file_path, 'r') as file: @@ -417,7 +417,9 @@ def _CheckBuildifier(input_api, output_api): for affected_file in input_api.AffectedFiles(include_deletes=False): affected_file_path = affected_file.LocalPath() if affected_file_path.endswith('BUILD.bazel') or affected_file_path.endswith('.bzl'): - if not affected_file_path.endswith('public.bzl') and not affected_file_path.endswith('go_repositories.bzl'): + if not affected_file_path.endswith('public.bzl') and \ + not affected_file_path.endswith('go_repositories.bzl') and \ + not "bazel/rbe/gce_linux/" in affected_file_path: # Skip generated files. files.append(affected_file_path) if not files: return [] @@ -451,8 +453,8 @@ def _CheckBannedAPIs(input_api, output_api): # These defines are either there or not, and using them with just an #if is a # subtle, frustrating bug. - existence_defines = ['SK_GANESH', 'SK_GRAPHITE', 'SK_GL', 'SK_VULKAN', 'SK_DAWN', - 'SK_METAL', 'SK_DIRECT3D', 'SK_DEBUG'] + existence_defines = ['SK_GANESH', 'SK_GRAPHITE', 'SK_GL', 'SK_VULKAN', 'SK_DAWN', 'SK_METAL', + 'SK_DIRECT3D', 'SK_DEBUG', 'GR_TEST_UTILS', 'GRAPHITE_TEST_UTILS'] for d in existence_defines: banned_replacements.append(('#if {}'.format(d), '#if defined({})'.format(d))) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 5a03d6dc0ce0..c2e05730692d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,6 +2,34 @@ Skia Graphics Release Notes This file includes a list of high level updates for each milestone release. +Milestone 118 +------------- + * `GrDirectContext::flush` variants now expect a SkSurface pointer only, not + an sk_sp. + * `SkImage::makeWithFilter` has been deprecated. It has been replaced with three factory functions: + + Ganesh: `SkImages::MakeWithFilter(GrRecordingContext*, ...);` -- declared in SkImageGanesh.h + + Graphite: `SkImages::MakeWithFilter(skgpu::graphite::Recorder*, ...);` -- declared in Image.h + + Raster: `SkImages::MakeWithFilter(...);` -- declared in SkImage.h + + The new factories require the associated backend context object be valid. For example, the Graphite version will return nullptr if it isn't supplied with a `Recorder` object. + * - SkSL and Runtime Effects are no longer optional features of Skia; they are always available. + The GN flag `skia_enable_sksl` has been removed. + * - SkSL will now properly reject sequence-expressions containing arrays, or sequence-expressions + containing structures of arrays. Previously, the left-side expression of a sequence was checked, + but the right-side was not. In GLSL ES 1.0, and therefore in SkSL, the only operator which is + allowed to operate on arrays is the array subscript operator (`[]`). + * - The Dawn backend for Ganesh has been removed. Dawn will continue to be supported in the + Graphite backend. + * We plan to remove SkTime.h from the public API. As of now, SkAutoTime has been + deleted as it was unused. + * Vulkan-specific calls are being removed from GrBackendSurface.h. Clients should use the + equivalents found in `include/gpu/ganesh/vk/GrVkBackendSurface.h"` + +* * * + Milestone 117 ------------- * `SkGraphics::AllowJIT()` has been removed. It was previously deprecated (and did nothing). diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 470c585bf9a2..55d4d6e77a25 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -1,5 +1,8 @@ workspace(name = "skia") +load("//bazel:deps.bzl", "bazel_deps", "c_plus_plus_deps") +bazel_deps() + load("//toolchain:download_toolchains.bzl", "download_toolchains_for_skia") download_toolchains_for_skia("clang_linux_amd64", "clang_mac", "ndk_linux_amd64") @@ -10,45 +13,32 @@ load("//bazel:gcs_mirror.bzl", "gcs_mirror_url") # See https://github.com/emscripten-core/emsdk/tree/85d27a4a2a60d591613a305b14ae438c2bb3ce11/bazel#setup-instructions http_archive( name = "emsdk", - sha256 = "74c7c54b3544555ec38d1e9dcc7e90b9f49ed0e04f2cc3fd44663c598af24124", - strip_prefix = "emsdk-3.1.15/bazel", - urls = [ - "https://github.com/emscripten-core/emsdk/archive/refs/tags/3.1.15.tar.gz", - "https://storage.googleapis.com/skia-world-readable/bazel/74c7c54b3544555ec38d1e9dcc7e90b9f49ed0e04f2cc3fd44663c598af24124.tar.gz", - ], + sha256 = "cb8cded78f6953283429d724556e89211e51ac4d871fcf38e0b32405ee248e91", + strip_prefix = "emsdk-3.1.44/bazel", + urls = gcs_mirror_url( + sha256 = "cb8cded78f6953283429d724556e89211e51ac4d871fcf38e0b32405ee248e91", + url = "https://github.com/emscripten-core/emsdk/archive/refs/tags/3.1.44.tar.gz", + ), ) load("@emsdk//:deps.bzl", emsdk_deps = "deps") -# One of the deps here is build_bazel_rules_nodejs, currently version 4.4.1 +# One of the deps here is build_bazel_rules_nodejs, currently version 5.8.0 # If we try to install it ourselves after this, it won't work. emsdk_deps() load("@emsdk//:emscripten_deps.bzl", emsdk_emscripten_deps = "emscripten_deps") -emsdk_emscripten_deps(emscripten_version = "3.1.9") - -http_archive( - name = "bazel_skylib", - sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz", - "https://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() +emsdk_emscripten_deps(emscripten_version = "3.1.44") http_archive( name = "bazel_toolchains", sha256 = "e52789d4e89c3e2dc0e3446a9684626a626b6bec3fde787d70bae37c6ebcc47f", strip_prefix = "bazel-toolchains-5.1.1", - urls = [ - "https://storage.googleapis.com/skia-world-readable/bazel/e52789d4e89c3e2dc0e3446a9684626a626b6bec3fde787d70bae37c6ebcc47f.tar.gz", - "https://github.com/bazelbuild/bazel-toolchains/archive/refs/tags/v5.1.1.tar.gz", - ], + urls = gcs_mirror_url( + sha256 = "e52789d4e89c3e2dc0e3446a9684626a626b6bec3fde787d70bae37c6ebcc47f", + url = "https://github.com/bazelbuild/bazel-toolchains/archive/refs/tags/v5.1.1.tar.gz", + ), ) load("@bazel_toolchains//repositories:repositories.bzl", bazel_toolchains_repositories = "repositories") @@ -64,10 +54,10 @@ http_archive( name = "rules_python", sha256 = "5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29", strip_prefix = "rules_python-0.9.0", - urls = [ - "https://storage.googleapis.com/skia-world-readable/bazel/5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29.tar.gz", - "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.9.0.tar.gz", - ], + urls = gcs_mirror_url( + sha256 = "5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29", + url = "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.9.0.tar.gz", + ), ) # This sets up a hermetic python3, rather than depending on what is installed. @@ -97,10 +87,10 @@ http_archive( name = "rules_jvm_external", sha256 = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca", strip_prefix = "rules_jvm_external-4.2", - urls = [ - "https://storage.googleapis.com/skia-world-readable/bazel/cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca.zip", - "https://github.com/bazelbuild/rules_jvm_external/archive/4.2.zip", - ], + urls = gcs_mirror_url( + sha256 = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca", + url = "https://github.com/bazelbuild/rules_jvm_external/archive/4.2.zip", + ), ) load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") @@ -186,10 +176,10 @@ http_archive( name = "com_google_protobuf", sha256 = "b8ab9bbdf0c6968cf20060794bc61e231fae82aaf69d6e3577c154181991f576", strip_prefix = "protobuf-3.18.1", - urls = [ - "https://storage.googleapis.com/skia-world-readable/bazel/b8ab9bbdf0c6968cf20060794bc61e231fae82aaf69d6e3577c154181991f576.tar.gz", - "https://github.com/protocolbuffers/protobuf/releases/download/v3.18.1/protobuf-all-3.18.1.tar.gz", - ], + urls = gcs_mirror_url( + sha256 = "b8ab9bbdf0c6968cf20060794bc61e231fae82aaf69d6e3577c154181991f576", + url = "https://github.com/protocolbuffers/protobuf/releases/download/v3.18.1/protobuf-all-3.18.1.tar.gz", + ), ) load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") @@ -217,10 +207,10 @@ npm_install( http_archive( name = "io_bazel_rules_webtesting", sha256 = "e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a", - urls = [ - "https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.5/rules_webtesting.tar.gz", - "https://storage.googleapis.com/skia-world-readable/bazel/e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a.tar.gz", - ], + urls = gcs_mirror_url( + sha256 = "e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a", + url = "https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.5/rules_webtesting.tar.gz", + ), ) # https://github.com/bazelbuild/rules_webtesting/blob/e9cf17123068b1123c68219edf9b274bf057b9cc/web/versioned/browsers-0.3.3.bzl @@ -238,10 +228,10 @@ browser_repositories( http_archive( name = "rules_rust", sha256 = "950a3ad4166ae60c8ccd628d1a8e64396106e7f98361ebe91b0bcfe60d8e4b60", - urls = [ - "https://github.com/bazelbuild/rules_rust/releases/download/0.20.0/rules_rust-v0.20.0.tar.gz", - "https://storage.googleapis.com/skia-world-readable/bazel/950a3ad4166ae60c8ccd628d1a8e64396106e7f98361ebe91b0bcfe60d8e4b60.tar.gz", - ], + urls = gcs_mirror_url( + sha256 = "950a3ad4166ae60c8ccd628d1a8e64396106e7f98361ebe91b0bcfe60d8e4b60", + url = "https://github.com/bazelbuild/rules_rust/releases/download/0.20.0/rules_rust-v0.20.0.tar.gz", + ), ) load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") @@ -251,12 +241,12 @@ rules_rust_dependencies() rust_register_toolchains( edition = "2021", + extra_target_triples = ["aarch64-apple-darwin"], versions = [ # supported versions from https://github.com/bazelbuild/rules_rust/blob/dab425760656c449d3a0f73c490be92c240b6ef2/util/fetch_shas_VERSIONS.txt # The rust rules validate a toolchain by sha256 hash, as listed in https://github.com/bazelbuild/rules_rust/blob/dab425760656c449d3a0f73c490be92c240b6ef2/rust/known_shas.bzl "1.68.2", ], - extra_target_triples = ["aarch64-apple-darwin"], ) # https://bazelbuild.github.io/rules_rust/crate_universe.html @@ -274,10 +264,11 @@ http_archive( sha256 = "b20c2a31fb5a2e2aeebced19e35d78a974301171391b39e36d5ebb00bea2aa93", strip_prefix = "cxxbridge-cmd-1.0.94", type = "tar.gz", - urls = [ - "https://crates.io/api/v1/crates/cxxbridge-cmd/1.0.94/download", - "https://storage.googleapis.com/skia-world-readable/bazel/b20c2a31fb5a2e2aeebced19e35d78a974301171391b39e36d5ebb00bea2aa93.tar.gz", - ], + urls = gcs_mirror_url( + ext = ".tar.gz", + sha256 = "b20c2a31fb5a2e2aeebced19e35d78a974301171391b39e36d5ebb00bea2aa93", + url = "https://crates.io/api/v1/crates/cxxbridge-cmd/1.0.94/download", + ), ) load("@rules_rust//crate_universe:defs.bzl", "crates_repository") @@ -303,10 +294,11 @@ http_archive( sha256 = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93", strip_prefix = "cxx-1.0.94", type = "tar.gz", - urls = [ - "https://crates.io/api/v1/crates/cxx/1.0.94/download", - "https://storage.googleapis.com/skia-world-readable/bazel/f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93.tar.gz", - ], + urls = gcs_mirror_url( + ext = ".tar.gz", + sha256 = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93", + url = "https://crates.io/api/v1/crates/cxx/1.0.94/download", + ), ) # This finds all the dependencies needed to build cxx... @@ -373,8 +365,6 @@ local_repository( path = "include/config", ) -load("//bazel:deps.bzl", "git_repos_from_deps") - # This are two lists of Bazel repository names, which is brought in by the following macro. # It is here for easier grepping, i.e. someone trying to find where a label like @brotli//:brotlidec # was defined. If a dep has its own BUILD rules, then one will need to go to its git repository @@ -413,7 +403,7 @@ load("//bazel:deps.bzl", "git_repos_from_deps") # @wuffs - //bazel/external/wuffs:BUILD.bazel # @zlib_skia - //bazel/external/zlib_skia:BUILD.bazel #### END GENERATED LIST OF THIRD_PARTY DEPS -git_repos_from_deps() +c_plus_plus_deps() # In order to copy the Freetype configurations into the checked out Freetype folder, # it is easiest to treat them as a third-party dependency from the perspective of Freetype. @@ -442,6 +432,38 @@ local_repository( load("//bazel:cipd_install.bzl", "cipd_install") +cipd_install( + name = "git_linux_amd64", + build_file_content = """ +filegroup( + name = "all_files", + # The exclude pattern prevents files with spaces in their names from tripping up Bazel. + srcs = glob(include=["**/*"], exclude=["**/* *"]), + visibility = ["//visibility:public"], +) +""", + cipd_package = "infra/3pp/tools/git/linux-amd64", + # Based on + # https://skia.googlesource.com/buildbot/+/f1d21dc58818cd6aba0a7822e59d37636aefe936/WORKSPACE#391. + # + # Note that the below "git config" commands do not affect the user's Git configuration. These + # settings are only visible to Bazel targets that depend on @git_linux_amd64//:all_files via + # the "data" attribute. The result of these commands can be examined as follows: + # + # $ cat $(bazel info output_base)/external/git_linux_amd64/etc/gitconfig + # [user] + # name = Bazel Test User + # email = bazel-test-user@example.com + postinstall_cmds_posix = [ + "mkdir etc", + "bin/git config --system user.name \"Bazel Test User\"", + "bin/git config --system user.email \"bazel-test-user@example.com\"", + ], + # From https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/git/linux-amd64/+/version:2.29.2.chromium.6 + sha256 = "36cb96051827d6a3f6f59c5461996fe9490d997bcd2b351687d87dcd4a9b40fa", + tag = "version:2.29.2.chromium.6", +) + cipd_install( name = "gn_linux_amd64", build_file_content = """ @@ -484,6 +506,14 @@ exports_files( tag = "git_revision:1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41", ) +cipd_install( + name = "skimage", + build_file = "//bazel/external/skimage:BUILD.bazel", + cipd_package = "skia/bots/skimage", + # From https://chrome-infra-packages.appspot.com/p/skia/bots/skimage/+/sRladEfUAXeYIBD3Pt3ke0Fd08vtYVLrg4IASKk5F6YC + sha256 = "b1195a7447d40177982010f73edde47b415dd3cbed6152eb83820048a93917a6", + tag = "version:47", +) ################################## # Docker rules and dependencies. # @@ -522,7 +552,31 @@ load( # Pulls the gcr.io/skia-public/debugger-app-base container. container_pull( name = "debugger-app-base", - digest = "sha256:be6bd0fc62ef967e0d9911c02cd0a212450a503afd07410ed50e9ecbead64a80", + digest = "sha256:24c6e5d875d298c741e8c2917a94e1d548400eb8a9517d2a90f93833cbba5469", registry = "gcr.io", repository = "skia-public/debugger-app-base", ) + +# Pulls the gcr.io/skia-public/jsfiddle-base container. +container_pull( + name = "jsfiddle-base", + digest = "sha256:2e999b8eedf768b6deae7405789ccdac92dcc01c36720f268c9d1b58fcd8ec1b", + registry = "gcr.io", + repository = "skia-public/jsfiddle-base", +) + +# Pulls the gcr.io/skia-public/shaders-base container. +container_pull( + name = "shaders-base", + digest = "sha256:6246ccdc88e01a5dc92d83e9a0698d76f53529978df070f7c93ecbfb3226d10d", + registry = "gcr.io", + repository = "skia-public/shaders-base", +) + +# Pulls the gcr.io/skia-public/skottie-base container. +container_pull( + name = "skottie-base", + digest = "sha256:3e2b0ed75e491b46f1d2628ecb2aebbf587c06674e9ec249a0e77fe77b43f03c", + registry = "gcr.io", + repository = "skia-public/skottie-base", +) diff --git a/bazel/buildrc b/bazel/buildrc index 317057abc45c..d9d3016840ec 100644 --- a/bazel/buildrc +++ b/bazel/buildrc @@ -85,7 +85,7 @@ build:canvaskit_full --noincompatible_enable_cc_toolchain_resolution \ build:ck_webgl2 --with_gl_standard=webgl_standard --gpu_backend=gl_ganesh \ --disable_legacy_shader_context # CPU build needs legacy shader context otherwise SkPerlinNoiseShader does not render -build:ck_cpu --enable_sksl --enable_legacy_shader_context +build:ck_cpu --enable_legacy_shader_context # flags for using the CanvasKit debugger. build:ck_debugger --enable_build_for_debugger @@ -105,6 +105,21 @@ build:ck_full_cpu_release_chrome --config=ck_full_cpu_release build:debugger_app_container --config=ck_full_webgl2_debug_debugger \ --workspace_status_command=bazel/get_workspace_status.sh +# config when building //infra/jsfiddle:jsfiddle_container. +# This is invoked in a Louhi flow. +build:jsfiddle_container --config=ck_full_webgl2_release \ + --workspace_status_command=bazel/get_workspace_status.sh + +# config when building //infra/shaders:shaders_container. +# This is invoked in a Louhi flow. +build:shaders_container --config=ck_full_webgl2_release \ + --workspace_status_command=bazel/get_workspace_status.sh + +# config when building //infra/skottie:skottie_container. +# This is invoked in a Louhi flow. +build:skottie_container --config=ck_full_webgl2_release \ + --workspace_status_command=bazel/get_workspace_status.sh + # We only want to enforce IWYU on debug builds because we have some things that are only # necessary to include in debug mode (e.g. SkDEBUGCODE), but very rarely something that is # only needed in release mode. Thus our C++ debug includes should be a superset of the @@ -145,9 +160,6 @@ build:gl_ganesh --action_env=DISPLAY=:1 build:vulkan_ganesh --enable_gpu_test_utils --gpu_backend=vulkan_ganesh \ --cc_output_directory_tag=vulkan_ganesh -build:dawn_ganesh --enable_gpu_test_utils --gpu_backend=dawn_ganesh \ - --cc_output_directory_tag=dawn_ganesh - build:metal_ganesh --enable_gpu_test_utils --gpu_backend=metal_ganesh\ --cc_output_directory_tag=metal_ganesh @@ -155,8 +167,7 @@ build:metal_ganesh --enable_gpu_test_utils --gpu_backend=metal_ganesh\ build:cpu --config=cpu_only build:gl --config=gl_ganesh build:vk --config=vulkan_ganesh -build:dawn --config=dawn_ganesh # Layering check does not work without sandboxing because the system headers are not in the # right spot and so they are not found. -build:no_sandbox --spawn_strategy=local --features=-layering_check \ No newline at end of file +build:no_sandbox --spawn_strategy=local --features=-layering_check diff --git a/bazel/cc_binary_with_flags.bzl b/bazel/cc_binary_with_flags.bzl index 167a8d2ad711..3fb7fbad7d60 100644 --- a/bazel/cc_binary_with_flags.bzl +++ b/bazel/cc_binary_with_flags.bzl @@ -20,7 +20,6 @@ _bool_flags = [ "//src/lazy:enable_discardable_memory", "//src/lazy:use_default_global_memory_pool", "//src/pdf:enable_pdf_backend", - "//src/sksl:enable_sksl", "//src/sksl:enable_sksl_tracing", "//src/sksl:enable_skslc", "//src/svg:enable_svg_canvas", diff --git a/bazel/cipd_install.bzl b/bazel/cipd_install.bzl index f195cf11ac23..6d9ffa4f8884 100644 --- a/bazel/cipd_install.bzl +++ b/bazel/cipd_install.bzl @@ -7,21 +7,34 @@ on the host machine. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -def cipd_install(name, build_file_content, cipd_package, sha256, tag): +def cipd_install( + name, + cipd_package, + sha256, + tag, + build_file = None, + build_file_content = None, + postinstall_cmds_posix = None, + postinstall_cmds_win = None): """Download and extract the zipped archive from CIPD, making it available for Bazel rules. Args: name: The name of the Bazel "repository" created. For example, if name is "alpha_beta", - the full Bazel label will start with @alpha_beta// - build_file_content: CIPD packages do not come with BUILD.bazel files, so we must supply - one. This should generally contain exports_files or filegroup. + the full Bazel label will start with "@alpha_beta//". cipd_package: The full name of the CIPD package. This is a "path" from the root of CIPD. - This should be a publicly accessible package, as authentication is not - supported. + This should be a publicly accessible package, as authentication is not + supported. sha256: The sha256 hash of the zip archive downloaded from CIPD. This should match the - official CIPD website. - tag: Represents the version of the CIPD package to download. - For example, git_package:abc123... + official CIPD website. + tag: Represents the version of the CIPD package to download, e.g. "git_package:abc123...". + build_file: The file to use as the BUILD.bazel file for this repository. Such build files + typically contain "exports_files" and/or "filegroup" rules. Since CIPD packages do not + include BUILD.bazel files, we must provide our own. Either build_file or + build_file_content can be specified, but not both. + build_file_content: The content for the BUILD file for this repository. Either build_file + or build_file_content can be specified, but not both. + postinstall_cmds_posix: Optional Bash commands to run on Mac/Linux after download. + postinstall_cmds_win: Optional Powershell commands to run on Windows after download. """ cipd_url = "https://chrome-infra-packages.appspot.com/dl/" cipd_url += cipd_package @@ -31,13 +44,17 @@ def cipd_install(name, build_file_content, cipd_package, sha256, tag): mirror_url = "https://storage.googleapis.com/skia-world-readable/bazel/" mirror_url += sha256 mirror_url += ".zip" + http_archive( name = name, - build_file_content = build_file_content, sha256 = sha256, urls = [ cipd_url, mirror_url, ], type = "zip", + build_file = build_file, + build_file_content = build_file_content, + patch_cmds = postinstall_cmds_posix, + patch_cmds_win = postinstall_cmds_win, ) diff --git a/bazel/common_config_settings/BUILD.bazel b/bazel/common_config_settings/BUILD.bazel index a0fda3cf4062..b8ff38a7af51 100644 --- a/bazel/common_config_settings/BUILD.bazel +++ b/bazel/common_config_settings/BUILD.bazel @@ -208,11 +208,6 @@ bool_flag( default = False, ) -bool_flag( - name = "enable_sksl_in_raster_pipeline", - default = True, -) - bool_flag( name = "use_harfbuzz", default = False, diff --git a/bazel/deps.bzl b/bazel/deps.bzl index 285fe272671a..f1a975e82a9f 100644 --- a/bazel/deps.bzl +++ b/bazel/deps.bzl @@ -6,8 +6,11 @@ Instead, do: """ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("//bazel:gcs_mirror.bzl", "gcs_mirror_url") -def git_repos_from_deps(ws = "@"): +def c_plus_plus_deps(ws = "@"): """A list of native Bazel git rules to download third party git repositories These are in the order they appear in //DEPS. @@ -26,7 +29,7 @@ def git_repos_from_deps(ws = "@"): new_git_repository( name = "dawn", build_file = ws + "//bazel/external/dawn:BUILD.bazel", - commit = "beaf20f90f1bf21d235c99d5b49b8bb507b722b2", + commit = "b9afa50913de862e388195589917e7fbf30d2810", remote = "https://dawn.googlesource.com/dawn.git", ) @@ -53,14 +56,14 @@ def git_repos_from_deps(ws = "@"): new_git_repository( name = "freetype", build_file = ws + "//bazel/external/freetype:BUILD.bazel", - commit = "5769f13a6b9fafa3840726f06dde07e755501a16", + commit = "2d9fce53d4ce89f36075168282fcdd7289e082f9", remote = "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git", ) new_git_repository( name = "harfbuzz", build_file = ws + "//bazel/external/harfbuzz:BUILD.bazel", - commit = "f94508edd60e26a015586c37c29104d6bdc26462", + commit = "4cfc6d8e173e800df086d7be078da2e8c5cfca19", remote = "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git", ) @@ -157,19 +160,19 @@ def git_repos_from_deps(ws = "@"): new_git_repository( name = "spirv_cross", build_file = ws + "//bazel/external/spirv_cross:BUILD.bazel", - commit = "bccaa94db814af33d8ef05c153e7c34d8bd4d685", + commit = "54997fb4bc3adeb47b9b9f7bb67f1c25eaca2204", remote = "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross", ) git_repository( name = "spirv_headers", - commit = "124a9665e464ef98b8b718d572d5f329311061eb", + commit = "d790ced752b5bfc06b6988baadef6eb2d16bdf96", remote = "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git", ) git_repository( name = "spirv_tools", - commit = "4a9881fe9b32086d4ceac89a498b0dd34084b574", + commit = "3cc7e1c4c318aa4c4a7a8972b6066ab2d9d217cc", remote = "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git", ) @@ -183,14 +186,14 @@ def git_repos_from_deps(ws = "@"): new_git_repository( name = "vulkan_headers", build_file = ws + "//bazel/external/vulkan_headers:BUILD.bazel", - commit = "450ead13e1064584da027d91192bd7bfb724640f", + commit = "2634c969d7dc0e983f005f7f2e665cce8449efe6", remote = "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers", ) new_git_repository( name = "vulkan_tools", build_file = ws + "//bazel/external/vulkan_tools:BUILD.bazel", - commit = "1d8188a974ccd08caffb5bd7fec58751e0c7d786", + commit = "389110e4600669d82bca042859fddf898387c0d2", remote = "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools", ) @@ -207,3 +210,14 @@ def git_repos_from_deps(ws = "@"): commit = "c876c8f87101c5a75f6014b0f832499afeb65b73", remote = "https://chromium.googlesource.com/chromium/src/third_party/zlib", ) + +def bazel_deps(): + maybe( + http_archive, + name = "bazel_skylib", + sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", + urls = gcs_mirror_url( + sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", + url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz", + ), + ) diff --git a/bazel/deps_parser/deps_parser.go b/bazel/deps_parser/deps_parser.go index 62a4eaa1b280..f9585fa809ca 100644 --- a/bazel/deps_parser/deps_parser.go +++ b/bazel/deps_parser/deps_parser.go @@ -19,7 +19,7 @@ type depConfig struct { needsBazelFile bool } -// These are all deps used by the Bazel build. They are a subset of those listed in DEPS. +// These are all C++ deps used by the Bazel build. They are a subset of those listed in DEPS. // The key is the name of the repo as specified in DEPS. var deps = map[string]depConfig{ "abseil-cpp": {bazelNameOverride: "abseil_cpp"}, @@ -106,7 +106,7 @@ func parseDEPSFile(contents []string, workspaceFile string) (string, int, error) defer outputFile.Close() if _, err := outputFile.WriteString(header); err != nil { - return "", 0, fmt.Errorf("Could not write to output file %s: %s\n", outputFile.Name(), err) + return "", 0, fmt.Errorf("Could not write header to output file %s: %s\n", outputFile.Name(), err) } var nativeRepos []string @@ -146,6 +146,10 @@ func parseDEPSFile(contents []string, workspaceFile string) (string, int, error) return "", 0, fmt.Errorf("Not enough deps written. Maybe the deps dictionary needs a bazelNameOverride or an old dep needs to be removed?") } + if _, err := outputFile.WriteString(footer); err != nil { + return "", 0, fmt.Errorf("Could not write footer to output file %s: %s\n", outputFile.Name(), err) + } + if newWorkspaceFile, err := writeCommentsToWorkspace(workspaceFile, nativeRepos, providedRepos); err != nil { fmt.Printf("Could not parse workspace file %s: %s\n", workspaceFile, err) os.Exit(1) @@ -231,8 +235,11 @@ Instead, do: """ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("//bazel:gcs_mirror.bzl", "gcs_mirror_url") -def git_repos_from_deps(ws = "@"): +def c_plus_plus_deps(ws = "@"): """A list of native Bazel git rules to download third party git repositories These are in the order they appear in //DEPS. @@ -243,6 +250,20 @@ def git_repos_from_deps(ws = "@"): Skia workspace. """` +// If necessary, we can make a new map for bazel deps +const footer = ` +def bazel_deps(): + maybe( + http_archive, + name = "bazel_skylib", + sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", + urls = gcs_mirror_url( + sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", + url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz", + ), + ) +` + func writeNewGitRepositoryRule(w io.StringWriter, bazelName, repo, rev string) error { // TODO(kjlubick) In a newer version of Bazel, new_git_repository can be replaced with just // git_repository diff --git a/bazel/exporter/bazel_query_command.go b/bazel/exporter/bazel_query_command.go index d66c5b112755..edb2d4375287 100644 --- a/bazel/exporter/bazel_query_command.go +++ b/bazel/exporter/bazel_query_command.go @@ -37,7 +37,6 @@ var allSkiaFlags = []string{ "--enable_gpu_test_utils", "--enable_pdf_backend", "--enable_sksl_tracing", - "--enable_sksl", // "--enable_skslc", // external dependency on spirv-tools/libspirv.hpp "--enable_svg_canvas", "--enable_tracing", diff --git a/bazel/exporter/cmake_exporter_test.go b/bazel/exporter/cmake_exporter_test.go index 0f75891e0723..d4b6cf77cb93 100644 --- a/bazel/exporter/cmake_exporter_test.go +++ b/bazel/exporter/cmake_exporter_test.go @@ -205,6 +205,26 @@ else() endif() +# //src/apps:hello +add_executable(src_apps_hello "") +target_sources(src_apps_hello + PRIVATE + # Sources: + "${CMAKE_SOURCE_DIR}/src/apps/hello-world.cpp" +) +set_target_properties(src_apps_hello PROPERTIES COMPILE_FLAGS + "${DEFAULT_COMPILE_FLAGS} -O1" +) +set_target_properties(src_apps_hello PROPERTIES LINK_FLAGS + "-L/app/dir" +) +set_target_properties(src_apps_hello PROPERTIES COMPILE_DEFINITIONS + "APPDEF;SUMDEF" +) +set_target_properties(src_apps_hello PROPERTIES INCLUDE_DIRECTORIES + "${CMAKE_SOURCE_DIR}/src/libs;${CMAKE_SOURCE_DIR}" +) + # //src/libs:sum add_library(src_libs_sum "") target_sources(src_libs_sum @@ -226,27 +246,8 @@ set_target_properties(src_libs_sum PROPERTIES COMPILE_DEFINITIONS set_target_properties(src_libs_sum PROPERTIES INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/libs;${CMAKE_SOURCE_DIR}" ) - -# //src/apps:hello -add_executable(src_apps_hello "") -target_sources(src_apps_hello - PRIVATE - # Sources: - "${CMAKE_SOURCE_DIR}/src/apps/hello-world.cpp" -) -set_target_properties(src_apps_hello PROPERTIES COMPILE_FLAGS - "${DEFAULT_COMPILE_FLAGS} -O1" -) -set_target_properties(src_apps_hello PROPERTIES LINK_FLAGS - "-L/app/dir" -) -set_target_properties(src_apps_hello PROPERTIES COMPILE_DEFINITIONS - "APPDEF;SUMDEF" -) -set_target_properties(src_apps_hello PROPERTIES INCLUDE_DIRECTORIES - "${CMAKE_SOURCE_DIR}/src/libs;${CMAKE_SOURCE_DIR}" -) ` + assert.Equal(t, expected, contents.String()) } diff --git a/bazel/exporter/cmake_workspace.go b/bazel/exporter/cmake_workspace.go index 5e9229ac5d9c..bcb74ca3989b 100644 --- a/bazel/exporter/cmake_workspace.go +++ b/bazel/exporter/cmake_workspace.go @@ -8,6 +8,7 @@ package exporter import ( "fmt" "io" + "sort" "go.skia.org/infra/go/skerr" "go.skia.org/infra/go/util" @@ -97,9 +98,17 @@ func (w *cmakeWorkspace) writeRule(writer io.Writer, r *cmakeRule, state *writeS // Write this workspace using the given writer. func (w *cmakeWorkspace) write(writer io.Writer) (int, error) { + // Sort rule names to ensure a deterministic output. + var sortedRuleNames []string + for name := range w.rules { + sortedRuleNames = append(sortedRuleNames, name) + } + sort.Strings(sortedRuleNames) + var state writeState nb := 0 - for _, r := range w.rules { + for _, name := range sortedRuleNames { + r := w.rules[name] num, err := w.writeRule(writer, r, &state) if err != nil { return nb, skerr.Wrap(err) diff --git a/bazel/exporter/gni_exporter.go b/bazel/exporter/gni_exporter.go index 4d0eae8cb077..347ec06fb9f9 100644 --- a/bazel/exporter/gni_exporter.go +++ b/bazel/exporter/gni_exporter.go @@ -94,7 +94,8 @@ sksl_metal_tests_sources = sksl_hlsl_tests_sources = sksl_blend_tests + sksl_shared_tests -sksl_wgsl_tests_sources = sksl_blend_tests + sksl_shared_tests + sksl_wgsl_tests +sksl_wgsl_tests_sources = + sksl_blend_tests + sksl_folding_tests + sksl_shared_tests + sksl_wgsl_tests sksl_spirv_tests_sources = sksl_blend_tests + sksl_compute_tests + sksl_shared_tests + sksl_spirv_tests @@ -493,7 +494,7 @@ func (e *GNIExporter) convertGNIFileList(desc GNIFileListExportDesc, qr *build.Q for _, bazelFile := range rules { fmt.Fprintf(&contents, "# %s\n", bazelFile) } - } else { + } else if len(rules) > 0 { fmt.Fprintf(&contents, "# Generated by Bazel rule %s\n", rules[0]) } fmt.Fprintf(&contents, "%s = [\n", desc.Var) diff --git a/bazel/exporter/gni_exporter_test.go b/bazel/exporter/gni_exporter_test.go index c420416adc11..ab15e43773fc 100644 --- a/bazel/exporter/gni_exporter_test.go +++ b/bazel/exporter/gni_exporter_test.go @@ -48,6 +48,7 @@ skia_core_sources += skia_skpicture_sources skia_core_public += skia_pathops_public skia_core_public += skia_skpicture_public + ` var exportDescs = []GNIExportDesc{ diff --git a/bazel/exporter_tool/main.go b/bazel/exporter_tool/main.go index e8520e5b587b..775f9f3287cd 100644 --- a/bazel/exporter_tool/main.go +++ b/bazel/exporter_tool/main.go @@ -74,13 +74,6 @@ var gniExportDescs = []exporter.GNIExportDesc{ "//src/text:text_hdrs", "//src/text:text_srcs", }}, - {Var: "skia_needs_sksl_sources", - Rules: []string{ - "//src/core:sksl_hdrs", - "//src/core:sksl_srcs", - "//src/shaders:sksl_hdrs", - "//src/shaders:sksl_srcs", - }}, {Var: "skia_pathops_public", Rules: []string{"//include/pathops:public_hdrs"}}, {Var: "skia_pathops_sources", @@ -149,14 +142,6 @@ var gniExportDescs = []exporter.GNIExportDesc{ "//src/effects/colorfilters:colorfilter_srcs", "//src/effects/colorfilters:colorfilter_hdrs", }}, - {Var: "skia_colorfilters_sksl_sources", - Rules: []string{ - "//src/effects/colorfilters:sksl_srcs", - }}, - {Var: "skia_colorfilters_nosksl_sources", - Rules: []string{ - "//src/effects/colorfilters:no_sksl_srcs", - }}, }}, {GNI: "gn/effects_imagefilters.gni", Vars: []exporter.GNIFileListExportDesc{ {Var: "skia_effects_imagefilter_public", @@ -213,13 +198,15 @@ var gniExportDescs = []exporter.GNIExportDesc{ {Var: "skslc_deps", Rules: []string{ "//src/base:skslc_srcs", + "//src/core:core_skslc_hdrs", "//src/core:core_skslc_srcs", + "//src/gpu/ganesh:core_skslc_hdrs", "//src/gpu/ganesh:core_skslc_srcs", "//src/ports:malloc", "//src/ports:osfile", + "//src/utils:core_skslc_hdrs", "//src/utils:core_skslc_srcs", "//src/utils:json_srcs", - "//src/utils:sksl_srcs", }}}, }, {GNI: "gn/sksl_tests.gni", Vars: []exporter.GNIFileListExportDesc{ @@ -254,8 +241,6 @@ var gniExportDescs = []exporter.GNIExportDesc{ "//src/utils:core_srcs", "//src/utils:json_hdrs", "//src/utils:json_srcs", - "//src/utils:sksl_hdrs", - "//src/utils:sksl_srcs", "//src/utils/mac:core_hdrs", "//src/utils/mac:core_srcs", "//src/utils/win:core_hdrs", @@ -351,6 +336,7 @@ var gniExportDescs = []exporter.GNIExportDesc{ {Var: "skia_gpu_vk_public", Rules: []string{ "//include/gpu/vk:public_hdrs", + "//include/gpu/ganesh/vk:public_hdrs", }}, {Var: "skia_gpu_vk_chromium_public", Rules: []string{ @@ -373,16 +359,6 @@ var gniExportDescs = []exporter.GNIExportDesc{ "//src/gpu/ganesh/d3d:d3d_hdrs", "//src/gpu/ganesh/d3d:d3d_srcs", }}, - {Var: "skia_gpu_dawn_public", - Rules: []string{ - "//include/gpu/dawn:public_hdrs", - }}, - {Var: "skia_gpu_dawn_private", - Rules: []string{ - "//include/private/gpu/ganesh:dawn_private_hdrs", - "//src/gpu/ganesh/dawn:dawn_hdrs", - "//src/gpu/ganesh/dawn:dawn_srcs", - }}, {Var: "skia_gpu_metal_public", Rules: []string{ "//include/gpu/mtl:public_hdrs", @@ -450,6 +426,20 @@ var gniExportDescs = []exporter.GNIExportDesc{ "//modules/svg/src:srcs", }}, }}, + {GNI: "modules/bentleyottmann/bentleyottmann.gni", Vars: []exporter.GNIFileListExportDesc{ + {Var: "bentleyottmann_public", + Rules: []string{ + "//modules/bentleyottmann/include:hdrs", + }}, + {Var: "bentleyottmann_sources", + Rules: []string{ + "//modules/bentleyottmann/src:srcs", + }}, + {Var: "bentleyottmann_tests", + Rules: []string{ + "//modules/bentleyottmann/tests:tests", + }}, + }}, {GNI: "modules/skparagraph/skparagraph.gni", Vars: []exporter.GNIFileListExportDesc{ {Var: "skparagraph_public", Rules: []string{ @@ -495,6 +485,8 @@ var gniExportDescs = []exporter.GNIExportDesc{ Rules: []string{"//modules/skunicode/src:srcs"}}, {Var: "skia_unicode_icu_sources", Rules: []string{"//modules/skunicode/src:icu_srcs"}}, + {Var: "skia_unicode_icu_bidi_sources", + Rules: []string{"//modules/skunicode/src:icu_bidi_srcs"}}, {Var: "skia_unicode_client_icu_sources", Rules: []string{"//modules/skunicode/src:client_srcs"}}, {Var: "skia_unicode_builtin_icu_sources", diff --git a/bazel/external/dawn/BUILD.bazel b/bazel/external/dawn/BUILD.bazel index 0d9423cbb4cc..21885cd3b682 100644 --- a/bazel/external/dawn/BUILD.bazel +++ b/bazel/external/dawn/BUILD.bazel @@ -632,7 +632,7 @@ cc_library( ], visibility = ["//visibility:private"], # only used by :dawn deps = [ - # Dawn specifically depends on dawn/src/tint:libtint + # Dawn specifically depends on dawn/src/tint/api:api ":tint", "@abseil_cpp//absl/strings:str_format", "@vulkan_headers", @@ -688,651 +688,686 @@ TINT_HDRS = [ ] TINT_SRCS = [ - "include/tint/override_id.h", + # Start with the general tint build sources + # "src/tint/api", + "src/tint/api/tint.h", + "src/tint/api/tint.cc", + # "src/tint/api/common", + "src/tint/api/common/binding_point.h", + "src/tint/api/common/common.cc", + "src/tint/api/common/override_id.h", + # "src/tint/api/options/BUILD.gn", + "src/tint/api/options/array_length_from_uniform.h", + "src/tint/api/options/binding_remapper.h", + "src/tint/api/options/external_texture.h", + "src/tint/api/options/options.cc", + "src/tint/api/options/texture_builtins_from_uniform.h", + # "src/tint/lang/core/BUILD.gn", + "src/tint/lang/core/access.cc", + "src/tint/lang/core/access.h", + "src/tint/lang/core/address_space.cc", + "src/tint/lang/core/address_space.h", + "src/tint/lang/core/attribute.cc", + "src/tint/lang/core/attribute.h", + "src/tint/lang/core/binary_op.cc", + "src/tint/lang/core/binary_op.h", + "src/tint/lang/core/builtin.cc", + "src/tint/lang/core/builtin.h", + "src/tint/lang/core/builtin_value.cc", + "src/tint/lang/core/builtin_value.h", + "src/tint/lang/core/diagnostic_rule.cc", + "src/tint/lang/core/diagnostic_rule.h", + "src/tint/lang/core/diagnostic_severity.cc", + "src/tint/lang/core/diagnostic_severity.h", + "src/tint/lang/core/evaluation_stage.h", + "src/tint/lang/core/extension.cc", + "src/tint/lang/core/extension.h", + "src/tint/lang/core/fluent_types.h", + "src/tint/lang/core/function.cc", + "src/tint/lang/core/function.h", + "src/tint/lang/core/interpolation.h", + "src/tint/lang/core/interpolation_sampling.cc", + "src/tint/lang/core/interpolation_sampling.h", + "src/tint/lang/core/interpolation_type.cc", + "src/tint/lang/core/interpolation_type.h", + "src/tint/lang/core/number.cc", + "src/tint/lang/core/number.h", + "src/tint/lang/core/parameter_usage.cc", + "src/tint/lang/core/parameter_usage.h", + "src/tint/lang/core/texel_format.cc", + "src/tint/lang/core/texel_format.h", + "src/tint/lang/core/unary_op.cc", + "src/tint/lang/core/unary_op.h", + # "src/tint/lang/core/constant/BUILD.gn", + "src/tint/lang/core/constant/clone_context.h", + "src/tint/lang/core/constant/composite.cc", + "src/tint/lang/core/constant/composite.h", + "src/tint/lang/core/constant/eval.cc", + "src/tint/lang/core/constant/eval.h", + "src/tint/lang/core/constant/manager.cc", + "src/tint/lang/core/constant/manager.h", + "src/tint/lang/core/constant/node.cc", + "src/tint/lang/core/constant/node.h", + "src/tint/lang/core/constant/scalar.cc", + "src/tint/lang/core/constant/scalar.h", + "src/tint/lang/core/constant/splat.cc", + "src/tint/lang/core/constant/splat.h", + "src/tint/lang/core/constant/value.cc", + "src/tint/lang/core/constant/value.h", + # "src/tint/lang/core/intrinsic/BUILD.gn", + "src/tint/lang/core/intrinsic/ctor_conv.cc", + "src/tint/lang/core/intrinsic/ctor_conv.h", + "src/tint/lang/core/intrinsic/table.cc", + "src/tint/lang/core/intrinsic/table.h", + "src/tint/lang/core/intrinsic/table_data.h", + # "src/tint/lang/core/intrinsic/data/BUILD.gn", + "src/tint/lang/core/intrinsic/data/data.cc", + "src/tint/lang/core/intrinsic/data/data.h", + "src/tint/lang/core/intrinsic/data/type_matchers.h", + # "src/tint/lang/core/type/BUILD.gn", + "src/tint/lang/core/type/abstract_float.cc", + "src/tint/lang/core/type/abstract_float.h", + "src/tint/lang/core/type/abstract_int.cc", + "src/tint/lang/core/type/abstract_int.h", + "src/tint/lang/core/type/abstract_numeric.cc", + "src/tint/lang/core/type/abstract_numeric.h", + "src/tint/lang/core/type/array.cc", + "src/tint/lang/core/type/array.h", + "src/tint/lang/core/type/array_count.cc", + "src/tint/lang/core/type/array_count.h", + "src/tint/lang/core/type/atomic.cc", + "src/tint/lang/core/type/atomic.h", + "src/tint/lang/core/type/bool.cc", + "src/tint/lang/core/type/bool.h", + "src/tint/lang/core/type/builtin_structs.cc", + "src/tint/lang/core/type/builtin_structs.h", + "src/tint/lang/core/type/clone_context.h", + "src/tint/lang/core/type/depth_multisampled_texture.cc", + "src/tint/lang/core/type/depth_multisampled_texture.h", + "src/tint/lang/core/type/depth_texture.cc", + "src/tint/lang/core/type/depth_texture.h", + "src/tint/lang/core/type/external_texture.cc", + "src/tint/lang/core/type/external_texture.h", + "src/tint/lang/core/type/f16.cc", + "src/tint/lang/core/type/f16.h", + "src/tint/lang/core/type/f32.cc", + "src/tint/lang/core/type/f32.h", + "src/tint/lang/core/type/i32.cc", + "src/tint/lang/core/type/i32.h", + "src/tint/lang/core/type/manager.cc", + "src/tint/lang/core/type/manager.h", + "src/tint/lang/core/type/matrix.cc", + "src/tint/lang/core/type/matrix.h", + "src/tint/lang/core/type/multisampled_texture.cc", + "src/tint/lang/core/type/multisampled_texture.h", + "src/tint/lang/core/type/node.cc", + "src/tint/lang/core/type/node.h", + "src/tint/lang/core/type/numeric_scalar.cc", + "src/tint/lang/core/type/numeric_scalar.h", + "src/tint/lang/core/type/pointer.cc", + "src/tint/lang/core/type/pointer.h", + "src/tint/lang/core/type/reference.cc", + "src/tint/lang/core/type/reference.h", + "src/tint/lang/core/type/sampled_texture.cc", + "src/tint/lang/core/type/sampled_texture.h", + "src/tint/lang/core/type/sampler.cc", + "src/tint/lang/core/type/sampler.h", + "src/tint/lang/core/type/sampler_kind.cc", + "src/tint/lang/core/type/sampler_kind.h", + "src/tint/lang/core/type/scalar.cc", + "src/tint/lang/core/type/scalar.h", + "src/tint/lang/core/type/storage_texture.cc", + "src/tint/lang/core/type/storage_texture.h", + "src/tint/lang/core/type/struct.cc", + "src/tint/lang/core/type/struct.h", + "src/tint/lang/core/type/texture.cc", + "src/tint/lang/core/type/texture.h", + "src/tint/lang/core/type/texture_dimension.cc", + "src/tint/lang/core/type/texture_dimension.h", + "src/tint/lang/core/type/type.cc", + "src/tint/lang/core/type/type.h", + "src/tint/lang/core/type/u32.cc", + "src/tint/lang/core/type/u32.h", + "src/tint/lang/core/type/unique_node.cc", + "src/tint/lang/core/type/unique_node.h", + "src/tint/lang/core/type/vector.cc", + "src/tint/lang/core/type/vector.h", + "src/tint/lang/core/type/void.cc", + "src/tint/lang/core/type/void.h", + # "src/tint/lang/hlsl/writer/common/BUILD.gn", + "src/tint/lang/hlsl/writer/common/options.cc", + "src/tint/lang/hlsl/writer/common/options.h", + # "src/tint/lang/spirv/reader/common/BUILD.gn", + "src/tint/lang/spirv/reader/common/common.cc", + "src/tint/lang/spirv/reader/common/options.h", + # "src/tint/lang/spirv/writer/common/BUILD.gn", + "src/tint/lang/spirv/writer/common/binary_writer.cc", + "src/tint/lang/spirv/writer/common/binary_writer.h", + "src/tint/lang/spirv/writer/common/function.cc", + "src/tint/lang/spirv/writer/common/function.h", + "src/tint/lang/spirv/writer/common/instruction.cc", + "src/tint/lang/spirv/writer/common/instruction.h", + "src/tint/lang/spirv/writer/common/module.cc", + "src/tint/lang/spirv/writer/common/module.h", + "src/tint/lang/spirv/writer/common/operand.cc", + "src/tint/lang/spirv/writer/common/operand.h", + "src/tint/lang/spirv/writer/common/options.h", + # "src/tint/lang/wgsl/ast/BUILD.gn", + "src/tint/lang/wgsl/ast/accessor_expression.cc", + "src/tint/lang/wgsl/ast/accessor_expression.h", + "src/tint/lang/wgsl/ast/alias.cc", + "src/tint/lang/wgsl/ast/alias.h", + "src/tint/lang/wgsl/ast/assignment_statement.cc", + "src/tint/lang/wgsl/ast/assignment_statement.h", + "src/tint/lang/wgsl/ast/attribute.cc", + "src/tint/lang/wgsl/ast/attribute.h", + "src/tint/lang/wgsl/ast/binary_expression.cc", + "src/tint/lang/wgsl/ast/binary_expression.h", + "src/tint/lang/wgsl/ast/binding_attribute.cc", + "src/tint/lang/wgsl/ast/binding_attribute.h", + "src/tint/lang/wgsl/ast/bitcast_expression.cc", + "src/tint/lang/wgsl/ast/bitcast_expression.h", + "src/tint/lang/wgsl/ast/block_statement.cc", + "src/tint/lang/wgsl/ast/block_statement.h", + "src/tint/lang/wgsl/ast/bool_literal_expression.cc", + "src/tint/lang/wgsl/ast/bool_literal_expression.h", + "src/tint/lang/wgsl/ast/break_if_statement.cc", + "src/tint/lang/wgsl/ast/break_if_statement.h", + "src/tint/lang/wgsl/ast/break_statement.cc", + "src/tint/lang/wgsl/ast/break_statement.h", + "src/tint/lang/wgsl/ast/builder.cc", + "src/tint/lang/wgsl/ast/builder.h", + "src/tint/lang/wgsl/ast/builtin_attribute.cc", + "src/tint/lang/wgsl/ast/builtin_attribute.h", + "src/tint/lang/wgsl/ast/call_expression.cc", + "src/tint/lang/wgsl/ast/call_expression.h", + "src/tint/lang/wgsl/ast/call_statement.cc", + "src/tint/lang/wgsl/ast/call_statement.h", + "src/tint/lang/wgsl/ast/case_selector.cc", + "src/tint/lang/wgsl/ast/case_selector.h", + "src/tint/lang/wgsl/ast/case_statement.cc", + "src/tint/lang/wgsl/ast/case_statement.h", + "src/tint/lang/wgsl/ast/clone_context.cc", + "src/tint/lang/wgsl/ast/clone_context.h", + "src/tint/lang/wgsl/ast/compound_assignment_statement.cc", + "src/tint/lang/wgsl/ast/compound_assignment_statement.h", + "src/tint/lang/wgsl/ast/const.cc", + "src/tint/lang/wgsl/ast/const.h", + "src/tint/lang/wgsl/ast/const_assert.cc", + "src/tint/lang/wgsl/ast/const_assert.h", + "src/tint/lang/wgsl/ast/continue_statement.cc", + "src/tint/lang/wgsl/ast/continue_statement.h", + "src/tint/lang/wgsl/ast/diagnostic_attribute.cc", + "src/tint/lang/wgsl/ast/diagnostic_attribute.h", + "src/tint/lang/wgsl/ast/diagnostic_control.cc", + "src/tint/lang/wgsl/ast/diagnostic_control.h", + "src/tint/lang/wgsl/ast/diagnostic_directive.cc", + "src/tint/lang/wgsl/ast/diagnostic_directive.h", + "src/tint/lang/wgsl/ast/diagnostic_rule_name.cc", + "src/tint/lang/wgsl/ast/diagnostic_rule_name.h", + "src/tint/lang/wgsl/ast/disable_validation_attribute.cc", + "src/tint/lang/wgsl/ast/disable_validation_attribute.h", + "src/tint/lang/wgsl/ast/discard_statement.cc", + "src/tint/lang/wgsl/ast/discard_statement.h", + "src/tint/lang/wgsl/ast/enable.cc", + "src/tint/lang/wgsl/ast/enable.h", + "src/tint/lang/wgsl/ast/expression.cc", + "src/tint/lang/wgsl/ast/expression.h", + "src/tint/lang/wgsl/ast/extension.cc", + "src/tint/lang/wgsl/ast/extension.h", + "src/tint/lang/wgsl/ast/float_literal_expression.cc", + "src/tint/lang/wgsl/ast/float_literal_expression.h", + "src/tint/lang/wgsl/ast/for_loop_statement.cc", + "src/tint/lang/wgsl/ast/for_loop_statement.h", + "src/tint/lang/wgsl/ast/function.cc", + "src/tint/lang/wgsl/ast/function.h", + "src/tint/lang/wgsl/ast/group_attribute.cc", + "src/tint/lang/wgsl/ast/group_attribute.h", + "src/tint/lang/wgsl/ast/id_attribute.cc", + "src/tint/lang/wgsl/ast/id_attribute.h", + "src/tint/lang/wgsl/ast/identifier.cc", + "src/tint/lang/wgsl/ast/identifier.h", + "src/tint/lang/wgsl/ast/identifier_expression.cc", + "src/tint/lang/wgsl/ast/identifier_expression.h", + "src/tint/lang/wgsl/ast/if_statement.cc", + "src/tint/lang/wgsl/ast/if_statement.h", + "src/tint/lang/wgsl/ast/increment_decrement_statement.cc", + "src/tint/lang/wgsl/ast/increment_decrement_statement.h", + "src/tint/lang/wgsl/ast/index_accessor_expression.cc", + "src/tint/lang/wgsl/ast/index_accessor_expression.h", + "src/tint/lang/wgsl/ast/index_attribute.cc", + "src/tint/lang/wgsl/ast/index_attribute.h", + "src/tint/lang/wgsl/ast/int_literal_expression.cc", + "src/tint/lang/wgsl/ast/int_literal_expression.h", + "src/tint/lang/wgsl/ast/internal_attribute.cc", + "src/tint/lang/wgsl/ast/internal_attribute.h", + "src/tint/lang/wgsl/ast/interpolate_attribute.cc", + "src/tint/lang/wgsl/ast/interpolate_attribute.h", + "src/tint/lang/wgsl/ast/invariant_attribute.cc", + "src/tint/lang/wgsl/ast/invariant_attribute.h", + "src/tint/lang/wgsl/ast/let.cc", + "src/tint/lang/wgsl/ast/let.h", + "src/tint/lang/wgsl/ast/literal_expression.cc", + "src/tint/lang/wgsl/ast/literal_expression.h", + "src/tint/lang/wgsl/ast/location_attribute.cc", + "src/tint/lang/wgsl/ast/location_attribute.h", + "src/tint/lang/wgsl/ast/loop_statement.cc", + "src/tint/lang/wgsl/ast/loop_statement.h", + "src/tint/lang/wgsl/ast/member_accessor_expression.cc", + "src/tint/lang/wgsl/ast/member_accessor_expression.h", + "src/tint/lang/wgsl/ast/module.cc", + "src/tint/lang/wgsl/ast/module.h", + "src/tint/lang/wgsl/ast/must_use_attribute.cc", + "src/tint/lang/wgsl/ast/must_use_attribute.h", + "src/tint/lang/wgsl/ast/node.cc", + "src/tint/lang/wgsl/ast/node.h", + "src/tint/lang/wgsl/ast/node_id.h", + "src/tint/lang/wgsl/ast/override.cc", + "src/tint/lang/wgsl/ast/override.h", + "src/tint/lang/wgsl/ast/parameter.cc", + "src/tint/lang/wgsl/ast/parameter.h", + "src/tint/lang/wgsl/ast/phony_expression.cc", + "src/tint/lang/wgsl/ast/phony_expression.h", + "src/tint/lang/wgsl/ast/pipeline_stage.cc", + "src/tint/lang/wgsl/ast/pipeline_stage.h", + "src/tint/lang/wgsl/ast/return_statement.cc", + "src/tint/lang/wgsl/ast/return_statement.h", + "src/tint/lang/wgsl/ast/stage_attribute.cc", + "src/tint/lang/wgsl/ast/stage_attribute.h", + "src/tint/lang/wgsl/ast/statement.cc", + "src/tint/lang/wgsl/ast/statement.h", + "src/tint/lang/wgsl/ast/stride_attribute.cc", + "src/tint/lang/wgsl/ast/stride_attribute.h", + "src/tint/lang/wgsl/ast/struct.cc", + "src/tint/lang/wgsl/ast/struct.h", + "src/tint/lang/wgsl/ast/struct_member.cc", + "src/tint/lang/wgsl/ast/struct_member.h", + "src/tint/lang/wgsl/ast/struct_member_align_attribute.cc", + "src/tint/lang/wgsl/ast/struct_member_align_attribute.h", + "src/tint/lang/wgsl/ast/struct_member_offset_attribute.cc", + "src/tint/lang/wgsl/ast/struct_member_offset_attribute.h", + "src/tint/lang/wgsl/ast/struct_member_size_attribute.cc", + "src/tint/lang/wgsl/ast/struct_member_size_attribute.h", + "src/tint/lang/wgsl/ast/switch_statement.cc", + "src/tint/lang/wgsl/ast/switch_statement.h", + "src/tint/lang/wgsl/ast/templated_identifier.cc", + "src/tint/lang/wgsl/ast/templated_identifier.h", + "src/tint/lang/wgsl/ast/traverse_expressions.h", + "src/tint/lang/wgsl/ast/type.cc", + "src/tint/lang/wgsl/ast/type.h", + "src/tint/lang/wgsl/ast/type_decl.cc", + "src/tint/lang/wgsl/ast/type_decl.h", + "src/tint/lang/wgsl/ast/unary_op_expression.cc", + "src/tint/lang/wgsl/ast/unary_op_expression.h", + "src/tint/lang/wgsl/ast/var.cc", + "src/tint/lang/wgsl/ast/var.h", + "src/tint/lang/wgsl/ast/variable.cc", + "src/tint/lang/wgsl/ast/variable.h", + "src/tint/lang/wgsl/ast/variable_decl_statement.cc", + "src/tint/lang/wgsl/ast/variable_decl_statement.h", + "src/tint/lang/wgsl/ast/while_statement.cc", + "src/tint/lang/wgsl/ast/while_statement.h", + "src/tint/lang/wgsl/ast/workgroup_attribute.cc", + "src/tint/lang/wgsl/ast/workgroup_attribute.h", + # "src/tint/lang/wgsl/ast/transform/BUILD.gn", + "src/tint/lang/wgsl/ast/transform/add_block_attribute.cc", + "src/tint/lang/wgsl/ast/transform/add_block_attribute.h", + "src/tint/lang/wgsl/ast/transform/add_empty_entry_point.cc", + "src/tint/lang/wgsl/ast/transform/add_empty_entry_point.h", + "src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc", + "src/tint/lang/wgsl/ast/transform/array_length_from_uniform.h", + "src/tint/lang/wgsl/ast/transform/binding_remapper.cc", + "src/tint/lang/wgsl/ast/transform/binding_remapper.h", + "src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc", + "src/tint/lang/wgsl/ast/transform/builtin_polyfill.h", + "src/tint/lang/wgsl/ast/transform/calculate_array_length.cc", + "src/tint/lang/wgsl/ast/transform/calculate_array_length.h", + "src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc", + "src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.h", + "src/tint/lang/wgsl/ast/transform/clamp_frag_depth.cc", + "src/tint/lang/wgsl/ast/transform/clamp_frag_depth.h", + "src/tint/lang/wgsl/ast/transform/combine_samplers.cc", + "src/tint/lang/wgsl/ast/transform/combine_samplers.h", + "src/tint/lang/wgsl/ast/transform/data.cc", + "src/tint/lang/wgsl/ast/transform/data.h", + "src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc", + "src/tint/lang/wgsl/ast/transform/decompose_memory_access.h", + "src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc", + "src/tint/lang/wgsl/ast/transform/decompose_strided_array.h", + "src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc", + "src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.h", + "src/tint/lang/wgsl/ast/transform/demote_to_helper.cc", + "src/tint/lang/wgsl/ast/transform/demote_to_helper.h", + "src/tint/lang/wgsl/ast/transform/direct_variable_access.cc", + "src/tint/lang/wgsl/ast/transform/direct_variable_access.h", + "src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc", + "src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.h", + "src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc", + "src/tint/lang/wgsl/ast/transform/expand_compound_assignment.h", + "src/tint/lang/wgsl/ast/transform/first_index_offset.cc", + "src/tint/lang/wgsl/ast/transform/first_index_offset.h", + "src/tint/lang/wgsl/ast/transform/fold_trivial_lets.cc", + "src/tint/lang/wgsl/ast/transform/fold_trivial_lets.h", + "src/tint/lang/wgsl/ast/transform/for_loop_to_loop.cc", + "src/tint/lang/wgsl/ast/transform/for_loop_to_loop.h", + "src/tint/lang/wgsl/ast/transform/get_insertion_point.cc", + "src/tint/lang/wgsl/ast/transform/get_insertion_point.h", + "src/tint/lang/wgsl/ast/transform/hoist_to_decl_before.cc", + "src/tint/lang/wgsl/ast/transform/hoist_to_decl_before.h", + "src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc", + "src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.h", + "src/tint/lang/wgsl/ast/transform/manager.cc", + "src/tint/lang/wgsl/ast/transform/manager.h", + "src/tint/lang/wgsl/ast/transform/merge_return.cc", + "src/tint/lang/wgsl/ast/transform/merge_return.h", + "src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.cc", + "src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.h", + "src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.cc", + "src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.h", + "src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc", + "src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.h", + "src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc", + "src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.h", + "src/tint/lang/wgsl/ast/transform/packed_vec3.cc", + "src/tint/lang/wgsl/ast/transform/packed_vec3.h", + "src/tint/lang/wgsl/ast/transform/pad_structs.cc", + "src/tint/lang/wgsl/ast/transform/pad_structs.h", + "src/tint/lang/wgsl/ast/transform/preserve_padding.cc", + "src/tint/lang/wgsl/ast/transform/preserve_padding.h", + "src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc", + "src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.h", + "src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.cc", + "src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.h", + "src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.cc", + "src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.h", + "src/tint/lang/wgsl/ast/transform/remove_phonies.cc", + "src/tint/lang/wgsl/ast/transform/remove_phonies.h", + "src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.cc", + "src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.h", + "src/tint/lang/wgsl/ast/transform/renamer.cc", + "src/tint/lang/wgsl/ast/transform/renamer.h", + "src/tint/lang/wgsl/ast/transform/robustness.cc", + "src/tint/lang/wgsl/ast/transform/robustness.h", + "src/tint/lang/wgsl/ast/transform/simplify_pointers.cc", + "src/tint/lang/wgsl/ast/transform/simplify_pointers.h", + "src/tint/lang/wgsl/ast/transform/single_entry_point.cc", + "src/tint/lang/wgsl/ast/transform/single_entry_point.h", + "src/tint/lang/wgsl/ast/transform/spirv_atomic.cc", + "src/tint/lang/wgsl/ast/transform/spirv_atomic.h", + "src/tint/lang/wgsl/ast/transform/std140.cc", + "src/tint/lang/wgsl/ast/transform/std140.h", + "src/tint/lang/wgsl/ast/transform/substitute_override.cc", + "src/tint/lang/wgsl/ast/transform/substitute_override.h", + "src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc", + "src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.h", + "src/tint/lang/wgsl/ast/transform/texture_builtins_from_uniform.cc", + "src/tint/lang/wgsl/ast/transform/texture_builtins_from_uniform.h", + "src/tint/lang/wgsl/ast/transform/transform.cc", + "src/tint/lang/wgsl/ast/transform/transform.h", + "src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.cc", + "src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.h", + "src/tint/lang/wgsl/ast/transform/unshadow.cc", + "src/tint/lang/wgsl/ast/transform/unshadow.h", + "src/tint/lang/wgsl/ast/transform/var_for_dynamic_index.cc", + "src/tint/lang/wgsl/ast/transform/var_for_dynamic_index.h", + "src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc", + "src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.h", + "src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc", + "src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.h", + "src/tint/lang/wgsl/ast/transform/vertex_pulling.cc", + "src/tint/lang/wgsl/ast/transform/vertex_pulling.h", + "src/tint/lang/wgsl/ast/transform/while_to_loop.cc", + "src/tint/lang/wgsl/ast/transform/while_to_loop.h", + "src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc", + "src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.h", + # "src/tint/lang/wgsl/helpers/BUILD.gn", + "src/tint/lang/wgsl/helpers/append_vector.cc", + "src/tint/lang/wgsl/helpers/append_vector.h", + "src/tint/lang/wgsl/helpers/check_supported_extensions.cc", + "src/tint/lang/wgsl/helpers/check_supported_extensions.h", + "src/tint/lang/wgsl/helpers/flatten_bindings.cc", + "src/tint/lang/wgsl/helpers/flatten_bindings.h", + # "src/tint/lang/wgsl/inspector/BUILD.gn", + "src/tint/lang/wgsl/inspector/entry_point.cc", + "src/tint/lang/wgsl/inspector/entry_point.h", + "src/tint/lang/wgsl/inspector/inspector.cc", + "src/tint/lang/wgsl/inspector/inspector.h", + "src/tint/lang/wgsl/inspector/resource_binding.cc", + "src/tint/lang/wgsl/inspector/resource_binding.h", + "src/tint/lang/wgsl/inspector/scalar.cc", + "src/tint/lang/wgsl/inspector/scalar.h", + # "src/tint/lang/wgsl/program/BUILD.gn", + "src/tint/lang/wgsl/program/clone_context.cc", + "src/tint/lang/wgsl/program/clone_context.h", + "src/tint/lang/wgsl/program/program.cc", + "src/tint/lang/wgsl/program/program.h", + "src/tint/lang/wgsl/program/program_builder.cc", + "src/tint/lang/wgsl/program/program_builder.h", + # "src/tint/lang/wgsl/reader/BUILD.gn", + "src/tint/lang/wgsl/reader/reader.cc", + "src/tint/lang/wgsl/reader/reader.h", + # "src/tint/lang/wgsl/reader/parser/BUILD.gn", + "src/tint/lang/wgsl/reader/parser/classify_template_args.cc", + "src/tint/lang/wgsl/reader/parser/classify_template_args.h", + "src/tint/lang/wgsl/reader/parser/detail.h", + "src/tint/lang/wgsl/reader/parser/lexer.cc", + "src/tint/lang/wgsl/reader/parser/lexer.h", + "src/tint/lang/wgsl/reader/parser/parser.cc", + "src/tint/lang/wgsl/reader/parser/parser.h", + "src/tint/lang/wgsl/reader/parser/token.cc", + "src/tint/lang/wgsl/reader/parser/token.h", + # "src/tint/lang/wgsl/resolver/BUILD.gn", + "src/tint/lang/wgsl/resolver/dependency_graph.cc", + "src/tint/lang/wgsl/resolver/dependency_graph.h", + "src/tint/lang/wgsl/resolver/resolve.cc", + "src/tint/lang/wgsl/resolver/resolve.h", + "src/tint/lang/wgsl/resolver/resolver.cc", + "src/tint/lang/wgsl/resolver/resolver.h", + "src/tint/lang/wgsl/resolver/sem_helper.cc", + "src/tint/lang/wgsl/resolver/sem_helper.h", + "src/tint/lang/wgsl/resolver/uniformity.cc", + "src/tint/lang/wgsl/resolver/uniformity.h", + "src/tint/lang/wgsl/resolver/validator.cc", + "src/tint/lang/wgsl/resolver/validator.h", + # "src/tint/lang/wgsl/sem/BUILD.gn", + "src/tint/lang/wgsl/sem/accessor_expression.cc", + "src/tint/lang/wgsl/sem/accessor_expression.h", + "src/tint/lang/wgsl/sem/array_count.cc", + "src/tint/lang/wgsl/sem/array_count.h", + "src/tint/lang/wgsl/sem/behavior.cc", + "src/tint/lang/wgsl/sem/behavior.h", + "src/tint/lang/wgsl/sem/block_statement.cc", + "src/tint/lang/wgsl/sem/block_statement.h", + "src/tint/lang/wgsl/sem/break_if_statement.cc", + "src/tint/lang/wgsl/sem/break_if_statement.h", + "src/tint/lang/wgsl/sem/builtin.cc", + "src/tint/lang/wgsl/sem/builtin.h", + "src/tint/lang/wgsl/sem/builtin_enum_expression.cc", + "src/tint/lang/wgsl/sem/builtin_enum_expression.h", + "src/tint/lang/wgsl/sem/call.cc", + "src/tint/lang/wgsl/sem/call.h", + "src/tint/lang/wgsl/sem/call_target.cc", + "src/tint/lang/wgsl/sem/call_target.h", + "src/tint/lang/wgsl/sem/expression.cc", + "src/tint/lang/wgsl/sem/expression.h", + "src/tint/lang/wgsl/sem/for_loop_statement.cc", + "src/tint/lang/wgsl/sem/for_loop_statement.h", + "src/tint/lang/wgsl/sem/function.cc", + "src/tint/lang/wgsl/sem/function.h", + "src/tint/lang/wgsl/sem/function_expression.cc", + "src/tint/lang/wgsl/sem/function_expression.h", + "src/tint/lang/wgsl/sem/if_statement.cc", + "src/tint/lang/wgsl/sem/if_statement.h", + "src/tint/lang/wgsl/sem/index_accessor_expression.cc", + "src/tint/lang/wgsl/sem/index_accessor_expression.h", + "src/tint/lang/wgsl/sem/info.cc", + "src/tint/lang/wgsl/sem/info.h", + "src/tint/lang/wgsl/sem/load.cc", + "src/tint/lang/wgsl/sem/load.h", + "src/tint/lang/wgsl/sem/loop_statement.cc", + "src/tint/lang/wgsl/sem/loop_statement.h", + "src/tint/lang/wgsl/sem/materialize.cc", + "src/tint/lang/wgsl/sem/materialize.h", + "src/tint/lang/wgsl/sem/member_accessor_expression.cc", + "src/tint/lang/wgsl/sem/member_accessor_expression.h", + "src/tint/lang/wgsl/sem/module.cc", + "src/tint/lang/wgsl/sem/module.h", + "src/tint/lang/wgsl/sem/node.cc", + "src/tint/lang/wgsl/sem/node.h", + "src/tint/lang/wgsl/sem/pipeline_stage_set.h", + "src/tint/lang/wgsl/sem/sampler_texture_pair.h", + "src/tint/lang/wgsl/sem/statement.cc", + "src/tint/lang/wgsl/sem/statement.h", + "src/tint/lang/wgsl/sem/struct.cc", + "src/tint/lang/wgsl/sem/struct.h", + "src/tint/lang/wgsl/sem/switch_statement.cc", + "src/tint/lang/wgsl/sem/switch_statement.h", + "src/tint/lang/wgsl/sem/type_expression.cc", + "src/tint/lang/wgsl/sem/type_expression.h", + "src/tint/lang/wgsl/sem/type_mappings.h", + "src/tint/lang/wgsl/sem/value_constructor.cc", + "src/tint/lang/wgsl/sem/value_constructor.h", + "src/tint/lang/wgsl/sem/value_conversion.cc", + "src/tint/lang/wgsl/sem/value_conversion.h", + "src/tint/lang/wgsl/sem/value_expression.cc", + "src/tint/lang/wgsl/sem/value_expression.h", + "src/tint/lang/wgsl/sem/variable.cc", + "src/tint/lang/wgsl/sem/variable.h", + "src/tint/lang/wgsl/sem/while_statement.cc", + "src/tint/lang/wgsl/sem/while_statement.h", + # "src/tint/lang/wgsl/writer/BUILD.gn", + "src/tint/lang/wgsl/writer/options.cc", + "src/tint/lang/wgsl/writer/options.h", + "src/tint/lang/wgsl/writer/output.cc", + "src/tint/lang/wgsl/writer/output.h", + "src/tint/lang/wgsl/writer/writer.cc", + "src/tint/lang/wgsl/writer/writer.h", + # "src/tint/lang/wgsl/writer/ast_printer/BUILD.gn", + "src/tint/lang/wgsl/writer/ast_printer/ast_printer.cc", + "src/tint/lang/wgsl/writer/ast_printer/ast_printer.h", + # "src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.gn", + "src/tint/lang/wgsl/writer/syntax_tree_printer/syntax_tree_printer.cc", + "src/tint/lang/wgsl/writer/syntax_tree_printer/syntax_tree_printer.h", + # "src/tint/utils/containers/BUILD.gn", + "src/tint/utils/containers/bitset.h", + "src/tint/utils/containers/containers.cc", + "src/tint/utils/containers/enum_set.h", + "src/tint/utils/containers/hashmap.h", + "src/tint/utils/containers/hashmap_base.h", + "src/tint/utils/containers/hashset.h", + "src/tint/utils/containers/map.h", + "src/tint/utils/containers/predicates.h", + "src/tint/utils/containers/reverse.h", + "src/tint/utils/containers/scope_stack.h", + "src/tint/utils/containers/slice.h", + "src/tint/utils/containers/transform.h", + "src/tint/utils/containers/unique_allocator.h", + "src/tint/utils/containers/unique_vector.h", + "src/tint/utils/containers/vector.h", + # "src/tint/utils/debug/BUILD.gn", + "src/tint/utils/debug/debugger.cc", + "src/tint/utils/debug/debugger.h", + # "src/tint/utils/diagnostic/BUILD.gn", + "src/tint/utils/diagnostic/diagnostic.cc", + "src/tint/utils/diagnostic/diagnostic.h", + "src/tint/utils/diagnostic/formatter.cc", + "src/tint/utils/diagnostic/formatter.h", + "src/tint/utils/diagnostic/printer.cc", + "src/tint/utils/diagnostic/printer.h", + "src/tint/utils/diagnostic/source.cc", + "src/tint/utils/diagnostic/source.h", + # "src/tint/utils/generator/BUILD.gn", + "src/tint/utils/generator/text_generator.cc", + "src/tint/utils/generator/text_generator.h", + # "src/tint/utils/ice/BUILD.gn", + "src/tint/utils/ice/ice.cc", + "src/tint/utils/ice/ice.h", + # "src/tint/utils/id/BUILD.gn", + "src/tint/utils/id/generation_id.cc", + "src/tint/utils/id/generation_id.h", + # "src/tint/utils/macros/BUILD.gn", + "src/tint/utils/macros/compiler.h", + "src/tint/utils/macros/concat.h", + "src/tint/utils/macros/defer.h", + "src/tint/utils/macros/foreach.h", + "src/tint/utils/macros/macros.cc", + "src/tint/utils/macros/scoped_assignment.h", + # "src/tint/utils/math/BUILD.gn", + "src/tint/utils/math/crc32.h", + "src/tint/utils/math/hash.h", + "src/tint/utils/math/math.cc", + "src/tint/utils/math/math.h", + # "src/tint/utils/memory/BUILD.gn", + "src/tint/utils/memory/bitcast.h", + "src/tint/utils/memory/block_allocator.h", + "src/tint/utils/memory/bump_allocator.h", + "src/tint/utils/memory/memory.cc", + # "src/tint/utils/reflection/BUILD.gn", + "src/tint/utils/reflection/reflection.cc", + "src/tint/utils/reflection/reflection.h", + # "src/tint/utils/result/BUILD.gn", + "src/tint/utils/result/result.cc", + "src/tint/utils/result/result.h", + # "src/tint/utils/rtti/BUILD.gn", + "src/tint/utils/rtti/castable.cc", + "src/tint/utils/rtti/castable.h", + "src/tint/utils/rtti/switch.h", + # "src/tint/utils/strconv/BUILD.gn", + "src/tint/utils/strconv/float_to_string.cc", + "src/tint/utils/strconv/float_to_string.h", + "src/tint/utils/strconv/parse_num.cc", + "src/tint/utils/strconv/parse_num.h", + # "src/tint/utils/symbol/BUILD.gn", + "src/tint/utils/symbol/symbol.cc", + "src/tint/utils/symbol/symbol.h", + "src/tint/utils/symbol/symbol_table.cc", + "src/tint/utils/symbol/symbol_table.h", + # "src/tint/utils/text/BUILD.gn", + "src/tint/utils/text/string.cc", + "src/tint/utils/text/string.h", + "src/tint/utils/text/string_stream.cc", + "src/tint/utils/text/string_stream.h", + "src/tint/utils/text/unicode.cc", + "src/tint/utils/text/unicode.h", + # "src/tint/utils/traits/BUILD.gn", + "src/tint/utils/traits/traits.cc", + "src/tint/utils/traits/traits.h", - # From dawn/src/tint/BUILD.gn:libtint_base_src - "src/tint/debug.cc", - "src/tint/debug.h", - "src/tint/diagnostic/diagnostic.cc", - "src/tint/diagnostic/diagnostic.h", - "src/tint/diagnostic/formatter.cc", - "src/tint/diagnostic/formatter.h", - "src/tint/diagnostic/printer.cc", - "src/tint/diagnostic/printer.h", - "src/tint/program_id.cc", - "src/tint/program_id.h", - "src/tint/reflection.h", - "src/tint/scope_stack.h", - "src/tint/source.cc", - "src/tint/source.h", - "src/tint/switch.h", - "src/tint/symbol.cc", - "src/tint/symbol.h", - "src/tint/symbol_table.cc", - "src/tint/symbol_table.h", - "src/tint/utils/bitcast.h", - "src/tint/utils/bitset.h", - "src/tint/utils/block_allocator.h", - "src/tint/utils/bump_allocator.h", - "src/tint/utils/castable.cc", - "src/tint/utils/castable.h", - "src/tint/utils/compiler_macros.h", - "src/tint/utils/concat.h", - "src/tint/utils/crc32.h", - "src/tint/utils/debugger.cc", - "src/tint/utils/debugger.h", - "src/tint/utils/defer.h", - "src/tint/utils/enum_set.h", - "src/tint/utils/foreach_macro.h", - "src/tint/utils/hash.h", - "src/tint/utils/hashmap.h", - "src/tint/utils/hashmap_base.h", - "src/tint/utils/hashset.h", - "src/tint/utils/map.h", - "src/tint/utils/math.h", - "src/tint/utils/parse_num.cc", - "src/tint/utils/parse_num.h", - "src/tint/utils/predicates.h", - "src/tint/utils/result.h", - "src/tint/utils/reverse.h", - "src/tint/utils/scoped_assignment.h", - "src/tint/utils/slice.h", - "src/tint/utils/string.cc", - "src/tint/utils/string.h", - "src/tint/utils/string_stream.cc", - "src/tint/utils/string_stream.h", - "src/tint/utils/traits.h", - "src/tint/utils/transform.h", - "src/tint/utils/unicode.cc", - "src/tint/utils/unicode.h", - "src/tint/utils/unique_allocator.h", - "src/tint/utils/unique_vector.h", - "src/tint/utils/vector.h", - - # From dawn/src/tint/BUILD.gn:libtint_clone_context_hdrs - "src/tint/clone_context.h", - - # From dawn/src/tint/BUILD.gn:libtint_program_src - "src/tint/clone_context.cc", - "src/tint/program.cc", - "src/tint/program.h", - "src/tint/program_builder.cc", - "src/tint/program_builder.h", - "src/tint/resolver/builtin_structs.cc", - "src/tint/resolver/builtin_structs.h", - "src/tint/resolver/const_eval.cc", - "src/tint/resolver/const_eval.h", - "src/tint/resolver/ctor_conv_intrinsic.cc", - "src/tint/resolver/ctor_conv_intrinsic.h", - "src/tint/resolver/dependency_graph.cc", - "src/tint/resolver/dependency_graph.h", - "src/tint/resolver/intrinsic_table.cc", - "src/tint/resolver/intrinsic_table.h", - "src/tint/resolver/intrinsic_table.inl", - "src/tint/resolver/resolver.cc", - "src/tint/resolver/resolver.h", - "src/tint/resolver/sem_helper.cc", - "src/tint/resolver/sem_helper.h", - "src/tint/resolver/uniformity.cc", - "src/tint/resolver/uniformity.h", - "src/tint/resolver/validator.cc", - "src/tint/resolver/validator.h", - - # From dawn/src/tint/BUILD.gn:libtint_initializer_src - "src/tint/tint.cc", - - # From dawn/src/tint/BUILD.gn:libtint_inspector_src - "src/tint/inspector/entry_point.cc", - "src/tint/inspector/entry_point.h", - "src/tint/inspector/inspector.cc", - "src/tint/inspector/inspector.h", - "src/tint/inspector/resource_binding.cc", - "src/tint/inspector/resource_binding.h", - "src/tint/inspector/scalar.cc", - "src/tint/inspector/scalar.h", - - # From dawn/src/tint/BUILD.gn:libtint_transform_src - "src/tint/ast/transform/add_block_attribute.cc", - "src/tint/ast/transform/add_block_attribute.h", - "src/tint/ast/transform/add_empty_entry_point.cc", - "src/tint/ast/transform/add_empty_entry_point.h", - "src/tint/ast/transform/array_length_from_uniform.cc", - "src/tint/ast/transform/array_length_from_uniform.h", - "src/tint/ast/transform/binding_remapper.cc", - "src/tint/ast/transform/binding_remapper.h", - "src/tint/ast/transform/builtin_polyfill.cc", - "src/tint/ast/transform/builtin_polyfill.h", - "src/tint/ast/transform/calculate_array_length.cc", - "src/tint/ast/transform/calculate_array_length.h", - "src/tint/ast/transform/canonicalize_entry_point_io.cc", - "src/tint/ast/transform/canonicalize_entry_point_io.h", - "src/tint/ast/transform/clamp_frag_depth.cc", - "src/tint/ast/transform/clamp_frag_depth.h", - "src/tint/ast/transform/combine_samplers.cc", - "src/tint/ast/transform/combine_samplers.h", - "src/tint/ast/transform/decompose_memory_access.cc", - "src/tint/ast/transform/decompose_memory_access.h", - "src/tint/ast/transform/decompose_strided_array.cc", - "src/tint/ast/transform/decompose_strided_array.h", - "src/tint/ast/transform/decompose_strided_matrix.cc", - "src/tint/ast/transform/decompose_strided_matrix.h", - "src/tint/ast/transform/demote_to_helper.cc", - "src/tint/ast/transform/demote_to_helper.h", - "src/tint/ast/transform/direct_variable_access.cc", - "src/tint/ast/transform/direct_variable_access.h", - "src/tint/ast/transform/disable_uniformity_analysis.cc", - "src/tint/ast/transform/disable_uniformity_analysis.h", - "src/tint/ast/transform/expand_compound_assignment.cc", - "src/tint/ast/transform/expand_compound_assignment.h", - "src/tint/ast/transform/first_index_offset.cc", - "src/tint/ast/transform/first_index_offset.h", - "src/tint/ast/transform/fold_trivial_lets.cc", - "src/tint/ast/transform/fold_trivial_lets.h", - "src/tint/ast/transform/for_loop_to_loop.cc", - "src/tint/ast/transform/for_loop_to_loop.h", - "src/tint/ast/transform/localize_struct_array_assignment.cc", - "src/tint/ast/transform/localize_struct_array_assignment.h", - "src/tint/ast/transform/merge_return.cc", - "src/tint/ast/transform/merge_return.h", - "src/tint/ast/transform/module_scope_var_to_entry_point_param.cc", - "src/tint/ast/transform/module_scope_var_to_entry_point_param.h", - "src/tint/ast/transform/multiplanar_external_texture.cc", - "src/tint/ast/transform/multiplanar_external_texture.h", - "src/tint/ast/transform/num_workgroups_from_uniform.cc", - "src/tint/ast/transform/num_workgroups_from_uniform.h", - "src/tint/ast/transform/packed_vec3.cc", - "src/tint/ast/transform/packed_vec3.h", - "src/tint/ast/transform/pad_structs.cc", - "src/tint/ast/transform/pad_structs.h", - "src/tint/ast/transform/preserve_padding.cc", - "src/tint/ast/transform/preserve_padding.h", - "src/tint/ast/transform/promote_initializers_to_let.cc", - "src/tint/ast/transform/promote_initializers_to_let.h", - "src/tint/ast/transform/promote_side_effects_to_decl.cc", - "src/tint/ast/transform/promote_side_effects_to_decl.h", - "src/tint/ast/transform/remove_continue_in_switch.cc", - "src/tint/ast/transform/remove_continue_in_switch.h", - "src/tint/ast/transform/remove_phonies.cc", - "src/tint/ast/transform/remove_phonies.h", - "src/tint/ast/transform/remove_unreachable_statements.cc", - "src/tint/ast/transform/remove_unreachable_statements.h", - "src/tint/ast/transform/renamer.cc", - "src/tint/ast/transform/renamer.h", - "src/tint/ast/transform/robustness.cc", - "src/tint/ast/transform/robustness.h", - "src/tint/ast/transform/simplify_pointers.cc", - "src/tint/ast/transform/simplify_pointers.h", - "src/tint/ast/transform/single_entry_point.cc", - "src/tint/ast/transform/single_entry_point.h", - "src/tint/ast/transform/spirv_atomic.cc", - "src/tint/ast/transform/spirv_atomic.h", - "src/tint/ast/transform/std140.cc", - "src/tint/ast/transform/std140.h", - "src/tint/ast/transform/substitute_override.cc", - "src/tint/ast/transform/substitute_override.h", - "src/tint/ast/transform/texture_1d_to_2d.cc", - "src/tint/ast/transform/texture_1d_to_2d.h", - "src/tint/ast/transform/transform.cc", - "src/tint/ast/transform/transform.h", - "src/tint/ast/transform/truncate_interstage_variables.cc", - "src/tint/ast/transform/truncate_interstage_variables.h", - "src/tint/ast/transform/unshadow.cc", - "src/tint/ast/transform/unshadow.h", - "src/tint/ast/transform/utils/get_insertion_point.cc", - "src/tint/ast/transform/utils/get_insertion_point.h", - "src/tint/ast/transform/utils/hoist_to_decl_before.cc", - "src/tint/ast/transform/utils/hoist_to_decl_before.h", - "src/tint/ast/transform/var_for_dynamic_index.cc", - "src/tint/ast/transform/var_for_dynamic_index.h", - "src/tint/ast/transform/vectorize_matrix_conversions.cc", - "src/tint/ast/transform/vectorize_matrix_conversions.h", - "src/tint/ast/transform/vectorize_scalar_matrix_initializers.cc", - "src/tint/ast/transform/vectorize_scalar_matrix_initializers.h", - "src/tint/ast/transform/vertex_pulling.cc", - "src/tint/ast/transform/vertex_pulling.h", - "src/tint/ast/transform/while_to_loop.cc", - "src/tint/ast/transform/while_to_loop.h", - "src/tint/ast/transform/zero_init_workgroup_memory.cc", - "src/tint/ast/transform/zero_init_workgroup_memory.h", - "src/tint/transform/manager.cc", - "src/tint/transform/manager.h", - "src/tint/transform/transform.cc", - "src/tint/transform/transform.h", - - # From dawn/src/tint/BUILD.gn:libtint_ast_hdrs - "src/tint/ast/accessor_expression.h", - "src/tint/ast/alias.h", - "src/tint/ast/assignment_statement.h", - "src/tint/ast/attribute.h", - "src/tint/ast/binary_expression.h", - "src/tint/ast/binding_attribute.h", - "src/tint/ast/bitcast_expression.h", - "src/tint/ast/block_statement.h", - "src/tint/ast/bool_literal_expression.h", - "src/tint/ast/break_if_statement.h", - "src/tint/ast/break_statement.h", - "src/tint/ast/builtin_attribute.h", - "src/tint/ast/call_expression.h", - "src/tint/ast/call_statement.h", - "src/tint/ast/case_selector.h", - "src/tint/ast/case_statement.h", - "src/tint/ast/compound_assignment_statement.h", - "src/tint/ast/const.h", - "src/tint/ast/const_assert.h", - "src/tint/ast/continue_statement.h", - "src/tint/ast/diagnostic_attribute.h", - "src/tint/ast/diagnostic_control.h", - "src/tint/ast/diagnostic_directive.h", - "src/tint/ast/diagnostic_rule_name.h", - "src/tint/ast/disable_validation_attribute.h", - "src/tint/ast/discard_statement.h", - "src/tint/ast/enable.h", - "src/tint/ast/expression.h", - "src/tint/ast/extension.h", - "src/tint/ast/float_literal_expression.h", - "src/tint/ast/for_loop_statement.h", - "src/tint/ast/function.h", - "src/tint/ast/group_attribute.h", - "src/tint/ast/id_attribute.h", - "src/tint/ast/identifier.h", - "src/tint/ast/identifier_expression.h", - "src/tint/ast/if_statement.h", - "src/tint/ast/increment_decrement_statement.h", - "src/tint/ast/index_accessor_expression.h", - "src/tint/ast/index_attribute.h", - "src/tint/ast/int_literal_expression.h", - "src/tint/ast/internal_attribute.h", - "src/tint/ast/interpolate_attribute.h", - "src/tint/ast/invariant_attribute.h", - "src/tint/ast/let.h", - "src/tint/ast/literal_expression.h", - "src/tint/ast/location_attribute.h", - "src/tint/ast/loop_statement.h", - "src/tint/ast/member_accessor_expression.h", - "src/tint/ast/module.h", - "src/tint/ast/must_use_attribute.h", - "src/tint/ast/node.h", - "src/tint/ast/node_id.h", - "src/tint/ast/override.h", - "src/tint/ast/parameter.h", - "src/tint/ast/phony_expression.h", - "src/tint/ast/pipeline_stage.h", - "src/tint/ast/return_statement.h", - "src/tint/ast/stage_attribute.h", - "src/tint/ast/statement.h", - "src/tint/ast/stride_attribute.h", - "src/tint/ast/struct.h", - "src/tint/ast/struct_member.h", - "src/tint/ast/struct_member_align_attribute.h", - "src/tint/ast/struct_member_offset_attribute.h", - "src/tint/ast/struct_member_size_attribute.h", - "src/tint/ast/switch_statement.h", - "src/tint/ast/templated_identifier.h", - "src/tint/ast/traverse_expressions.h", - "src/tint/ast/type.h", - "src/tint/ast/type_decl.h", - "src/tint/ast/unary_op.h", - "src/tint/ast/unary_op_expression.h", - "src/tint/ast/var.h", - "src/tint/ast/variable.h", - "src/tint/ast/variable_decl_statement.h", - "src/tint/ast/while_statement.h", - "src/tint/ast/workgroup_attribute.h", - - # From dawn/src/tint/BUILD.gn:libtint_ast_src - "src/tint/ast/accessor_expression.cc", - "src/tint/ast/alias.cc", - "src/tint/ast/assignment_statement.cc", - "src/tint/ast/attribute.cc", - "src/tint/ast/binary_expression.cc", - "src/tint/ast/binding_attribute.cc", - "src/tint/ast/bitcast_expression.cc", - "src/tint/ast/block_statement.cc", - "src/tint/ast/bool_literal_expression.cc", - "src/tint/ast/break_if_statement.cc", - "src/tint/ast/break_statement.cc", - "src/tint/ast/builtin_attribute.cc", - "src/tint/ast/call_expression.cc", - "src/tint/ast/call_statement.cc", - "src/tint/ast/case_selector.cc", - "src/tint/ast/case_statement.cc", - "src/tint/ast/compound_assignment_statement.cc", - "src/tint/ast/const.cc", - "src/tint/ast/const_assert.cc", - "src/tint/ast/continue_statement.cc", - "src/tint/ast/diagnostic_attribute.cc", - "src/tint/ast/diagnostic_control.cc", - "src/tint/ast/diagnostic_directive.cc", - "src/tint/ast/diagnostic_rule_name.cc", - "src/tint/ast/disable_validation_attribute.cc", - "src/tint/ast/discard_statement.cc", - "src/tint/ast/enable.cc", - "src/tint/ast/expression.cc", - "src/tint/ast/extension.cc", - "src/tint/ast/float_literal_expression.cc", - "src/tint/ast/for_loop_statement.cc", - "src/tint/ast/function.cc", - "src/tint/ast/group_attribute.cc", - "src/tint/ast/id_attribute.cc", - "src/tint/ast/identifier.cc", - "src/tint/ast/identifier_expression.cc", - "src/tint/ast/if_statement.cc", - "src/tint/ast/increment_decrement_statement.cc", - "src/tint/ast/index_accessor_expression.cc", - "src/tint/ast/index_attribute.cc", - "src/tint/ast/int_literal_expression.cc", - "src/tint/ast/internal_attribute.cc", - "src/tint/ast/interpolate_attribute.cc", - "src/tint/ast/invariant_attribute.cc", - "src/tint/ast/let.cc", - "src/tint/ast/literal_expression.cc", - "src/tint/ast/location_attribute.cc", - "src/tint/ast/loop_statement.cc", - "src/tint/ast/member_accessor_expression.cc", - "src/tint/ast/module.cc", - "src/tint/ast/must_use_attribute.cc", - "src/tint/ast/node.cc", - "src/tint/ast/override.cc", - "src/tint/ast/parameter.cc", - "src/tint/ast/phony_expression.cc", - "src/tint/ast/pipeline_stage.cc", - "src/tint/ast/return_statement.cc", - "src/tint/ast/stage_attribute.cc", - "src/tint/ast/statement.cc", - "src/tint/ast/stride_attribute.cc", - "src/tint/ast/struct.cc", - "src/tint/ast/struct_member.cc", - "src/tint/ast/struct_member_align_attribute.cc", - "src/tint/ast/struct_member_offset_attribute.cc", - "src/tint/ast/struct_member_size_attribute.cc", - "src/tint/ast/switch_statement.cc", - "src/tint/ast/templated_identifier.cc", - "src/tint/ast/type.cc", - "src/tint/ast/type_decl.cc", - "src/tint/ast/unary_op.cc", - "src/tint/ast/unary_op_expression.cc", - "src/tint/ast/var.cc", - "src/tint/ast/variable.cc", - "src/tint/ast/variable_decl_statement.cc", - "src/tint/ast/while_statement.cc", - "src/tint/ast/workgroup_attribute.cc", - - # From dawn/src/tint/BUILD.gn:libtint_builtins_src - "src/tint/builtin/access.cc", - "src/tint/builtin/access.h", - "src/tint/builtin/address_space.cc", - "src/tint/builtin/address_space.h", - "src/tint/builtin/attribute.cc", - "src/tint/builtin/attribute.h", - "src/tint/builtin/builtin.cc", - "src/tint/builtin/builtin.h", - "src/tint/builtin/builtin_value.cc", - "src/tint/builtin/builtin_value.h", - "src/tint/builtin/diagnostic_rule.cc", - "src/tint/builtin/diagnostic_rule.h", - "src/tint/builtin/diagnostic_severity.cc", - "src/tint/builtin/diagnostic_severity.h", - "src/tint/builtin/extension.cc", - "src/tint/builtin/extension.h", - "src/tint/builtin/fluent_types.h", - "src/tint/builtin/function.cc", - "src/tint/builtin/function.h", - "src/tint/builtin/interpolation.h", - "src/tint/builtin/interpolation_sampling.cc", - "src/tint/builtin/interpolation_sampling.h", - "src/tint/builtin/interpolation_type.cc", - "src/tint/builtin/interpolation_type.h", - "src/tint/builtin/number.cc", - "src/tint/builtin/number.h", - "src/tint/builtin/texel_format.cc", - "src/tint/builtin/texel_format.h", - - # From dawn/src/tint/BUILD.gn:libtint_sem_src - "src/tint/sem/accessor_expression.cc", - "src/tint/sem/accessor_expression.h", - "src/tint/sem/array_count.cc", - "src/tint/sem/array_count.h", - "src/tint/sem/behavior.cc", - "src/tint/sem/behavior.h", - "src/tint/sem/binding_point.h", - "src/tint/sem/block_statement.cc", - "src/tint/sem/block_statement.h", - "src/tint/sem/break_if_statement.cc", - "src/tint/sem/break_if_statement.h", - "src/tint/sem/builtin.cc", - "src/tint/sem/builtin.h", - "src/tint/sem/builtin_enum_expression.cc", - "src/tint/sem/builtin_enum_expression.h", - "src/tint/sem/call.cc", - "src/tint/sem/call.h", - "src/tint/sem/call_target.cc", - "src/tint/sem/call_target.h", - "src/tint/sem/evaluation_stage.h", - "src/tint/sem/expression.cc", - "src/tint/sem/expression.h", - "src/tint/sem/external_texture.h", - "src/tint/sem/for_loop_statement.cc", - "src/tint/sem/for_loop_statement.h", - "src/tint/sem/function.cc", - "src/tint/sem/function.h", - "src/tint/sem/function_expression.cc", - "src/tint/sem/function_expression.h", - "src/tint/sem/if_statement.cc", - "src/tint/sem/if_statement.h", - "src/tint/sem/index_accessor_expression.cc", - "src/tint/sem/index_accessor_expression.h", - "src/tint/sem/info.cc", - "src/tint/sem/info.h", - "src/tint/sem/load.cc", - "src/tint/sem/load.h", - "src/tint/sem/loop_statement.cc", - "src/tint/sem/loop_statement.h", - "src/tint/sem/materialize.cc", - "src/tint/sem/materialize.h", - "src/tint/sem/member_accessor_expression.cc", - "src/tint/sem/member_accessor_expression.h", - "src/tint/sem/module.cc", - "src/tint/sem/module.h", - "src/tint/sem/node.cc", - "src/tint/sem/node.h", - "src/tint/sem/parameter_usage.cc", - "src/tint/sem/parameter_usage.h", - "src/tint/sem/pipeline_stage_set.h", - "src/tint/sem/sampler_texture_pair.h", - "src/tint/sem/statement.cc", - "src/tint/sem/statement.h", - "src/tint/sem/struct.cc", - "src/tint/sem/struct.h", - "src/tint/sem/switch_statement.cc", - "src/tint/sem/switch_statement.h", - "src/tint/sem/type_expression.cc", - "src/tint/sem/type_expression.h", - "src/tint/sem/type_mappings.h", - "src/tint/sem/value_constructor.cc", - "src/tint/sem/value_constructor.h", - "src/tint/sem/value_conversion.cc", - "src/tint/sem/value_conversion.h", - "src/tint/sem/value_expression.cc", - "src/tint/sem/value_expression.h", - "src/tint/sem/variable.cc", - "src/tint/sem/variable.h", - "src/tint/sem/while_statement.cc", - "src/tint/sem/while_statement.h", - - # From dawn/src/tint/BUILD.gn:libtint_type_src - "src/tint/type/abstract_float.cc", - "src/tint/type/abstract_float.h", - "src/tint/type/abstract_int.cc", - "src/tint/type/abstract_int.h", - "src/tint/type/abstract_numeric.cc", - "src/tint/type/abstract_numeric.h", - "src/tint/type/array.cc", - "src/tint/type/array.h", - "src/tint/type/array_count.cc", - "src/tint/type/array_count.h", - "src/tint/type/atomic.cc", - "src/tint/type/atomic.h", - "src/tint/type/bool.cc", - "src/tint/type/bool.h", - "src/tint/type/clone_context.h", - "src/tint/type/depth_multisampled_texture.cc", - "src/tint/type/depth_multisampled_texture.h", - "src/tint/type/depth_texture.cc", - "src/tint/type/depth_texture.h", - "src/tint/type/external_texture.cc", - "src/tint/type/external_texture.h", - "src/tint/type/f16.cc", - "src/tint/type/f16.h", - "src/tint/type/f32.cc", - "src/tint/type/f32.h", - "src/tint/type/i32.cc", - "src/tint/type/i32.h", - "src/tint/type/manager.cc", - "src/tint/type/manager.h", - "src/tint/type/matrix.cc", - "src/tint/type/matrix.h", - "src/tint/type/multisampled_texture.cc", - "src/tint/type/multisampled_texture.h", - "src/tint/type/node.cc", - "src/tint/type/node.h", - "src/tint/type/numeric_scalar.cc", - "src/tint/type/numeric_scalar.h", - "src/tint/type/pointer.cc", - "src/tint/type/pointer.h", - "src/tint/type/reference.cc", - "src/tint/type/reference.h", - "src/tint/type/sampled_texture.cc", - "src/tint/type/sampled_texture.h", - "src/tint/type/sampler.cc", - "src/tint/type/sampler.h", - "src/tint/type/sampler_kind.cc", - "src/tint/type/sampler_kind.h", - "src/tint/type/scalar.cc", - "src/tint/type/scalar.h", - "src/tint/type/storage_texture.cc", - "src/tint/type/storage_texture.h", - "src/tint/type/struct.cc", - "src/tint/type/struct.h", - "src/tint/type/texture.cc", - "src/tint/type/texture.h", - "src/tint/type/texture_dimension.cc", - "src/tint/type/texture_dimension.h", - "src/tint/type/type.cc", - "src/tint/type/type.h", - "src/tint/type/u32.cc", - "src/tint/type/u32.h", - "src/tint/type/unique_node.cc", - "src/tint/type/unique_node.h", - "src/tint/type/vector.cc", - "src/tint/type/vector.h", - "src/tint/type/void.cc", - "src/tint/type/void.h", - - # From dawn/src/tint/BUILD.gn:libtint_constant_src - "src/tint/constant/clone_context.h", - "src/tint/constant/composite.cc", - "src/tint/constant/composite.h", - "src/tint/constant/manager.cc", - "src/tint/constant/manager.h", - "src/tint/constant/node.cc", - "src/tint/constant/node.h", - "src/tint/constant/scalar.cc", - "src/tint/constant/scalar.h", - "src/tint/constant/splat.cc", - "src/tint/constant/splat.h", - "src/tint/constant/value.cc", - "src/tint/constant/value.h", - - # From dawn/src/tint/BUILD.gn:libtint_reader_src - "src/tint/reader/reader.cc", - "src/tint/reader/reader.h", - - # From dawn/src/tint/BUILD.gn:From libtint_writer_src - "src/tint/writer/append_vector.cc", - "src/tint/writer/append_vector.h", - "src/tint/writer/array_length_from_uniform_options.cc", - "src/tint/writer/array_length_from_uniform_options.h", - "src/tint/writer/ast_text_generator.cc", - "src/tint/writer/ast_text_generator.h", - "src/tint/writer/binding_point.h", - "src/tint/writer/binding_remapper_options.cc", - "src/tint/writer/binding_remapper_options.h", - "src/tint/writer/check_supported_extensions.cc", - "src/tint/writer/check_supported_extensions.h", - "src/tint/writer/external_texture_options.cc", - "src/tint/writer/external_texture_options.h", - "src/tint/writer/flatten_bindings.cc", - "src/tint/writer/flatten_bindings.h", - "src/tint/writer/float_to_string.cc", - "src/tint/writer/float_to_string.h", - "src/tint/writer/text.cc", - "src/tint/writer/text.h", - "src/tint/writer/text_generator.cc", - "src/tint/writer/text_generator.h", - "src/tint/writer/writer.cc", - "src/tint/writer/writer.h", - - # Dawn sets the following tint GN variables - # tint_build_spv_reader = true - # tint_build_spv_writer = true - # tint_build_wgsl_reader = true - # tint_build_wgsl_writer = true - # From dawn/src/tint/BUILD.gn:libtint_spv_reader_src - "src/tint/reader/spirv/attributes.h", - "src/tint/reader/spirv/construct.cc", - "src/tint/reader/spirv/construct.h", - "src/tint/reader/spirv/entry_point_info.cc", - "src/tint/reader/spirv/entry_point_info.h", - "src/tint/reader/spirv/enum_converter.cc", - "src/tint/reader/spirv/enum_converter.h", - "src/tint/reader/spirv/fail_stream.h", - "src/tint/reader/spirv/function.cc", - "src/tint/reader/spirv/function.h", - "src/tint/reader/spirv/namer.cc", - "src/tint/reader/spirv/namer.h", - "src/tint/reader/spirv/parser.cc", - "src/tint/reader/spirv/parser.h", - "src/tint/reader/spirv/parser_impl.cc", - "src/tint/reader/spirv/parser_impl.h", - "src/tint/reader/spirv/parser_type.cc", - "src/tint/reader/spirv/parser_type.h", - "src/tint/reader/spirv/usage.cc", - "src/tint/reader/spirv/usage.h", - # From dawn/src/tint/BUILD.gn:libtint_spv_writer_src - "src/tint/writer/spirv/binary_writer.cc", - "src/tint/writer/spirv/binary_writer.h", - "src/tint/writer/spirv/builder.cc", - "src/tint/writer/spirv/builder.h", - "src/tint/writer/spirv/function.cc", - "src/tint/writer/spirv/function.h", - "src/tint/writer/spirv/generator.cc", - "src/tint/writer/spirv/generator.h", - "src/tint/writer/spirv/generator_impl.cc", - "src/tint/writer/spirv/generator_impl.h", - "src/tint/writer/spirv/instruction.cc", - "src/tint/writer/spirv/instruction.h", - "src/tint/writer/spirv/module.cc", - "src/tint/writer/spirv/module.h", - "src/tint/writer/spirv/operand.cc", - "src/tint/writer/spirv/operand.h", - "src/tint/writer/spirv/scalar_constant.h", - # From dawn/src/tint/BUILD.gn:libtint_wgsl_reader_src - "src/tint/reader/wgsl/classify_template_args.cc", - "src/tint/reader/wgsl/classify_template_args.h", - "src/tint/reader/wgsl/lexer.cc", - "src/tint/reader/wgsl/lexer.h", - "src/tint/reader/wgsl/parser.cc", - "src/tint/reader/wgsl/parser.h", - "src/tint/reader/wgsl/parser_impl.cc", - "src/tint/reader/wgsl/parser_impl.h", - "src/tint/reader/wgsl/parser_impl_detail.h", - "src/tint/reader/wgsl/token.cc", - "src/tint/reader/wgsl/token.h", - # From dawn/src/tint/BUILD.gn:libtint_wgsl_writer_src - "src/tint/writer/wgsl/generator.cc", - "src/tint/writer/wgsl/generator.h", - "src/tint/writer/wgsl/generator_impl.cc", - "src/tint/writer/wgsl/generator_impl.h", + # SPIRV reading/writing sources + # "src/tint/lang/spirv/reader/BUILD.gn", + "src/tint/lang/spirv/reader/reader.cc", + "src/tint/lang/spirv/reader/reader.h", + # "src/tint/lang/spirv/reader/ast_parser/BUILD.gn", + "src/tint/lang/spirv/reader/ast_parser/ast_parser.cc", + "src/tint/lang/spirv/reader/ast_parser/ast_parser.h", + "src/tint/lang/spirv/reader/ast_parser/attributes.h", + "src/tint/lang/spirv/reader/ast_parser/construct.cc", + "src/tint/lang/spirv/reader/ast_parser/construct.h", + "src/tint/lang/spirv/reader/ast_parser/entry_point_info.cc", + "src/tint/lang/spirv/reader/ast_parser/entry_point_info.h", + "src/tint/lang/spirv/reader/ast_parser/enum_converter.cc", + "src/tint/lang/spirv/reader/ast_parser/enum_converter.h", + "src/tint/lang/spirv/reader/ast_parser/fail_stream.h", + "src/tint/lang/spirv/reader/ast_parser/function.cc", + "src/tint/lang/spirv/reader/ast_parser/function.h", + "src/tint/lang/spirv/reader/ast_parser/namer.cc", + "src/tint/lang/spirv/reader/ast_parser/namer.h", + "src/tint/lang/spirv/reader/ast_parser/parse.cc", + "src/tint/lang/spirv/reader/ast_parser/parse.h", + "src/tint/lang/spirv/reader/ast_parser/type.cc", + "src/tint/lang/spirv/reader/ast_parser/type.h", + "src/tint/lang/spirv/reader/ast_parser/usage.cc", + "src/tint/lang/spirv/reader/ast_parser/usage.h", + # "src/tint/lang/spirv/writer/BUILD.gn", + "src/tint/lang/spirv/writer/output.h", + "src/tint/lang/spirv/writer/writer.cc", + "src/tint/lang/spirv/writer/writer.h", + # "src/tint/lang/spirv/writer/ast_printer/BUILD.gn", + "src/tint/lang/spirv/writer/ast_printer/ast_printer.cc", + "src/tint/lang/spirv/writer/ast_printer/ast_printer.h", + "src/tint/lang/spirv/writer/ast_printer/builder.cc", + "src/tint/lang/spirv/writer/ast_printer/builder.h", + "src/tint/lang/spirv/writer/ast_printer/scalar_constant.h", ] cc_library( diff --git a/bazel/external/fontations/Cargo.lock b/bazel/external/fontations/Cargo.lock index 5cbad0757f6f..183b41351c94 100644 --- a/bazel/external/fontations/Cargo.lock +++ b/bazel/external/fontations/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "font-types" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447140b34382bb52ace3bb6d79626b8ac353deb0e107309cad60422fc4ff7896" +checksum = "02186306cae98ae594620ea5fb50db3706f54525a35ee9acf61dcac2978b3cba" [[package]] name = "fontations_bridge" @@ -19,18 +19,18 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.5.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d384a55473edf0b0ce9e00dadc5f64b0eb6a470466d1297ff9ecde076970e24" +checksum = "6c9f2eddf6bdea54097838571db91b94d57a862ad855ce5fc75600be84138a43" dependencies = [ "font-types", ] [[package]] name = "skrifa" -version = "0.4.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d99c8d0757df7a11ddbc1edd0322aca1a00023947b6b52d18ff07aeff0c52422" +checksum = "32384b5dc3de1dbc18e281e8988b2ee8633624a177c22448a174769a3588f8af" dependencies = [ "read-fonts", ] diff --git a/bazel/external/fontations/Cargo.toml b/bazel/external/fontations/Cargo.toml index 3b6f7354b605..d5c682309016 100644 --- a/bazel/external/fontations/Cargo.toml +++ b/bazel/external/fontations/Cargo.toml @@ -7,9 +7,9 @@ edition = "2021" version = "0.1.0" [dependencies] -read-fonts = "0.5.0" -font-types = "0.3.0" -skrifa = "0.4.0" +read-fonts = "0.11" +font-types = "0.4" +skrifa = "0.10" [[bin]] name = "ports_test_bin" diff --git a/bazel/external/freetype/BUILD.bazel b/bazel/external/freetype/BUILD.bazel index 249eff618f6a..7b338be8b4ce 100644 --- a/bazel/external/freetype/BUILD.bazel +++ b/bazel/external/freetype/BUILD.bazel @@ -255,7 +255,6 @@ cc_library( "src/truetype/ttinterp.h", "src/truetype/ttobjs.h", "src/truetype/ttpload.h", - "src/truetype/ttsubpix.h", "src/type1/t1afm.h", "src/type1/t1driver.h", "src/type1/t1errors.h", @@ -437,7 +436,6 @@ cc_library( "src/truetype/ttinterp.c", "src/truetype/ttobjs.c", "src/truetype/ttpload.c", - "src/truetype/ttsubpix.c", "src/type1/t1afm.c", "src/type1/t1driver.c", "src/type1/t1gload.c", diff --git a/bazel/external/skimage/BUILD.bazel b/bazel/external/skimage/BUILD.bazel new file mode 100644 index 000000000000..fb7fe0bdfc7b --- /dev/null +++ b/bazel/external/skimage/BUILD.bazel @@ -0,0 +1,209 @@ +# This file will be copied into the root of the @skimage external repository, which is populated +# with the contents of the "skimage" CIPD package. All paths are relative to the root directory of +# said package. + +filegroup( + name = "dm_pngs_gray8_opaque", + srcs = [ + "dm/basi0g01.png", + "dm/basi0g02.png", + "dm/basi0g04.png", + "dm/basi0g08.png", + "dm/basi0g16.png", + "dm/basn0g01.png", + "dm/basn0g02.png", + "dm/basn0g04.png", + "dm/basn0g08.png", + "dm/basn0g16.png", + "dm/cm0n0g04.png", + "dm/cm7n0g04.png", + "dm/cm9n0g04.png", + "dm/ct0n0g04.png", + "dm/ct1n0g04.png", + "dm/cten0g04.png", + "dm/ctfn0g04.png", + "dm/ctgn0g04.png", + "dm/cthn0g04.png", + "dm/ctjn0g04.png", + "dm/ctzn0g04.png", + "dm/f00n0g08.png", + "dm/f01n0g08.png", + "dm/f02n0g08.png", + "dm/f03n0g08.png", + "dm/f04n0g08.png", + "dm/f99n0g04.png", + "dm/g03n0g16.png", + "dm/g04n0g16.png", + "dm/g05n0g16.png", + "dm/g07n0g16.png", + "dm/g10n0g16.png", + "dm/g25n0g16.png", + "dm/inc0.png", + "dm/inc1.png", + "dm/inc2.png", + "dm/oi1n0g16.png", + "dm/oi2n0g16.png", + "dm/oi4n0g16.png", + "dm/oi9n0g16.png", + "dm/ps1n0g08.png", + "dm/ps2n0g08.png", + "dm/tp0n0g08.png", + ], + visibility = ["//visibility:public"], +) + +filegroup( + name = "dm_pngs_rgba8888_opaque", + srcs = [ + "dm/PngSuite.png", + "dm/basi2c08.png", + "dm/basi2c16.png", + "dm/basi3p01.png", + "dm/basi3p02.png", + "dm/basi3p04.png", + "dm/basi3p08.png", + "dm/basn2c08.png", + "dm/basn2c16.png", + "dm/basn3p01.png", + "dm/basn3p02.png", + "dm/basn3p04.png", + "dm/basn3p08.png", + "dm/ccwn2c08.png", + "dm/ccwn3p08.png", + "dm/cdfn2c08.png", + "dm/cdhn2c08.png", + "dm/cdsn2c08.png", + "dm/cdun2c08.png", + "dm/ch1n3p04.png", + "dm/ch2n3p08.png", + "dm/cs3n2c16.png", + "dm/cs3n3p08.png", + "dm/cs5n2c08.png", + "dm/cs5n3p08.png", + "dm/cs8n2c08.png", + "dm/cs8n3p08.png", + "dm/errorInInputInterlaced.png", + "dm/f00n2c08.png", + "dm/f01n2c08.png", + "dm/f02n2c08.png", + "dm/f03n2c08.png", + "dm/f04n2c08.png", + "dm/g03n2c08.png", + "dm/g03n3p04.png", + "dm/g04n2c08.png", + "dm/g04n3p04.png", + "dm/g05n2c08.png", + "dm/g05n3p04.png", + "dm/g07n2c08.png", + "dm/g07n3p04.png", + "dm/g10n2c08.png", + "dm/g10n3p04.png", + "dm/g25n2c08.png", + "dm/g25n3p04.png", + "dm/inc13.png", + "dm/inc14.png", + "dm/inc3.png", + "dm/inc4.png", + "dm/inc5.png", + "dm/inc6.png", + "dm/inc7.png", + "dm/inc8.png", + "dm/incInterlaced.png", + "dm/interlaced1.png", + "dm/interlaced2.png", + "dm/interlaced3.png", + "dm/kokteylogo.png", + "dm/oi1n2c16.png", + "dm/oi2n2c16.png", + "dm/oi4n2c16.png", + "dm/oi9n2c16.png", + "dm/photo.jpg.png", + "dm/png_test.png", + "dm/pp0n2c16.png", + "dm/ps1n2c16.png", + "dm/ps2n2c16.png", + "dm/s01i3p01.png", + "dm/s01n3p01.png", + "dm/s02i3p01.png", + "dm/s02n3p01.png", + "dm/s03i3p01.png", + "dm/s03n3p01.png", + "dm/s04i3p01.png", + "dm/s04n3p01.png", + "dm/s05i3p02.png", + "dm/s05n3p02.png", + "dm/s06i3p02.png", + "dm/s06n3p02.png", + "dm/s07i3p02.png", + "dm/s07n3p02.png", + "dm/s08i3p02.png", + "dm/s08n3p02.png", + "dm/s09i3p02.png", + "dm/s09n3p02.png", + "dm/s32i3p04.png", + "dm/s32n3p04.png", + "dm/s33i3p04.png", + "dm/s33n3p04.png", + "dm/s34i3p04.png", + "dm/s34n3p04.png", + "dm/s35i3p04.png", + "dm/s35n3p04.png", + "dm/s36i3p04.png", + "dm/s36n3p04.png", + "dm/s37i3p04.png", + "dm/s37n3p04.png", + "dm/s38i3p04.png", + "dm/s38n3p04.png", + "dm/s39i3p04.png", + "dm/s39n3p04.png", + "dm/s40i3p04.png", + "dm/s40n3p04.png", + "dm/tp0n2c08.png", + "dm/tp0n3p08.png", + "dm/z00n2c08.png", + "dm/z03n2c08.png", + "dm/z06n2c08.png", + "dm/z09n2c08.png", + ], + visibility = ["//visibility:public"], +) + +filegroup( + name = "dm_pngs_rgba8888_translucent", + srcs = [ + "dm/basi4a08.png", + "dm/basi4a16.png", + "dm/basi6a08.png", + "dm/basi6a16.png", + "dm/basn4a08.png", + "dm/basn4a16.png", + "dm/basn6a08.png", + "dm/basn6a16.png", + "dm/bgai4a08.png", + "dm/bgai4a16.png", + "dm/bgan6a08.png", + "dm/bgan6a16.png", + "dm/bgbn4a08.png", + "dm/bggn4a16.png", + "dm/bgwn6a08.png", + "dm/bgyn6a16.png", + "dm/errorInInput.png", + "dm/inc10.png", + "dm/inc11.png", + "dm/inc12.png", + "dm/inc9.png", + "dm/pp0n6a08.png", + "dm/tbbn0g04.png", + "dm/tbbn2c16.png", + "dm/tbbn3p08.png", + "dm/tbgn2c16.png", + "dm/tbgn3p08.png", + "dm/tbrn2c08.png", + "dm/tbwn0g16.png", + "dm/tbwn3p08.png", + "dm/tbyn3p08.png", + "dm/tm3n3p02.png", + "dm/tp1n3p08.png", + ], + visibility = ["//visibility:public"], +) diff --git a/bazel/gcs_mirror.bzl b/bazel/gcs_mirror.bzl index 61f684bde256..f64c79323d83 100644 --- a/bazel/gcs_mirror.bzl +++ b/bazel/gcs_mirror.bzl @@ -17,6 +17,7 @@ def gcs_mirror_url(url, sha256, ext = None): To mirror a new URL, please use the `gcs_mirror` utility found at https://skia.googlesource.com/skia/+/8ad66c2340713234df6b249e793415233337a103/bazel/gcs_mirror/gcs_mirror.go. + e.g. go run ./bazel/gcs_mirror/gcs_mirror.go --url https://github.com/emscripten-core/emsdk/archive/refs/tags/3.1.44.tar.gz --sha256 cb8cded78f6953283429d724556e89211e51ac4d871fcf38e0b32405ee248e91 Args: url: URL of the mirrored resource. @@ -26,14 +27,13 @@ def gcs_mirror_url(url, sha256, ext = None): Returns: A list of the form [original URL, mirror URL]. """ - extension = "" if ext == None: for suffix in _SUPPORTED_SUFFIXES: if url.endswith(suffix): - extension = suffix + ext = suffix break - if extension == "": + if ext == "": fail("URL %s has an unsupported suffix." % url) - mirror_url = "%s/%s%s" % (_GCS_MIRROR_PREFIX, sha256, extension) + mirror_url = "%s/%s%s" % (_GCS_MIRROR_PREFIX, sha256, ext) return [mirror_url] if _TEST_GCS_MIRROR else [mirror_url, url] diff --git a/bazel/karma/BUILD.bazel b/bazel/karma/BUILD.bazel new file mode 100644 index 000000000000..e418ac5520de --- /dev/null +++ b/bazel/karma/BUILD.bazel @@ -0,0 +1,35 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") +load("//bazel:macros.bzl", "exports_files_legacy") + +licenses(["notice"]) + +exports_files_legacy() + +# This is the easiest way to make sure we have a karma binary and all +# the plugins loaded into the node_modules folder in +# $SANDBOX_EXEC_ROOT/node_modules +# where the karma binary is invoked from. Other attempts to do this +# involving DefaultInfo [1] and depsets [2] didn't quite work because +# the transitive dependencies appear to have been loaded in +# $SANDBOX_EXEC_ROOT/bazel-out/k8-opt/bin/modules/canvaskit/canvaskit_js_tests.runfiles/npm/node_modules/ +# instead, which is not where karma could find them. (Putting transitive +# deps under bazel-out works for C++ because we can add to the include +# search directories (via --include-directory or -I), but it is not clear +# how to expand karma's search path like that. +# +# Below basically says "We have a karma binary which needs these plugins to run" +# and have the karma_test macro use this as the executable instead of karma +# directly. This must be used in conjunction with listing the plugins in the +# karma configuration file (handled by karma_test). +nodejs_binary( + name = "karma_with_plugins", + data = [ + "@npm//jasmine-core", + "@npm//karma", + "@npm//karma-chrome-launcher", + "@npm//karma-firefox-launcher", + "@npm//karma-jasmine", + ], + entry_point = {"@npm//:node_modules/karma": "bin/karma"}, + visibility = ["//modules:__subpackages__"], +) diff --git a/bazel/karma_test.bzl b/bazel/karma/karma_test.bzl similarity index 90% rename from bazel/karma_test.bzl rename to bazel/karma/karma_test.bzl index 278db82d1a78..53a6571185d5 100644 --- a/bazel/karma_test.bzl +++ b/bazel/karma/karma_test.bzl @@ -5,8 +5,6 @@ This module defines rules for running JS tests in a browser. """ -load("@build_bazel_rules_nodejs//:providers.bzl", "ExternalNpmPackageInfo", "node_modules_aspect") - # https://github.com/bazelbuild/rules_webtesting/blob/master/web/web.bzl load("@io_bazel_rules_webtesting//web:web.bzl", "web_test") @@ -25,6 +23,7 @@ def karma_test(name, config_file, srcs, static_files = None, env = None, **kwarg This draws inspiration from the karma_web_test implementation in concatjs https://github.com/bazelbuild/rules_nodejs/blob/700b7a3c5f97f2877320e6e699892ee706f85269/packages/concatjs/web_test/karma_web_test.bzl + https://github.com/bazelbuild/rules_nodejs/blob/c0b5865d7926298206e9a6aa32138967403ad1f2/packages/concatjs/web_test/karma_web_test.bzl but we were unable to use it because they prevented us from defining some proxies ourselves, which we need in order to communicate our test gms (PNG files) to a server that runs alongside the test. This implementation is simpler than concatjs's and does not try to work for all @@ -58,12 +57,6 @@ def karma_test(name, config_file, srcs, static_files = None, env = None, **kwarg _karma_test( name = karma_test_name, srcs = srcs, - deps = [ - "@npm//karma-chrome-launcher", - "@npm//karma-firefox-launcher", - "@npm//karma-jasmine", - "@npm//jasmine-core", - ], config_file = config_file, static_files = static_files, visibility = ["//visibility:private"], @@ -213,13 +206,26 @@ function applyBazelSettings(cfg) { applyBazelSettings(cfg) +function addPlugins(cfg) { + // Without listing these plugins, they will not be loaded (kjlubick suspects + // this has to do with karma/npm not being able to find them "globally" + // via some automagic process). + cfg.plugins = [ + 'karma-jasmine', + 'karma-chrome-launcher', + 'karma-firefox-launcher', + ]; +} + +addPlugins(cfg) + // The user is expected to treat the BAZEL_APPLY_SETTINGS as a function name and pass in // the configuration as a parameter. Thus, we need to end such that our IIFE will be followed // by the parameter in parentheses and get passed in as cfg. })""" def _expand_templates_in_karma_config(ctx): - # Wrap the absolute paths of our files in quotes and make them comma seperated so they + # Wrap the absolute paths of our files in quotes and make them comma separated so they # can go in the Karma files list. srcs = ['"{}"'.format(_absolute_path(ctx, f)) for f in ctx.files.srcs] src_list = ", ".join(srcs) @@ -308,31 +314,22 @@ def _karma_test_impl(ctx): # - The templated configuration file # - Any JS test files the user provided # - Any static files the user specified - # - The other dependencies from npm (e.g. jasmine-core) runfiles = [ ctx.outputs.configuration, ] runfiles += ctx.files.srcs runfiles += ctx.files.static_files - runfiles += ctx.files.deps - - # We need to add the sources for our Karma dependencies as transitive dependencies, otherwise - # things like the karma-chrome-launcher will not be available for Karma to load. - # https://docs.bazel.build/versions/main/skylark/lib/depset.html - node_modules_depsets = [] - for dep in ctx.attr.deps: - if ExternalNpmPackageInfo in dep: - node_modules_depsets.append(dep[ExternalNpmPackageInfo].sources) - else: - fail("Not an external npm file: " + dep) - node_modules = depset(transitive = node_modules_depsets) - - # https://docs.bazel.build/versions/main/skylark/lib/DefaultInfo.html + + # Now we combine this with the files necessary to run Karma + # (which includes the plugins as data dependencies). + karma_files = ctx.attr.karma[DefaultInfo].default_runfiles + + # https://bazel.build/rules/lib/builtins/ctx#runfiles + combined_runfiles = ctx.runfiles(files = runfiles).merge(karma_files) + + # https://bazel.build/rules/lib/providers/DefaultInfo return [DefaultInfo( - runfiles = ctx.runfiles( - files = runfiles, - transitive_files = node_modules, - ).merge(ctx.attr.karma[DefaultInfo].data_runfiles), + runfiles = combined_runfiles, executable = ctx.outputs.executable, )] @@ -351,17 +348,11 @@ _karma_test = rule( allow_files = [".js"], mandatory = True, ), - "deps": attr.label_list( - doc = """Any karma plugins (aka peer deps) required. These are generally listed - in the provided config_file""", - allow_files = True, - aspects = [node_modules_aspect], - mandatory = True, - ), "karma": attr.label( doc = "karma binary label", # By default, we use the karma pulled in via Bazel running npm install - default = "@npm//karma/bin:karma", + # that has extra data dependencies for the necessary plugins. + default = "//bazel/karma:karma_with_plugins", executable = True, cfg = "exec", allow_files = True, diff --git a/bazel/platform/BUILD.bazel b/bazel/platform/BUILD.bazel index bb472ece483b..4c05a5cfb124 100644 --- a/bazel/platform/BUILD.bazel +++ b/bazel/platform/BUILD.bazel @@ -22,7 +22,7 @@ platform( # See https://github.com/bazelbuild/bazel/blob/f28209df2b0ebeff1de0b8b7f6b9e215d890e753/src/main/java/com/google/devtools/build/lib/actions/ActionKeyCacher.java#L67-L73 # for how the exec_properties and execution platform impact the action cache. exec_properties = create_rbe_exec_properties_dict( - container_image = "docker://gcr.io/skia-public/rbe_linux@sha256:654139e5cecb163f80a7d18e2b2da6c758ebe6325d2d9c41d9facf58e1b3f799", + container_image = "docker://gcr.io/skia-public/rbe_linux@sha256:82e8a4c7d06c8f47bbc08ee899c4c03069af0f7f4d8c0d958a50a23d814405e6", os_family = "Linux", pool = "gce_linux", ), diff --git a/bazel/rbe/Makefile b/bazel/rbe/Makefile index 29cd05c75eac..99aa8c689daa 100644 --- a/bazel/rbe/Makefile +++ b/bazel/rbe/Makefile @@ -1,4 +1,4 @@ -LINUX_VERSION=v2 +LINUX_VERSION=v3 build_linux_container: docker build -t gcr.io/skia-public/rbe_linux:${LINUX_VERSION} ./gce_linux_container/ @@ -6,13 +6,16 @@ build_linux_container: push_linux_container: build_linux_container docker push gcr.io/skia-public/rbe_linux:${LINUX_VERSION} +shell_into_linux_container: + docker run -it gcr.io/skia-public/rbe_linux:${LINUX_VERSION} /bin/bash + generate_linux_config: # If you do not have the rbe_configs_gen executable, see # https://github.com/bazelbuild/bazel-toolchains/releases/tag/v5.1.2 rbe_configs_gen \ - --bazel_version=5.0.0 \ - --toolchain_container=gcr.io/skia-public/rbe_linux@sha256:654139e5cecb163f80a7d18e2b2da6c758ebe6325d2d9c41d9facf58e1b3f799 \ + --bazel_version=5.3.2 \ + --toolchain_container=gcr.io/skia-public/rbe_linux@sha256:82e8a4c7d06c8f47bbc08ee899c4c03069af0f7f4d8c0d958a50a23d814405e6 \ --output_src_root=../.. \ --output_config_path=bazel/rbe/gce_linux \ --exec_os=linux \ - --target_os=linux \ No newline at end of file + --target_os=linux diff --git a/bazel/rbe/README.md b/bazel/rbe/README.md index 4b94b752b4a3..be1a7f3227a7 100644 --- a/bazel/rbe/README.md +++ b/bazel/rbe/README.md @@ -39,7 +39,7 @@ This process is: version or hash qualifiers. Also increment the appropriate VERSION variable in `Makefile`. 2) Add any new packages or make any changes. 3) Run `make build_linux_container` to build the image locally. One may verify it works by running - something like `docker run -it gcr.io/skia-public/rbe_linux:v2 /bin/bash`. + something like `docker run -it gcr.io/skia-public/rbe_linux:v3 /bin/bash`. 4) Note the versions and base image hash that were used. Modify the Dockerfile to use these. 1) `docker pull debian:bookworm-slim` is the easiest way to see the sha256 and get the latest. 2) Versions can be found looking for logs like: @@ -56,7 +56,7 @@ for SLSA purposes. Defining our own Bazel RBE platforms ------------------------------------ -While the generated files *do* have a platform we can use (e.g. +While the generated files *do* have a platform we can use (e.g. `//bazel/rbe/gce_linux/config:platform`), we do not use it because we cannot easily customize it without a risk that the changes will be lost when we update the image. Thankfully, we can specify our own platforms, which we do in `//bazel/platform`, which is where we put the exec_properties @@ -68,4 +68,4 @@ https://docs.google.com/document/d/14xMZCKews69SSTfULhE8HDUzT5XvPwZ4CvRufEvcZ74/ RBE Metrics ----------- -http://go/skia-rbe-metrics \ No newline at end of file +http://go/skia-rbe-metrics diff --git a/bazel/rbe/gce_linux/cc/BUILD b/bazel/rbe/gce_linux/cc/BUILD index 9026a398ebb3..d08c6294096e 100644 --- a/bazel/rbe/gce_linux/cc/BUILD +++ b/bazel/rbe/gce_linux/cc/BUILD @@ -99,8 +99,7 @@ cc_toolchain_config( "objcopy": "/usr/bin/objcopy", "objdump": "/usr/bin/objdump", "strip": "/usr/bin/strip"}, - compile_flags = ["-U_FORTIFY_SOURCE", - "-fstack-protector", + compile_flags = ["-fstack-protector", "-Wall", "-Wthread-safety", "-Wself-assign", diff --git a/bazel/rbe/gce_linux/cc/cc_toolchain_config.bzl b/bazel/rbe/gce_linux/cc/cc_toolchain_config.bzl index 26119141059c..0b77afcb7b65 100644 --- a/bazel/rbe/gce_linux/cc/cc_toolchain_config.bzl +++ b/bazel/rbe/gce_linux/cc/cc_toolchain_config.bzl @@ -173,6 +173,21 @@ def _impl(ctx): name = "default_compile_flags", enabled = True, flag_sets = [ + flag_set( + actions = all_compile_actions, + flag_groups = [ + flag_group( + # Security hardening requires optimization. + # We need to undef it as some distributions now have it enabled by default. + flags = ["-U_FORTIFY_SOURCE"], + ), + ], + with_features = [ + with_feature_set( + not_features = ["thin_lto"], + ), + ], + ), flag_set( actions = all_compile_actions, flag_groups = ([ @@ -1049,6 +1064,31 @@ def _impl(ctx): ], ) + serialized_diagnostics_file_feature = feature( + name = "serialized_diagnostics_file", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["--serialize-diagnostics", "%{serialized_diagnostics_file}"], + expand_if_available = "serialized_diagnostics_file", + ), + ], + ), + ], + ) + dynamic_library_linker_tool_path = tool_paths dynamic_library_linker_tool_feature = feature( name = "dynamic_library_linker_tool", @@ -1187,6 +1227,7 @@ def _impl(ctx): if is_linux: features = [ dependency_file_feature, + serialized_diagnostics_file_feature, random_seed_feature, pic_feature, per_object_debug_info_feature, diff --git a/bazel/rbe/gce_linux/config/BUILD b/bazel/rbe/gce_linux/config/BUILD index 57a720f48946..65615eb04c61 100755 --- a/bazel/rbe/gce_linux/config/BUILD +++ b/bazel/rbe/gce_linux/config/BUILD @@ -21,13 +21,13 @@ package(default_visibility = ["//visibility:public"]) toolchain( name = "cc-toolchain", exec_compatible_with = [ - "@platforms//os:linux", - "@platforms//cpu:x86_64", + "@bazel_tools//platforms:linux", + "@bazel_tools//platforms:x86_64", "@bazel_tools//tools/cpp:clang", ], target_compatible_with = [ - "@platforms//os:linux", - "@platforms//cpu:x86_64", + "@bazel_tools//platforms:linux", + "@bazel_tools//platforms:x86_64", ], toolchain = "//bazel/rbe/gce_linux/cc:cc-compiler-k8", toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", @@ -37,12 +37,12 @@ platform( name = "platform", parents = ["@local_config_platform//:host"], constraint_values = [ - "@platforms//os:linux", - "@platforms//cpu:x86_64", + "@bazel_tools//platforms:linux", + "@bazel_tools//platforms:x86_64", "@bazel_tools//tools/cpp:clang", ], exec_properties = { - "container-image": "docker://gcr.io/skia-public/rbe_linux@sha256:654139e5cecb163f80a7d18e2b2da6c758ebe6325d2d9c41d9facf58e1b3f799", + "container-image": "docker://gcr.io/skia-public/rbe_linux@sha256:82e8a4c7d06c8f47bbc08ee899c4c03069af0f7f4d8c0d958a50a23d814405e6", "OSFamily": "Linux", }, ) diff --git a/bazel/rbe/gce_linux/java/BUILD b/bazel/rbe/gce_linux/java/BUILD index 61cd6ef1b89f..c9debfdb2a04 100755 --- a/bazel/rbe/gce_linux/java/BUILD +++ b/bazel/rbe/gce_linux/java/BUILD @@ -27,5 +27,5 @@ alias( local_java_runtime( name = "rbe_jdk", java_home = "/usr/lib/jvm/java-11-openjdk-amd64/", - version = "11.0.16", + version = "11.0.18", ) diff --git a/bazel/rbe/gce_linux_container/Dockerfile b/bazel/rbe/gce_linux_container/Dockerfile index 3dc5e3056ae0..1f3d150e9229 100644 --- a/bazel/rbe/gce_linux_container/Dockerfile +++ b/bazel/rbe/gce_linux_container/Dockerfile @@ -20,9 +20,20 @@ # to build Skia code. # fonts-dejavu-extra: The default fonts-dejavu-core do not have an italic font # fonts-noto-*: Coverage for many gms that test fonts +# zip: Needed by Bazel to generate a ZIP file under //bazel-testlogs with any undeclared test +# outputs (used e.g. to recover images produced by GM tests). FROM debian@sha256:b46fc4e6813f6cbd9f3f6322c72ab974cc0e75a72ca02730a8861e98999875c7 + +# Please keep each package in a separate line to facilitate bulk-removing the pinned versions (e.g. +# with multiple cursors in VSCode or Sublime Text) as instructed in the README.md file. RUN apt-get update && \ - apt-get install -y clang=1:11.0-51+nmu5 openjdk-11-jdk-headless=11.0.16+8-1~deb11u1 \ - fonts-dejavu-extra=2.37-2 fonts-noto-core=20201225-1 fonts-noto-cjk=1:20201206-cjk+repack1-1 \ - fonts-noto-color-emoji=0~20200916-1 -ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/" \ No newline at end of file + apt-get install -y \ + clang=1:11.0-51+nmu5 \ + openjdk-11-jdk-headless=11.0.18+10-1~deb11u1 \ + fonts-dejavu-extra=2.37-2 \ + fonts-noto-core=20201225-1 \ + fonts-noto-cjk=1:20201206-cjk+repack1-1 \ + fonts-noto-color-emoji=0~20200916-1 \ + zip=3.0-12 + +ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/" diff --git a/bench/GMBench.cpp b/bench/GMBench.cpp index 9f1228c2917a..b385ef54e7fb 100644 --- a/bench/GMBench.cpp +++ b/bench/GMBench.cpp @@ -13,7 +13,7 @@ GMBench::GMBench(std::unique_ptr gm) : fGM(std::move(gm)) { fGM->setMode(skiagm::GM::kBench_Mode); - fName.printf("GM_%s", fGM->getName()); + fName.printf("GM_%s", fGM->getName().c_str()); } const char* GMBench::onGetName() { diff --git a/bench/ImageFilterDAGBench.cpp b/bench/ImageFilterDAGBench.cpp index 1325be52ebad..4592bbe3a549 100644 --- a/bench/ImageFilterDAGBench.cpp +++ b/bench/ImageFilterDAGBench.cpp @@ -9,10 +9,16 @@ #include "include/core/SkCanvas.h" #include "include/core/SkImage.h" #include "include/effects/SkImageFilters.h" -#include "include/gpu/GrDirectContext.h" +#include "tools/Resources.h" + +#if defined(SK_GANESH) #include "include/gpu/GrRecordingContext.h" #include "include/gpu/ganesh/SkImageGanesh.h" -#include "tools/Resources.h" +#endif + +#if defined(SK_GRAPHITE) +#include "include/gpu/graphite/Image.h" +#endif // Exercise a blur filter connected to 5 inputs of the same merge filter. // This bench shows an improvement in performance once cacheing of re-used @@ -74,13 +80,6 @@ class ImageMakeWithFilterDAGBench : public Benchmark { SkIPoint offset = SkIPoint::Make(0, 0); SkIRect discardSubset; - auto dContext = GrAsDirectContext(canvas->recordingContext()); - // makeWithFilter will only use the GPU backend if the image is already a texture - sk_sp image = SkImages::TextureFromImage(dContext, fImage); - if (!image) { - image = fImage; - } - // Set up the filters once so the allocation cost isn't included per-loop sk_sp blur(SkImageFilters::Blur(20.0f, 20.0f, nullptr)); sk_sp inputs[kNumInputs]; @@ -91,8 +90,24 @@ class ImageMakeWithFilterDAGBench : public Benchmark { // But measure makeWithFilter() per loop since that's the focus of this benchmark for (int j = 0; j < loops; j++) { - image = image->makeWithFilter(dContext, mergeFilter.get(), subset, subset, - &discardSubset, &offset); + sk_sp image; + +#if defined(SK_GANESH) + if (auto rContext = canvas->recordingContext()) { + image = SkImages::MakeWithFilter(rContext, fImage, mergeFilter.get(), + subset, subset, &discardSubset, &offset); + } else +#endif +#if defined(SK_GRAPHITE) + if (auto recorder = canvas->recorder()) { + image = SkImages::MakeWithFilter(recorder, fImage, mergeFilter.get(), + subset, subset, &discardSubset, &offset); + } else +#endif + { + image = SkImages::MakeWithFilter(fImage, mergeFilter.get(), + subset, subset, &discardSubset, &offset); + } SkASSERT(image && image->dimensions() == fImage->dimensions()); } } diff --git a/bench/MemsetBench.cpp b/bench/MemsetBench.cpp index ad87e18cc691..aae390a4ebeb 100644 --- a/bench/MemsetBench.cpp +++ b/bench/MemsetBench.cpp @@ -7,7 +7,7 @@ #include "bench/Benchmark.h" #include "include/private/base/SkTemplates.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" using namespace skia_private; diff --git a/bench/SkSLBench.cpp b/bench/SkSLBench.cpp index 67b7a99171fd..570caa88dd45 100644 --- a/bench/SkSLBench.cpp +++ b/bench/SkSLBench.cpp @@ -30,10 +30,8 @@ #include "src/sksl/generated/sksl_public.minified.sksl" #include "src/sksl/generated/sksl_rt_shader.minified.sksl" #include "src/sksl/generated/sksl_vert.minified.sksl" -#if defined(SK_GRAPHITE) #include "src/sksl/generated/sksl_graphite_frag.minified.sksl" #include "src/sksl/generated/sksl_graphite_vert.minified.sksl" -#endif class SkSLCompilerStartupBench : public Benchmark { protected: @@ -61,6 +59,8 @@ enum class Output { kMetal, kSPIRV, kSkRP, + kGrMtl, + kGrWGSL, }; class SkSLCompileBench : public Benchmark { @@ -71,6 +71,8 @@ class SkSLCompileBench : public Benchmark { case Output::kGLSL: return "glsl_"; case Output::kMetal: return "metal_"; case Output::kSPIRV: return "spirv_"; + case Output::kGrMtl: return "grmtl_"; + case Output::kGrWGSL: return "grwgsl_"; case Output::kSkRP: return "skrp_"; } SkUNREACHABLE; @@ -101,7 +103,11 @@ class SkSLCompileBench : public Benchmark { } bool usesRuntimeShader() const { - return fOutput > Output::kSPIRV; + return fOutput == Output::kSkRP; + } + + bool usesGraphite() const { + return fOutput == Output::kGrMtl || fOutput == Output::kGrWGSL; } void fixUpSource() { @@ -109,14 +115,14 @@ class SkSLCompileBench : public Benchmark { fSrc = std::regex_replace(fSrc, std::regex(input), replacement); }; - // Runtime shaders which have slightly different conventions than fragment shaders. + // Runtime shaders have slightly different conventions than fragment shaders. // Perform a handful of fixups to compensate. These are hand-tuned for our current set of // test shaders and will probably need to be updated if we add more. if (this->usesRuntimeShader()) { fixup(R"(void main\(\))", "half4 main(float2 xy)"); fixup(R"(sk_FragColor =)", "return"); fixup(R"(sk_FragCoord)", "_FragCoord"); - fixup(R"(uniform sampler2D )", "uniform shader "); + fixup(R"(sampler2D )", "uniform shader "); fixup(R"((flat |noperspective |)in )", "uniform "); fixup(R"(sample\(([A-Za-z0-9_]+), ([A-Za-z0-9_]+)\))", "$01.eval($02)"); fSrc = "#version 300\nuniform float4 _FragCoord;\n" + fSrc; @@ -124,8 +130,14 @@ class SkSLCompileBench : public Benchmark { } void onDraw(int loops, SkCanvas* canvas) override { - const SkSL::ProgramKind kind = this->usesRuntimeShader() ? SkSL::ProgramKind::kRuntimeShader - : SkSL::ProgramKind::kFragment; + SkSL::ProgramKind kind; + if (this->usesRuntimeShader()) { + kind = SkSL::ProgramKind::kRuntimeShader; + } else if (this->usesGraphite()) { + kind = SkSL::ProgramKind::kGraphiteFragment; + } else { + kind = SkSL::ProgramKind::kFragment; + } for (int i = 0; i < loops; i++) { std::unique_ptr program = fCompiler.convertProgram(kind, fSrc, fSettings); @@ -136,8 +148,10 @@ class SkSLCompileBench : public Benchmark { switch (fOutput) { case Output::kNone: break; case Output::kGLSL: SkAssertResult(fCompiler.toGLSL(*program, &result)); break; - case Output::kMetal: SkAssertResult(fCompiler.toMetal(*program, &result)); break; + case Output::kMetal: + case Output::kGrMtl: SkAssertResult(fCompiler.toMetal(*program, &result)); break; case Output::kSPIRV: SkAssertResult(fCompiler.toSPIRV(*program, &result)); break; + case Output::kGrWGSL: SkAssertResult(fCompiler.toWGSL(*program, &result)); break; case Output::kSkRP: SkAssertResult(CompileToSkRP(*program)); break; } } @@ -198,29 +212,21 @@ class SkSLCompileBench : public Benchmark { // This fragment shader is from the third tile on the top row of GM_gradients_2pt_conical_outside. // To get an ES2 compatible shader, nonconstantArrayIndexSupport in GrShaderCaps is forced off. COMPILER_BENCH(large, R"( -uniform float3x3 umatrix_S1_c0; -uniform half4 uthresholds1_7_S1_c1_c0_c0; -uniform half4 uthresholds9_13_S1_c1_c0_c0; -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 half4 uthresholds1_7_S1_c0_c0_c0; +uniform half4 uthresholds9_13_S1_c0_c0_c0; +uniform float4 uscale_S1_c0_c0_c0[4]; +uniform float4 ubias_S1_c0_c0_c0[4]; +uniform half uinvR1_S1_c0_c0_c1_c0; +uniform half ufx_S1_c0_c0_c1_c0; +uniform float3x3 umatrix_S1_c0_c0_c1; +uniform half4 uleftBorderColor_S1_c0_c0; +uniform half4 urightBorderColor_S1_c0_c0; +uniform float3x3 umatrix_S1_c1; uniform half urange_S1; -uniform sampler2D uTextureSampler_0_S1; +sampler2D uTextureSampler_0_S1; flat in half4 vcolor_S0; -noperspective in float2 vTransformedCoords_8_S0; -half4 TextureEffect_S1_c0_c0(half4 _input, float2 _coords) -{ - return sample(uTextureSampler_0_S1, _coords).000r; -} -half4 MatrixEffect_S1_c0(half4 _input, float2 _coords) -{ - return TextureEffect_S1_c0_c0(_input, float3x2(umatrix_S1_c0) * _coords.xy1); -} -half4 UnrolledBinaryColorizer_S1_c1_c0_c0(half4 _input, float2 _coords) +noperspective in float2 vTransformedCoords_6_S0; +half4 UnrolledBinaryColorizer_S1_c0_c0_c0(half4 _input, float2 _coords) { half4 _tmp_0_inColor = _input; float2 _tmp_1_coords = _coords; @@ -228,39 +234,39 @@ half4 UnrolledBinaryColorizer_S1_c1_c0_c0(half4 _input, float2 _coords) float4 s; float4 b; { - if (t < uthresholds1_7_S1_c1_c0_c0.y) + if (t < uthresholds1_7_S1_c0_c0_c0.y) { - if (t < uthresholds1_7_S1_c1_c0_c0.x) + if (t < uthresholds1_7_S1_c0_c0_c0.x) { - s = uscale_S1_c1_c0_c0[0]; - b = ubias_S1_c1_c0_c0[0]; + s = uscale_S1_c0_c0_c0[0]; + b = ubias_S1_c0_c0_c0[0]; } else { - s = uscale_S1_c1_c0_c0[1]; - b = ubias_S1_c1_c0_c0[1]; + s = uscale_S1_c0_c0_c0[1]; + b = ubias_S1_c0_c0_c0[1]; } } else { - if (t < uthresholds1_7_S1_c1_c0_c0.z) + if (t < uthresholds1_7_S1_c0_c0_c0.z) { - s = uscale_S1_c1_c0_c0[2]; - b = ubias_S1_c1_c0_c0[2]; + s = uscale_S1_c0_c0_c0[2]; + b = ubias_S1_c0_c0_c0[2]; } else { - s = uscale_S1_c1_c0_c0[3]; - b = ubias_S1_c1_c0_c0[3]; + s = uscale_S1_c0_c0_c0[3]; + b = ubias_S1_c0_c0_c0[3]; } } } return half4(half4(float(t) * s + b)); } -half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) +half4 TwoPointConicalFocalLayout_S1_c0_c0_c1_c0(half4 _input) { half4 _tmp_2_inColor = _input; - float2 _tmp_3_coords = vTransformedCoords_8_S0; + float2 _tmp_3_coords = vTransformedCoords_6_S0; float t = -1.0; half v = 1.0; float x_t = -1.0; @@ -270,7 +276,7 @@ half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) } else if (bool(int(0))) { - x_t = length(_tmp_3_coords) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + x_t = length(_tmp_3_coords) - _tmp_3_coords.x * float(uinvR1_S1_c0_c0_c1_c0); } else { @@ -279,11 +285,11 @@ half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) { if (bool(int(0)) || !bool(int(1))) { - x_t = -sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + x_t = -sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c0_c0_c1_c0); } else { - x_t = sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + x_t = sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c0_c0_c1_c0); } } } @@ -302,7 +308,7 @@ half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) } else { - t = x_t + float(ufx_S1_c1_c0_c1_c0); + t = x_t + float(ufx_S1_c0_c0_c1_c0); } } else @@ -313,7 +319,7 @@ half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) } else { - t = -x_t + float(ufx_S1_c1_c0_c1_c0); + t = -x_t + float(ufx_S1_c0_c0_c1_c0); } } if (bool(int(0))) @@ -322,14 +328,14 @@ half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) } return half4(half4(half(t), v, 0.0, 0.0)); } -half4 MatrixEffect_S1_c1_c0_c1(half4 _input) +half4 MatrixEffect_S1_c0_c0_c1(half4 _input) { - return TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(_input); + return TwoPointConicalFocalLayout_S1_c0_c0_c1_c0(_input); } -half4 ClampedGradient_S1_c1_c0(half4 _input) +half4 ClampedGradient_S1_c0_c0(half4 _input) { half4 _tmp_4_inColor = _input; - half4 t = MatrixEffect_S1_c1_c0_c1(_tmp_4_inColor); + half4 t = MatrixEffect_S1_c0_c0_c1(_tmp_4_inColor); half4 outColor; if (!bool(int(0)) && t.y < 0.0) { @@ -337,34 +343,38 @@ half4 ClampedGradient_S1_c1_c0(half4 _input) } else if (t.x < 0.0) { - outColor = uleftBorderColor_S1_c1_c0; + outColor = uleftBorderColor_S1_c0_c0; } else if (t.x > 1.0) { - outColor = urightBorderColor_S1_c1_c0; + outColor = urightBorderColor_S1_c0_c0; } else { - outColor = UnrolledBinaryColorizer_S1_c1_c0_c0(_tmp_4_inColor, float2(half2(t.x, 0.0))); - } - if (bool(int(0))) - { - outColor.xyz *= outColor.w; + outColor = UnrolledBinaryColorizer_S1_c0_c0_c0(_tmp_4_inColor, float2(half2(t.x, 0.0))); } return half4(outColor); } -half4 DisableCoverageAsAlpha_S1_c1(half4 _input) +half4 DisableCoverageAsAlpha_S1_c0(half4 _input) { - _input = ClampedGradient_S1_c1_c0(_input); + _input = ClampedGradient_S1_c0_c0(_input); half4 _tmp_5_inColor = _input; return half4(_input); } +half4 TextureEffect_S1_c1_c0(half4 _input, float2 _coords) +{ + return sample(uTextureSampler_0_S1, _coords).000r; +} +half4 MatrixEffect_S1_c1(half4 _input, float2 _coords) +{ + return TextureEffect_S1_c1_c0(_input, float3x2(umatrix_S1_c1) * _coords.xy1); +} 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)); + half4 color = DisableCoverageAsAlpha_S1_c0(_tmp_6_inColor); + half value = MatrixEffect_S1_c1(_tmp_6_inColor, sk_FragCoord.xy).w - 0.5; + return half4(half4(clamp(color.xyz + value * urange_S1, 0.0, color.w), color.w)); } void main() { @@ -386,8 +396,8 @@ COMPILER_BENCH(medium, R"( 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; +sampler2D uTextureSampler_0_S1; +sampler2D uTextureSampler_0_S2; flat in half4 vcolor_S0; noperspective in float2 vTransformedCoords_3_S0; half4 TextureEffect_S1_c0_c0(half4 _input) @@ -455,7 +465,7 @@ void main() // This fragment shader is taken from GM_lcdtext. COMPILER_BENCH(small, R"( -uniform sampler2D uTextureSampler_0_S0; +sampler2D uTextureSampler_0_S0; noperspective in float2 vTextureCoords_S0; flat in float vTexIndex_S0; noperspective in half4 vinColor_S0; @@ -478,6 +488,115 @@ void main() COMPILER_BENCH(tiny, "void main() { sk_FragColor = half4(1); }"); +#define GRAPHITE_BENCH(name, text) \ + static constexpr char name##_SRC[] = text; \ + DEF_BENCH(return new SkSLCompileBench(#name, name##_SRC, /*optimize=*/true, Output::kGrMtl);) \ + DEF_BENCH(return new SkSLCompileBench(#name, name##_SRC, /*optimize=*/true, Output::kGrWGSL);) + +// This fragment shader is from the third tile on the top row of GM_gradients_2pt_conical_outside. +GRAPHITE_BENCH(graphite_large, R"( +layout(location=0) in flat int shadingSsboIndexVar; +layout(location=1) in float2 localCoordsVar; +layout(location=2) in float4 jacobian; +layout(location=3) in float4 edgeDistances; +layout(location=4) in float4 xRadii; +layout(location=5) in float4 yRadii; +layout(location=6) in float2 strokeParams; +layout(location=7) in float2 perPixelControl; +struct FSUniformData +{ + // 0 - SolidColor uniforms + float4 color_0; + // 2 - ConicalGradient8 uniforms + float4 colors_2[8]; + float4 offsets_2[2]; + float2 point0_2; + float2 point1_2; + float radius0_2; + float radius1_2; + int tilemode_2; + int colorSpace_2; + int doUnPremul_2; + // 3 - ColorSpaceTransform uniforms + int flags_3; + int srcKind_3; + half3x3 gamutTransform_3; + int dstKind_3; + half4x4 csXformCoeffs_3; + // 4 - DitherShader uniforms + half range_4; +} +; +layout (binding=2) buffer FSUniforms +{ + FSUniformData fsUniformData[]; +} +; +// 4 - DitherShader samplers +layout(binding=0) sampler2D sampler_4; +// [1] 1: ColorFilterShader +half4 ColorFilterShader_1(half4 inColor, half4 destColor, float2 coords) +{ + return sk_color_space_transform(sk_conical_grad_8_shader(coords, fsUniformData[shadingSsboIndexVar].colors_2, fsUniformData[shadingSsboIndexVar].offsets_2, fsUniformData[shadingSsboIndexVar].point0_2, fsUniformData[shadingSsboIndexVar].point1_2, fsUniformData[shadingSsboIndexVar].radius0_2, fsUniformData[shadingSsboIndexVar].radius1_2, fsUniformData[shadingSsboIndexVar].tilemode_2, fsUniformData[shadingSsboIndexVar].colorSpace_2, fsUniformData[shadingSsboIndexVar].doUnPremul_2), fsUniformData[shadingSsboIndexVar].flags_3, fsUniformData[shadingSsboIndexVar].srcKind_3, fsUniformData[shadingSsboIndexVar].gamutTransform_3, fsUniformData[shadingSsboIndexVar].dstKind_3, fsUniformData[shadingSsboIndexVar].csXformCoeffs_3); +} +void main() +{ + half4 initialColor = half4(0); + // [0] SolidColor + half4 outColor_0 = sk_solid_shader(fsUniformData[shadingSsboIndexVar].color_0); + // [1] ColorFilterShader + half4 outColor_1 = ColorFilterShader_1(outColor_0, half4(1), localCoordsVar); + // [4] DitherShader + half4 outColor_4 = sk_dither_shader(outColor_1, localCoordsVar, fsUniformData[shadingSsboIndexVar].range_4, sampler_4); + // [5] SrcOver + half4 outColor_5 = outColor_4; + half4 outputCoverage; + outputCoverage = analytic_rrect_coverage_fn(sk_FragCoord, jacobian, edgeDistances, xRadii, yRadii, strokeParams, perPixelControl); + sk_FragColor = outColor_5 * outputCoverage; +} +)"); + +// This fragment shader is taken from GM_lcdtext. +GRAPHITE_BENCH(graphite_small, R"( +layout(location=0) in flat int shadingSsboIndexVar; +layout(location=1) in float2 textureCoords; +layout(location=2) in half texIndex; +layout(location=3) in half maskFormat; +layout (binding=1) uniform StepUniforms +{ + layout(offset=0) float4x4 subRunDeviceMatrix; + layout(offset=64) float4x4 deviceToLocal; + layout(offset=128) float2 atlasSizeInv; +} +; +struct FSUniformData +{ + // 0 - SolidColor uniforms + float4 color_0; +} +; +layout (binding=2) buffer FSUniforms +{ + FSUniformData fsUniformData[]; +} +; +layout(binding=0) sampler2D text_atlas_0; +layout(binding=1) sampler2D text_atlas_1; +layout(binding=2) sampler2D text_atlas_2; +layout(binding=3) sampler2D text_atlas_3; +void main() +{ + half4 initialColor = half4(0); + // [0] SolidColor + half4 outColor_0 = sk_solid_shader(fsUniformData[shadingSsboIndexVar].color_0); + // [1] SrcOver + half4 outColor_1 = outColor_0; + half4 outputCoverage; + outputCoverage = bitmap_text_coverage_fn(sample_indexed_atlas(textureCoords, int(texIndex), text_atlas_0, text_atlas_1, text_atlas_2, text_atlas_3), int(maskFormat)); + sk_FragColor = outColor_1 * outputCoverage; +} +)"); + #if defined(SK_BUILD_FOR_UNIX) #include @@ -542,7 +661,6 @@ void RunSkSLModuleBenchmarks(NanoJSONResultsWriter* log) { bench(log, "sksl_compiler_gpu", gpuBytes); } -#if defined(SK_GRAPHITE) // Heap used by a compiler with the Graphite modules loaded. before = heap_bytes_used(); compiler.moduleForProgramKind(SkSL::ProgramKind::kGraphiteVertex); @@ -552,7 +670,6 @@ void RunSkSLModuleBenchmarks(NanoJSONResultsWriter* log) { graphiteBytes = (graphiteBytes - before) + gpuBytes; bench(log, "sksl_compiler_graphite", graphiteBytes); } -#endif // Heap used by a compiler with compute-shader support loaded. before = heap_bytes_used(); @@ -572,11 +689,9 @@ void RunSkSLModuleBenchmarks(NanoJSONResultsWriter* log) { std::size(SKSL_MINIFIED_sksl_rt_shader); bench(log, "sksl_binary_size_gpu", compilerGPUBinarySize); -#if defined(SK_GRAPHITE) int compilerGraphiteBinarySize = std::size(SKSL_MINIFIED_sksl_graphite_frag) + std::size(SKSL_MINIFIED_sksl_graphite_vert); bench(log, "sksl_binary_size_graphite", compilerGraphiteBinarySize); -#endif int compilerComputeBinarySize = std::size(SKSL_MINIFIED_sksl_compute); bench(log, "sksl_binary_size_compute", compilerComputeBinarySize); diff --git a/bench/SwizzleBench.cpp b/bench/SwizzleBench.cpp index ee6f220c8fae..9a788d7e9d9b 100644 --- a/bench/SwizzleBench.cpp +++ b/bench/SwizzleBench.cpp @@ -6,7 +6,8 @@ */ #include "bench/Benchmark.h" -#include "src/core/SkOpts.h" +#include "src/codec/SkSwizzler.h" +#include "src/core/SkSwizzlePriv.h" class SwizzleBench : public Benchmark { public: diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp index a48ede692d5b..2367dfc5f50f 100644 --- a/bench/nanobench.cpp +++ b/bench/nanobench.cpp @@ -544,7 +544,7 @@ static int setup_gpu_bench(Target* target, Benchmark* bench, int maxGpuFrameLag) return loops; } -#define kBogusContextType GrContextFactory::kGL_ContextType +#define kBogusContextType skgpu::ContextType::kGL #define kBogusContextOverrides GrContextFactory::ContextOverrides::kNone static std::optional create_config(const SkCommandLineConfig* config) { diff --git a/bin/activate-emsdk b/bin/activate-emsdk index 85badfdf0f43..687ca9fa3c5e 100755 --- a/bin/activate-emsdk +++ b/bin/activate-emsdk @@ -14,7 +14,7 @@ EMSDK_ROOT = os.path.join('third_party', 'externals', 'emsdk') EMSDK_PATH = os.path.join(EMSDK_ROOT, 'emsdk.py') -EMSDK_VERSION = '3.1.15' +EMSDK_VERSION = '3.1.44' def main(): if sysconfig.get_platform() in ['linux-aarch64', 'linux-arm64']: @@ -23,12 +23,12 @@ def main(): # for the latest version return try: - subprocess.check_call([sys.executable, EMSDK_PATH, 'install', EMSDK_VERSION]) + subprocess.check_call([sys.executable, EMSDK_PATH, 'install', "--permanent", EMSDK_VERSION]) except subprocess.CalledProcessError: print ('Failed to install emsdk') return 1 try: - subprocess.check_call([sys.executable, EMSDK_PATH, 'activate', EMSDK_VERSION]) + subprocess.check_call([sys.executable, EMSDK_PATH, 'activate', "--permanent", EMSDK_VERSION]) except subprocess.CalledProcessError: print ('Failed to activate emsdk') return 1 diff --git a/bin/clang_update.py b/bin/clang_update.py deleted file mode 100644 index 9562e4fc74ae..000000000000 --- a/bin/clang_update.py +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2023 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -""" -Bits and pieces of Chromium's [1] tools/clang/scripts/update.py needed -for fetching Rust toolchain, see fetch-rust-toolchain. - -[1] https://source.chromium.org/chromium/chromium/src/+/main:tools/clang/scripts/update.py - -""" - -import argparse -import os -import platform -import shutil -import stat -import tarfile -import tempfile -import time -import urllib.request -import urllib.error -import zipfile -import zlib -import sys - - -CDS_URL = os.environ.get( - "CDS_CLANG_BUCKET_OVERRIDE", - "https://commondatastorage.googleapis.com/chromium-browser-clang", -) - - -def EnsureDirExists(path): - if not os.path.exists(path): - os.makedirs(path) - - -def DownloadAndUnpack(url, output_dir, path_prefixes=None): - """Download an archive from url and extract into output_dir. If path_prefixes - is not None, only extract files whose paths within the archive start with - any prefix in path_prefixes.""" - with tempfile.TemporaryFile() as f: - DownloadUrl(url, f) - f.seek(0) - EnsureDirExists(output_dir) - if url.endswith(".zip"): - assert path_prefixes is None - zipfile.ZipFile(f).extractall(path=output_dir) - else: - t = tarfile.open(mode="r:*", fileobj=f) - members = None - if path_prefixes is not None: - members = [ - m - for m in t.getmembers() - if any(m.name.startswith(p) for p in path_prefixes) - ] - t.extractall(path=output_dir, members=members) - - -def GetPlatformUrlPrefix(host_os): - _HOST_OS_URL_MAP = { - "linux": "Linux_x64", - "mac": "Mac", - "mac-arm64": "Mac_arm64", - "win": "Win", - } - return CDS_URL + "/" + _HOST_OS_URL_MAP[host_os] + "/" - - -def DownloadUrl(url, output_file): - """Download url into output_file.""" - CHUNK_SIZE = 4096 - TOTAL_DOTS = 10 - num_retries = 3 - retry_wait_s = 5 # Doubled at each retry. - - while True: - try: - sys.stdout.write("Downloading %s " % url) - sys.stdout.flush() - request = urllib.request.Request(url) - request.add_header("Accept-Encoding", "gzip") - response = urllib.request.urlopen(request) - total_size = None - if "Content-Length" in response.headers: - total_size = int(response.headers["Content-Length"].strip()) - - is_gzipped = response.headers.get("Content-Encoding", "").strip() == "gzip" - if is_gzipped: - gzip_decode = zlib.decompressobj(zlib.MAX_WBITS + 16) - - bytes_done = 0 - dots_printed = 0 - while True: - chunk = response.read(CHUNK_SIZE) - if not chunk: - break - bytes_done += len(chunk) - - if is_gzipped: - chunk = gzip_decode.decompress(chunk) - output_file.write(chunk) - - if total_size is not None: - num_dots = TOTAL_DOTS * bytes_done // total_size - sys.stdout.write("." * (num_dots - dots_printed)) - sys.stdout.flush() - dots_printed = num_dots - if total_size is not None and bytes_done != total_size: - raise urllib.error.URLError( - "only got %d of %d bytes" % (bytes_done, total_size) - ) - if is_gzipped: - output_file.write(gzip_decode.flush()) - print(" Done.") - return - except urllib.error.URLError as e: - sys.stdout.write("\n") - print(e) - if ( - num_retries == 0 - or isinstance(e, urllib.error.HTTPError) - and e.code == 404 - ): - raise e - num_retries -= 1 - output_file.seek(0) - output_file.truncate() - print("Retrying in %d s ..." % retry_wait_s) - sys.stdout.flush() - time.sleep(retry_wait_s) - retry_wait_s *= 2 - - -def GetDefaultHostOs(): - _PLATFORM_HOST_OS_MAP = { - "darwin": "mac", - "cygwin": "win", - "linux2": "linux", - "win32": "win", - } - default_host_os = _PLATFORM_HOST_OS_MAP.get(sys.platform, sys.platform) - if default_host_os == "mac" and platform.machine() == "arm64": - default_host_os = "mac-arm64" - return default_host_os diff --git a/bin/fetch-rust-toolchain b/bin/fetch-rust-toolchain deleted file mode 100755 index 9b423e8eebd5..000000000000 --- a/bin/fetch-rust-toolchain +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2023 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -"""Update in-tree checkout of Rust toolchain - -Minimal Skia adapation of [1] to fetch a Rust revision manually -specified in MANUAL_REVISION below. Frequently roll this to latest -version available in [2]. - -[1] https://source.chromium.org/chromium/chromium/src/+/main:tools/rust/update_rust.py -[2] https://commondatastorage.googleapis.com/chromium-browser-clang/index.html?path=Linux_x64/rust-toolchain- - -""" - -import argparse -import os -import re -import shutil -import sys -import tempfile -import urllib - -from pathlib import Path - -# Chromium's Rust builds (for Linux) that worked are found at: -# https://commondatastorage.googleapis.com/chromium-browser-clang/index.html?path=Linux_x64/rust-toolchain- -# The latest builds are prefixed with a date, such as `20230101-1`. -# To update, roll this to versions that Chromium's tools/rust/build-rust.py has produced and which are found from the CDS url. -MANUAL_REVISION = ( - "ac4379fea9e83465d814bb05005689f49bd2141e-1-llvmorg-17-init-3874-g93a2fecc-1" -) - -THIS_DIR = os.path.abspath(os.path.dirname(__file__)) -SKIA_DIR = os.path.abspath(os.path.join(THIS_DIR, "..")) -THIRD_PARTY_DIR = os.path.join(SKIA_DIR, "third_party") -RUST_TOOLCHAIN_OUT_DIR = os.path.join(THIRD_PARTY_DIR, "rust-toolchain") -VERSION_STAMP_PATH = os.path.join(RUST_TOOLCHAIN_OUT_DIR, "VERSION") - - -def GetDownloadPackageVersion(): - # TODO(https://crbug.com/14191): This is hardcoded in Skia right - # now, as Skia does not rebuild rust on its own and can't directly - # access the most recent version that's been built for - # Chromium. Could the Chromium side-build publish something like a - # symbolic link to last-known-good? - return MANUAL_REVISION - - -# Get the version of the toolchain package we already have. -def GetStampVersion(): - if os.path.exists(RUST_TOOLCHAIN_OUT_DIR): - with open(VERSION_STAMP_PATH) as version_file: - existing_stamp = version_file.readline().rstrip() - version_re = re.compile(r"rustc [0-9.]+ [0-9a-f]+ \((.+?) chromium\)") - match = version_re.fullmatch(existing_stamp) - if match is None: - return None - return match.group(1) - - return None - - -def main(): - parser = argparse.ArgumentParser(description="Update Rust package") - parser.add_argument( - "--print-package-version", - action="store_true", - help="Print Rust package version (including both the " - "Rust and Clang revisions) and quit.", - ) - args = parser.parse_args() - - if args.print_package_version: - print(GetDownloadPackageVersion()) - return 0 - - from clang_update import DownloadAndUnpack, GetDefaultHostOs, GetPlatformUrlPrefix - - # Exit early if the existing package is up-to-date. Note that we cannot - # simply call DownloadAndUnpack() every time: aside from unnecessarily - # downloading the toolchain if it hasn't changed, it also leads to multiple - # versions of the same rustlibs. build/rust/std/find_std_rlibs.py chokes in - # this case. - if os.path.exists(RUST_TOOLCHAIN_OUT_DIR): - if GetDownloadPackageVersion() == GetStampVersion(): - return 0 - - if os.path.exists(RUST_TOOLCHAIN_OUT_DIR): - shutil.rmtree(RUST_TOOLCHAIN_OUT_DIR) - - try: - host_os = GetDefaultHostOs() - # TODO(https://crbug.com/skia/14190): Enable this on additional - # platforms. - if not "linux" in host_os: - print( - "Unsupported platform, Rust support only available on Linux " - "at the moment, see https://crbug.com/skia/14190" - ) - return 1 - platform_prefix = GetPlatformUrlPrefix(host_os) - version = GetDownloadPackageVersion() - url = f"{platform_prefix}rust-toolchain-{version}.tgz" - DownloadAndUnpack(url, THIRD_PARTY_DIR) - except urllib.error.HTTPError as e: - # Fail softly for now. This can happen if a Rust package was not - # produced, e.g. if the Rust build failed upon a Clang update, or if a - # Rust roll and a Clang roll raced against each other. - # - # TODO(https://crbug.com/1245714): Reconsider how to handle this. - print(f"warning: could not download Rust package") - - # Ensure the newly extracted package has the correct version. - assert GetDownloadPackageVersion() == GetStampVersion() - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/build_overrides/dawn.gni b/build_overrides/dawn.gni index 6f771dcdc32b..8005355e441c 100644 --- a/build_overrides/dawn.gni +++ b/build_overrides/dawn.gni @@ -10,7 +10,9 @@ dawn_has_build = false dawn_abseil_dir = "//third_party/externals/abseil-cpp" dawn_angle_dir = "//third_party/externals/angle2" +dawn_egl_registry_dir = "//third_party/externals/egl-registry" dawn_jinja2_dir = "//third_party/externals/jinja2" +dawn_opengl_registry_dir = "//third_party/externals/opengl-registry" dawn_spirv_tools_dir = "//third_party/externals/spirv-tools" dawn_spirv_cross_dir = "//third_party/externals/spirv-cross" dawn_tint_dir = "//third_party/externals/tint" diff --git a/defines.bzl b/defines.bzl index 577f8abaa325..9ecee37bc910 100644 --- a/defines.bzl +++ b/defines.bzl @@ -24,9 +24,6 @@ GENERAL_DEFINES = [ }) + select({ "//bazel/common_config_settings:enable_effect_serialization_false": ["SK_DISABLE_EFFECT_DESERIALIZATION"], "//conditions:default": [], -}) + select({ - "//bazel/common_config_settings:enable_sksl_in_raster_pipeline_true": ["SK_ENABLE_SKSL_IN_RASTER_PIPELINE"], - "//conditions:default": [], }) + select({ "//src/gpu:enable_gpu_test_utils_true": [ "GR_TEST_UTILS=1", @@ -37,7 +34,6 @@ GENERAL_DEFINES = [ "//src/sksl:enable_skslc_true": [ "SKSL_STANDALONE", "SK_DISABLE_TRACING", - "SK_ENABLE_SKSL_IN_RASTER_PIPELINE", "SK_ENABLE_SPIRV_CROSS", "SK_ENABLE_SPIRV_VALIDATION", "SK_ENABLE_WGSL_VALIDATION", @@ -46,9 +42,6 @@ GENERAL_DEFINES = [ }) + select({ "//src/sksl:enable_sksl_tracing_true": ["SKSL_ENABLE_TRACING"], "//conditions:default": [], -}) + select({ - "//src/sksl:needs_sksl": ["SK_ENABLE_SKSL"], - "//conditions:default": [], }) + select({ "//src/pdf:enable_pdf_backend_true": ["SK_SUPPORT_PDF"], "//conditions:default": [], @@ -72,11 +65,6 @@ GPU_DEFINES = select_multi({ "SK_VULKAN", "SK_GANESH", ], - "//src/gpu:dawn_ganesh": [ - "SK_DAWN", - "SK_GANESH", - "VK_USE_PLATFORM_XCB_KHR", # TODO(kjlubick) support dawn's dawn_enable_vulkan etc - ], "//src/gpu:metal_ganesh": [ "SK_METAL", "SK_GANESH", diff --git a/demos.skia.org/demos/mesh2d/BeanEater-1s-200px.gif b/demos.skia.org/demos/mesh2d/BeanEater-1s-200px.gif new file mode 100644 index 000000000000..92e4df631c65 Binary files /dev/null and b/demos.skia.org/demos/mesh2d/BeanEater-1s-200px.gif differ diff --git a/demos.skia.org/demos/mesh2d/baby_tux.png b/demos.skia.org/demos/mesh2d/baby_tux.png new file mode 100644 index 000000000000..dd082c4e2c40 Binary files /dev/null and b/demos.skia.org/demos/mesh2d/baby_tux.png differ diff --git a/demos.skia.org/demos/mesh2d/index.html b/demos.skia.org/demos/mesh2d/index.html new file mode 100644 index 000000000000..326de989013e --- /dev/null +++ b/demos.skia.org/demos/mesh2d/index.html @@ -0,0 +1,404 @@ + +Mesh2D Demo + + + + + +
+
+ +
Fetching CanvasKit...
+
+ + + + +
+
+
Show mesh
+
Level of detail
+
Animator
+
Renderer
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/dm/DM.cpp b/dm/DM.cpp index e783bfc5396b..b63cf8218d53 100644 --- a/dm/DM.cpp +++ b/dm/DM.cpp @@ -1558,13 +1558,15 @@ static void run_ganesh_test(skiatest::Test test, const GrContextOptions& grCtxOp done("unit", "test", "", test.fName); } -static void run_graphite_test(skiatest::Test test) { +static void run_graphite_test(skiatest::Test test, skgpu::graphite::ContextOptions options) { DMReporter reporter; if (!FLAGS_dryRun && !should_skip("_", "tests", "_", test.fName)) { AutoreleasePool pool; + test.modifyGraphiteContextOptions(&options); + skiatest::ReporterContext ctx(&reporter, SkString(test.fName)); start("unit", "test", "", test.fName); - test.graphite(&reporter); + test.graphite(&reporter, options); } done("unit", "test", "", test.fName); } @@ -1610,6 +1612,9 @@ int main(int argc, char** argv) { gVLog = stderr; } + skgpu::graphite::ContextOptions graphiteCtxOptions; + // Currently no command line flags directly control the Graphite context options + GrContextOptions grCtxOptions; CommonFlags::SetCtxOptions(&grCtxOptions); @@ -1678,7 +1683,7 @@ int main(int argc, char** argv) { // With the parallel work running, run serial tasks and tests here on main thread. for (Task& task : serial) { Task::Run(task); } for (skiatest::Test& test : *gGaneshTests) { run_ganesh_test(test, grCtxOptions); } - for (skiatest::Test& test : *gGraphiteTests) { run_graphite_test(test); } + for (skiatest::Test& test : *gGraphiteTests) { run_graphite_test(test, graphiteCtxOptions); } // Wait for any remaining parallel work to complete (including any spun off of serial tasks). parallel.wait(); diff --git a/dm/DMGpuTestProcs.cpp b/dm/DMGpuTestProcs.cpp index bf4805bc871f..d8aae2c39f9d 100644 --- a/dm/DMGpuTestProcs.cpp +++ b/dm/DMGpuTestProcs.cpp @@ -26,42 +26,68 @@ using sk_gpu_test::GLTestContext; namespace skiatest { -bool IsGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kOpenGL == GrContextFactory::ContextTypeBackend(type); -} -bool IsVulkanContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kVulkan == GrContextFactory::ContextTypeBackend(type); +bool IsGLContextType(skgpu::ContextType type) { +#if defined(SK_GANESH) + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kOpenGL; +#else + return false; +#endif } -bool IsMetalContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kMetal == GrContextFactory::ContextTypeBackend(type); + +bool IsVulkanContextType(skgpu::ContextType type) { +#if defined(SK_GANESH) + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kVulkan; +#elif defined(SK_GRAPHITE) + return skgpu::graphite::ContextTypeBackend(type) == BackendApi::kVulkan; +#else + return false; +#endif } -bool IsDirect3DContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kDirect3D == GrContextFactory::ContextTypeBackend(type); + +bool IsMetalContextType(skgpu::ContextType type) { +#if defined(SK_GANESH) + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kMetal; +#elif defined(SK_GRAPHITE) + return skgpu::graphite::ContextTypeBackend(type) == BackendApi::kMetal; +#else + return false; +#endif } -bool IsDawnContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kDawn == GrContextFactory::ContextTypeBackend(type); + +bool IsDirect3DContextType(skgpu::ContextType type) { +#if defined(SK_GANESH) + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kDirect3D; +#else + return false; +#endif } -bool IsRenderingGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return IsGLContextType(type) && GrContextFactory::IsRenderingContext(type); + +bool IsDawnContextType(skgpu::ContextType type) { +#if defined(SK_GRAPHITE) + return skgpu::graphite::ContextTypeBackend(type) == skgpu::BackendApi::kDawn; +#else + return false; +#endif } -bool IsMockContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return type == GrContextFactory::kMock_ContextType; + +bool IsMockContextType(skgpu::ContextType type) { + return type == skgpu::ContextType::kMock; } -void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* filter, +void RunWithGaneshTestContexts(GrContextTestFn* testFn, ContextTypeFilterFn* filter, Reporter* reporter, const GrContextOptions& options) { #if defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_MAC) - static constexpr auto kNativeGLType = GrContextFactory::kGL_ContextType; + static constexpr auto kNativeGLType = skgpu::ContextType::kGL; #else - static constexpr auto kNativeGLType = GrContextFactory::kGLES_ContextType; + static constexpr auto kNativeGLType = skgpu::ContextType::kGLES; #endif - for (int typeInt = 0; typeInt < GrContextFactory::kContextTypeCnt; ++typeInt) { - GrContextFactory::ContextType contextType = (GrContextFactory::ContextType) typeInt; + for (int typeInt = 0; typeInt < skgpu::kContextTypeCount; ++typeInt) { + skgpu::ContextType contextType = static_cast(typeInt); // Use "native" instead of explicitly trying OpenGL and OpenGL ES. Do not use GLES on // desktop since tests do not account for not fixing http://skbug.com/2809 - if (contextType == GrContextFactory::kGL_ContextType || - contextType == GrContextFactory::kGLES_ContextType) { + if (contextType == skgpu::ContextType::kGL || + contextType == skgpu::ContextType::kGLES) { if (contextType != kNativeGLType) { continue; } @@ -76,7 +102,7 @@ void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* f continue; } - ReporterContext ctx(reporter, SkString(GrContextFactory::ContextTypeName(contextType))); + ReporterContext ctx(reporter, SkString(skgpu::ContextTypeName(contextType))); if (ctxInfo.directContext()) { (*testFn)(reporter, ctxInfo); // In case the test changed the current context make sure we move it back before @@ -92,11 +118,13 @@ void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* f namespace graphite { -void RunWithGraphiteTestContexts(GraphiteTestFn* test, GrContextTypeFilterFn* filter, - Reporter* reporter) { - ContextFactory factory; - for (int typeInt = 0; typeInt < GrContextFactory::kContextTypeCnt; ++typeInt) { - GrContextFactory::ContextType contextType = (GrContextFactory::ContextType) typeInt; +void RunWithGraphiteTestContexts(GraphiteTestFn* test, + ContextTypeFilterFn* filter, + Reporter* reporter, + const skgpu::graphite::ContextOptions& ctxOptions) { + ContextFactory factory(ctxOptions); + for (int typeInt = 0; typeInt < skgpu::kContextTypeCount; ++typeInt) { + skgpu::ContextType contextType = static_cast(typeInt); if (filter && !(*filter)(contextType)) { continue; } @@ -106,7 +134,7 @@ void RunWithGraphiteTestContexts(GraphiteTestFn* test, GrContextTypeFilterFn* fi continue; } - ReporterContext ctx(reporter, SkString(GrContextFactory::ContextTypeName(contextType))); + ReporterContext ctx(reporter, SkString(skgpu::ContextTypeName(contextType))); (*test)(reporter, context); } } diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index a94d776e9e17..509f568ae07a 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -38,15 +38,14 @@ #include "src/base/SkRandom.h" #include "src/base/SkTLazy.h" #include "src/codec/SkCodecImageGenerator.h" -#include "src/codec/SkSwizzler.h" #include "src/core/SkAutoPixmapStorage.h" #include "src/core/SkImageInfoPriv.h" #include "src/core/SkOSFile.h" -#include "src/core/SkOpts.h" #include "src/core/SkPictureData.h" #include "src/core/SkPicturePriv.h" #include "src/core/SkRecordDraw.h" #include "src/core/SkRecorder.h" +#include "src/core/SkSwizzlePriv.h" #include "src/core/SkTaskGroup.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrGpu.h" @@ -2084,13 +2083,14 @@ GraphiteSink::GraphiteSink(const SkCommandLineConfigGraphite* config) : fContextType(config->getContextType()) , fColorType(config->getColorType()) , fAlphaType(config->getAlphaType()) { + fBaseContextOptions.fEnableWGSL = config->getWGSL(); } Result GraphiteSink::draw(const Src& src, SkBitmap* dst, SkWStream* dstStream, SkString* log) const { - skgpu::graphite::ContextOptions options; + skgpu::graphite::ContextOptions options = fBaseContextOptions; src.modifyGraphiteContextOptions(&options); @@ -2111,7 +2111,9 @@ Result GraphiteSink::draw(const Src& src, dst->allocPixels(ii); { - sk_sp surface = SkSurfaces::RenderTarget(recorder.get(), ii); + SkSurfaceProps props(0, kRGB_H_SkPixelGeometry); + sk_sp surface = + SkSurfaces::RenderTarget(recorder.get(), ii, skgpu::Mipmapped::kNo, &props); if (!surface) { return Result::Fatal("Could not create a surface."); } diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h index 85ab7c711d99..6e22e34fc332 100644 --- a/dm/DMSrcSink.h +++ b/dm/DMSrcSink.h @@ -14,6 +14,7 @@ #include "include/core/SkCanvas.h" #include "include/core/SkData.h" #include "include/core/SkPicture.h" +#include "include/gpu/graphite/ContextOptions.h" #include "src/utils/SkMultiPictureDocument.h" #include "tools/flags/CommonFlagsConfig.h" #include "tools/gpu/MemoryCache.h" @@ -380,7 +381,7 @@ class GPUSink : public Sink { std::function initContext = nullptr, std::function wrapCanvas = nullptr) const; - sk_gpu_test::GrContextFactory::ContextType contextType() const { return fContextType; } + skgpu::ContextType contextType() const { return fContextType; } const sk_gpu_test::GrContextFactory::ContextOverrides& contextOverrides() const { return fContextOverrides; } @@ -403,7 +404,7 @@ class GPUSink : public Sink { bool readBack(SkSurface*, SkBitmap* dst) const; private: - sk_gpu_test::GrContextFactory::ContextType fContextType; + skgpu::ContextType fContextType; sk_gpu_test::GrContextFactory::ContextOverrides fContextOverrides; SkCommandLineConfigGpu::SurfType fSurfType; int fSampleCount; @@ -572,21 +573,20 @@ class SVGSink : public Sink { class GraphiteSink : public Sink { public: - using ContextType = sk_gpu_test::GrContextFactory::ContextType; - GraphiteSink(const SkCommandLineConfigGraphite*); Result draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override; bool serial() const override { return true; } const char* fileExtension() const override { return "png"; } - SinkFlags flags() const override { return SinkFlags{ SinkFlags::kGPU, SinkFlags::kDirect }; } + SinkFlags flags() const override { return SinkFlags{SinkFlags::kGPU, SinkFlags::kDirect}; } void setColorSpace(sk_sp colorSpace) override { fColorSpace = colorSpace; } SkColorInfo colorInfo() const override { return SkColorInfo(fColorType, fAlphaType, fColorSpace); } private: - ContextType fContextType; + skgpu::graphite::ContextOptions fBaseContextOptions; + skgpu::ContextType fContextType; SkColorType fColorType; SkAlphaType fAlphaType; sk_sp fColorSpace; diff --git a/docs/examples/Image_makeWithFilter.cpp b/docs/examples/Image_makeWithFilter.cpp index 9ccba4943ad5..94942f826677 100644 --- a/docs/examples/Image_makeWithFilter.cpp +++ b/docs/examples/Image_makeWithFilter.cpp @@ -12,8 +12,16 @@ void draw(SkCanvas* canvas) { clipBounds.outset(60, 60); SkIRect outSubset; SkIPoint offset; - sk_sp filtered(image->makeWithFilter(canvas->recordingContext(), offsetFilter.get(), - subset, clipBounds, &outSubset, &offset)); + sk_sp filtered; + + if (auto rContext = canvas->recordingContext()) { + filtered = SkImages::MakeWithFilter(rContext, image, offsetFilter.get(), + subset, clipBounds, &outSubset, &offset); + } else { + filtered = SkImages::MakeWithFilter(image, offsetFilter.get(), + subset, clipBounds, &outSubset, &offset); + } + SkPaint paint; paint.setAntiAlias(true); paint.setStyle(SkPaint::kStroke_Style); diff --git a/example/BUILD.bazel b/example/BUILD.bazel index f22b2c35a922..82b4ee0e850d 100644 --- a/example/BUILD.bazel +++ b/example/BUILD.bazel @@ -60,30 +60,6 @@ cc_binary_with_flags( ], ) -cc_binary_with_flags( - name = "hello_world_dawn", - testonly = True, - srcs = [ - "HelloWorld.cpp", - "HelloWorld.h", - ], - # These flags are defined in //bazel/common_config_settings/BUILD.bazel - set_flags = { - "gpu_backend": [ - "dawn_ganesh", - ], - # Load fonts from the standard system directory (e.g. "/usr/share/fonts/") - # as defined in //src/ports/SkFontMgr_custom_directory_factory.cpp - "fontmgr_factory": [ - "custom_directory_fontmgr_factory", - ], - }, - deps = [ - "//:skia_public", - "//tools/sk_app", - ], -) - cc_binary_with_flags( name = "hello_world_metal", testonly = True, diff --git a/example/HelloWorld.cpp b/example/HelloWorld.cpp index 0dcc488cdaaa..4c8d32676c48 100644 --- a/example/HelloWorld.cpp +++ b/example/HelloWorld.cpp @@ -36,8 +36,6 @@ HelloWorld::HelloWorld(int argc, char** argv, void* platformData) : fBackendType(Window::kNativeGL_BackendType), #elif defined(SK_VULKAN) : fBackendType(Window::kVulkan_BackendType), -#elif defined(SK_DAWN) - : fBackendType(Window::kDawn_BackendType), #else : fBackendType(Window::kRaster_BackendType), #endif @@ -149,8 +147,6 @@ bool HelloWorld::onChar(SkUnichar c, skui::ModifierKey modifiers) { fBackendType = Window::kNativeGL_BackendType; #elif defined(SK_VULKAN) fBackendType = Window::kVulkan_BackendType; -#elif defined(SK_DAWN) - fBackendType = Window::kDawn_BackendType; #else SkDebugf("No GPU backend configured\n"); return true; diff --git a/example/external_client/BUILD.bazel b/example/external_client/BUILD.bazel new file mode 100644 index 000000000000..baae67c33604 --- /dev/null +++ b/example/external_client/BUILD.bazel @@ -0,0 +1,21 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +# This first example only needs the core Skia functionality and the pathops +# module. Thus, the client defines a cc_library (skia_core_and_pathops) with +# those components and then depending on that library. +cc_binary( + name = "path_combiner", + srcs = ["src/path_main.cpp"], + copts = ["-std=c++17"], + linkopts = ["-fuse-ld=lld"], + deps = [":skia_core_and_pathops"], +) + +cc_library( + name = "skia_core_and_pathops", + deps = [ + "@skia//:core", + "@skia//:default_malloc", + "@skia//:pathops", + ], +) diff --git a/example/external_client/README.md b/example/external_client/README.md new file mode 100644 index 000000000000..819da8f9ee9b --- /dev/null +++ b/example/external_client/README.md @@ -0,0 +1,6 @@ +This folder demonstrates how an external client would depend on and build Skia +using their own C++ toolchain. + +Look first in the `WORKSPACE.bazel` to see the setup part (with a quick detour to +`./custom_skia_config`) and then `BUILD.bazel` for the actual rules which use +Skia's modular build rules to assemble the components necessary for a particular task. \ No newline at end of file diff --git a/example/external_client/WORKSPACE.bazel b/example/external_client/WORKSPACE.bazel new file mode 100644 index 000000000000..3872a4c3d79f --- /dev/null +++ b/example/external_client/WORKSPACE.bazel @@ -0,0 +1,48 @@ +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") + +# A real client should download a pinned version of Skia such as: +# git_repository( +# name = "skia", +# commit = "8b051126be8ae6c3e718bd3817eebb867b2fd612", +# remote = "https://skia.googlesource.com/skia", +# ) +# We use local_repository to allow us to test Skia at head as if it were checked +# out via git_repository. +local_repository( + name = "skia", + path = "../..", +) + +# Clients need to define a target here named "skia_user_config" that points to a +# Bazel workspace with: +# - a user_config cc_library rule that has SkiaUserConfig.h available and +# the SK_USE_BAZEL_CONFIG_HEADER define set. +# - A copts.bzl file with at least two string lists: DEFAULT_COPTS, DEFAULT_OBJC_COPTS +# These lists can be empty if you want to use the toolchain's default. +# - a linkopts.bzl file with at least the string list DEFAULT_LINKOPTS +# This list can be empty if you want to use the toolchain's default. +local_repository( + name = "skia_user_config", + path = "custom_skia_config", +) + +# These two workspace functions will add dependencies for Skia's Bazel rules +# (e.g. @bazel_skylib) and the C++ dependencies (e.g. @libpng) +load("@skia//bazel:deps.bzl", "bazel_deps", "c_plus_plus_deps") +# Be sure to call the functions. +bazel_deps() +# TODO(kjlubick) add in the call to the c_plus_plus_deps() functions once there +# is a sample rule that makes use of codecs or similar + +############################################################################## +# Everything below here is not required for Skia, but is required for the sample +# rules based on Skia. +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# https://github.com/bazelbuild/rules_cc +http_archive( + name = "rules_cc", + urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.8/rules_cc-0.0.8.tar.gz"], + sha256 = "ae46b722a8b8e9b62170f83bfb040cbf12adb732144e689985a66b26410a7d6f", + strip_prefix = "rules_cc-0.0.8", +) \ No newline at end of file diff --git a/example/external_client/custom_skia_config/BUILD.bazel b/example/external_client/custom_skia_config/BUILD.bazel new file mode 100644 index 000000000000..7fe0d0ee7146 --- /dev/null +++ b/example/external_client/custom_skia_config/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +cc_library( + name = "user_config", + hdrs = [ + "SkUserConfig.h", + ], + defines = [ + "SK_USE_BAZEL_CONFIG_HEADER", + ], + visibility = ["//visibility:public"], +) diff --git a/example/external_client/custom_skia_config/SkUserConfig.h b/example/external_client/custom_skia_config/SkUserConfig.h new file mode 100644 index 000000000000..dd507c793439 --- /dev/null +++ b/example/external_client/custom_skia_config/SkUserConfig.h @@ -0,0 +1,13 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef ClientCustomUserConfig_DEFINED +#define ClientCustomUserConfig_DEFINED + +// See Skia's include/config/SkUserConfig.h for defines that could be here. + +#endif diff --git a/example/external_client/custom_skia_config/WORKSPACE.bazel b/example/external_client/custom_skia_config/WORKSPACE.bazel new file mode 100644 index 000000000000..aa3d6b65d2f3 --- /dev/null +++ b/example/external_client/custom_skia_config/WORKSPACE.bazel @@ -0,0 +1,3 @@ +# This empty workspace file lets the SkUserConfig.h file be defined separately from Skia itself. +# Clients can more easily set their own #defines, copts, and linkopts when building Skia using +# Bazel. diff --git a/example/external_client/custom_skia_config/copts.bzl b/example/external_client/custom_skia_config/copts.bzl new file mode 100644 index 000000000000..eee95cfe2fb8 --- /dev/null +++ b/example/external_client/custom_skia_config/copts.bzl @@ -0,0 +1,9 @@ +""" +Clients can put their own compile flags here if desired. + +Select statements are supported. +""" + +DEFAULT_COPTS = ["-std=c++17", "-Wno-psabi"] + +DEFAULT_OBJC_COPTS = [] diff --git a/example/external_client/custom_skia_config/linkopts.bzl b/example/external_client/custom_skia_config/linkopts.bzl new file mode 100644 index 000000000000..fc8696c70678 --- /dev/null +++ b/example/external_client/custom_skia_config/linkopts.bzl @@ -0,0 +1,7 @@ +""" +Clients can put their own linker flags here if desired. + +Select statements are supported. +""" + +DEFAULT_LINKOPTS = [] diff --git a/example/external_client/src/path_main.cpp b/example/external_client/src/path_main.cpp new file mode 100644 index 000000000000..d02c002e9bc9 --- /dev/null +++ b/example/external_client/src/path_main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/core/SkPath.h" +#include "include/core/SkPathBuilder.h" +#include "include/pathops/SkPathOps.h" + +#include + +int main(int argc, char** argv) { + SkPathBuilder pb; + pb.moveTo(10, 10); + pb.lineTo(15, 5); + pb.lineTo(20, 10); + pb.close(); + SkPath path1 = pb.detach(); + + pb.moveTo(12, 12); + pb.lineTo(18, 6); + pb.lineTo(24, 12); + pb.close(); + SkPath path2 = pb.detach(); + + SkPath combined; + if (Op(path1, path2, kIntersect_SkPathOp, &combined)) { + printf("Success: \n"); + combined.dump(); + printf("\n"); + } else { + printf("Operation failed\n"); + } +} diff --git a/experimental/tskit/compile.sh b/experimental/tskit/compile.sh index 82c33bb5ad00..57f1a2725c53 100755 --- a/experimental/tskit/compile.sh +++ b/experimental/tskit/compile.sh @@ -66,7 +66,6 @@ EMCC_DEBUG=1 ${EMCXX} \ --pre-js $BASE_DIR/build/core.js \ $BASE_DIR/bindings/core.cpp \ $EXTENSION_OPT \ - -s LLD_REPORT_UNDEFINED \ -s ALLOW_MEMORY_GROWTH=1 \ -s EXPORT_NAME="InitTSKit" \ -s EXPORTED_FUNCTIONS=['_malloc','_free'] \ diff --git a/fuzz/FuzzCanvas.cpp b/fuzz/FuzzCanvas.cpp index 284333d9c36c..268a79bab0e1 100644 --- a/fuzz/FuzzCanvas.cpp +++ b/fuzz/FuzzCanvas.cpp @@ -1622,7 +1622,7 @@ static void fuzz_ganesh(Fuzz* fuzz, GrDirectContext* context) { DEF_FUZZ(MockGPUCanvas, fuzz) { sk_gpu_test::GrContextFactory f; - fuzz_ganesh(fuzz, f.get(sk_gpu_test::GrContextFactory::kMock_ContextType)); + fuzz_ganesh(fuzz, f.get(skgpu::ContextType::kMock)); } #endif @@ -1643,9 +1643,9 @@ static void dump_GPU_info(GrDirectContext* context) { DEF_FUZZ(NativeGLCanvas, fuzz) { sk_gpu_test::GrContextFactory f; - auto context = f.get(sk_gpu_test::GrContextFactory::kGL_ContextType); + auto context = f.get(skgpu::ContextType::kGL); if (!context) { - context = f.get(sk_gpu_test::GrContextFactory::kGLES_ContextType); + context = f.get(skgpu::ContextType::kGLES); } if (FLAGS_gpuInfo) { dump_GPU_info(context); diff --git a/fuzz/FuzzCreateDDL.cpp b/fuzz/FuzzCreateDDL.cpp index ec9da260f6a6..8b8bbaa6a9e2 100644 --- a/fuzz/FuzzCreateDDL.cpp +++ b/fuzz/FuzzCreateDDL.cpp @@ -25,7 +25,7 @@ * The fuzzer aims to fuzz the use of GrDeferredDisplayList. It mainly consists of * three parts. * 1. In create_surface_characterization, (make_characterization) Create GrSurfaceCharacterization - * by using GrDirectContext of kGL_ContextType as it can be applied on all platform, and + * by using GrDirectContext of ContextType::kGL as it can be applied on all platform, and * (make_surface) create a GPU backend surface of the same GrDirectContext * 2. (make_ddl) Create GrDeferredDisplayListRecorder from the GrSurfaceCharacterization, and test * the recoder's corresponding canvas. @@ -209,7 +209,7 @@ DEF_FUZZ(CreateDDL, fuzz) { fuzz->nextEnum(&origin, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin); sk_gpu_test::GrContextFactory factory; - auto ctxInfo = factory.getContextInfo(sk_gpu_test::GrContextFactory::kGL_ContextType); + auto ctxInfo = factory.getContextInfo(skgpu::ContextType::kGL); GrDirectContext* dContext = ctxInfo.directContext(); if (!dContext) { diff --git a/fuzz/FuzzDDLThreading.cpp b/fuzz/FuzzDDLThreading.cpp index 86e25fc07614..545302e007a1 100644 --- a/fuzz/FuzzDDLThreading.cpp +++ b/fuzz/FuzzDDLThreading.cpp @@ -301,5 +301,5 @@ void DDLFuzzer::run() { } DEF_FUZZ(DDLThreadingGL, fuzz) { - DDLFuzzer(fuzz, ContextType::kGL_ContextType).run(); + DDLFuzzer(fuzz, skgpu::ContextType::kGL).run(); } diff --git a/fuzz/FuzzPrecompile.cpp b/fuzz/FuzzPrecompile.cpp index de8dfd7f7a42..7bc73994ef6e 100644 --- a/fuzz/FuzzPrecompile.cpp +++ b/fuzz/FuzzPrecompile.cpp @@ -31,6 +31,7 @@ #include "src/gpu/graphite/Precompile.h" #include "src/gpu/graphite/PublicPrecompile.h" #include "src/gpu/graphite/RecorderPriv.h" +#include "src/gpu/graphite/Renderer.h" #include "src/gpu/graphite/RuntimeEffectDictionary.h" #include "tools/ToolUtils.h" #include "tools/gpu/GrContextFactory.h" @@ -338,16 +339,18 @@ void fuzz_graphite(Fuzz* fuzz, Context* context, int depth = 9) { auto [paint, paintOptions] = create_random_paint(fuzz, depth); - - bool hasCoverage; - fuzz->next(&hasCoverage); + constexpr Coverage coverageOptions[3] = { + Coverage::kNone, Coverage::kSingleChannel, Coverage::kLCD}; + uint32_t temp; + fuzz->next(&temp); + Coverage coverage = coverageOptions[temp % 3]; DstReadRequirement dstReadReq = DstReadRequirement::kNone; const SkBlenderBase* blender = as_BB(paint.getBlender()); if (blender) { dstReadReq = GetDstReadRequirement(recorder->priv().caps(), blender->asBlendMode(), - hasCoverage); + coverage); } bool needsDstSample = dstReadReq == DstReadRequirement::kTextureCopy || dstReadReq == DstReadRequirement::kTextureSample; @@ -364,7 +367,7 @@ void fuzz_graphite(Fuzz* fuzz, Context* context, int depth = 9) { std::vector precompileIDs; paintOptions.priv().buildCombinations(precompileKeyContext, /* addPrimitiveBlender= */ false, - hasCoverage, + coverage, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -408,13 +411,11 @@ DEF_FUZZ(Precompile, fuzz) { sk_gpu_test::GrContextFactory::ContextType contextType; #if defined(SK_METAL) - contextType = sk_gpu_test::GrContextFactory::kMetal_ContextType; + contextType = skgpu::ContextType::kMetal; #elif defined(SK_VULKAN) - contextType = sk_gpu_test::GrContextFactory::kVulkan_ContextType; -#elif defined(SK_DAWN) - contextType = sk_gpu_test::GrContextFactory::kDawn_ContextType; + contextType = skgpu::ContextType::kVulkan; #else - contextType = sk_gpu_test::GrContextFactory::kMock_ContextType; + contextType = skgpu::ContextType::kMock; #endif auto [_, context] = factory.getContextInfo(contextType); diff --git a/gm/BUILD.bazel b/gm/BUILD.bazel index 55a85ab5c437..c5b8ad4d4a39 100644 --- a/gm/BUILD.bazel +++ b/gm/BUILD.bazel @@ -1,6 +1,7 @@ load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_library") load("//bazel:cc_test_with_flags.bzl", "cc_test_with_flags") load(":android_gm_test.bzl", "android_gm_test") +load(":png_codec.bzl", "png_codec_tests") licenses(["notice"]) @@ -41,6 +42,8 @@ skia_cc_library( srcs = [ "//src/utils:json_hdrs", "//src/utils:json_srcs", + "//tools/flags", + "//tools/flags:common_flags", ], deps = [ ":gm", @@ -505,7 +508,6 @@ cc_test_with_flags( ], data = ["//resources"], set_flags = { - "enable_sksl": ["True"], "include_decoder": [ "gif_decode_codec", "webp_decode_codec", @@ -531,7 +533,6 @@ cc_test_with_flags( ], data = ["//resources"], set_flags = { - "enable_sksl": ["True"], "include_decoder": [ "gif_decode_codec", "webp_decode_codec", @@ -555,7 +556,6 @@ cc_test_with_flags( ], data = ["//resources"], set_flags = { - "enable_sksl": ["True"], "include_decoder": [ "gif_decode_codec", "webp_decode_codec", @@ -568,6 +568,18 @@ cc_test_with_flags( deps = [":tests_base"], ) +png_codec_tests(name = "png_codec_tests") + +test_suite( + name = "cpu_gm_tests", + tests = [ + "cpu_8888_test", + # "cpu_8888_via_picture_serialization_test", # Fails due to differences in image. + "cpu_8888_via_picture_test", + ":png_codec_tests", + ], +) + cc_test_with_flags( name = "gpu_gles_test", srcs = ["BazelGMRunner.cpp"] + GPU_GMS, @@ -577,7 +589,6 @@ cc_test_with_flags( ], data = ["//resources"], set_flags = { - "enable_sksl": ["True"], "include_decoder": [ "gif_decode_codec", "webp_decode_codec", @@ -586,6 +597,20 @@ cc_test_with_flags( deps = [":tests_base"], ) +cc_test_with_flags( + name = "hello_bazel_world_test", + srcs = [ + "BazelGMRunner.cpp", + "hello_bazel_world.cpp", + ], + args = [ + "--surfaceConfig", + "8888", + ], + data = ["//resources"], + deps = [":tests_base"], +) + [ # Sample invocation (assuming there's a Pixel 5 or similar device available via adb): # @@ -599,7 +624,6 @@ cc_test_with_flags( srcs = CPU_GMS, config = config, flags = { - "enable_sksl": ["True"], "include_decoder": [ "gif_decode_codec", "webp_decode_codec", diff --git a/gm/BazelGMRunner.cpp b/gm/BazelGMRunner.cpp index ee8668eeefe6..115b2bae2df5 100644 --- a/gm/BazelGMRunner.cpp +++ b/gm/BazelGMRunner.cpp @@ -27,13 +27,12 @@ #include "tools/HashAndEncode.h" #include +#include #include #include #include #include -struct tm; - // TODO(lovisolo): Add flag --skip. // TODO(lovisolo): Add flag --omitDigestIfHashInFile (provides the known hashes file). @@ -67,8 +66,9 @@ static DEFINE_string(via, // Takes a SkBitmap and writes the resulting PNG and MD5 hash into the given files. Returns an // empty string on success, or an error message in the case of failures. static std::string write_png_and_json_files(std::string name, - std::string config, - SkBitmap& bitmap, + std::map gmGoldKeys, + std::map surfaceGoldKeys, + const SkBitmap& bitmap, const char* pngPath, const char* jsonPath) { HashAndEncode hashAndEncode(bitmap); @@ -89,14 +89,37 @@ static std::string write_png_and_json_files(std::string name, return "Error encoding or writing PNG to " + std::string(pngPath); } + // Validate GM-related Gold keys. + if (gmGoldKeys.find("name") == gmGoldKeys.end()) { + SK_ABORT("gmGoldKeys does not contain key \"name\""); + } + if (gmGoldKeys.find("source_type") == gmGoldKeys.end()) { + SK_ABORT("gmGoldKeys does not contain key \"source_type\""); + } + + // Validate surface-related Gold keys. + if (surfaceGoldKeys.find("surface_config") == surfaceGoldKeys.end()) { + SK_ABORT("surfaceGoldKeys does not contain key \"surface_config\""); + } + + // Gather all Gold keys. + std::map keys = { + {"build_system", "bazel"}, + }; + keys.merge(surfaceGoldKeys); + keys.merge(gmGoldKeys); + // Write JSON file with MD5 hash. SkFILEWStream jsonFile(jsonPath); SkJSONWriter jsonWriter(&jsonFile, SkJSONWriter::Mode::kPretty); jsonWriter.beginObject(); // Root object. - jsonWriter.appendString("name", name); jsonWriter.appendString("md5", md5); - jsonWriter.appendString("config", config); - jsonWriter.endObject(); + jsonWriter.beginObject("keys"); // "keys" dictionary. + for (auto const& [param, value] : keys) { + jsonWriter.appendString(param.c_str(), SkString(value)); + } + jsonWriter.endObject(); // "keys" dictionary. + jsonWriter.endObject(); // Root object. return ""; } @@ -119,7 +142,7 @@ static std::string draw_result_to_string(skiagm::DrawResult result) { case skiagm::DrawResult::kSkip: return "Skip"; default: - return "Unknown"; + SkUNREACHABLE; } } @@ -130,19 +153,19 @@ static int gNumSkippedGMs = 0; // Runs a GM under the given surface config, and saves its output PNG file (and accompanying JSON // file with metadata) to the given output directory. void run_gm(std::unique_ptr gm, std::string config, std::string outputDir) { - SkDebugf("[%s] GM: %s\n", now().c_str(), gm->getName()); + SkDebugf("[%s] GM: %s\n", now().c_str(), gm->getName().c_str()); // Create surface and canvas. - std::unique_ptr surface_manager = + std::unique_ptr surfaceManager = SurfaceManager::FromConfig(config, gm->getISize().width(), gm->getISize().height()); - if (surface_manager == nullptr) { - SK_ABORT("unknown --surfaceConfig flag value: %s", config.c_str()); + if (surfaceManager == nullptr) { + SK_ABORT("Unknown --surfaceConfig flag value: %s.", config.c_str()); } // Set up GPU. SkDebugf("[%s] Setting up GPU...\n", now().c_str()); SkString msg; - skiagm::DrawResult result = gm->gpuSetup(surface_manager->getSurface()->getCanvas(), &msg); + skiagm::DrawResult result = gm->gpuSetup(surfaceManager->getSurface()->getCanvas(), &msg); // Draw GM into canvas if GPU setup was successful. SkBitmap bitmap; @@ -150,7 +173,7 @@ void run_gm(std::unique_ptr gm, std::string config, std::string outp GMOutput output; std::string viaName = FLAGS_via.size() == 0 ? "" : (FLAGS_via[0]); SkDebugf("[%s] Drawing GM via \"%s\"...\n", now().c_str(), viaName.c_str()); - output = draw(gm.get(), surface_manager->getSurface().get(), viaName); + output = draw(gm.get(), surfaceManager->getSurface().get(), viaName); result = output.result; msg = SkString(output.msg.c_str()); bitmap = output.bitmap; @@ -162,7 +185,7 @@ void run_gm(std::unique_ptr gm, std::string config, std::string outp // We don't increment numSuccessfulGMs just yet. We still need to successfully save // its output bitmap to disk. SkDebugf("[%s] Flushing surface...\n", now().c_str()); - surface_manager->flush(); + surfaceManager->flush(); break; case skiagm::DrawResult::kFail: gNumFailedGMs++; @@ -171,7 +194,7 @@ void run_gm(std::unique_ptr gm, std::string config, std::string outp gNumSkippedGMs++; break; default: - SK_ABORT("Unknown skiagm::DrawResult: %s", draw_result_to_string(result).c_str()); + SkUNREACHABLE; } // Report GM result and optional message. @@ -182,12 +205,16 @@ void run_gm(std::unique_ptr gm, std::string config, std::string outp // Save PNG and JSON file with MD5 hash to disk if the GM was successful. if (result == skiagm::DrawResult::kOk) { - std::string name = std::string(gm->getName()); + std::string name = std::string(gm->getName().c_str()); SkString pngPath = SkOSPath::Join(outputDir.c_str(), (name + ".png").c_str()); SkString jsonPath = SkOSPath::Join(outputDir.c_str(), (name + ".json").c_str()); - std::string pngAndJSONResult = write_png_and_json_files( - gm->getName(), config, bitmap, pngPath.c_str(), jsonPath.c_str()); + std::string pngAndJSONResult = write_png_and_json_files(gm->getName().c_str(), + gm->getGoldKeys(), + surfaceManager->getGoldKeys(), + bitmap, + pngPath.c_str(), + jsonPath.c_str()); if (pngAndJSONResult != "") { SkDebugf("[%s] %s\n", now().c_str(), pngAndJSONResult.c_str()); gNumFailedGMs++; @@ -209,12 +236,11 @@ int main(int argc, char** argv) { if (argc < 2) { SkDebugf("GM runner invoked with no arguments.\n"); } else { - std::ostringstream oss; - oss << "GM runner invoked with arguments:"; + SkDebugf("GM runner invoked with arguments:"); for (int i = 1; i < argc; i++) { - oss << " " << argv[i]; + SkDebugf(" %s", argv[i]); } - SkDebugf("%s\n", oss.str().c_str()); + SkDebugf("\n"); } // When running under Bazel (e.g. "bazel test //path/to:test"), we'll store output files in @@ -230,36 +256,31 @@ int main(int argc, char** argv) { // Parse and validate flags. CommandLineFlags::Parse(argc, argv); if (!isBazelTest && FLAGS_outputDir.isEmpty()) { - SkDebugf("Flag --outputDir cannot be empty.\n"); - return 1; + SK_ABORT("Flag --outputDir cannot be empty."); } if (FLAGS_outputDir.size() > 1) { - SkDebugf("Flag --outputDir takes one single value, got %d.\n", FLAGS_outputDir.size()); - return 1; + SK_ABORT("Flag --outputDir takes one single value, got %d.", FLAGS_outputDir.size()); } if (FLAGS_surfaceConfig.isEmpty()) { - SkDebugf("Flag --surfaceConfig cannot be empty.\n"); - return 1; + SK_ABORT("Flag --surfaceConfig cannot be empty."); } if (FLAGS_surfaceConfig.size() > 1) { - SkDebugf("Flag --surfaceConfig takes one single value, got %d.\n", + SK_ABORT("Flag --surfaceConfig takes one single value, got %d.", FLAGS_surfaceConfig.size()); - return 1; } if (FLAGS_via.size() > 1) { - SkDebugf("Flag --via takes at most one value, got %d.\n", FLAGS_via.size()); - return 1; + SK_ABORT("Flag --via takes at most one value, got %d.", FLAGS_via.size()); } std::string outputDir = FLAGS_outputDir.isEmpty() ? testUndeclaredOutputsDir : FLAGS_outputDir[0]; - std::string config(FLAGS_surfaceConfig[0]); + std::string config = FLAGS_surfaceConfig[0]; // Execute all GM registerer functions, then run all registered GMs. for (const skiagm::GMRegistererFn& f : skiagm::GMRegistererFnRegistry::Range()) { std::string errorMsg = f(); if (errorMsg != "") { - SK_ABORT("error while gathering GMs: %s", errorMsg.c_str()); + SK_ABORT("Error while gathering GMs: %s", errorMsg.c_str()); } } for (const skiagm::GMFactory& f : skiagm::GMRegistry::Range()) { diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp index f55ae91a5994..f1103e8567e5 100644 --- a/gm/aaclip.cpp +++ b/gm/aaclip.cpp @@ -177,13 +177,9 @@ class ClipCubicGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("clipcubic"); - } + SkString getName() const override { return SkString("clipcubic"); } - SkISize onISize() override { - return SkISize::Make(400, 410); - } + SkISize getISize() override { return SkISize::Make(400, 410); } void doDraw(SkCanvas* canvas, const SkPath& path) { SkPaint paint; diff --git a/gm/aarecteffect.cpp b/gm/aarecteffect.cpp index c0f3b1f8a634..7289b133a7c3 100644 --- a/gm/aarecteffect.cpp +++ b/gm/aarecteffect.cpp @@ -40,9 +40,9 @@ class AARectEffect : public GpuGM { AARectEffect() { this->setBGColor(0xFFFFFFFF); } protected: - SkString onShortName() override { return SkString("aa_rect_effect"); } + SkString getName() const override { return SkString("aa_rect_effect"); } - SkISize onISize() override { return SkISize::Make(210, 250); } + SkISize getISize() override { return SkISize::Make(210, 250); } void onOnceBeforeDraw() override {} diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp index e93735c80fab..d239bd342020 100644 --- a/gm/aaxfermodes.cpp +++ b/gm/aaxfermodes.cpp @@ -66,11 +66,9 @@ class AAXfermodesGM : public skiagm::GM { kShape_Pass }; - SkString onShortName() override { - return SkString("aaxfermodes"); - } + SkString getName() const override { return SkString("aaxfermodes"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(2 * kMargin + 2 * kXfermodeTypeSpacing - (kXfermodeTypeSpacing - (kLabelSpacing + 2 * kPaintSpacing)), 2 * kMargin + kTitleSpacing + kSubtitleSpacing + diff --git a/gm/addarc.cpp b/gm/addarc.cpp index 5ec5600dd4a7..1e567f6b8d12 100644 --- a/gm/addarc.cpp +++ b/gm/addarc.cpp @@ -27,9 +27,9 @@ class AddArcGM : public skiagm::GM { AddArcGM() : fRotate(0) {} protected: - SkString onShortName() override { return SkString("addarc"); } + SkString getName() const override { return SkString("addarc"); } - SkISize onISize() override { return SkISize::Make(1040, 1040); } + SkISize getISize() override { return SkISize::Make(1040, 1040); } void onDraw(SkCanvas* canvas) override { canvas->translate(20, 20); @@ -117,9 +117,9 @@ class StrokeCircleGM : public skiagm::GM { StrokeCircleGM() : fRotate(0) {} protected: - SkString onShortName() override { return SkString("strokecircle"); } + SkString getName() const override { return SkString("strokecircle"); } - SkISize onISize() override { return SkISize::Make(520, 520); } + SkISize getISize() override { return SkISize::Make(520, 520); } void onDraw(SkCanvas* canvas) override { canvas->scale(20, 20); @@ -167,9 +167,9 @@ class FillCircleGM : public skiagm::GM { FillCircleGM() : fRotate(0) {} protected: - SkString onShortName() override { return SkString("fillcircle"); } + SkString getName() const override { return SkString("fillcircle"); } - SkISize onISize() override { return SkISize::Make(520, 520); } + SkISize getISize() override { return SkISize::Make(520, 520); } void onDraw(SkCanvas* canvas) override { canvas->scale(20, 20); diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp index 5122637566fb..49084d61f150 100644 --- a/gm/alphagradients.cpp +++ b/gm/alphagradients.cpp @@ -23,13 +23,9 @@ class AlphaGradientsGM : public skiagm::GM { AlphaGradientsGM() {} protected: - SkString onShortName() override { - return SkString("alphagradients"); - } + SkString getName() const override { return SkString("alphagradients"); } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } static void draw_grad(SkCanvas* canvas, const SkRect& r, SkColor c0, SkColor c1, bool doPreMul) { diff --git a/gm/analytic_gradients.cpp b/gm/analytic_gradients.cpp index e37012cca28b..2fb1e863c533 100644 --- a/gm/analytic_gradients.cpp +++ b/gm/analytic_gradients.cpp @@ -137,13 +137,9 @@ class AnalyticGradientShaderGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("analytic_gradients"); - } + SkString getName() const override { return SkString("analytic_gradients"); } - SkISize onISize() override { - return SkISize::Make(1024, 512); - } + SkISize getISize() override { return SkISize::Make(1024, 512); } void onDraw(SkCanvas* canvas) override { const SkPoint points[2] = { SkPoint::Make(0, 0), SkPoint::Make(RECT_WIDTH, 0.0) }; diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp index b6fdd0fcbc96..75e1c049f02e 100644 --- a/gm/androidblendmodes.cpp +++ b/gm/androidblendmodes.cpp @@ -32,11 +32,9 @@ class AndroidBlendModesGM : public GM { } protected: - SkString onShortName() override { - return SkString("androidblendmodes"); - } + SkString getName() const override { return SkString("androidblendmodes"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kNumCols * kBitmapSize, kNumRows * kBitmapSize); } diff --git a/gm/animated_gif.cpp b/gm/animated_gif.cpp index b3eb299cbfff..31205252a3d9 100644 --- a/gm/animated_gif.cpp +++ b/gm/animated_gif.cpp @@ -79,11 +79,9 @@ class AnimatedGifGM : public skiagm::GM { , fTotalFrames (-1) {} private: - SkString onShortName() override { - return SkString("animatedGif"); - } + SkString getName() const override { return SkString("animatedGif"); } - SkISize onISize() override { + SkISize getISize() override { if (this->initCodec()) { SkISize dim = fCodec->getInfo().dimensions(); // Wide enough to display all the frames. @@ -201,13 +199,9 @@ class AnimCodecPlayerGM : public skiagm::GM { } private: - SkString onShortName() override { - return SkString("AnimCodecPlayer"); - } + SkString getName() const override { return SkString("AnimCodecPlayer"); } - SkISize onISize() override { - return { 1024, 768 }; - } + SkISize getISize() override { return {1024, 768}; } void onDraw(SkCanvas* canvas) override { canvas->scale(0.25f, 0.25f); @@ -258,11 +252,11 @@ class AnimCodecPlayerExifGM : public skiagm::GM { } } - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("AnimCodecPlayerExif_%s", strrchr(fPath, '/') + 1); } - SkISize onISize() override { + SkISize getISize() override { this->init(); return fSize; } diff --git a/gm/animated_image_orientation.cpp b/gm/animated_image_orientation.cpp index 52301dd6533a..c791704ae981 100644 --- a/gm/animated_image_orientation.cpp +++ b/gm/animated_image_orientation.cpp @@ -75,11 +75,9 @@ class AnimatedImageGM : public skiagm::GM { {} ~AnimatedImageGM() override = default; - SkString onShortName() override { - return SkStringPrintf("%s_animated_image", fName); - } + SkString getName() const override { return SkStringPrintf("%s_animated_image", fName); } - SkISize onISize() override { + SkISize getISize() override { this->init(); return fSize; } diff --git a/gm/animatedimageblurs.cpp b/gm/animatedimageblurs.cpp index 7c9596b60f1d..00e75d951fe5 100644 --- a/gm/animatedimageblurs.cpp +++ b/gm/animatedimageblurs.cpp @@ -37,9 +37,9 @@ class AnimatedImageBlurs : public skiagm::GM { protected: bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString("animated-image-blurs"); } + SkString getName() const override { return SkString("animated-image-blurs"); } - SkISize onISize() override { return SkISize::Make(kWidth, kHeight); } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onOnceBeforeDraw() override { for (int i = 0; i < kNumNodes; ++i) { diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp index 01e3cc658a3f..d038c266f2e4 100644 --- a/gm/anisotropic.cpp +++ b/gm/anisotropic.cpp @@ -43,7 +43,7 @@ class AnisotropicGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("anisotropic_image_scale_"); switch (fMode) { case Mode::kLinear: @@ -59,7 +59,7 @@ class AnisotropicGM : public GM { return name; } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(2*kImageSize + 3*kSpacer, kNumVertImages*kImageSize + (kNumVertImages+1)*kSpacer); } @@ -160,9 +160,9 @@ class AnisoMipsGM : public GM { AnisoMipsGM() = default; protected: - SkString onShortName() override { return SkString("anisomips"); } + SkString getName() const override { return SkString("anisomips"); } - SkISize onISize() override { return SkISize::Make(520, 260); } + SkISize getISize() override { return SkISize::Make(520, 260); } sk_sp updateImage(SkSurface* surf, SkColor color) { surf->getCanvas()->clear(color); diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp index 9d4640e3eaa1..39972bfad1cb 100644 --- a/gm/arcofzorro.cpp +++ b/gm/arcofzorro.cpp @@ -27,14 +27,9 @@ class ArcOfZorroGM : public GM { } protected: + SkString getName() const override { return SkString("arcofzorro"); } - SkString onShortName() override { - return SkString("arcofzorro"); - } - - SkISize onISize() override { - return SkISize::Make(1000, 1000); - } + SkISize getISize() override { return SkISize::Make(1000, 1000); } void onDraw(SkCanvas* canvas) override { SkRandom rand; diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp index 8424b16985c0..da4d00bc08fc 100644 --- a/gm/arithmode.cpp +++ b/gm/arithmode.cpp @@ -78,9 +78,9 @@ static void show_k_text(SkCanvas* canvas, SkScalar x, SkScalar y, const SkScalar } class ArithmodeGM : public skiagm::GM { - SkString onShortName() override { return SkString("arithmode"); } + SkString getName() const override { return SkString("arithmode"); } - SkISize onISize() override { return {640, 572}; } + SkISize getISize() override { return {640, 572}; } void onDraw(SkCanvas* canvas) override { constexpr int WW = 100, @@ -182,12 +182,12 @@ class ArithmodeBlenderGM : public skiagm::GM { sk_sp fSrcShader, fDstShader; sk_sp fRuntimeEffect; - SkString onShortName() override { return SkString("arithmode_blender"); } + SkString getName() const override { return SkString("arithmode_blender"); } static constexpr int W = 200; static constexpr int H = 200; - SkISize onISize() override { return {(W + 30) * 2, (H + 30) * 4}; } + SkISize getISize() override { return {(W + 30) * 2, (H + 30) * 4}; } void onOnceBeforeDraw() override { // Prepare a runtime effect for this blend. diff --git a/gm/attributes.cpp b/gm/attributes.cpp index 8a11a216023e..13703b032e22 100644 --- a/gm/attributes.cpp +++ b/gm/attributes.cpp @@ -275,8 +275,8 @@ namespace skiagm { * strides. */ class AttributesGM : public GpuGM { - SkString onShortName() override { return SkString("attributes"); } - SkISize onISize() override { return {120, 340}; } + SkString getName() const override { return SkString("attributes"); } + SkISize getISize() override { return {120, 340}; } DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override; }; diff --git a/gm/backdrop.cpp b/gm/backdrop.cpp index cf946781dfc5..9e74f6d71401 100644 --- a/gm/backdrop.cpp +++ b/gm/backdrop.cpp @@ -19,6 +19,7 @@ #include "include/effects/SkGradientShader.h" #include "include/effects/SkImageFilters.h" #include "src/core/SkCanvasPriv.h" +#include "src/core/SkMatrixPriv.h" #include @@ -57,7 +58,12 @@ static void do_draw(SkCanvas* canvas, bool useClip, bool useHintRect, SkScalar s } // Using kClamp because kDecal, the default, produces transparency near the edge of the canvas's // device. - auto blur = SkImageFilters::Blur(sigma, sigma, SkTileMode::kClamp, nullptr); + SkRect blurCrop; + SkAssertResult(SkMatrixPriv::InverseMapRect(canvas->getLocalToDeviceAs3x3(), + &blurCrop, + SkRect::MakeWH(canvas->imageInfo().width(), + canvas->imageInfo().height()))); + auto blur = SkImageFilters::Blur(sigma, sigma, SkTileMode::kClamp, nullptr, blurCrop); auto rec = SkCanvasPriv::ScaledBackdropLayer(drawrptr, nullptr, blur.get(), scaleFactor, 0); canvas->saveLayer(rec); // draw something inside, just to demonstrate that we don't blur the new contents, diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp index 285055507762..dd7ab2e68335 100644 --- a/gm/badpaint.cpp +++ b/gm/badpaint.cpp @@ -25,9 +25,9 @@ class BadPaintGM : public skiagm::GM { BadPaintGM() {} protected: - SkString onShortName() override { return SkString("badpaint"); } + SkString getName() const override { return SkString("badpaint"); } - SkISize onISize() override { return SkISize::Make(100, 100); } + SkISize getISize() override { return SkISize::Make(100, 100); } void onOnceBeforeDraw() override { SkBitmap emptyBmp; diff --git a/gm/batchedconvexpaths.cpp b/gm/batchedconvexpaths.cpp index b9552b3078aa..9638081d2a9b 100644 --- a/gm/batchedconvexpaths.cpp +++ b/gm/batchedconvexpaths.cpp @@ -16,8 +16,8 @@ namespace skiagm { class BatchedConvexPathsGM : public GM { private: - SkString onShortName() override { return SkString("batchedconvexpaths"); } - SkISize onISize() override { return SkISize::Make(512, 512); } + SkString getName() const override { return SkString("batchedconvexpaths"); } + SkISize getISize() override { return SkISize::Make(512, 512); } void modifyGrContextOptions(GrContextOptions* ctxOptions) override { // Ensure our paths don't go through the atlas path renderer. diff --git a/gm/bc1_transparency.cpp b/gm/bc1_transparency.cpp index 675e3486a868..ac67fdeb1bac 100644 --- a/gm/bc1_transparency.cpp +++ b/gm/bc1_transparency.cpp @@ -164,12 +164,9 @@ class BC1TransparencyGM : public GM { } protected: + SkString getName() const override { return SkString("bc1_transparency"); } - SkString onShortName() override { - return SkString("bc1_transparency"); - } - - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kImgWidth + 2 * kPad, 2 * kImgHeight + 3 * kPad); } diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp index 4cf8cf094bc5..55827ad76ef3 100644 --- a/gm/beziereffects.cpp +++ b/gm/beziereffects.cpp @@ -220,13 +220,9 @@ class BezierConicEffects : public GpuGM { static const int kCellWidth = 128; static const int kCellHeight = 128; - SkString onShortName() override { - return SkString("bezier_conic_effects"); - } + SkString getName() const override { return SkString("bezier_conic_effects"); } - SkISize onISize() override { - return SkISize::Make(kCellWidth, kNumConics*kCellHeight); - } + SkISize getISize() override { return SkISize::Make(kCellWidth, kNumConics * kCellHeight); } DrawResult onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) override { auto sdc = skgpu::ganesh::TopDeviceSurfaceDrawContext(canvas); @@ -426,13 +422,9 @@ class BezierQuadEffects : public GpuGM { static const int kCellWidth = 128; static const int kCellHeight = 128; - SkString onShortName() override { - return SkString("bezier_quad_effects"); - } + SkString getName() const override { return SkString("bezier_quad_effects"); } - SkISize onISize() override { - return SkISize::Make(kCellWidth, kNumQuads*kCellHeight); - } + SkISize getISize() override { return SkISize::Make(kCellWidth, kNumQuads * kCellHeight); } DrawResult onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) override { auto sdc = skgpu::ganesh::TopDeviceSurfaceDrawContext(canvas); diff --git a/gm/beziers.cpp b/gm/beziers.cpp index 82bcc34f4264..aef58096e069 100644 --- a/gm/beziers.cpp +++ b/gm/beziers.cpp @@ -69,14 +69,9 @@ class BeziersGM : public skiagm::GM { BeziersGM() {} protected: + SkString getName() const override { return SkString("beziers"); } - SkString onShortName() override { - return SkString("beziers"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp index 7e1ef2e8c1ef..baab06d3ca37 100644 --- a/gm/bigblurs.cpp +++ b/gm/bigblurs.cpp @@ -33,13 +33,9 @@ class BigBlursGM : public GM { } protected: - SkString onShortName() override { - return SkString("bigblurs"); - } + SkString getName() const override { return SkString("bigblurs"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { constexpr int kBig = 65536; diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp index 213fea253d52..7a1ac91bd19d 100644 --- a/gm/bigrrectaaeffect.cpp +++ b/gm/bigrrectaaeffect.cpp @@ -58,13 +58,13 @@ class BigRRectAAEffectGM : public GpuGM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("big_rrect_%s_aa_effect", fName); return name; } - SkISize onISize() override { return SkISize::Make(fWidth, fHeight); } + SkISize getISize() override { return SkISize::Make(fWidth, fHeight); } DrawResult onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) override { auto sdc = skgpu::ganesh::TopDeviceSurfaceDrawContext(canvas); diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp index c4fd10b63d2e..8d89ec9622c0 100644 --- a/gm/bigtext.cpp +++ b/gm/bigtext.cpp @@ -29,14 +29,9 @@ class BigTextGM : public skiagm::GM { BigTextGM() {} protected: + SkString getName() const override { return SkString("bigtext"); } - SkString onShortName() override { - return SkString("bigtext"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp index f91fa2bc6033..f16d9fefc535 100644 --- a/gm/bigtileimagefilter.cpp +++ b/gm/bigtileimagefilter.cpp @@ -46,14 +46,9 @@ class BigTileImageFilterGM : public GM { } protected: + SkString getName() const override { return SkString("bigtileimagefilter"); } - SkString onShortName() override { - return SkString("bigtileimagefilter"); - } - - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onOnceBeforeDraw() override { fRedImage = create_circle_texture(kBitmapSize, SK_ColorRED); diff --git a/gm/bitmapcopy.cpp b/gm/bitmapcopy.cpp index 0618c2a2ab14..d6a612867cbd 100644 --- a/gm/bitmapcopy.cpp +++ b/gm/bitmapcopy.cpp @@ -83,9 +83,9 @@ class BitmapCopyGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { return SkString("bitmapcopy"); } + SkString getName() const override { return SkString("bitmapcopy"); } - SkISize onISize() override { return {540, 330}; } + SkISize getISize() override { return {540, 330}; } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp index 9e8fc630355c..c6529ea1f789 100644 --- a/gm/bitmapfilters.cpp +++ b/gm/bitmapfilters.cpp @@ -92,13 +92,9 @@ class FilterGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("bitmapfilters"); - } + SkString getName() const override { return SkString("bitmapfilters"); } - SkISize onISize() override { - return SkISize::Make(540, 250); - } + SkISize getISize() override { return SkISize::Make(540, 250); } void onDraw(SkCanvas* canvas) override { SkScalar x = SkIntToScalar(10); @@ -141,13 +137,9 @@ class TestExtractAlphaGM : public skiagm::GM { SkBitmap fBitmap, fAlpha; protected: - SkString onShortName() override { - return SkString("extractalpha"); - } + SkString getName() const override { return SkString("extractalpha"); } - SkISize onISize() override { - return SkISize::Make(540, 330); - } + SkISize getISize() override { return SkISize::Make(540, 330); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp index c2c8dd5dceb3..0bfc2a20addb 100644 --- a/gm/bitmapimage.cpp +++ b/gm/bitmapimage.cpp @@ -27,14 +27,9 @@ class BitmapImageGM : public GM { BitmapImageGM() {} protected: + SkString getName() const override { return SkString("bitmap-image-srgb-legacy"); } - SkString onShortName() override { - return SkString("bitmap-image-srgb-legacy"); - } - - SkISize onISize() override { - return SkISize::Make(2*kSize, 2*kSize); - } + SkISize getISize() override { return SkISize::Make(2 * kSize, 2 * kSize); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { // Create image. diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp index 240fdb6abdcd..e11690af4f28 100644 --- a/gm/bitmappremul.cpp +++ b/gm/bitmappremul.cpp @@ -95,13 +95,9 @@ class BitmapPremulGM : public GM { } protected: - SkString onShortName() override { - return SkString("bitmap_premul"); - } + SkString getName() const override { return SkString("bitmap_premul"); } - SkISize onISize() override { - return SkISize::Make(SLIDE_SIZE * 2, SLIDE_SIZE * 2); - } + SkISize getISize() override { return SkISize::Make(SLIDE_SIZE * 2, SLIDE_SIZE * 2); } void onDraw(SkCanvas* canvas) override { SkScalar slideSize = SkIntToScalar(SLIDE_SIZE); diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp index e38499d29bd0..63dcabccf99a 100644 --- a/gm/bitmaprect.cpp +++ b/gm/bitmaprect.cpp @@ -49,15 +49,13 @@ class DrawBitmapRect2 : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("bitmaprect_%s", fUseIRect ? "i" : "s"); return str; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { canvas->drawColor(0xFFCCCCCC); @@ -140,15 +138,13 @@ class DrawBitmapRect3 : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("3x3bitmaprect"); return str; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { @@ -204,15 +200,13 @@ class DrawBitmapRect4 : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("bigbitmaprect_%s", fUseIRect ? "i" : "s"); return str; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { if (!fBigImage) { @@ -254,15 +248,13 @@ class BitmapRectRounding : public skiagm::GM { BitmapRectRounding() {} protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("bitmaprect_rounding"); return str; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onOnceBeforeDraw() override { fBM.allocN32Pixels(10, 10); diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp index 7ee6aad8fb4a..773fd3d7efbd 100644 --- a/gm/bitmapshader.cpp +++ b/gm/bitmapshader.cpp @@ -55,13 +55,9 @@ class BitmapShaderGM : public GM { fMask = draw_mask(); } - SkString onShortName() override { - return SkString("bitmapshaders"); - } + SkString getName() const override { return SkString("bitmapshaders"); } - SkISize onISize() override { - return SkISize::Make(150, 100); - } + SkISize getISize() override { return SkISize::Make(150, 100); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/bleed.cpp b/gm/bleed.cpp index 3fa32138d6a7..4fb13ab71d47 100644 --- a/gm/bleed.cpp +++ b/gm/bleed.cpp @@ -121,13 +121,13 @@ class SrcRectConstraintGM : public skiagm::GM { , fConstraint(constraint) , fManual(manual) { // Make sure GPU SkSurfaces can be created for this GM. - SkASSERT(this->onISize().width() <= kMaxTextureSize && - this->onISize().height() <= kMaxTextureSize); + SkASSERT(this->getISize().width() <= kMaxTextureSize && + this->getISize().height() <= kMaxTextureSize); } protected: - SkString onShortName() override { return fShortName; } - SkISize onISize() override { return SkISize::Make(800, 1000); } + SkString getName() const override { return fShortName; } + SkISize getISize() override { return SkISize::Make(800, 1000); } void drawImage(SkCanvas* canvas, sk_sp image, SkRect srcRect, SkRect dstRect, const SkSamplingOptions& sampling, SkPaint* paint) { diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp index f369eb41d92c..08b52e1e89e9 100644 --- a/gm/blurcircles.cpp +++ b/gm/blurcircles.cpp @@ -25,13 +25,9 @@ class BlurCirclesGM : public skiagm::GM { protected: bool runAsBench() const override { return true; } - SkString onShortName() override { - return SkString("blurcircles"); - } + SkString getName() const override { return SkString("blurcircles"); } - SkISize onISize() override { - return SkISize::Make(950, 950); - } + SkISize getISize() override { return SkISize::Make(950, 950); } void onOnceBeforeDraw() override { const float blurRadii[kNumBlurs] = {1.f, 5.f, 10.f, 20.f}; diff --git a/gm/blurcircles2.cpp b/gm/blurcircles2.cpp index 529b320deef5..809314815f77 100644 --- a/gm/blurcircles2.cpp +++ b/gm/blurcircles2.cpp @@ -46,11 +46,9 @@ class BlurCircles2GM : public skiagm::GM { protected: bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString("blurcircles2"); } + SkString getName() const override { return SkString("blurcircles2"); } - SkISize onISize() override { - return SkISize::Make(730, 1350); - } + SkISize getISize() override { return SkISize::Make(730, 1350); } void onDraw(SkCanvas* canvas) override { constexpr SkScalar kMaxR = kMaxRadius + kMaxBlurRadius; diff --git a/gm/blurignorexform.cpp b/gm/blurignorexform.cpp index 58cdd3801362..dbed7b7b9095 100644 --- a/gm/blurignorexform.cpp +++ b/gm/blurignorexform.cpp @@ -38,7 +38,7 @@ class BlurIgnoreXformGM : public skiagm::GM { protected: bool runAsBench() const override { return true; } - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("blur_ignore_xform_%s", DrawType::kCircle == fDrawType ? "circle" @@ -46,9 +46,7 @@ class BlurIgnoreXformGM : public skiagm::GM { return name; } - SkISize onISize() override { - return SkISize::Make(375, 475); - } + SkISize getISize() override { return SkISize::Make(375, 475); } void onOnceBeforeDraw() override { for (int i = 0; i < kNumBlurs; ++i) { diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp index 851a183cb76c..410d02d170cb 100644 --- a/gm/blurquickreject.cpp +++ b/gm/blurquickreject.cpp @@ -30,13 +30,9 @@ class BlurQuickRejectGM : public skiagm::GM { BlurQuickRejectGM() {} protected: - SkString onShortName() override { - return SkString("blurquickreject"); - } + SkString getName() const override { return SkString("blurquickreject"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { constexpr SkScalar kBlurRadius = SkIntToScalar(20); diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp index 089f3fb6b82a..b79d3a4fcf48 100644 --- a/gm/blurrect.cpp +++ b/gm/blurrect.cpp @@ -122,9 +122,9 @@ class BlurRectGM : public skiagm::GM { } } - SkString onShortName() override { return SkString(fName); } + SkString getName() const override { return SkString(fName); } - SkISize onISize() override { return {860, 820}; } + SkISize getISize() override { return {860, 820}; } void onDraw(SkCanvas* canvas) override { canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2); @@ -248,9 +248,9 @@ namespace skiagm { // Compares actual blur rects with reference masks created by the GM. Animates sigma in viewer. class BlurRectCompareGM : public GM { protected: - SkString onShortName() override { return SkString("blurrect_compare"); } + SkString getName() const override { return SkString("blurrect_compare"); } - SkISize onISize() override { return {900, 1220}; } + SkISize getISize() override { return {900, 1220}; } void onOnceBeforeDraw() override { this->prepareReferenceMasks(); } diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp index 2754927c1238..7fe412e8b2f8 100644 --- a/gm/blurredclippedcircle.cpp +++ b/gm/blurredclippedcircle.cpp @@ -30,14 +30,9 @@ class BlurredClippedCircleGM : public GM { } protected: + SkString getName() const override { return SkString("blurredclippedcircle"); } - SkString onShortName() override { - return SkString("blurredclippedcircle"); - } - - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { SkPaint whitePaint; diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp index 5875a9a06178..584714494aaf 100644 --- a/gm/blurroundrect.cpp +++ b/gm/blurroundrect.cpp @@ -54,9 +54,9 @@ static sk_sp MakeRadial() { // Simpler blurred RR test cases where all the radii are the same. class SimpleBlurRoundRectGM : public skiagm::GM { - SkString onShortName() override { return SkString("simpleblurroundrect"); } + SkString getName() const override { return SkString("simpleblurroundrect"); } - SkISize onISize() override { return {1000, 500}; } + SkISize getISize() override { return {1000, 500}; } bool runAsBench() const override { return true; } diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp index aa27d70115c3..0695b26f4691 100644 --- a/gm/bmpfilterqualityrepeat.cpp +++ b/gm/bmpfilterqualityrepeat.cpp @@ -45,9 +45,9 @@ class BmpFilterQualityRepeat : public skiagm::GM { canvas.drawImage(colorBmp.asImage(), 20, 20); } - SkString onShortName() override { return SkString("bmp_filter_quality_repeat"); } + SkString getName() const override { return SkString("bmp_filter_quality_repeat"); } - SkISize onISize() override { return SkISize::Make(1000, 400); } + SkISize getISize() override { return SkISize::Make(1000, 400); } void onDraw(SkCanvas* canvas) override { this->drawAll(canvas, 2.5f); diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp index 697e7b8ebad2..38a16d20ebcf 100644 --- a/gm/circularclips.cpp +++ b/gm/circularclips.cpp @@ -34,13 +34,9 @@ class CircularClipsGM : public skiagm::GM { bool runAsBench() const override { return true; } - SkString onShortName() override { - return SkString("circular-clips"); - } + SkString getName() const override { return SkString("circular-clips"); } - SkISize onISize() override { - return SkISize::Make(800, 200); - } + SkISize getISize() override { return SkISize::Make(800, 200); } void onDraw(SkCanvas* canvas) override { const SkClipOp ops[] = { diff --git a/gm/clip_error.cpp b/gm/clip_error.cpp index f496ca1369eb..1498d0404d27 100644 --- a/gm/clip_error.cpp +++ b/gm/clip_error.cpp @@ -46,9 +46,9 @@ class ClipErrorGM : public skiagm::GM { ClipErrorGM() {} protected: - SkString onShortName() override { return SkString("cliperror"); } + SkString getName() const override { return SkString("cliperror"); } - SkISize onISize() override { return SkISize::Make(WIDTH, HEIGHT); } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp index 5ca3093304ee..6fb8684c6172 100644 --- a/gm/clip_strokerect.cpp +++ b/gm/clip_strokerect.cpp @@ -20,13 +20,9 @@ class ClipStrokeRectGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("clip_strokerect"); - } + SkString getName() const override { return SkString("clip_strokerect"); } - SkISize onISize() override { - return SkISize::Make(200, 400); - } + SkISize getISize() override { return SkISize::Make(200, 400); } void onDraw(SkCanvas* canvas) override { SkPaint p; diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp index 7487ef17a68a..34a952887d7a 100644 --- a/gm/clippedbitmapshaders.cpp +++ b/gm/clippedbitmapshaders.cpp @@ -58,7 +58,7 @@ class ClippedBitmapShadersGM : public skiagm::GM { SkTileMode fMode; bool fHQ; - SkString onShortName() override { + SkString getName() const override { SkString descriptor; switch (fMode) { case SkTileMode::kRepeat: @@ -81,7 +81,7 @@ class ClippedBitmapShadersGM : public skiagm::GM { return descriptor; } - SkISize onISize() override { return {300, 300}; } + SkISize getISize() override { return {300, 300}; } void onDraw(SkCanvas* canvas) override { SkBitmap bmp = create_bitmap(); diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp index e58137351fe4..4db2aceb17ab 100644 --- a/gm/clockwise.cpp +++ b/gm/clockwise.cpp @@ -254,8 +254,8 @@ namespace skiagm { * target origins. We draw clockwise triangles green and counter-clockwise red. */ class ClockwiseGM : public GpuGM { - SkString onShortName() override { return SkString("clockwise"); } - SkISize onISize() override { return {300, 200}; } + SkString getName() const override { return SkString("clockwise"); } + SkISize getISize() override { return {300, 200}; } DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override; }; diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp index 6d6e1a0bf256..281a5e15e3b6 100644 --- a/gm/coloremoji.cpp +++ b/gm/coloremoji.cpp @@ -79,11 +79,9 @@ class ColorEmojiGM : public GM { emojiFont.text = ToolUtils::emoji_sample_text(); } - SkString onShortName() override { - return SkString("coloremoji"); - } + SkString getName() const override { return SkString("coloremoji"); } - SkISize onISize() override { return SkISize::Make(650, 1200); } + SkISize getISize() override { return SkISize::Make(650, 1200); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp index 81013ed15b38..92121633412d 100644 --- a/gm/coloremoji_blendmodes.cpp +++ b/gm/coloremoji_blendmodes.cpp @@ -65,13 +65,9 @@ class ColorEmojiBlendModesGM : public skiagm::GM { kOpaque_SkAlphaType), gData, 4); } - SkString onShortName() override { - return SkString("coloremoji_blendmodes"); - } + SkString getName() const override { return SkString("coloremoji_blendmodes"); } - SkISize onISize() override { - return {400, 640}; - } + SkISize getISize() override { return {400, 640}; } void onDraw(SkCanvas* canvas) override { canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp index 592904264975..00218d2e33ee 100644 --- a/gm/colorfilteralpha8.cpp +++ b/gm/colorfilteralpha8.cpp @@ -21,13 +21,9 @@ class ColorFilterAlpha8 : public skiagm::GM { ColorFilterAlpha8() {} protected: - SkString onShortName() override { - return SkString("colorfilteralpha8"); - } + SkString getName() const override { return SkString("colorfilteralpha8"); } - SkISize onISize() override { - return SkISize::Make(400, 400); - } + SkISize getISize() override { return SkISize::Make(400, 400); } void onDraw(SkCanvas* canvas) override { canvas->clear(SK_ColorRED); diff --git a/gm/colorfilters.cpp b/gm/colorfilters.cpp index 43ad19898717..e7c7519436a6 100644 --- a/gm/colorfilters.cpp +++ b/gm/colorfilters.cpp @@ -48,9 +48,9 @@ static void install_lighting(SkPaint* paint, uint32_t mul, uint32_t add) { } class ColorFiltersGM : public skiagm::GM { - SkString onShortName() override { return SkString("lightingcolorfilter"); } + SkString getName() const override { return SkString("lightingcolorfilter"); } - SkISize onISize() override { return {620, 430}; } + SkISize getISize() override { return {620, 430}; } void onDraw(SkCanvas* canvas) override { SkRect r = {0, 0, 600, 50}; @@ -84,9 +84,9 @@ DEF_GM(return new ColorFiltersGM;) class HSLColorFilterGM : public skiagm::GM { protected: - SkString onShortName() override { return SkString("hslcolorfilter"); } + SkString getName() const override { return SkString("hslcolorfilter"); } - SkISize onISize() override { return { 840, 1100 }; } + SkISize getISize() override { return {840, 1100}; } void onOnceBeforeDraw() override { sk_sp mandrill = GetResourceAsImage("images/mandrill_256.png"); diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp index c49c6be1654f..d3e0951e4f1e 100644 --- a/gm/colormatrix.cpp +++ b/gm/colormatrix.cpp @@ -43,13 +43,9 @@ class ColorMatrixGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("colormatrix"); - } + SkString getName() const override { return SkString("colormatrix"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onOnceBeforeDraw() override { fSolidImg = CreateSolidBitmap(64, 64); diff --git a/gm/colrv1.cpp b/gm/colrv1.cpp index 44e7504f1962..4311d7e88fbe 100644 --- a/gm/colrv1.cpp +++ b/gm/colrv1.cpp @@ -65,7 +65,7 @@ class ColrV1GM : public GM { fVariationSliders = ToolUtils::VariationSliders(fTypeface.get(), fVariationPosition); } - SkString onShortName() override { + SkString getName() const override { SkASSERT(!fTestName.isEmpty()); SkString gm_name = SkStringPrintf("colrv1_%s", fTestName.c_str()); @@ -95,7 +95,7 @@ class ColrV1GM : public GM { return fVariationSliders.readControls(controls); } - SkISize onISize() override { + SkISize getISize() override { // Sweep tests get a slightly wider canvas so that glyphs from one group fit in one row. if (fTestName.equals("sweep_varsweep")) { return SkISize::Make(xWidth + 500, xWidth); @@ -155,7 +155,7 @@ class ColrV1GM : public GM { paint); SkScalar glyphAdvance = font.measureText( &fCodepoints[i], sizeof(uint32_t), SkTextEncoding::kUTF32, nullptr); - if (x + glyphAdvance < onISize().width() - xTranslate) { + if (x + glyphAdvance < getISize().width() - xTranslate) { x += glyphAdvance + glyphAdvance * 0.05f; } else { y += y_shift; diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp index 5668119faae6..95da25978938 100644 --- a/gm/complexclip.cpp +++ b/gm/complexclip.cpp @@ -43,7 +43,7 @@ class ComplexClipGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("complexclip_%s%s%s", fDoAAClip ? "aa" : "bw", @@ -52,7 +52,7 @@ class ComplexClipGM : public GM { return str; } - SkISize onISize() override { return SkISize::Make(388, 780); } + SkISize getISize() override { return SkISize::Make(388, 780); } void onDraw(SkCanvas* canvas) override { SkPath path = SkPathBuilder() diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp index 14d8c7de6e8f..2bc4145dca47 100644 --- a/gm/complexclip2.cpp +++ b/gm/complexclip2.cpp @@ -122,7 +122,7 @@ class ComplexClip2GM : public GM { return ""; } - SkString onShortName() override { + SkString getName() const override { if (kRect_Clip == fClip && !fAntiAlias) { return SkString("complexclip2"); } @@ -134,7 +134,7 @@ class ComplexClip2GM : public GM { return str; } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(SkScalarRoundToInt(fTotalWidth), SkScalarRoundToInt(fTotalHeight)); } diff --git a/gm/complexclip3.cpp b/gm/complexclip3.cpp index fd59c7448766..cdbef393a611 100644 --- a/gm/complexclip3.cpp +++ b/gm/complexclip3.cpp @@ -34,14 +34,13 @@ class ComplexClip3GM : public GM { } protected: - - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("complexclip3_%s", fDoSimpleClipFirst ? "simple" : "complex"); return str; } - SkISize onISize() override { return SkISize::Make(400, 950); } + SkISize getISize() override { return SkISize::Make(400, 950); } void onDraw(SkCanvas* canvas) override { SkPath clipSimple = SkPath::Circle(70, 50, 20); diff --git a/gm/complexclip4.cpp b/gm/complexclip4.cpp index 041696384824..162fac3ac3ad 100644 --- a/gm/complexclip4.cpp +++ b/gm/complexclip4.cpp @@ -28,14 +28,14 @@ class ComplexClip4GM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("complexclip4_%s", fDoAAClip ? "aa" : "bw"); return str; } - SkISize onISize() override { return SkISize::Make(970, 780); } + SkISize getISize() override { return SkISize::Make(970, 780); } // Android Framework will still support the legacy kReplace SkClipOp on older devices, so // this represents how to do so while also respecting the device restriction using the newer diff --git a/gm/complexclip_blur_tiled.cpp b/gm/complexclip_blur_tiled.cpp index 8e710cda0950..0c3532b15129 100644 --- a/gm/complexclip_blur_tiled.cpp +++ b/gm/complexclip_blur_tiled.cpp @@ -31,13 +31,9 @@ class ComplexClipBlurTiledGM : public GM { } protected: - SkString onShortName() override { - return SkString("complexclip_blur_tiled"); - } + SkString getName() const override { return SkString("complexclip_blur_tiled"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onDraw(SkCanvas* canvas) override { SkPaint blurPaint; diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp index 1a22137ac3c5..a17cde20d229 100644 --- a/gm/composeshader.cpp +++ b/gm/composeshader.cpp @@ -56,13 +56,9 @@ class ComposeShaderGM : public skiagm::GM { fShader = make_shader(SkBlendMode::kDstIn); } - SkString onShortName() override { - return SkString("composeshader"); - } + SkString getName() const override { return SkString("composeshader"); } - SkISize onISize() override { - return SkISize::Make(120, 120); - } + SkISize getISize() override { return SkISize::Make(120, 120); } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -85,13 +81,9 @@ class ComposeShaderAlphaGM : public skiagm::GM { ComposeShaderAlphaGM() {} protected: - SkString onShortName() override { - return SkString("composeshader_alpha"); - } + SkString getName() const override { return SkString("composeshader_alpha"); } - SkISize onISize() override { - return SkISize::Make(750, 220); - } + SkISize getISize() override { return SkISize::Make(750, 220); } void onDraw(SkCanvas* canvas) override { sk_sp shaders[] = { @@ -170,11 +162,11 @@ class ComposeShaderBitmapGM : public skiagm::GM { ComposeShaderBitmapGM(bool use_lm) : fUseLocalMatrix(use_lm) {} protected: - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("composeshader_bitmap%s", fUseLocalMatrix ? "_lm" : ""); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(7 * (squareLength + 5), 2 * (squareLength + 5)); } diff --git a/gm/compositor_quads.cpp b/gm/compositor_quads.cpp index 28e498e4519a..88f858b5182b 100644 --- a/gm/compositor_quads.cpp +++ b/gm/compositor_quads.cpp @@ -424,7 +424,7 @@ class CompositorGM : public skiagm::GM { , fName(name) {} protected: - SkISize onISize() override { + SkISize getISize() override { // Initialize the array of renderers. this->onceBeforeDraw(); @@ -439,7 +439,7 @@ class CompositorGM : public skiagm::GM { SkScalarRoundToInt(kCellHeight * fRenderers.size() + 75.f)); } - SkString onShortName() override { + SkString getName() const override { SkString fullName; fullName.appendf("compositor_quads_%s", fName.c_str()); return fullName; diff --git a/gm/compressed_textures.cpp b/gm/compressed_textures.cpp index 771f5888a711..97657e0e7e19 100644 --- a/gm/compressed_textures.cpp +++ b/gm/compressed_textures.cpp @@ -201,7 +201,7 @@ class CompressedTexturesGM : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("compressed_textures"); if (fType == Type::kNonPowerOfTwo) { @@ -213,7 +213,7 @@ class CompressedTexturesGM : public skiagm::GM { return name; } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(2*kCellWidth + 3*kPad, 2*kBaseTexHeight + 3*kPad); } diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp index 0a1ec8bdfc23..7aeccb78d167 100644 --- a/gm/conicpaths.cpp +++ b/gm/conicpaths.cpp @@ -23,14 +23,9 @@ using namespace skia_private; class ConicPathsGM : public skiagm::GM { protected: + SkString getName() const override { return SkString("conicpaths"); } - SkString onShortName() override { - return SkString("conicpaths"); - } - - SkISize onISize() override { - return SkISize::Make(920, 960); - } + SkISize getISize() override { return SkISize::Make(920, 960); } template void append_path(Proc proc) { SkPathBuilder b; diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp index eb7c59aa7aef..d95d11a2d9c2 100644 --- a/gm/constcolorprocessor.cpp +++ b/gm/constcolorprocessor.cpp @@ -58,7 +58,7 @@ class ColorProcessor : public GpuGM { } protected: - SkString onShortName() override { + SkString getName() const override { switch (fMode) { case TestMode::kConstColor: return SkString("const_color_processor"); case TestMode::kModulateRGBA: return SkString("modulate_rgba"); @@ -66,9 +66,7 @@ class ColorProcessor : public GpuGM { SkUNREACHABLE; } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onOnceBeforeDraw() override { SkColor colors[] = { 0xFFFF0000, 0x2000FF00, 0xFF0000FF}; diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp index cafa77f3781e..129af9b9947a 100644 --- a/gm/convex_all_line_paths.cpp +++ b/gm/convex_all_line_paths.cpp @@ -174,13 +174,13 @@ class ConvexLineOnlyPathsGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { if (fDoStrokeAndFill) { return SkString("convex-lineonly-paths-stroke-and-fill"); } return SkString("convex-lineonly-paths"); } - SkISize onISize() override { return SkISize::Make(kGMWidth, kGMHeight); } + SkISize getISize() override { return SkISize::Make(kGMWidth, kGMHeight); } bool runAsBench() const override { return true; } static SkPath GetPath(int index, SkPathDirection dir) { diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp index 3b44d7ceb34d..cca7fdc6f873 100644 --- a/gm/convexpaths.cpp +++ b/gm/convexpaths.cpp @@ -47,10 +47,9 @@ class ConvexPathsGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(0xFF000000); } - SkString onShortName() override { return SkString("convexpaths"); } + SkString getName() const override { return SkString("convexpaths"); } - - SkISize onISize() override { return {1200, 1100}; } + SkISize getISize() override { return {1200, 1100}; } void makePaths() { if (fOnce.alreadyDone()) { diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp index 6bb3a52fdd03..a8df49dd25a6 100644 --- a/gm/convexpolyclip.cpp +++ b/gm/convexpolyclip.cpp @@ -97,11 +97,9 @@ class ConvexPolyClip : public GM { } protected: - SkString onShortName() override { - return SkString("convex_poly_clip"); - } + SkString getName() const override { return SkString("convex_poly_clip"); } - SkISize onISize() override { + SkISize getISize() override { // When benchmarking the saveLayer set of draws is skipped. int w = 435; if (kBench_Mode != this->getMode()) { diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp index 8d6d4c214b5e..4fbf3c64698f 100644 --- a/gm/convexpolyeffect.cpp +++ b/gm/convexpolyeffect.cpp @@ -45,11 +45,9 @@ class ConvexPolyEffect : public GpuGM { } protected: - SkString onShortName() override { - return SkString("convex_poly_effect"); - } + SkString getName() const override { return SkString("convex_poly_effect"); } - SkISize onISize() override { return SkISize::Make(720, 550); } + SkISize getISize() override { return SkISize::Make(720, 550); } void onOnceBeforeDraw() override { SkPath tri; diff --git a/gm/copy_to_4444.cpp b/gm/copy_to_4444.cpp index aaa7349eed03..edeaca721fcf 100644 --- a/gm/copy_to_4444.cpp +++ b/gm/copy_to_4444.cpp @@ -23,9 +23,9 @@ namespace { * Test copying an image from 8888 to 4444. */ class CopyTo4444GM : public skiagm::GM { - SkString onShortName() override { return SkString("copyTo4444"); } + SkString getName() const override { return SkString("copyTo4444"); } - SkISize onISize() override { return {360, 180}; } + SkISize getISize() override { return {360, 180}; } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { SkBitmap bm, bm4444; diff --git a/gm/crbug_1156804.cpp b/gm/crbug_1156804.cpp index 54b10ce6f6b5..d4bec89a4911 100644 --- a/gm/crbug_1156804.cpp +++ b/gm/crbug_1156804.cpp @@ -10,17 +10,24 @@ #include "include/core/SkPaint.h" #include "include/core/SkRect.h" #include "include/effects/SkImageFilters.h" +#include "src/effects/imagefilters/SkCropImageFilter.h" static void drawOne(SkCanvas* canvas, SkRect rect, float saveBorder, float sigma, SkColor c) { - SkPaint sp; - sp.setImageFilter(SkImageFilters::Blur(sigma, sigma, SkTileMode::kClamp, nullptr)); + SkRect borderRect = rect.makeOutset(saveBorder, saveBorder); + SkPaint p; p.setColor(c); + p.setImageFilter( + SkImageFilters::Blur(sigma, sigma, + // The blur's input is forced to have transparent padding because 'borderRect' is outset + // from the non-transparent content ('rect') that's drawn into the layer. + SkMakeCropImageFilter(borderRect, SkTileMode::kClamp, nullptr), + // The blur's output crop visually won't affect the output because the transparent + // padding is blurred out by the edge of 3*sigma. + borderRect.makeOutset(3 * sigma, 3 * sigma))); p.setAntiAlias(true); - canvas->saveLayer(rect.makeOutset(saveBorder, saveBorder), &sp); canvas->drawRect(rect, p); - canvas->restore(); } DEF_SIMPLE_GM(crbug_1156804, canvas, 250, 250) { diff --git a/gm/crbug_1313579.cpp b/gm/crbug_1313579.cpp index 05a50ce413a5..888de40dc97f 100644 --- a/gm/crbug_1313579.cpp +++ b/gm/crbug_1313579.cpp @@ -20,11 +20,8 @@ DEF_SIMPLE_GM(crbug_1313579, canvas, 110, 110) { static constexpr auto kBGRect = SkIRect{0, 0, 100, 100}; - sk_sp backdrop_filter = - SkImageFilters::Blur(50.f, 50.f, SkTileMode::kClamp, nullptr); - sk_sp crop = SkImageFilters::Offset(0, 0, nullptr, &kBGRect); - backdrop_filter = SkImageFilters::Compose( - crop, SkImageFilters::Compose(std::move(backdrop_filter), crop)); + sk_sp backdrop_filter = + SkImageFilters::Blur(50.f, 50.f, SkTileMode::kClamp, nullptr, kBGRect); SkMatrix m; diff --git a/gm/crbug_224618.cpp b/gm/crbug_224618.cpp index 0824c0e7d3e2..bd42db8cf81e 100644 --- a/gm/crbug_224618.cpp +++ b/gm/crbug_224618.cpp @@ -20,13 +20,9 @@ class CrBug224618GM : public skiagm::GM { CrBug224618GM() : fTime(0.f) {} protected: - SkString onShortName() override { - return SkString("crbug_224618"); - } + SkString getName() const override { return SkString("crbug_224618"); } - SkISize onISize() override { - return SkISize::Make(kMaxVW, kMaxVW); - } + SkISize getISize() override { return SkISize::Make(kMaxVW, kMaxVW); } // This animates the FOV in viewer, to ensure the panorama covering rects are stable across // a variety of perspective matrices diff --git a/gm/crop_imagefilter.cpp b/gm/crop_imagefilter.cpp index ea261e5854da..327d4730d774 100644 --- a/gm/crop_imagefilter.cpp +++ b/gm/crop_imagefilter.cpp @@ -344,11 +344,11 @@ class CropImageFilterGM : public GM { , fOutputMode(outputMode) {} protected: - SkISize onISize() override { + SkISize getISize() override { return {SkScalarRoundToInt(4.f * (kExampleBounds.fRight + 1.f) - 1.f), SkScalarRoundToInt(5.f * (kExampleBounds.fBottom + 1.f) - 1.f)}; } - SkString onShortName() override { + SkString getName() const override { SkString name("crop_imagefilter_"); switch(fInputMode) { case SkTileMode::kDecal: name.append("decal"); break; diff --git a/gm/croppedrects.cpp b/gm/croppedrects.cpp index f8cf184921e9..572e086155da 100644 --- a/gm/croppedrects.cpp +++ b/gm/croppedrects.cpp @@ -55,8 +55,8 @@ static sk_sp create_image(SkCanvas* destCanvas) { */ class CroppedRectsGM : public GM { private: - SkString onShortName() final { return SkString("croppedrects"); } - SkISize onISize() override { return SkISize::Make(500, 500); } + SkString getName() const override { return SkString("croppedrects"); } + SkISize getISize() override { return SkISize::Make(500, 500); } void onDraw(SkCanvas* canvas) override { if (!fSrcImage) { diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp index ad3f2528cdb3..2de047182a69 100644 --- a/gm/cubicpaths.cpp +++ b/gm/cubicpaths.cpp @@ -26,9 +26,9 @@ // https://bug.skia.org/1316 shows that this cubic, when slightly clipped, creates big // (incorrect) changes to its control points. class ClippedCubicGM : public skiagm::GM { - SkString onShortName() override { return SkString("clippedcubic"); } + SkString getName() const override { return SkString("clippedcubic"); } - SkISize onISize() override { return {1240, 390}; } + SkISize getISize() override { return {1240, 390}; } void onDraw(SkCanvas* canvas) override { SkPath path; @@ -57,9 +57,9 @@ class ClippedCubicGM : public skiagm::GM { class ClippedCubic2GM : public skiagm::GM { - SkString onShortName() override { return SkString("clippedcubic2"); } + SkString getName() const override { return SkString("clippedcubic2"); } - SkISize onISize() override { return {1240, 390}; } + SkISize getISize() override { return {1240, 390}; } void onDraw(SkCanvas* canvas) override { canvas->save(); @@ -119,9 +119,9 @@ class ClippedCubic2GM : public skiagm::GM { }; class CubicPathGM : public skiagm::GM { - SkString onShortName() override { return SkString("cubicpath"); } + SkString getName() const override { return SkString("cubicpath"); } - SkISize onISize() override { return {1240, 390}; } + SkISize getISize() override { return {1240, 390}; } void drawPath(SkPath& path,SkCanvas* canvas,SkColor color, const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join, @@ -238,9 +238,9 @@ class CubicPathGM : public skiagm::GM { }; class CubicClosePathGM : public skiagm::GM { - SkString onShortName() override { return SkString("cubicclosepath"); } + SkString getName() const override { return SkString("cubicclosepath"); } - SkISize onISize() override { return {1240, 390}; } + SkISize getISize() override { return {1240, 390}; } void drawPath(SkPath& path,SkCanvas* canvas,SkColor color, const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join, @@ -359,9 +359,9 @@ class CubicClosePathGM : public skiagm::GM { }; class CubicPathShaderGM : public skiagm::GM { - SkString onShortName() override { return SkString("cubicpath_shader"); } + SkString getName() const override { return SkString("cubicpath_shader"); } - SkISize onISize() override { return {1240, 390}; } + SkISize getISize() override { return {1240, 390}; } void drawPath(SkPath& path,SkCanvas* canvas, const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join, diff --git a/gm/dashcircle.cpp b/gm/dashcircle.cpp index fd514018b9f2..097fc2b0ae50 100644 --- a/gm/dashcircle.cpp +++ b/gm/dashcircle.cpp @@ -42,9 +42,9 @@ class DashCircleGM : public skiagm::GM { DashCircleGM() : fRotation(0) { } protected: - SkString onShortName() override { return SkString("dashcircle"); } + SkString getName() const override { return SkString("dashcircle"); } - SkISize onISize() override { return SkISize::Make(900, 1200); } + SkISize getISize() override { return SkISize::Make(900, 1200); } void onDraw(SkCanvas* canvas) override { SkPaint refPaint; @@ -124,9 +124,9 @@ class DashCircle2GM : public skiagm::GM { DashCircle2GM() {} protected: - SkString onShortName() override { return SkString("dashcircle2"); } + SkString getName() const override { return SkString("dashcircle2"); } - SkISize onISize() override { return SkISize::Make(635, 900); } + SkISize getISize() override { return SkISize::Make(635, 900); } void onDraw(SkCanvas* canvas) override { // These intervals are defined relative to tau. diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp index 91d7c179bcc3..e20aaa17c39c 100644 --- a/gm/dashcubics.cpp +++ b/gm/dashcubics.cpp @@ -104,11 +104,9 @@ class TrimGM : public skiagm::GM { } protected: - SkString onShortName() override { return SkString("trimpatheffect"); } + SkString getName() const override { return SkString("trimpatheffect"); } - SkISize onISize() override { - return SkISize::Make(1400, 1000); - } + SkISize getISize() override { return SkISize::Make(1400, 1000); } void onDraw(SkCanvas* canvas) override { static constexpr SkSize kCellSize = { 440, 150 }; diff --git a/gm/dashing.cpp b/gm/dashing.cpp index d63f6ac3dd39..28fa0d8a39e4 100644 --- a/gm/dashing.cpp +++ b/gm/dashing.cpp @@ -61,9 +61,9 @@ static void show_zero_len_dash(SkCanvas* canvas) { } class DashingGM : public skiagm::GM { - SkString onShortName() override { return SkString("dashing"); } + SkString getName() const override { return SkString("dashing"); } - SkISize onISize() override { return {640, 340}; } + SkISize getISize() override { return {640, 340}; } void onDraw(SkCanvas* canvas) override { struct Intervals { @@ -139,9 +139,9 @@ static SkPath make_path_star(const SkRect& bounds) { } class Dashing2GM : public skiagm::GM { - SkString onShortName() override { return SkString("dashing2"); } + SkString getName() const override { return SkString("dashing2"); } - SkISize onISize() override { return {640, 480}; } + SkISize getISize() override { return {640, 480}; } void onDraw(SkCanvas* canvas) override { constexpr int gIntervals[] = { @@ -189,9 +189,9 @@ class Dashing2GM : public skiagm::GM { // Test out the on/off line dashing Chrome if fond of class Dashing3GM : public skiagm::GM { - SkString onShortName() override { return SkString("dashing3"); } + SkString getName() const override { return SkString("dashing3"); } - SkISize onISize() override { return {640, 480}; } + SkISize getISize() override { return {640, 480}; } // Draw a 100x100 block of dashed lines. The horizontal ones are BW // while the vertical ones are AA. @@ -312,9 +312,9 @@ class Dashing3GM : public skiagm::GM { ////////////////////////////////////////////////////////////////////////////// class Dashing4GM : public skiagm::GM { - SkString onShortName() override { return SkString("dashing4"); } + SkString getName() const override { return SkString("dashing4"); } - SkISize onISize() override { return {640, 1100}; } + SkISize getISize() override { return {640, 1100}; } void onDraw(SkCanvas* canvas) override { struct Intervals { @@ -410,9 +410,9 @@ class Dashing5GM : public skiagm::GM { private: bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString(fDoAA ? "dashing5_aa" : "dashing5_bw"); } + SkString getName() const override { return SkString(fDoAA ? "dashing5_aa" : "dashing5_bw"); } - SkISize onISize() override { return {400, 200}; } + SkISize getISize() override { return {400, 200}; } void onDraw(SkCanvas* canvas) override { constexpr int kOn = 4; diff --git a/gm/degeneratesegments.cpp b/gm/degeneratesegments.cpp index 31dba34307cf..3a14ea100b30 100644 --- a/gm/degeneratesegments.cpp +++ b/gm/degeneratesegments.cpp @@ -30,9 +30,9 @@ class DegenerateSegmentsGM : public GM { const char* fName2; }; - SkString onShortName() override { return SkString("degeneratesegments"); } + SkString getName() const override { return SkString("degeneratesegments"); } - SkISize onISize() override { return {896, 930}; } + SkISize getISize() override { return {896, 930}; } typedef SkPoint (*AddSegmentFunc)(SkPathBuilder&, SkPoint&); diff --git a/gm/dftext.cpp b/gm/dftext.cpp index 9dc4f8ac7604..05fa447e6992 100644 --- a/gm/dftext.cpp +++ b/gm/dftext.cpp @@ -48,13 +48,9 @@ class DFTextGM : public skiagm::GM { fEmojiText = ToolUtils::emoji_sample_text(); } - SkString onShortName() override { - return SkString("dftext"); - } + SkString getName() const override { return SkString("dftext"); } - SkISize onISize() override { - return SkISize::Make(1024, 768); - } + SkISize getISize() override { return SkISize::Make(1024, 768); } void onDraw(SkCanvas* inputCanvas) override { SkScalar textSizes[] = { 9.0f, 9.0f*2.0f, 9.0f*5.0f, 9.0f*2.0f*5.0f }; @@ -62,7 +58,7 @@ class DFTextGM : public skiagm::GM { // set up offscreen rendering with distance field text auto ctx = inputCanvas->recordingContext(); - SkISize size = onISize(); + SkISize size = getISize(); SkImageInfo info = SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType, inputCanvas->imageInfo().refColorSpace()); SkSurfaceProps inputProps; diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp index ea4aba0c6fe6..e03795b5881e 100644 --- a/gm/dftext_blob_persp.cpp +++ b/gm/dftext_blob_persp.cpp @@ -41,11 +41,9 @@ class DFTextBlobPerspGM : public skiagm::GM { DFTextBlobPerspGM() { this->setBGColor(0xFFFFFFFF); } protected: - SkString onShortName() override { - return SkString("dftext_blob_persp"); - } + SkString getName() const override { return SkString("dftext_blob_persp"); } - SkISize onISize() override { return SkISize::Make(900, 350); } + SkISize getISize() override { return SkISize::Make(900, 350); } void onOnceBeforeDraw() override { for (int i = 0; i < 3; ++i) { @@ -64,7 +62,7 @@ class DFTextBlobPerspGM : public skiagm::GM { void onDraw(SkCanvas* inputCanvas) override { // set up offscreen rendering with distance field text auto ctx = inputCanvas->recordingContext(); - SkISize size = this->onISize(); + SkISize size = this->getISize(); if (!inputCanvas->getBaseLayerSize().isEmpty()) { size = inputCanvas->getBaseLayerSize(); } diff --git a/gm/discard.cpp b/gm/discard.cpp index 3224cc883a0a..2faf36d34846 100644 --- a/gm/discard.cpp +++ b/gm/discard.cpp @@ -38,13 +38,9 @@ class DiscardGM : public GM { DiscardGM() {} protected: - SkString onShortName() override { - return SkString("discard"); - } + SkString getName() const override { return SkString("discard"); } - SkISize onISize() override { - return SkISize::Make(100, 100); - } + SkISize getISize() override { return SkISize::Make(100, 100); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { diff --git a/gm/displacement.cpp b/gm/displacement.cpp index e96d5ea33a8e..485c976ecc38 100644 --- a/gm/displacement.cpp +++ b/gm/displacement.cpp @@ -31,9 +31,7 @@ class DisplacementMapGM : public GM { } protected: - SkString onShortName() override { - return SkString("displacement"); - } + SkString getName() const override { return SkString("displacement"); } void onOnceBeforeDraw() override { fImage = ToolUtils::create_string_image(80, 80, 0xFF884422, 15, 55, 96, "g"); @@ -48,9 +46,7 @@ class DisplacementMapGM : public GM { fLargeH = ToolUtils::create_checkerboard_image(64, 96, c1, c2, 8); } - SkISize onISize() override { - return SkISize::Make(600, 500); - } + SkISize getISize() override { return SkISize::Make(600, 500); } void drawClippedBitmap(SkCanvas* canvas, int x, int y, const SkPaint& paint) const { canvas->save(); diff --git a/gm/distantclip.cpp b/gm/distantclip.cpp index a21567ee69d6..9119bbbcfb79 100644 --- a/gm/distantclip.cpp +++ b/gm/distantclip.cpp @@ -21,9 +21,9 @@ namespace skiagm { class DistantClipGM : public GM { - SkString onShortName() override { return SkString("distantclip"); } + SkString getName() const override { return SkString("distantclip"); } - SkISize onISize() override { return {100, 100}; } + SkISize getISize() override { return {100, 100}; } void onDraw(SkCanvas* canvas) override { constexpr SkScalar kOffset = 35000.0f; diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp index 76fc85257185..dccb6a8caecc 100644 --- a/gm/drawatlas.cpp +++ b/gm/drawatlas.cpp @@ -69,14 +69,9 @@ class DrawAtlasGM : public skiagm::GM { DrawAtlasGM() {} protected: + SkString getName() const override { return SkString("draw-atlas"); } - SkString onShortName() override { - return SkString("draw-atlas"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { const SkRect target = { 50, 50, 80, 90 }; diff --git a/gm/drawatlascolor.cpp b/gm/drawatlascolor.cpp index 6775529c29b8..d2eae16679b7 100644 --- a/gm/drawatlascolor.cpp +++ b/gm/drawatlascolor.cpp @@ -71,11 +71,9 @@ class DrawAtlasColorsGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("draw-atlas-colors"); - } + SkString getName() const override { return SkString("draw-atlas-colors"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kNumXferModes * (kAtlasSize + kPad) + kPad, 2 * kNumColors * (kAtlasSize + kPad) + kTextPad + kPad); } diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp index 0d211049dac1..51d4628a5c4d 100644 --- a/gm/drawbitmaprect.cpp +++ b/gm/drawbitmaprect.cpp @@ -178,9 +178,9 @@ class DrawBitmapRectGM : public skiagm::GM { SkString fName; protected: - SkString onShortName() override { return fName; } + SkString getName() const override { return fName; } - SkISize onISize() override { return SkISize::Make(gSize, gSize); } + SkISize getISize() override { return SkISize::Make(gSize, gSize); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { if (!fImage || !fImage->isValid(canvas->recordingContext())) { diff --git a/gm/drawglyphs.cpp b/gm/drawglyphs.cpp index 1bd962775fc4..60af0c35ff20 100644 --- a/gm/drawglyphs.cpp +++ b/gm/drawglyphs.cpp @@ -47,13 +47,9 @@ class DrawGlyphsGM : public skiagm::GM { } } - SkString onShortName() override { - return SkString("drawglyphs"); - } + SkString getName() const override { return SkString("drawglyphs"); } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { canvas->drawGlyphs(fGlyphCount, fGlyphs.begin(), fPositions.begin(), {50, 100}, fFont, diff --git a/gm/drawimageset.cpp b/gm/drawimageset.cpp index c45dbf49804c..bb9fe50eaa53 100644 --- a/gm/drawimageset.cpp +++ b/gm/drawimageset.cpp @@ -106,8 +106,8 @@ namespace skiagm { class DrawImageSetGM : public GM { private: - SkString onShortName() override { return SkString("draw_image_set"); } - SkISize onISize() override { return {1000, 725}; } + SkString getName() const override { return SkString("draw_image_set"); } + SkISize getISize() override { return {1000, 725}; } void onOnceBeforeDraw() override { static constexpr SkColor kColors[] = {SK_ColorCYAN, SK_ColorBLACK, SK_ColorMAGENTA, SK_ColorBLACK}; @@ -209,8 +209,8 @@ class DrawImageSetGM : public GM { // incorrectly disabled. class DrawImageSetRectToRectGM : public GM { private: - SkString onShortName() override { return SkString("draw_image_set_rect_to_rect"); } - SkISize onISize() override { return {1250, 850}; } + SkString getName() const override { return SkString("draw_image_set_rect_to_rect"); } + SkISize getISize() override { return {1250, 850}; } void onOnceBeforeDraw() override { static constexpr SkColor kColors[] = {SK_ColorBLUE, SK_ColorWHITE, SK_ColorRED, SK_ColorWHITE}; @@ -294,8 +294,8 @@ class DrawImageSetRectToRectGM : public GM { // This GM exercises alpha-only and color textures being combined correctly with the paint's color. class DrawImageSetAlphaOnlyGM : public GM { private: - SkString onShortName() override { return SkString("draw_image_set_alpha_only"); } - SkISize onISize() override { return {kM*kTileW, 2*kN*kTileH}; } + SkString getName() const override { return SkString("draw_image_set_alpha_only"); } + SkISize getISize() override { return {kM * kTileW, 2 * kN * kTileH}; } DrawResult onGpuSetup(SkCanvas* canvas, SkString*) override { auto direct = GrAsDirectContext(canvas->recordingContext()); diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp index 9f9c084f7654..4db4b2dea2af 100644 --- a/gm/drawminibitmaprect.cpp +++ b/gm/drawminibitmaprect.cpp @@ -85,9 +85,9 @@ class DrawMiniBitmapRectGM : public skiagm::GM { } protected: - SkString onShortName() override { return fName; } + SkString getName() const override { return fName; } - SkISize onISize() override { return SkISize::Make(gSize, gSize); } + SkISize getISize() override { return SkISize::Make(gSize, gSize); } void onDraw(SkCanvas* canvas) override { if (nullptr == fImage) { diff --git a/gm/drawquadset.cpp b/gm/drawquadset.cpp index 55ac7f638ff0..37223b7e3f6c 100644 --- a/gm/drawquadset.cpp +++ b/gm/drawquadset.cpp @@ -179,8 +179,8 @@ namespace skiagm { class DrawQuadSetGM : public GM { private: - SkString onShortName() override { return SkString("draw_quad_set"); } - SkISize onISize() override { return SkISize::Make(800, 800); } + SkString getName() const override { return SkString("draw_quad_set"); } + SkISize getISize() override { return SkISize::Make(800, 800); } void onDraw(SkCanvas* canvas) override { SkMatrix rowMatrices[5]; diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp index 44a3c28cc687..e02ccf7686d4 100644 --- a/gm/drawregion.cpp +++ b/gm/drawregion.cpp @@ -21,13 +21,9 @@ class DrawRegionGM : public skiagm::GM { DrawRegionGM() {} protected: - SkString onShortName() override { - return SkString("drawregion"); - } + SkString getName() const override { return SkString("drawregion"); } - SkISize onISize() override { - return SkISize::Make(500, 500); - } + SkISize getISize() override { return SkISize::Make(500, 500); } bool runAsBench() const override { return true; diff --git a/gm/drawregionmodes.cpp b/gm/drawregionmodes.cpp index d476324e140c..0c8c46639e05 100644 --- a/gm/drawregionmodes.cpp +++ b/gm/drawregionmodes.cpp @@ -28,13 +28,9 @@ class DrawRegionModesGM : public skiagm::GM { DrawRegionModesGM() {} protected: - SkString onShortName() override { - return SkString("drawregionmodes"); - } + SkString getName() const override { return SkString("drawregionmodes"); } - SkISize onISize() override { - return SkISize::Make(375, 500); - } + SkISize getISize() override { return SkISize::Make(375, 500); } void onOnceBeforeDraw() override { fRegion.op({50, 50, 100, 100}, SkRegion::kUnion_Op); diff --git a/gm/drrect.cpp b/gm/drrect.cpp index f71687084ac7..5d3b92358533 100644 --- a/gm/drrect.cpp +++ b/gm/drrect.cpp @@ -21,14 +21,9 @@ class DRRectGM : public skiagm::GM { DRRectGM() {} protected: + SkString getName() const override { return SkString("drrect"); } - SkString onShortName() override { - return SkString("drrect"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/dstreadshuffle.cpp b/gm/dstreadshuffle.cpp index a27afca98d0e..7483ee74b698 100644 --- a/gm/dstreadshuffle.cpp +++ b/gm/dstreadshuffle.cpp @@ -47,13 +47,9 @@ class DstReadShuffle : public GM { kNumShapeTypes }; - SkString onShortName() override { - return SkString("dstreadshuffle"); - } + SkString getName() const override { return SkString("dstreadshuffle"); } - SkISize onISize() override { - return SkISize::Make(530, 680); - } + SkISize getISize() override { return SkISize::Make(530, 680); } void drawShape(SkCanvas* canvas, SkPaint* paint, ShapeType type) { const SkRect kRect = SkRect::MakeXYWH(0, 0, 75.f, 85.f); diff --git a/gm/emboss.cpp b/gm/emboss.cpp index d5fa01b63670..d619ab7d5ffa 100644 --- a/gm/emboss.cpp +++ b/gm/emboss.cpp @@ -38,13 +38,9 @@ class EmbossGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("emboss"); - } + SkString getName() const override { return SkString("emboss"); } - SkISize onISize() override { - return SkISize::Make(600, 120); - } + SkISize getISize() override { return SkISize::Make(600, 120); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/emptypath.cpp b/gm/emptypath.cpp index 32b1816718cf..9378e72e059c 100644 --- a/gm/emptypath.cpp +++ b/gm/emptypath.cpp @@ -24,9 +24,9 @@ namespace skiagm { class EmptyPathGM : public GM { - SkString onShortName() override { return SkString("emptypath"); } + SkString getName() const override { return SkString("emptypath"); } - SkISize onISize() override { return {600, 280}; } + SkISize getISize() override { return {600, 280}; } void drawEmpty(SkCanvas* canvas, SkColor color, @@ -157,9 +157,9 @@ static SkPath make_path_move_mix() { } class EmptyStrokeGM : public GM { - SkString onShortName() override { return SkString("emptystroke"); } + SkString getName() const override { return SkString("emptystroke"); } - SkISize onISize() override { return {200, 240}; } + SkISize getISize() override { return {200, 240}; } void onDraw(SkCanvas* canvas) override { static constexpr SkPath (*kProcs[])() = { diff --git a/gm/encode.cpp b/gm/encode.cpp index 78e979b598ab..fbe0bd56618b 100644 --- a/gm/encode.cpp +++ b/gm/encode.cpp @@ -28,13 +28,9 @@ class EncodeGM : public GM { EncodeGM() {} protected: - SkString onShortName() override { - return SkString("encode"); - } + SkString getName() const override { return SkString("encode"); } - SkISize onISize() override { - return SkISize::Make(1024, 600); - } + SkISize getISize() override { return SkISize::Make(1024, 600); } void onDraw(SkCanvas* canvas) override { SkBitmap orig; diff --git a/gm/encode_alpha_jpeg.cpp b/gm/encode_alpha_jpeg.cpp index 56a5334716cd..b971ece35c1a 100644 --- a/gm/encode_alpha_jpeg.cpp +++ b/gm/encode_alpha_jpeg.cpp @@ -45,13 +45,9 @@ class EncodeJpegAlphaOptsGM : public GM { EncodeJpegAlphaOptsGM() {} protected: - SkString onShortName() override { - return SkString("encode-alpha-jpeg"); - } + SkString getName() const override { return SkString("encode-alpha-jpeg"); } - SkISize onISize() override { - return SkISize::Make(400, 200); - } + SkISize getISize() override { return SkISize::Make(400, 200); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { sk_sp srcImg = GetResourceAsImage("images/rainbow-gradient.png"); diff --git a/gm/encode_color_types.cpp b/gm/encode_color_types.cpp index 4a1d5aee3517..b8624d6b50e7 100644 --- a/gm/encode_color_types.cpp +++ b/gm/encode_color_types.cpp @@ -82,14 +82,14 @@ class EncodeColorTypesGM : public GM { {} protected: - SkString onShortName() override { + SkString getName() const override { const char* variant = fVariant == Variant::kOpaque ? "opaque-": fVariant == Variant::kGray ? "gray-" : "" ; return SkStringPrintf("encode-%scolor-types-%s", variant, fName); } - SkISize onISize() override { + SkISize getISize() override { const int width = fVariant == Variant::kNormal ? imageWidth * 7 : imageWidth * 2; return SkISize::Make(width, imageHeight); } diff --git a/gm/encode_platform.cpp b/gm/encode_platform.cpp index b6860c0d885e..fc6c204a7287 100644 --- a/gm/encode_platform.cpp +++ b/gm/encode_platform.cpp @@ -75,13 +75,9 @@ class EncodePlatformGM : public GM { EncodePlatformGM() {} protected: - SkString onShortName() override { - return SkString("encode-platform"); - } + SkString getName() const override { return SkString("encode-platform"); } - SkISize onISize() override { - return SkISize::Make(256 * std::size(gRecs), 256 * 3); - } + SkISize getISize() override { return SkISize::Make(256 * std::size(gRecs), 256 * 3); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { SkBitmap opaqueBm, premulBm, unpremulBm; diff --git a/gm/encode_srgb.cpp b/gm/encode_srgb.cpp index a7ad9c5d704a..e610e3cf2d65 100644 --- a/gm/encode_srgb.cpp +++ b/gm/encode_srgb.cpp @@ -93,7 +93,7 @@ class EncodeSRGBGM : public GM { {} protected: - SkString onShortName() override { + SkString getName() const override { const char* format = nullptr; switch (fEncodedFormat) { case SkEncodedImageFormat::kPNG: @@ -111,9 +111,7 @@ class EncodeSRGBGM : public GM { return SkStringPrintf("encode-srgb-%s", format); } - SkISize onISize() override { - return SkISize::Make(imageWidth * 2, imageHeight * 15); - } + SkISize getISize() override { return SkISize::Make(imageWidth * 2, imageHeight * 15); } void onDraw(SkCanvas* canvas) override { const SkColorType colorTypes[] = { diff --git a/gm/exoticformats.cpp b/gm/exoticformats.cpp index 4c1a61f4ec7f..5c6e40dea3a5 100644 --- a/gm/exoticformats.cpp +++ b/gm/exoticformats.cpp @@ -334,11 +334,9 @@ class ExoticFormatsGM : public GM { } protected: - SkString onShortName() override { - return SkString("exoticformats"); - } + SkString getName() const override { return SkString("exoticformats"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(2*kImgWidthHeight + 3 * kPad, kImgWidthHeight + 2 * kPad); } diff --git a/gm/fillrect_gradient.cpp b/gm/fillrect_gradient.cpp index cd22ab72287e..9a05d7c2531e 100644 --- a/gm/fillrect_gradient.cpp +++ b/gm/fillrect_gradient.cpp @@ -41,11 +41,9 @@ class FillrectGradientGM : public skiagm::GM { SkColor color; }; - SkString onShortName() override { - return SkString("fillrect_gradient"); - } + SkString getName() const override { return SkString("fillrect_gradient"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kNumColumns * (kCellSize + kPadSize), kNumRows * (kCellSize + kPadSize)); } diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp index 0817a60bc5c3..8962d1c43106 100644 --- a/gm/filltypes.cpp +++ b/gm/filltypes.cpp @@ -34,14 +34,9 @@ class FillTypeGM : public GM { } protected: + SkString getName() const override { return SkString("filltypes"); } - SkString onShortName() override { - return SkString("filltypes"); - } - - SkISize onISize() override { - return SkISize::Make(835, 840); - } + SkISize getISize() override { return SkISize::Make(835, 840); } void showPath(SkCanvas* canvas, int x, int y, SkPathFillType ft, SkScalar scale, const SkPaint& paint) { diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp index bb25b3711bdb..35205474a482 100644 --- a/gm/filltypespersp.cpp +++ b/gm/filltypespersp.cpp @@ -38,14 +38,9 @@ class FillTypePerspGM : public GM { } protected: + SkString getName() const override { return SkString("filltypespersp"); } - SkString onShortName() override { - return SkString("filltypespersp"); - } - - SkISize onISize() override { - return SkISize::Make(835, 840); - } + SkISize getISize() override { return SkISize::Make(835, 840); } void showPath(SkCanvas* canvas, int x, int y, SkPathFillType ft, SkScalar scale, const SkPaint& paint) { diff --git a/gm/filterbug.cpp b/gm/filterbug.cpp index 5d83fcdf1c2f..b4de6e2a4802 100644 --- a/gm/filterbug.cpp +++ b/gm/filterbug.cpp @@ -46,9 +46,9 @@ class FilterBugGM : public skiagm::GM { FilterBugGM() { this->setBGColor(SK_ColorRED); } protected: - SkString onShortName() override { return SkString("filterbug"); } + SkString getName() const override { return SkString("filterbug"); } - SkISize onISize() override { return SkISize::Make(150, 150); } + SkISize getISize() override { return SkISize::Make(150, 150); } void onOnceBeforeDraw() override { // The top texture has 5 black rows on top and then 22 white rows on the bottom diff --git a/gm/filterfastbounds.cpp b/gm/filterfastbounds.cpp index 55c8c3ed10a5..c3f1fac837f4 100644 --- a/gm/filterfastbounds.cpp +++ b/gm/filterfastbounds.cpp @@ -164,9 +164,9 @@ class ImageFilterFastBoundGM : public GM { inline static constexpr int kNumVertTiles = 7; inline static constexpr int kNumXtraCols = 2; - SkString onShortName() override { return SkString("filterfastbounds"); } + SkString getName() const override { return SkString("filterfastbounds"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make((std::size(gDrawMthds) + kNumXtraCols) * kTileWidth, kNumVertTiles * kTileHeight); } diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp index cd5690ff7ae1..fb3201525b1a 100644 --- a/gm/filterindiabox.cpp +++ b/gm/filterindiabox.cpp @@ -65,9 +65,9 @@ class FilterIndiaBoxGM : public skiagm::GM { fMatrix[1].setRotate(30, cx, cy); fMatrix[1].postScale(horizScale, vertScale); } - SkString onShortName() override { return SkString("filterindiabox"); } + SkString getName() const override { return SkString("filterindiabox"); } - SkISize onISize() override { return {680, 130}; } + SkISize getISize() override { return {680, 130}; } void onDraw(SkCanvas* canvas) override { canvas->translate(10, 10); diff --git a/gm/flippity.cpp b/gm/flippity.cpp index dd5cadfed739..8f0c0be48580 100644 --- a/gm/flippity.cpp +++ b/gm/flippity.cpp @@ -177,13 +177,9 @@ class FlippityGM : public skiagm::GM { } private: - SkString onShortName() override { - return SkString("flippity"); - } + SkString getName() const override { return SkString("flippity"); } - SkISize onISize() override { - return SkISize::Make(kGMWidth, kGMHeight); - } + SkISize getISize() override { return SkISize::Make(kGMWidth, kGMHeight); } // Draw the reference image and the four corner labels in the matrix's coordinate space void drawImageWithMatrixAndLabels(SkCanvas* canvas, SkImage* image, int matIndex, diff --git a/gm/fontations.cpp b/gm/fontations.cpp index 8cd90cbdd84c..35784e34f575 100644 --- a/gm/fontations.cpp +++ b/gm/fontations.cpp @@ -119,11 +119,11 @@ class FontationsTypefaceGM : public GM { SkTypeface_Make_Fontations(GetResourceAsStream(kReportFontName), SkFontArguments()); } - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("typeface_fontations_%s", fTestName.c_str()); } - SkISize onISize() override { return SkISize::Make(400, 200); } + SkISize getISize() override { return SkISize::Make(400, 200); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { SkPaint paint; diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp index 16fd827cda44..43192bf7c39e 100644 --- a/gm/fontcache.cpp +++ b/gm/fontcache.cpp @@ -48,7 +48,7 @@ class FontCacheGM : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("fontcache"); if (GrContextOptions::Enable::kYes == fAllowMultipleTextures) { name.append("-mt"); @@ -56,7 +56,7 @@ class FontCacheGM : public skiagm::GM { return name; } - SkISize onISize() override { return SkISize::Make(kSize, kSize); } + SkISize getISize() override { return SkISize::Make(kSize, kSize); } void onOnceBeforeDraw() override { fTypefaces[0] = ToolUtils::create_portable_typeface("serif", SkFontStyle::Italic()); diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp index d7c1bda3049c..c3b87025e4fe 100644 --- a/gm/fontmgr.cpp +++ b/gm/fontmgr.cpp @@ -78,9 +78,9 @@ class FontMgrGM : public skiagm::GM { fFM = SkFontMgr::RefDefault(); } - SkString onShortName() override { return SkString("fontmgr_iter"); } + SkString getName() const override { return SkString("fontmgr_iter"); } - SkISize onISize() override { return {1536, 768}; } + SkISize getISize() override { return {1536, 768}; } void onDraw(SkCanvas* canvas) override { SkScalar y = 20; @@ -129,9 +129,9 @@ class FontMgrMatchGM : public skiagm::GM { SkGraphics::SetFontCacheLimit(16 * 1024 * 1024); } - SkString onShortName() override { return SkString("fontmgr_match"); } + SkString getName() const override { return SkString("fontmgr_match"); } - SkISize onISize() override { return {640, 1024}; } + SkISize getISize() override { return {640, 1024}; } void iterateFamily(SkCanvas* canvas, const SkFont& font, SkFontStyleSet* fset) { SkFont f(font); @@ -204,7 +204,7 @@ class FontMgrBoundsGM : public skiagm::GM { FontMgrBoundsGM(float scale, float skew) : fScaleX(scale) , fSkewX(skew) {} private: - SkString onShortName() override { + SkString getName() const override { if (fScaleX != 1 || fSkewX != 0) { return SkStringPrintf("fontmgr_bounds_%g_%g", fScaleX, fSkewX); } @@ -324,7 +324,7 @@ class FontMgrBoundsGM : public skiagm::GM { return drawBounds; } - SkISize onISize() override { return {1024, 850}; } + SkISize getISize() override { return {1024, 850}; } void onDraw(SkCanvas* canvas) override { SkFont font; diff --git a/gm/fontregen.cpp b/gm/fontregen.cpp index 29137632d106..b2807956bcdb 100644 --- a/gm/fontregen.cpp +++ b/gm/fontregen.cpp @@ -67,9 +67,9 @@ class FontRegenGM : public skiagm::GM { } #endif - SkString onShortName() override { return SkString("fontregen"); } + SkString getName() const override { return SkString("fontregen"); } - SkISize onISize() override { return {kSize, kSize}; } + SkISize getISize() override { return {kSize, kSize}; } void onOnceBeforeDraw() override { this->setBGColor(SK_ColorLTGRAY); @@ -135,10 +135,9 @@ DEF_GM(return new FontRegenGM()) /////////////////////////////////////////////////////////////////////////////// class BadAppleGM : public skiagm::GM { + SkString getName() const override { return SkString("badapple"); } - SkString onShortName() override { return SkString("badapple"); } - - SkISize onISize() override { return {kSize, kSize}; } + SkISize getISize() override { return {kSize, kSize}; } void onOnceBeforeDraw() override { this->setBGColor(SK_ColorWHITE); diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp index 9e6cc0fdd3ab..09464aed48c5 100644 --- a/gm/fontscaler.cpp +++ b/gm/fontscaler.cpp @@ -26,14 +26,9 @@ class FontScalerGM : public GM { } protected: + SkString getName() const override { return SkString("fontscaler"); } - SkString onShortName() override { - return SkString("fontscaler"); - } - - SkISize onISize() override { - return SkISize::Make(1450, 750); - } + SkISize getISize() override { return SkISize::Make(1450, 750); } void onDraw(SkCanvas* canvas) override { SkFont font; diff --git a/gm/fontscalerdistortable.cpp b/gm/fontscalerdistortable.cpp index d6a8001f4ca8..a13e2a09e16e 100644 --- a/gm/fontscalerdistortable.cpp +++ b/gm/fontscalerdistortable.cpp @@ -37,14 +37,9 @@ class FontScalerDistortableGM : public GM { } private: + SkString getName() const override { return SkString("fontscalerdistortable"); } - SkString onShortName() override { - return SkString("fontscalerdistortable"); - } - - SkISize onISize() override { - return SkISize::Make(550, 700); - } + SkISize getISize() override { return SkISize::Make(550, 700); } bool fDirty = true; bool fOverride = false; diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp index 3f8576a3702f..fe87fb30279d 100644 --- a/gm/gammatext.cpp +++ b/gm/gammatext.cpp @@ -40,13 +40,9 @@ static sk_sp make_heatGradient(const SkPoint pts[2]) { class GammaTextGM : public skiagm::GM { protected: - SkString onShortName() override { - return SkString("gammatext"); - } + SkString getName() const override { return SkString("gammatext"); } - SkISize onISize() override { - return SkISize::Make(1024, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(1024, HEIGHT); } static void drawGrad(SkCanvas* canvas) { const SkPoint pts[] = { { 0, 0 }, { 0, SkIntToScalar(HEIGHT) } }; @@ -129,13 +125,9 @@ class GammaShaderTextGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("gammagradienttext"); - } + SkString getName() const override { return SkString("gammagradienttext"); } - SkISize onISize() override { - return SkISize::Make(300, 300); - } + SkISize getISize() override { return SkISize::Make(300, 300); } void onOnceBeforeDraw() override { for (size_t i = 0; i < std::size(fShaders); ++i) { diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp index d2caac542228..4a0c24ecb5da 100644 --- a/gm/giantbitmap.cpp +++ b/gm/giantbitmap.cpp @@ -76,8 +76,7 @@ class GiantBitmapGM : public skiagm::GM { ~GiantBitmapGM() override { delete fBM; } protected: - - SkString onShortName() override { + SkString getName() const override { SkString str("giantbitmap_"); switch (fMode) { case SkTileMode::kClamp: @@ -100,7 +99,7 @@ class GiantBitmapGM : public skiagm::GM { return str; } - SkISize onISize() override { return SkISize::Make(640, 480); } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/gm.cpp b/gm/gm.cpp index 3d3b9f8797d5..de2440bcacd4 100644 --- a/gm/gm.cpp +++ b/gm/gm.cpp @@ -87,7 +87,7 @@ GM::GM(SkColor bgColor) { GM::~GM() {} DrawResult GM::gpuSetup(SkCanvas* canvas, SkString* errorMsg) { - TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName())); + TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName().c_str())); if (!fGpuSetup) { // When drawn in viewer, gpuSetup will be called multiple times with the same // GrContext. @@ -110,7 +110,7 @@ void GM::gpuTeardown() { } DrawResult GM::draw(SkCanvas* canvas, SkString* errorMsg) { - TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName())); + TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName().c_str())); this->drawBackground(canvas); return this->drawContent(canvas, errorMsg); } @@ -138,28 +138,20 @@ DrawResult GM::onDraw(SkCanvas* canvas, SkString* errorMsg) { } void GM::onDraw(SkCanvas*) { SK_ABORT("Not implemented."); } - -SkISize SimpleGM::onISize() { return fSize; } -SkString SimpleGM::onShortName() { return fName; } +SkISize SimpleGM::getISize() { return fSize; } +SkString SimpleGM::getName() const { return fName; } DrawResult SimpleGM::onDraw(SkCanvas* canvas, SkString* errorMsg) { return fDrawProc(canvas, errorMsg); } #if defined(SK_GANESH) -SkISize SimpleGpuGM::onISize() { return fSize; } -SkString SimpleGpuGM::onShortName() { return fName; } +SkISize SimpleGpuGM::getISize() { return fSize; } +SkString SimpleGpuGM::getName() const { return fName; } DrawResult SimpleGpuGM::onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) { return fDrawProc(rContext, canvas, errorMsg); } #endif -const char* GM::getName() { - if (fShortName.size() == 0) { - fShortName = this->onShortName(); - } - return fShortName.c_str(); -} - void GM::setBGColor(SkColor color) { fBGColor = color; } diff --git a/gm/gm.h b/gm/gm.h index 349fe090b1a5..419b1652a59b 100644 --- a/gm/gm.h +++ b/gm/gm.h @@ -17,6 +17,7 @@ #include "tools/Registry.h" #include +#include #include class GrRecordingContext; @@ -148,8 +149,9 @@ namespace skiagm { } DrawResult drawContent(SkCanvas*, SkString* errorMsg); - SkISize getISize() { return this->onISize(); } - const char* getName(); + virtual SkISize getISize() = 0; + + virtual SkString getName() const = 0; virtual bool runAsBench() const; @@ -200,6 +202,16 @@ namespace skiagm { // TODO(lovisolo): Delete once it's no longer needed. virtual bool isBazelOnly() const { return false; } + // Ignored by DM. Returns the set of Gold key/value pairs specific to this GM, such as the + // GM name and corpus. GMs may define additional keys. For example, codec GMs define keys + // for the parameters utilized to initialize the codec. + virtual std::map getGoldKeys() const { + return std::map{ + {"name", getName().c_str()}, + {"source_type", "gm"}, + }; + } + protected: // onGpuSetup is called once before any other processing with a direct context. virtual DrawResult onGpuSetup(SkCanvas*, SkString*) { return DrawResult::kOk; } @@ -208,16 +220,12 @@ namespace skiagm { virtual DrawResult onDraw(SkCanvas*, SkString* errorMsg); virtual void onDraw(SkCanvas*); - virtual SkISize onISize() = 0; - virtual SkString onShortName() = 0; - virtual bool onAnimate(double /*nanos*/); virtual bool onGetControls(SkMetaData*); virtual void onSetControls(const SkMetaData&); private: - Mode fMode; - SkString fShortName; + Mode fMode; SkColor fBGColor; bool fHaveCalledOnceBeforeDraw = false; bool fGpuSetup = false; @@ -231,7 +239,8 @@ namespace skiagm { void Register(skiagm::GM* gm); // Registry of functions that dynamically register GMs. Useful for GMs that are unknown at - // compile time, such as those that are created from images in a directory. + // compile time, such as those that are created from images in a directory (see e.g. + // //gm/png_codec.cpp). // // A GMRegistererFn may call skiagm::Register() zero or more times to register GMs as needed. // It should return the empty string on success, or a human-friendly message in the case of @@ -272,9 +281,10 @@ namespace skiagm { SimpleGM(SkColor bgColor, const SkString& name, const SkISize& size, DrawProc drawProc) : GM(bgColor), fName(name), fSize(size), fDrawProc(drawProc) {} + SkString getName() const override; + SkISize getISize() override; + private: - SkISize onISize() override; - SkString onShortName() override; DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override; const SkString fName; @@ -290,9 +300,10 @@ namespace skiagm { SimpleGpuGM(SkColor bgColor, const SkString& name, const SkISize& size, DrawProc drawProc) : GpuGM(bgColor), fName(name), fSize(size), fDrawProc(drawProc) {} + SkString getName() const override; + SkISize getISize() override; + private: - SkISize onISize() override; - SkString onShortName() override; DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override; const SkString fName; diff --git a/gm/gpu_blur_utils.cpp b/gm/gpu_blur_utils.cpp index b191e34606eb..edac543879a5 100644 --- a/gm/gpu_blur_utils.cpp +++ b/gm/gpu_blur_utils.cpp @@ -12,6 +12,7 @@ #include "include/gpu/GrRecordingContext.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "src/core/SkCanvasPriv.h" +#include "src/gpu/BlurUtils.h" #include "src/gpu/ganesh/GrBlurUtils.h" #include "src/gpu/ganesh/GrCanvas.h" #include "src/gpu/ganesh/GrRecordingContextPriv.h" @@ -78,7 +79,7 @@ static GrSurfaceProxyView slow_blur(GrRecordingContext* rContext, return sfc->readSurfaceView(); }; - SkIPoint outset = {GrBlurUtils::SigmaRadius(sigmaX), GrBlurUtils::SigmaRadius(sigmaY)}; + SkIPoint outset = {skgpu::BlurSigmaRadius(sigmaX), skgpu::BlurSigmaRadius(sigmaY)}; SkISize size = {dstB.width() + 2*outset.x(), dstB.height() + 2*outset.y()}; src = tileInto(std::move(src), srcB, size, outset - dstB.topLeft(), mode); if (!src) { @@ -88,18 +89,18 @@ static GrSurfaceProxyView slow_blur(GrRecordingContext* rContext, while (sigmaX || sigmaY) { float stepX = sigmaX; - if (stepX > GrBlurUtils::kMaxSigma) { - stepX = GrBlurUtils::kMaxSigma; + if (stepX > skgpu::kMaxLinearBlurSigma) { + stepX = skgpu::kMaxLinearBlurSigma; // A blur of sigma1 followed by a blur of sigma2 is equiv. to a single blur of // sqrt(sigma1^2 + sigma2^2). - sigmaX = sqrt(sigmaX*sigmaX - GrBlurUtils::kMaxSigma*GrBlurUtils::kMaxSigma); + sigmaX = sqrt(sigmaX*sigmaX - skgpu::kMaxLinearBlurSigma*skgpu::kMaxLinearBlurSigma); } else { sigmaX = 0.f; } float stepY = sigmaY; - if (stepY > GrBlurUtils::kMaxSigma) { - stepY = GrBlurUtils::kMaxSigma; - sigmaY = sqrt(sigmaY*sigmaY- GrBlurUtils::kMaxSigma*GrBlurUtils::kMaxSigma); + if (stepY > skgpu::kMaxLinearBlurSigma) { + stepY = skgpu::kMaxLinearBlurSigma; + sigmaY = sqrt(sigmaY*sigmaY- skgpu::kMaxLinearBlurSigma*skgpu::kMaxLinearBlurSigma); } else { sigmaY = 0.f; } diff --git a/gm/gradient_dirty_laundry.cpp b/gm/gradient_dirty_laundry.cpp index f7efdfb5fd25..488fc2d51631 100644 --- a/gm/gradient_dirty_laundry.cpp +++ b/gm/gradient_dirty_laundry.cpp @@ -77,8 +77,8 @@ class GradientsGM : public GM { } protected: - SkString onShortName() override { return SkString("gradient_dirty_laundry"); } - SkISize onISize() override { return SkISize::Make(640, 615); } + SkString getName() const override { return SkString("gradient_dirty_laundry"); } + SkISize getISize() override { return SkISize::Make(640, 615); } void onDraw(SkCanvas* canvas) override { SkPoint pts[2] = { { 0, 0 }, diff --git a/gm/gradients.cpp b/gm/gradients.cpp index 92538e301515..030131f3a7d4 100644 --- a/gm/gradients.cpp +++ b/gm/gradients.cpp @@ -227,11 +227,11 @@ class GradientsGM : public skiagm::GM { private: void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients" : "gradients_nodither"); } - SkISize onISize() override { return {840, 815}; } + SkISize getISize() override { return {840, 815}; } }; DEF_GM( return new GradientsGM(true); ) DEF_GM( return new GradientsGM(false); ) @@ -244,11 +244,11 @@ class Gradients4fGM : public skiagm::GM { private: void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients4f" : "gradients4f_nodither"); } - SkISize onISize() override { return {840, 815}; } + SkISize getISize() override { return {840, 815}; } void onDraw(SkCanvas* canvas) override { SkPoint pts[2] ={ @@ -295,12 +295,12 @@ class GradientsLocalPerspectiveGM : public skiagm::GM { } private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients_local_perspective" : "gradients_local_perspective_nodither"); } - SkISize onISize() override { return {840, 815}; } + SkISize getISize() override { return {840, 815}; } void onDraw(SkCanvas* canvas) override { SkPoint pts[2] = { @@ -344,12 +344,12 @@ class GradientsViewPerspectiveGM : public GradientsGM { GradientsViewPerspectiveGM(bool dither) : INHERITED(dither) { } private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients_view_perspective" : "gradients_view_perspective_nodither"); } - SkISize onISize() override { return {840, 500}; } + SkISize getISize() override { return {840, 500}; } void onDraw(SkCanvas* canvas) override { SkMatrix perspective; @@ -387,11 +387,11 @@ class GradientsDegenrate2PointGM : public skiagm::GM { GradientsDegenrate2PointGM(bool dither) : fDither(dither) {} private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients_degenerate_2pt" : "gradients_degenerate_2pt_nodither"); } - SkISize onISize() override { return {320, 320}; } + SkISize getISize() override { return {320, 320}; } void onDraw(SkCanvas* canvas) override { canvas->drawColor(SK_ColorBLUE); @@ -460,11 +460,11 @@ class ClampedGradientsGM : public skiagm::GM { ClampedGradientsGM(bool dither) : fDither(dither) {} private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "clamped_gradients" : "clamped_gradients_nodither"); } - SkISize onISize() override { return {640, 510}; } + SkISize getISize() override { return {640, 510}; } void onDraw(SkCanvas* canvas) override { canvas->drawColor(0xFFDDDDDD); @@ -493,9 +493,9 @@ DEF_GM( return new ClampedGradientsGM(false); ) /// some banding. class RadialGradientGM : public skiagm::GM { - SkString onShortName() override { return SkString("radial_gradient"); } + SkString getName() const override { return SkString("radial_gradient"); } - SkISize onISize() override { return {1280, 1280}; } + SkISize getISize() override { return {1280, 1280}; } void onDraw(SkCanvas* canvas) override { const SkISize dim = this->getISize(); @@ -527,11 +527,11 @@ class RadialGradient2GM : public skiagm::GM { RadialGradient2GM(bool dither) : fDither(dither) {} private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "radial_gradient2" : "radial_gradient2_nodither"); } - SkISize onISize() override { return {800, 400}; } + SkISize getISize() override { return {800, 400}; } // Reproduces the example given in bug 7671058. void onDraw(SkCanvas* canvas) override { @@ -591,11 +591,11 @@ class RadialGradient3GM : public skiagm::GM { RadialGradient3GM(bool dither) : fDither(dither) { } private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "radial_gradient3" : "radial_gradient3_nodither"); } - SkISize onISize() override { return {500, 500}; } + SkISize getISize() override { return {500, 500}; } bool runAsBench() const override { return true; } @@ -628,11 +628,11 @@ class RadialGradient4GM : public skiagm::GM { RadialGradient4GM(bool dither) : fDither(dither) { } private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "radial_gradient4" : "radial_gradient4_nodither"); } - SkISize onISize() override { return {500, 500}; } + SkISize getISize() override { return {500, 500}; } void onOnceBeforeDraw() override { const SkPoint center = { 250, 250 }; @@ -666,7 +666,7 @@ class LinearGradientGM : public skiagm::GM { LinearGradientGM(bool dither) : fDither(dither) { } private: - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "linear_gradient" : "linear_gradient_nodither"); } @@ -674,7 +674,7 @@ class LinearGradientGM : public skiagm::GM { const SkScalar kHeight = 5.f; const SkScalar kMinWidth = 540.f; - SkISize onISize() override { return {500, 500}; } + SkISize getISize() override { return {500, 500}; } void onOnceBeforeDraw() override { SkPoint pts[2] = { {0, 0}, {0, 0} }; @@ -716,9 +716,9 @@ DEF_GM( return new LinearGradientGM(false); ) class LinearGradientTinyGM : public skiagm::GM { inline static constexpr uint32_t kFlags = 0; - SkString onShortName() override { return SkString("linear_gradient_tiny"); } + SkString getName() const override { return SkString("linear_gradient_tiny"); } - SkISize onISize() override { return {600, 500}; } + SkISize getISize() override { return {600, 500}; } void onDraw(SkCanvas* canvas) override { const SkScalar kRectSize = 100; diff --git a/gm/gradients_2pt_conical.cpp b/gm/gradients_2pt_conical.cpp index e2c342fc56f2..d0c39c459ccd 100644 --- a/gm/gradients_2pt_conical.cpp +++ b/gm/gradients_2pt_conical.cpp @@ -344,9 +344,9 @@ class ConicalGradientsGM : public GM { private: void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { return fName; } + SkString getName() const override { return fName; } - SkISize onISize() override { return {840, 815}; } + SkISize getISize() override { return {840, 815}; } void onDraw(SkCanvas* canvas) override { diff --git a/gm/gradients_degenerate.cpp b/gm/gradients_degenerate.cpp index 93d53a2d90d4..a3678b3ee33c 100644 --- a/gm/gradients_degenerate.cpp +++ b/gm/gradients_degenerate.cpp @@ -131,13 +131,9 @@ class DegenerateGradientGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("degenerate_gradients"); - } + SkString getName() const override { return SkString("degenerate_gradients"); } - SkISize onISize() override { - return SkISize::Make(800, 800); - } + SkISize getISize() override { return SkISize::Make(800, 800); } void onDraw(SkCanvas* canvas) override { canvas->translate(3 * TILE_GAP, 3 * TILE_GAP); diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp index 8ec01f4ddde1..2fbcc5a705f2 100644 --- a/gm/gradients_no_texture.cpp +++ b/gm/gradients_no_texture.cpp @@ -99,12 +99,11 @@ class GradientsNoTextureGM : public GM { } protected: - - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients_no_texture" : "gradients_no_texture_nodither"); } - SkISize onISize() override { return SkISize::Make(640, 615); } + SkISize getISize() override { return SkISize::Make(640, 615); } void onDraw(SkCanvas* canvas) override { constexpr SkPoint kPts[2] = { { 0, 0 }, @@ -237,12 +236,11 @@ class GradientsManyColorsGM : public GM { GradientsManyColorsGM(bool dither) : fDither(dither) {} protected: - - SkString onShortName() override { + SkString getName() const override { return SkString(fDither ? "gradients_many" : "gradients_many_nodither"); } - SkISize onISize() override { return SkISize::Make(880, 400); } + SkISize getISize() override { return SkISize::Make(880, 400); } void onDraw(SkCanvas* canvas) override { const Proc procs[] = { diff --git a/gm/gradtext.cpp b/gm/gradtext.cpp index 6d3164883fb9..afc6dfd0806a 100644 --- a/gm/gradtext.cpp +++ b/gm/gradtext.cpp @@ -49,9 +49,9 @@ static sk_sp make_chrome_solid() { // Replicate chrome layout test - clipped pathed gradient-shaded text class ChromeGradTextGM1 : public skiagm::GM { - SkString onShortName() override { return SkString("chrome_gradtext1"); } + SkString getName() const override { return SkString("chrome_gradtext1"); } - SkISize onISize() override { return {500, 480}; } + SkISize getISize() override { return {500, 480}; } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -74,9 +74,9 @@ class ChromeGradTextGM1 : public skiagm::GM { // Replicate chrome layout test - switching between solid & gradient text class ChromeGradTextGM2 : public skiagm::GM { - SkString onShortName() override { return SkString("chrome_gradtext2"); } + SkString getName() const override { return SkString("chrome_gradtext2"); } - SkISize onISize() override { return {500, 480}; } + SkISize getISize() override { return {500, 480}; } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/graphite_replay.cpp b/gm/graphite_replay.cpp index 8a177fd15214..8eeeb45ca01d 100644 --- a/gm/graphite_replay.cpp +++ b/gm/graphite_replay.cpp @@ -32,9 +32,9 @@ class GraphiteReplayGM : public GM { } protected: - SkString onShortName() override { return SkString("graphite-replay"); } + SkString getName() const override { return SkString("graphite-replay"); } - SkISize onISize() override { return SkISize::Make(kTileWidth * 3, kTileHeight * 2); } + SkISize getISize() override { return SkISize::Make(kTileWidth * 3, kTileHeight * 2); } bool onAnimate(double nanos) override { fStartX = kTileWidth * (1.0f + sinf(nanos * 1e-9)) * 0.5f; diff --git a/gm/graphitestart.cpp b/gm/graphitestart.cpp index fb4e3c07f0b9..c6da2813b84d 100644 --- a/gm/graphitestart.cpp +++ b/gm/graphitestart.cpp @@ -265,13 +265,9 @@ class GraphiteStartGM : public GM { static constexpr int kHeight = 3 * kTileHeight; static constexpr int kClipInset = 4; - SkString onShortName() override { - return SkString("graphitestart"); - } + SkString getName() const override { return SkString("graphitestart"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp index 2edd2d08ce56..56f192f345bc 100644 --- a/gm/hairlines.cpp +++ b/gm/hairlines.cpp @@ -24,13 +24,9 @@ namespace skiagm { class HairlinesGM : public GM { protected: + SkString getName() const override { return SkString("hairlines"); } - - SkString onShortName() override { - return SkString("hairlines"); - } - - SkISize onISize() override { return SkISize::Make(1250, 1250); } + SkISize getISize() override { return SkISize::Make(1250, 1250); } void onOnceBeforeDraw() override { { diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp index 35d972e583fe..97c2f0a73870 100644 --- a/gm/hairmodes.cpp +++ b/gm/hairmodes.cpp @@ -84,11 +84,9 @@ namespace skiagm { SkPaint fBGPaint; protected: - SkString onShortName() override { - return SkString("hairmodes"); - } + SkString getName() const override { return SkString("hairmodes"); } - SkISize onISize() override { return SkISize::Make(640, 480); } + SkISize getISize() override { return SkISize::Make(640, 480); } void onOnceBeforeDraw() override { fBGPaint.setShader(make_bg_shader()); diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp index 9b65b70bf094..7acb6dc596a3 100644 --- a/gm/hardstop_gradients.cpp +++ b/gm/hardstop_gradients.cpp @@ -95,13 +95,9 @@ class HardstopGradientShaderGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("hardstop_gradients"); - } + SkString getName() const override { return SkString("hardstop_gradients"); } - SkISize onISize() override { - return SkISize::Make(512, 512); - } + SkISize getISize() override { return SkISize::Make(512, 512); } void onDraw(SkCanvas* canvas) override { SkPoint points[2]; diff --git a/gm/hardstop_gradients_many.cpp b/gm/hardstop_gradients_many.cpp index c8c661433e9c..6f43720b438b 100644 --- a/gm/hardstop_gradients_many.cpp +++ b/gm/hardstop_gradients_many.cpp @@ -38,13 +38,9 @@ class HardstopGradientsManyGM : public skiagm::GM { HardstopGradientsManyGM() {} protected: - SkString onShortName() override { - return SkString("hardstop_gradients_many"); - } + SkString getName() const override { return SkString("hardstop_gradients_many"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { static constexpr SkPoint points[] = { diff --git a/gm/hello_bazel_world.cpp b/gm/hello_bazel_world.cpp new file mode 100644 index 000000000000..b3d0334b60fd --- /dev/null +++ b/gm/hello_bazel_world.cpp @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// The purpose of this Bazel-only GM is to experiment with a task driver that uploads PNGs produced +// by GMs executed via Bazel. By creating a GM specific for these experiments, we avoid uploading +// spurious digests with potentially incorrect keys that would be grouped with existing digests. +// +// Based on //gm/bigtext.cpp. +// +// TODO(lovisolo): Delete once we migrate other GMs to Bazel. + +#include "gm/gm.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" +#include "include/core/SkFont.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" +#include "include/core/SkTypeface.h" +#include "tools/Resources.h" +#include "tools/ToolUtils.h" + +class HelloBazelWorldGM : public skiagm::GM { +public: + HelloBazelWorldGM() {} + +protected: + SkString getName() const override { return SkString("HelloBazelWorld"); } + + SkISize getISize() override { return SkISize::Make(500, 500); } + + bool isBazelOnly() const override { return true; } + + void onDraw(SkCanvas* canvas) override { + SkPaint paint; + paint.setAntiAlias(true); + SkFont font(ToolUtils::create_portable_typeface(), 50); + + const char* text = "Hello, Bazel world!"; + size_t text_length = strlen(text); + + SkRect r; + (void)font.measureText(text, text_length, SkTextEncoding::kUTF8, &r); + SkPoint pos = {this->width() / 2 - r.centerX(), this->height() / 2 - r.centerY()}; + + paint.setColor(SK_ColorRED); + canvas->drawSimpleText( + text, text_length, SkTextEncoding::kUTF8, pos.fX, pos.fY, font, paint); + } +}; + +DEF_GM(return new HelloBazelWorldGM;) diff --git a/gm/highcontrastfilter.cpp b/gm/highcontrastfilter.cpp index 74c2a6a09247..49c42c23b562 100644 --- a/gm/highcontrastfilter.cpp +++ b/gm/highcontrastfilter.cpp @@ -122,13 +122,9 @@ class HighContrastFilterGM : public skiagm::GM { SkTileMode::kClamp); } - SkString onShortName() override { - return SkString("highcontrastfilter"); - } + SkString getName() const override { return SkString("highcontrastfilter"); } - SkISize onISize() override { - return SkISize::Make(800, 420); - } + SkISize getISize() override { return SkISize::Make(800, 420); } void onDraw(SkCanvas* canvas) override { SkHighContrastConfig configs[] = { diff --git a/gm/image.cpp b/gm/image.cpp index 98a94b302343..9f2b77afe8b1 100644 --- a/gm/image.cpp +++ b/gm/image.cpp @@ -145,13 +145,9 @@ class ImageGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("image-surface"); - } + SkString getName() const override { return SkString("image-surface"); } - SkISize onISize() override { - return SkISize::Make(960, 1200); - } + SkISize getISize() override { return SkISize::Make(960, 1200); } void onDraw(SkCanvas* canvas) override { canvas->scale(2, 2); @@ -290,13 +286,9 @@ class ScalePixelsGM : public skiagm::GM { ScalePixelsGM() {} protected: - SkString onShortName() override { - return SkString("scale-pixels"); - } + SkString getName() const override { return SkString("scale-pixels"); } - SkISize onISize() override { - return SkISize::Make(960, 1200); - } + SkISize getISize() override { return SkISize::Make(960, 1200); } void onDraw(SkCanvas* canvas) override { const SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100); diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp index 449c7a4aed86..40f6668c82a1 100644 --- a/gm/image_pict.cpp +++ b/gm/image_pict.cpp @@ -74,13 +74,9 @@ class ImagePictGM : public skiagm::GM { ImagePictGM() {} protected: - SkString onShortName() override { - return SkString("image-picture"); - } + SkString getName() const override { return SkString("image-picture"); } - SkISize onISize() override { - return SkISize::Make(850, 450); - } + SkISize getISize() override { return SkISize::Make(850, 450); } void onOnceBeforeDraw() override { const SkRect bounds = SkRect::MakeXYWH(100, 100, 100, 100); @@ -268,13 +264,9 @@ class ImageCacheratorGM : public skiagm::GM { } protected: - SkString onShortName() override { - return fName; - } + SkString getName() const override { return fName; } - SkISize onISize() override { - return SkISize::Make(960, 450); - } + SkISize getISize() override { return SkISize::Make(960, 450); } void onOnceBeforeDraw() override { const SkRect bounds = SkRect::MakeXYWH(100, 100, 100, 100); diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp index 0307a0ae4ea2..52baf8a2bb99 100644 --- a/gm/image_shader.cpp +++ b/gm/image_shader.cpp @@ -113,13 +113,9 @@ class ImageShaderGM : public skiagm::GM { ImageShaderGM() {} protected: - SkString onShortName() override { - return SkString("image-shader"); - } + SkString getName() const override { return SkString("image-shader"); } - SkISize onISize() override { - return SkISize::Make(850, 450); - } + SkISize getISize() override { return SkISize::Make(850, 450); } void onOnceBeforeDraw() override { const SkRect bounds = SkRect::MakeWH(100, 100); diff --git a/gm/imageblurclampmode.cpp b/gm/imageblurclampmode.cpp index eef4c50f1823..7a8339064017 100644 --- a/gm/imageblurclampmode.cpp +++ b/gm/imageblurclampmode.cpp @@ -62,14 +62,9 @@ class ImageBlurClampModeGM : public GM { } protected: + SkString getName() const override { return SkString("imageblurclampmode"); } - SkString onShortName() override { - return SkString("imageblurclampmode"); - } - - SkISize onISize() override { - return SkISize::Make(850, 920); - } + SkISize getISize() override { return SkISize::Make(850, 920); } bool runAsBench() const override { return true; } @@ -84,17 +79,20 @@ class ImageBlurClampModeGM : public GM { canvas->save(); // x-only blur - filter = SkImageFilters::Blur(sigma, 0.0f, SkTileMode::kClamp, nullptr); + filter = SkImageFilters::Blur( + sigma, 0.0f, SkTileMode::kClamp, nullptr, image->bounds()); draw_image(canvas, image, std::move(filter)); canvas->translate(image->width() + 20, 0); // y-only blur - filter = SkImageFilters::Blur(0.0f, sigma, SkTileMode::kClamp, nullptr); + filter = SkImageFilters::Blur( + 0.0f, sigma, SkTileMode::kClamp, nullptr, image->bounds()); draw_image(canvas, image, std::move(filter)); canvas->translate(image->width() + 20, 0); // both directions - filter = SkImageFilters::Blur(sigma, sigma, SkTileMode::kClamp, nullptr); + filter = SkImageFilters::Blur( + sigma, sigma, SkTileMode::kClamp, nullptr, image->bounds()); draw_image(canvas, image, std::move(filter)); canvas->translate(image->width() + 20, 0); diff --git a/gm/imageblurrepeatmode.cpp b/gm/imageblurrepeatmode.cpp index ac0aef441d35..7e70c7fcd9a1 100644 --- a/gm/imageblurrepeatmode.cpp +++ b/gm/imageblurrepeatmode.cpp @@ -20,6 +20,7 @@ #include "include/core/SkString.h" #include "include/core/SkSurface.h" #include "include/effects/SkImageFilters.h" +#include "src/effects/imagefilters/SkCropImageFilter.h" #include "tools/ToolUtils.h" #include @@ -81,36 +82,35 @@ class ImageBlurRepeatModeGM : public GM { } protected: + SkString getName() const override { return SkString("imageblurrepeatmode"); } - SkString onShortName() override { - return SkString("imageblurrepeatmode"); - } - - SkISize onISize() override { - return SkISize::Make(850, 920); - } + SkISize getISize() override { return SkISize::Make(850, 920); } bool runAsBench() const override { return true; } void onDraw(SkCanvas* canvas) override { sk_sp image[] = { make_image(canvas, 1), make_image(canvas, 2), make_image(canvas, 3) }; + sk_sp filter; canvas->translate(0, 30); // Test different kernel size, including the one to launch 2d Gaussian // blur. for (auto sigma: { 0.6f, 3.0f, 8.0f, 20.0f }) { + // FIXME crops canvas->save(); - sk_sp filter( - SkImageFilters::Blur(sigma, 0.0f, SkTileMode::kRepeat, nullptr)); + filter = SkImageFilters::Blur( + sigma, 0.0f, SkTileMode::kRepeat, nullptr, image[0]->bounds()); draw_image(canvas, image[0], std::move(filter)); canvas->translate(image[0]->width() + 20, 0); - filter = SkImageFilters::Blur(0.0f, sigma, SkTileMode::kRepeat, nullptr); + filter = SkImageFilters::Blur( + 0.0f, sigma, SkTileMode::kRepeat, nullptr, image[1]->bounds()); draw_image(canvas, image[1], std::move(filter)); canvas->translate(image[1]->width() + 20, 0); - filter = SkImageFilters::Blur(sigma, sigma, SkTileMode::kRepeat, nullptr); + filter = SkImageFilters::Blur( + sigma, sigma, SkTileMode::kRepeat, nullptr, image[2]->bounds()); draw_image(canvas, image[2], std::move(filter)); canvas->translate(image[2]->width() + 20, 0); @@ -149,20 +149,31 @@ DEF_SIMPLE_GM(imageblurrepeatunclipped, canvas, 256, 128) { bmp.eraseArea(SkIRect::MakeXYWH(0, 10, 100, 10), SK_ColorBLUE); auto img = bmp.asImage(); - auto filter = SkImageFilters::Blur(0, 10, SkTileMode::kRepeat, nullptr); + // The blur filter uses a repeat crop applied to the image bounds to define the tiling geometry, + // but the crop IF is created directly since the tilemode factory for ::Blur also adds a kDecal + // post-crop that is undesired for this GM. + auto filter = SkImageFilters::Blur(0, 10, + SkMakeCropImageFilter(SkRect::Make(img->bounds()), SkTileMode::kRepeat, nullptr)); SkPaint paint; paint.setImageFilter(std::move(filter)); - // Draw the blurred image once + // Draw the blurred image once with a clip that shows the repeat is tiled several times. + // 3xsigma is used to match the historic, but underspecified behavior for when kRepeat was used + // with no crop rect (which must now be provided or kRepeat is ignored). canvas->translate(0, 50); - canvas->drawImage(img, 0, 0, SkSamplingOptions(), &paint); + canvas->save(); + canvas->clipIRect(img->bounds().makeOutset(0, 30)); + canvas->drawImage(img, 0, 0, SkSamplingOptions(), &paint); + canvas->restore(); // Draw the blurred image with a clip positioned such that the draw would be excluded except - // that the image filter causes it to intersect with the clip. Ideally should look like the - // left image, but clipped to the debug-black rectangle (Narrator: it does not look like that). + // that the image filter causes it to intersect with the clip. It should look like the + // left image, but clipped to the debug-black rectangle. canvas->translate(110, 0); - canvas->clipRect(SkRect::MakeXYWH(0, -30, 100, 10)); - canvas->drawImage(img, 0, 0, SkSamplingOptions(), &paint); + canvas->save(); + canvas->clipIRect(SkIRect::MakeXYWH(0, -30, 100, 10)); + canvas->drawImage(img, 0, 0, SkSamplingOptions(), &paint); + canvas->restore(); // Visualize the clip SkPaint line; diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp index e7bd15a9c214..9c4fb6ad41d8 100644 --- a/gm/imageblurtiled.cpp +++ b/gm/imageblurtiled.cpp @@ -31,13 +31,9 @@ class ImageBlurTiledGM : public GM { } protected: - SkString onShortName() override { - return SkString("imageblurtiled"); - } + SkString getName() const override { return SkString("imageblurtiled"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/imagefilters.cpp b/gm/imagefilters.cpp index e6ca38987491..d851b60ed4c7 100644 --- a/gm/imagefilters.cpp +++ b/gm/imagefilters.cpp @@ -152,8 +152,8 @@ static void draw_set(SkCanvas* canvas, sk_sp filters[], int count class SaveLayerWithBackdropGM : public skiagm::GM { protected: bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString("savelayer_with_backdrop"); } - SkISize onISize() override { return SkISize::Make(830, 550); } + SkString getName() const override { return SkString("savelayer_with_backdrop"); } + SkISize getISize() override { return SkISize::Make(830, 550); } void onDraw(SkCanvas* canvas) override { SkColorMatrix cm; diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp index 695e6cf35a13..9f40d009dd79 100644 --- a/gm/imagefiltersbase.cpp +++ b/gm/imagefiltersbase.cpp @@ -35,67 +35,6 @@ class SkReadBuffer; -class FailImageFilter : public SkImageFilter_Base { -public: - static sk_sp Make() { - return sk_sp(new FailImageFilter); - } - - SK_FLATTENABLE_HOOKS(FailImageFilter) -protected: - FailImageFilter() : INHERITED(nullptr, 0, nullptr) {} - - sk_sp onFilterImage(const skif::Context&, SkIPoint* offset) const override { - return nullptr; - } - -private: - - using INHERITED = SkImageFilter_Base; -}; - -sk_sp FailImageFilter::CreateProc(SkReadBuffer& buffer) { - SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 0); - return FailImageFilter::Make(); -} - -class IdentityImageFilter : public SkImageFilter_Base { -public: - static sk_sp Make(sk_sp input) { - return sk_sp(new IdentityImageFilter(std::move(input))); - } - - - SK_FLATTENABLE_HOOKS(IdentityImageFilter) -protected: - sk_sp onFilterImage(const skif::Context& ctx, SkIPoint* offset) const override { - offset->set(0, 0); - return sk_ref_sp(ctx.sourceImage()); - } - -private: - IdentityImageFilter(sk_sp input) : INHERITED(&input, 1, nullptr) {} - - using INHERITED = SkImageFilter_Base; -}; - -// Register these image filters as deserializable before main(). -namespace { - static struct Initializer { - Initializer() { - SK_REGISTER_FLATTENABLE(IdentityImageFilter); - SK_REGISTER_FLATTENABLE(FailImageFilter); - } - } initializer; -} // namespace - -sk_sp IdentityImageFilter::CreateProc(SkReadBuffer& buffer) { - SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); - return IdentityImageFilter::Make(common.getInput(0)); -} - -/////////////////////////////////////////////////////////////////////////////// - static void draw_paint(SkCanvas* canvas, SkImage*, const SkRect& r, sk_sp imf) { SkPaint paint; paint.setImageFilter(std::move(imf)); @@ -202,11 +141,9 @@ class ImageFiltersBaseGM : public skiagm::GM { ImageFiltersBaseGM () {} protected: - SkString onShortName() override { - return SkString("imagefiltersbase"); - } + SkString getName() const override { return SkString("imagefiltersbase"); } - SkISize onISize() override { return SkISize::Make(700, 500); } + SkISize getISize() override { return SkISize::Make(700, 500); } void draw_frame(SkCanvas* canvas, const SkRect& r) { SkPaint paint; @@ -229,8 +166,8 @@ class ImageFiltersBaseGM : public skiagm::GM { auto cf = SkColorFilters::Blend(SK_ColorRED, SkBlendMode::kSrcIn); sk_sp filters[] = { nullptr, - IdentityImageFilter::Make(nullptr), - FailImageFilter::Make(), + SkImageFilters::Offset(0.f, 0.f, nullptr), // "identity" + SkImageFilters::Empty(), SkImageFilters::ColorFilter(std::move(cf), nullptr), // The strange 0.29 value tickles an edge case where crop rect calculates // a small border, but the blur really needs no border. This tickles @@ -291,13 +228,13 @@ class ImageFiltersTextBaseGM : public skiagm::GM { ImageFiltersTextBaseGM(const char suffix[]) : fSuffix(suffix) {} protected: - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("%s_%s", "textfilter", fSuffix.c_str()); return name; } - SkISize onISize() override { return SkISize::Make(512, 342); } + SkISize getISize() override { return SkISize::Make(512, 342); } void drawWaterfall(SkCanvas* canvas, const SkPaint& paint) { static const SkFont::Edging kEdgings[3] = { diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp index 43d78743ffc4..d99ab34e08af 100644 --- a/gm/imagefiltersclipped.cpp +++ b/gm/imagefiltersclipped.cpp @@ -78,13 +78,9 @@ class ImageFiltersClippedGM : public GM { } protected: - SkString onShortName() override { - return SkString("imagefiltersclipped"); - } + SkString getName() const override { return SkString("imagefiltersclipped"); } - SkISize onISize() override { - return SkISize::Make(860, 500); - } + SkISize getISize() override { return SkISize::Make(860, 500); } void onOnceBeforeDraw() override { fCheckerboard = diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp index f70ecb9b4e43..2a577c95366e 100644 --- a/gm/imagefilterscropped.cpp +++ b/gm/imagefilterscropped.cpp @@ -76,11 +76,9 @@ class ImageFiltersCroppedGM : public skiagm::GM { ImageFiltersCroppedGM () {} protected: - SkString onShortName() override { - return SkString("imagefilterscropped"); - } + SkString getName() const override { return SkString("imagefilterscropped"); } - SkISize onISize() override { return SkISize::Make(400, 960); } + SkISize getISize() override { return SkISize::Make(400, 960); } void make_checkerboard() { auto surf = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(80, 80)); diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp index 793c69bf0979..6420007ac373 100644 --- a/gm/imagefiltersgraph.cpp +++ b/gm/imagefiltersgraph.cpp @@ -30,12 +30,9 @@ class ImageFiltersGraphGM : public skiagm::GM { ImageFiltersGraphGM() {} protected: + SkString getName() const override { return SkString("imagefiltersgraph"); } - SkString onShortName() override { - return SkString("imagefiltersgraph"); - } - - SkISize onISize() override { return SkISize::Make(600, 150); } + SkISize getISize() override { return SkISize::Make(600, 150); } void onOnceBeforeDraw() override { fImage = ToolUtils::create_string_image(100, 100, SK_ColorWHITE, 20, 70, 96, "e"); diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp index ad8247db4336..d46f06f42db2 100644 --- a/gm/imagefiltersscaled.cpp +++ b/gm/imagefiltersscaled.cpp @@ -61,14 +61,9 @@ class ImageFiltersScaledGM : public GM { } protected: + SkString getName() const override { return SkString("imagefiltersscaled"); } - SkString onShortName() override { - return SkString("imagefiltersscaled"); - } - - SkISize onISize() override { - return SkISize::Make(1428, 500); - } + SkISize getISize() override { return SkISize::Make(1428, 500); } void onOnceBeforeDraw() override { fCheckerboard = ToolUtils::create_checkerboard_image(64, 64, 0xFFA0A0A0, 0xFF404040, 8); diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp index 07c77afc24f4..42d4573ec7ae 100644 --- a/gm/imagefiltersstroked.cpp +++ b/gm/imagefiltersstroked.cpp @@ -31,14 +31,9 @@ class ImageFiltersStrokedGM : public GM { } protected: + SkString getName() const override { return SkString("imagefiltersstroked"); } - SkString onShortName() override { - return SkString("imagefiltersstroked"); - } - - SkISize onISize() override { - return SkISize::Make(860, 500); - } + SkISize getISize() override { return SkISize::Make(860, 500); } static void draw_circle(SkCanvas* canvas, const SkRect& r, const SkPaint& paint) { canvas->drawCircle(r.centerX(), r.centerY(), diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp index e43f110a223e..110f3c96b74a 100644 --- a/gm/imagefilterstransformed.cpp +++ b/gm/imagefilterstransformed.cpp @@ -64,10 +64,9 @@ class ImageFiltersTransformedGM : public GM { } protected: + SkString getName() const override { return SkString("imagefilterstransformed"); } - SkString onShortName() override { return SkString("imagefilterstransformed"); } - - SkISize onISize() override { return SkISize::Make(420, 240); } + SkISize getISize() override { return SkISize::Make(420, 240); } void onOnceBeforeDraw() override { fCheckerboard = @@ -174,13 +173,9 @@ class ImageFilterMatrixWLocalMatrix : public skiagm::GM { ImageFilterMatrixWLocalMatrix() : fDegrees(132.f) {} protected: - SkString onShortName() override { - return SkString("imagefilter_matrix_localmatrix"); - } + SkString getName() const override { return SkString("imagefilter_matrix_localmatrix"); } - SkISize onISize() override { - return SkISize::Make(512, 512); - } + SkISize getISize() override { return SkISize::Make(512, 512); } bool onAnimate(double nanos) override { // Animate the rotation angle to ensure the local matrix bounds modifications work @@ -227,13 +222,9 @@ class ImageFilterComposedTransform : public skiagm::GM { ImageFilterComposedTransform() : fDegrees(70.f) {} protected: - SkString onShortName() override { - return SkString("imagefilter_composed_transform"); - } + SkString getName() const override { return SkString("imagefilter_composed_transform"); } - SkISize onISize() override { - return SkISize::Make(512, 512); - } + SkISize getISize() override { return SkISize::Make(512, 512); } bool onAnimate(double nanos) override { // Animate the rotation angle to test a variety of transformations diff --git a/gm/imagefromyuvtextures.cpp b/gm/imagefromyuvtextures.cpp index 483e2f196d42..b0b9838749b6 100644 --- a/gm/imagefromyuvtextures.cpp +++ b/gm/imagefromyuvtextures.cpp @@ -42,11 +42,9 @@ class ImageFromYUVTextures : public GM { } protected: - SkString onShortName() override { - return SkString("image_from_yuv_textures"); - } + SkString getName() const override { return SkString("image_from_yuv_textures"); } - SkISize onISize() override { return {1420, 610}; } + SkISize getISize() override { return {1420, 610}; } static std::unique_ptr CreatePlanes(const char* name) { SkBitmap bmp; diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp index 81c43f745623..cd399f8f2948 100644 --- a/gm/imagemagnifier.cpp +++ b/gm/imagemagnifier.cpp @@ -100,8 +100,8 @@ class ImageMagnifierBounds : public skiagm::GM { ImageMagnifierBounds() : fX(0.f), fY(0.f) {} protected: - SkString onShortName() override { return SkString("imagemagnifier_bounds"); } - SkISize onISize() override { return SkISize::Make(768, 512); } + SkString getName() const override { return SkString("imagemagnifier_bounds"); } + SkISize getISize() override { return SkISize::Make(768, 512); } bool onAnimate(double nanos) override { fX = TimeUtils::SineWave(nanos, 10.f, 0.f, -200.f, 200.f); diff --git a/gm/imagemakewithfilter.cpp b/gm/imagemakewithfilter.cpp index dae6f369cab7..f84dccadec06 100644 --- a/gm/imagemakewithfilter.cpp +++ b/gm/imagemakewithfilter.cpp @@ -25,13 +25,18 @@ #include "include/core/SkString.h" #include "include/core/SkSurface.h" #include "include/core/SkTypes.h" - #include "include/effects/SkImageFilters.h" +#include "tools/Resources.h" +#include "tools/ToolUtils.h" +#if defined(SK_GANESH) #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/SkImageGanesh.h" +#endif -#include "tools/Resources.h" -#include "tools/ToolUtils.h" +#if defined(SK_GRAPHITE) +#include "include/gpu/graphite/Image.h" +#endif #include @@ -188,7 +193,7 @@ class ImageMakeWithFilterGM : public skiagm::GM { , fAuxImage(nullptr) {} protected: - SkString onShortName() override { + SkString getName() const override { SkString name = SkString("imagemakewithfilter"); if (fFilterWithCropRect) { @@ -200,7 +205,7 @@ class ImageMakeWithFilterGM : public skiagm::GM { return name; } - SkISize onISize() override { return SkISize::Make(1840, 860); } + SkISize getISize() override { return SkISize::Make(1840, 860); } void onOnceBeforeDraw() override { SkImageInfo info = SkImageInfo::MakeN32(100, 100, kUnpremul_SkAlphaType); @@ -367,9 +372,23 @@ class ImageMakeWithFilterGM : public skiagm::GM { SkIRect outSubset; SkIPoint offset; - auto rContext = canvas->recordingContext(); - result = mainImage->makeWithFilter(rContext, filter.get(), subset, clip, - &outSubset, &offset); +#if defined(SK_GANESH) + if (auto rContext = canvas->recordingContext()) { + result = SkImages::MakeWithFilter(rContext, mainImage, filter.get(), + subset, clip, &outSubset, &offset); + } else +#endif +#if defined(SK_GRAPHITE) + if (auto recorder = canvas->recorder()){ + result = SkImages::MakeWithFilter(recorder, mainImage, filter.get(), + subset, clip, &outSubset, &offset); + } else +#endif + { + result = SkImages::MakeWithFilter(mainImage, filter.get(), + subset, clip, &outSubset, &offset); + } + if (!result) { return; } diff --git a/gm/imagesource.cpp b/gm/imagesource.cpp index ca2d8b5c7b90..053edee67ba8 100644 --- a/gm/imagesource.cpp +++ b/gm/imagesource.cpp @@ -40,11 +40,9 @@ class ImageSourceGM : public skiagm::GM { ImageSourceGM() { } protected: - SkString onShortName() override { - return SkString("imagesource"); - } + SkString getName() const override { return SkString("imagesource"); } - SkISize onISize() override { return SkISize::Make(500, 150); } + SkISize getISize() override { return SkISize::Make(500, 150); } void onOnceBeforeDraw() override { fImage = ToolUtils::create_string_image(100, 100, 0xFFFFFFFF, 20, 70, 96, "e"); diff --git a/gm/imagesource2.cpp b/gm/imagesource2.cpp index 404582820bed..f19c372605bc 100644 --- a/gm/imagesource2.cpp +++ b/gm/imagesource2.cpp @@ -32,13 +32,13 @@ class ImageSourceGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("imagesrc2_"); name.append(fSuffix); return name; } - SkISize onISize() override { return SkISize::Make(256, 256); } + SkISize getISize() override { return SkISize::Make(256, 256); } // Create an image with high frequency vertical stripes void onOnceBeforeDraw() override { diff --git a/gm/internal_links.cpp b/gm/internal_links.cpp index 058e17f4a34a..39175359e5ae 100644 --- a/gm/internal_links.cpp +++ b/gm/internal_links.cpp @@ -31,9 +31,9 @@ namespace { class InternalLinksGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { return SkString("internal_links"); } + SkString getName() const override { return SkString("internal_links"); } - SkISize onISize() override { return {700, 500}; } + SkISize getISize() override { return {700, 500}; } void onDraw(SkCanvas* canvas) override { sk_sp name(SkData::MakeWithCString("target-a")); diff --git a/gm/jpg_color_cube.cpp b/gm/jpg_color_cube.cpp index b48c998ea700..42fe29032697 100644 --- a/gm/jpg_color_cube.cpp +++ b/gm/jpg_color_cube.cpp @@ -29,13 +29,9 @@ class ColorCubeGM : public GM { ColorCubeGM() {} protected: - SkString onShortName() override { - return SkString("jpg-color-cube"); - } + SkString getName() const override { return SkString("jpg-color-cube"); } - SkISize onISize() override { - return SkISize::Make(512, 512); - } + SkISize getISize() override { return SkISize::Make(512, 512); } void onOnceBeforeDraw() override { SkBitmap bmp; diff --git a/gm/kawase_blur_rt.cpp b/gm/kawase_blur_rt.cpp index 192f47d6213e..852a4c2d2fe6 100644 --- a/gm/kawase_blur_rt.cpp +++ b/gm/kawase_blur_rt.cpp @@ -173,8 +173,8 @@ class KawaseBlurFilter { class KawaseBlurRT : public skiagm::GM { public: KawaseBlurRT() {} - SkString onShortName() override { return SkString("kawase_blur_rt"); } - SkISize onISize() override { return {1280, 768}; } + SkString getName() const override { return SkString("kawase_blur_rt"); } + SkISize getISize() override { return {1280, 768}; } void onOnceBeforeDraw() override { fMandrill = GetResourceAsImage("images/mandrill_256.png"); diff --git a/gm/lattice.cpp b/gm/lattice.cpp index 93101f6028a1..06f33559229d 100644 --- a/gm/lattice.cpp +++ b/gm/lattice.cpp @@ -96,13 +96,9 @@ class LatticeGM : public skiagm::GM { LatticeGM() {} protected: - SkString onShortName() override { - return SkString("lattice"); - } + SkString getName() const override { return SkString("lattice"); } - SkISize onISize() override { - return SkISize::Make(800, 800); - } + SkISize getISize() override { return SkISize::Make(800, 800); } void onDrawHelper(GrDirectContext* dContext, SkCanvas* canvas, int padLeft, int padTop, int padRight, int padBottom) { @@ -230,13 +226,9 @@ DEF_GM( return new LatticeGM; ) class LatticeGM2 : public skiagm::GM { public: LatticeGM2() {} - SkString onShortName() override { - return SkString("lattice2"); - } + SkString getName() const override { return SkString("lattice2"); } - SkISize onISize() override { - return SkISize::Make(800, 800); - } + SkISize getISize() override { return SkISize::Make(800, 800); } sk_sp makeImage(SkCanvas* root, int padLeft, int padTop, int padRight, int padBottom) { const int kSize = 80; diff --git a/gm/lazytiling.cpp b/gm/lazytiling.cpp index 97a3852dc9a6..29e1cebf2b56 100644 --- a/gm/lazytiling.cpp +++ b/gm/lazytiling.cpp @@ -182,14 +182,11 @@ class LazyTilingGM : public GpuGM { } protected: - - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("lazytiling_%s", fOrigin == kTopLeft_GrSurfaceOrigin ? "tl" : "bl"); } - SkISize onISize() override { - return SkISize::Make(kTotalWidth, kTotalHeight); - } + SkISize getISize() override { return SkISize::Make(kTotalWidth, kTotalHeight); } DrawResult onGpuSetup(SkCanvas* canvas, SkString* errorMsg) override { auto dContext = GrAsDirectContext(canvas->recordingContext()); diff --git a/gm/lcdblendmodes.cpp b/gm/lcdblendmodes.cpp index 67d4a60242d9..1794f968f5dd 100644 --- a/gm/lcdblendmodes.cpp +++ b/gm/lcdblendmodes.cpp @@ -53,15 +53,13 @@ class LcdBlendGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("lcdblendmodes"); - } + SkString getName() const override { return SkString("lcdblendmodes"); } void onOnceBeforeDraw() override { fCheckerboard = ToolUtils::create_checkerboard_shader(SK_ColorBLACK, SK_ColorWHITE, 4); } - SkISize onISize() override { return SkISize::Make(kWidth, kHeight); } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { SkPaint p; diff --git a/gm/lcdoverlap.cpp b/gm/lcdoverlap.cpp index bcaccfb6fe02..52b22e0a7f6b 100644 --- a/gm/lcdoverlap.cpp +++ b/gm/lcdoverlap.cpp @@ -34,9 +34,7 @@ class LcdOverlapGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("lcdoverlap"); - } + SkString getName() const override { return SkString("lcdoverlap"); } void onOnceBeforeDraw() override { // build text blob @@ -50,7 +48,7 @@ class LcdOverlapGM : public skiagm::GM { fBlob = builder.make(); } - SkISize onISize() override { return SkISize::Make(kWidth, kHeight); } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void drawTestCase(SkCanvas* canvas, SkScalar x, SkScalar y, SkBlendMode mode, SkBlendMode mode2) { diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp index 8264a29b7812..0fce804f4648 100644 --- a/gm/lcdtext.cpp +++ b/gm/lcdtext.cpp @@ -23,9 +23,9 @@ class LcdTextGM : public skiagm::GM { static constexpr SkScalar kTextHeight = 36; SkScalar fY = kTextHeight; - SkString onShortName() override { return SkString("lcdtext"); } + SkString getName() const override { return SkString("lcdtext"); } - SkISize onISize() override { return {640, 480}; } + SkISize getISize() override { return {640, 480}; } void onDraw(SkCanvas* canvas) override { fY = kTextHeight; @@ -69,9 +69,9 @@ class LcdTextSizeGM : public skiagm::GM { canvas->concat(m); } - SkString onShortName() override { return SkString("lcdtextsize"); } + SkString getName() const override { return SkString("lcdtextsize"); } - SkISize onISize() override { return {320, 120}; } + SkISize getISize() override { return {320, 120}; } void onDraw(SkCanvas* canvas) override { const char* lcd_text = "LCD"; @@ -107,9 +107,9 @@ class LcdTextSizeGM : public skiagm::GM { class SaveLayerPreserveLCDTextGM : public skiagm::GM { static constexpr SkScalar kTextHeight = 36; - SkString onShortName() override { return SkString("savelayerpreservelcdtext"); } + SkString getName() const override { return SkString("savelayerpreservelcdtext"); } - SkISize onISize() override { return {620, 300}; } + SkISize getISize() override { return {620, 300}; } void onDraw(SkCanvas* canvas) override { drawText(canvas, SkString("SaveLayer PreserveLCDText"), 50, diff --git a/gm/lighting.cpp b/gm/lighting.cpp index 1d7823401888..c8cba00e611f 100644 --- a/gm/lighting.cpp +++ b/gm/lighting.cpp @@ -34,14 +34,9 @@ class ImageLightingGM : public GM { } protected: + SkString getName() const override { return SkString("lighting"); } - SkString onShortName() override { - return SkString("lighting"); - } - - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void drawClippedBitmap(SkCanvas* canvas, const SkPaint& paint, int x, int y) { canvas->save(); diff --git a/gm/localmatrixshader.cpp b/gm/localmatrixshader.cpp index 42f8473bd681..a49204e1fcbc 100644 --- a/gm/localmatrixshader.cpp +++ b/gm/localmatrixshader.cpp @@ -222,11 +222,9 @@ class LocalMatrixOrder : public GM { LocalMatrixOrder() {} protected: - SkString onShortName() override { - return SkString("localmatrix_order"); - } + SkString getName() const override { return SkString("localmatrix_order"); } - SkISize onISize() override { return SkISize::Make(500, 500); } + SkISize getISize() override { return SkISize::Make(500, 500); } void onOnceBeforeDraw() override { auto mandrill = GetResourceAsImage("images/mandrill_256.png"); // 256x256 diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp index e9236f0f0bf7..4dd234475a8b 100644 --- a/gm/lumafilter.cpp +++ b/gm/lumafilter.cpp @@ -114,13 +114,9 @@ class LumaFilterGM : public skiagm::GM { SkTileMode::kClamp); } - SkString onShortName() override { - return SkString("lumafilter"); - } + SkString getName() const override { return SkString("lumafilter"); } - SkISize onISize() override { - return SkISize::Make(600, 420); - } + SkISize getISize() override { return SkISize::Make(600, 420); } void onDraw(SkCanvas* canvas) override { SkBlendMode modes[] = { diff --git a/gm/mac_aa_explorer.cpp b/gm/mac_aa_explorer.cpp index 45e51f0c0023..f816baa58344 100644 --- a/gm/mac_aa_explorer.cpp +++ b/gm/mac_aa_explorer.cpp @@ -113,9 +113,9 @@ class MacAAFontsGM : public skiagm::GM { return DrawResult::kOk; } - SkISize onISize() override { return { 1024, 768 }; } + SkISize getISize() override { return {1024, 768}; } - SkString onShortName() override { return SkString("macaatest"); } + SkString getName() const override { return SkString("macaatest"); } bool onChar(SkUnichar uni) override { switch (uni) { diff --git a/gm/mandoline.cpp b/gm/mandoline.cpp index cd9705c42615..7bcc9bcd440b 100644 --- a/gm/mandoline.cpp +++ b/gm/mandoline.cpp @@ -142,13 +142,9 @@ class SliverPathsGM : public GM { } protected: - SkString onShortName() override { - return SkString("mandoline"); - } + SkString getName() const override { return SkString("mandoline"); } - SkISize onISize() override { - return SkISize::Make(560, 475); - } + SkISize getISize() override { return SkISize::Make(560, 475); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/manypathatlases.cpp b/gm/manypathatlases.cpp index da2ac65e9c94..77949d0711c9 100644 --- a/gm/manypathatlases.cpp +++ b/gm/manypathatlases.cpp @@ -29,8 +29,10 @@ class ManyPathAtlasesGM : public GM { public: ManyPathAtlasesGM(int maxAtlasSize) : fMaxAtlasSize(maxAtlasSize) {} private: - SkString onShortName() override { return SkStringPrintf("manypathatlases_%i", fMaxAtlasSize); } - SkISize onISize() override { return SkISize::Make(128, 128); } + SkString getName() const override { + return SkStringPrintf("manypathatlases_%i", fMaxAtlasSize); + } + SkISize getISize() override { return SkISize::Make(128, 128); } void modifyGrContextOptions(GrContextOptions* ctxOptions) override { // This will test the case where the atlas runs out of room if fMaxAtlasSize is small. diff --git a/gm/manypaths.cpp b/gm/manypaths.cpp index f5f38fafe04c..128ae6c35146 100644 --- a/gm/manypaths.cpp +++ b/gm/manypaths.cpp @@ -40,13 +40,9 @@ class ManyCirclesGM : public GM { static const int kWidth = 800; static const int kHeight = 600; - SkString onShortName() override { - return SkString("manycircles"); - } + SkString getName() const override { return SkString("manycircles"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { SkRandom rand(1); @@ -78,14 +74,9 @@ class ManyRRectsGM : public GM { } protected: + SkString getName() const override { return SkString("manyrrects"); } - SkString onShortName() override { - return SkString("manyrrects"); - } - - SkISize onISize() override { - return SkISize::Make(800, 300); - } + SkISize getISize() override { return SkISize::Make(800, 300); } void onDraw(SkCanvas* canvas) override { SkRandom rand(1); diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp index d1ba3b1dc028..d51ec63e3a89 100644 --- a/gm/matrixconvolution.cpp +++ b/gm/matrixconvolution.cpp @@ -23,7 +23,7 @@ #include "include/effects/SkGradientShader.h" #include "include/effects/SkImageFilters.h" #include "src/effects/imagefilters/SkCropImageFilter.h" -#include "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h" +#include "src/gpu/BlurUtils.h" #include "tools/ToolUtils.h" #include @@ -46,10 +46,7 @@ class MatrixConvolutionGM : public GM { } protected: - - SkString onShortName() override { - return SkStringPrintf("matrixconvolution%s", fNameSuffix); - } + SkString getName() const override { return SkStringPrintf("matrixconvolution%s", fNameSuffix); } void makeBitmap() { // Draw our bitmap in N32, so legacy devices get "premul" values they understand @@ -66,9 +63,7 @@ class MatrixConvolutionGM : public GM { fImage = surf->makeImageSnapshot(); } - SkISize onISize() override { - return SkISize::Make(500, 300); - } + SkISize getISize() override { return SkISize::Make(500, 300); } sk_sp makeFilter(const SkIPoint &kernelOffset, SkTileMode tileMode, @@ -85,7 +80,8 @@ class MatrixConvolutionGM : public GM { kernelOffset, tileMode, convolveAlpha, nullptr, tileBoundary); } case kLarge_KernelFixture: { - static_assert(49 > GrMatrixConvolutionEffect::kMaxUniformSize); + // This ensures the texture fallback path will be taken + static_assert(49 > skgpu::kMaxBlurSamples); // All 1s except center value, which is -47 (sum of 1). std::vector kernel(49, SkIntToScalar(1)); kernel[24] = SkIntToScalar(-47); diff --git a/gm/mesh.cpp b/gm/mesh.cpp index e5adc6cd7f91..c3cdce8e2b36 100644 --- a/gm/mesh.cpp +++ b/gm/mesh.cpp @@ -33,7 +33,7 @@ class MeshGM : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {435, 1180}; } + SkISize getISize() override { return {435, 1180}; } void onOnceBeforeDraw() override { { @@ -139,7 +139,7 @@ class MeshGM : public skiagm::GM { this->ensureBuffers(); } - SkString onShortName() override { return SkString("custommesh"); } + SkString getName() const override { return SkString("custommesh"); } DrawResult onDraw(SkCanvas* canvas, SkString*) override { int i = 0; @@ -340,7 +340,7 @@ class MeshColorSpaceGM : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {468, 258}; } + SkISize getISize() override { return {468, 258}; } void onOnceBeforeDraw() override { static const Attribute kAttributes[]{ @@ -403,7 +403,7 @@ class MeshColorSpaceGM : public skiagm::GM { fVB = SkMeshes::MakeVertexBuffer(kQuad, sizeof(kQuad)); } - SkString onShortName() override { return SkString("custommesh_cs"); } + SkString getName() const override { return SkString("custommesh_cs"); } DrawResult onDraw(SkCanvas* canvas, SkString* error) override { // Force an intermediate surface if the canvas is in "legacy" mode @@ -507,7 +507,7 @@ class MeshUniformsGM : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {140, 250}; } + SkISize getISize() override { return {140, 250}; } void onOnceBeforeDraw() override { static const Attribute kAttributes[]{ @@ -561,7 +561,7 @@ class MeshUniformsGM : public skiagm::GM { fVB = SkMeshes::MakeVertexBuffer(kQuad, sizeof(kQuad)); } - SkString onShortName() override { return SkString("custommesh_uniforms"); } + SkString getName() const override { return SkString("custommesh_uniforms"); } DrawResult onDraw(SkCanvas* canvas, SkString* error) override { SkMatrix matrices[] { @@ -671,7 +671,7 @@ class MeshUpdateGM : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {270, 490}; } + SkISize getISize() override { return {270, 490}; } void onOnceBeforeDraw() override { static const Attribute kAttributes[]{ @@ -712,7 +712,7 @@ class MeshUpdateGM : public skiagm::GM { SkTileMode::kClamp, SkTileMode::kClamp, SkFilterMode::kLinear); } - SkString onShortName() override { return SkString("mesh_updates"); } + SkString getName() const override { return SkString("mesh_updates"); } DrawResult onDraw(SkCanvas* canvas, SkString* error) override { canvas->clear(SK_ColorBLACK); @@ -880,7 +880,7 @@ class MeshZeroInitGM : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {90, 30}; } + SkISize getISize() override { return {90, 30}; } void onOnceBeforeDraw() override { static const Attribute kAttributes1[]{ @@ -931,7 +931,7 @@ class MeshZeroInitGM : public skiagm::GM { fSpec[1] = std::move(result.specification); } - SkString onShortName() override { return SkString("mesh_zero_init"); } + SkString getName() const override { return SkString("mesh_zero_init"); } DrawResult onDraw(SkCanvas* canvas, SkString* error) override { GrRecordingContext* rc = canvas->recordingContext(); @@ -1027,7 +1027,7 @@ class PictureMesh : public skiagm::GM { using Attribute = SkMeshSpecification::Attribute; using Varying = SkMeshSpecification::Varying; - SkISize onISize() override { return {390, 90}; } + SkISize getISize() override { return {390, 90}; } void onOnceBeforeDraw() override { static const Attribute kAttributes[]{ @@ -1092,7 +1092,7 @@ class PictureMesh : public skiagm::GM { /*localMatrix=*/nullptr); } - SkString onShortName() override { return SkString("picture_mesh"); } + SkString getName() const override { return SkString("picture_mesh"); } DrawResult onDraw(SkCanvas* canvas, SkString* error) override { SkPaint paint; diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp index a84726e25382..282a34b40b13 100644 --- a/gm/mixedtextblobs.cpp +++ b/gm/mixedtextblobs.cpp @@ -103,13 +103,9 @@ class MixedTextBlobsGM : public GM { fBlob = builder.make(); } - SkString onShortName() override { - return SkString("mixedtextblobs"); - } + SkString getName() const override { return SkString("mixedtextblobs"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/mixercolorfilter.cpp b/gm/mixercolorfilter.cpp index 045136938dd9..953e9a25798f 100644 --- a/gm/mixercolorfilter.cpp +++ b/gm/mixercolorfilter.cpp @@ -71,11 +71,9 @@ class MixerCFGM final : public skiagm::GM { , fTileCount(tileCount) {} protected: - SkString onShortName() override { - return SkString("mixerCF"); - } + SkString getName() const override { return SkString("mixerCF"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(fTileSize.width() * 1.2f * fTileCount, fTileSize.height() * 1.2f * 3); // 3 rows } diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp index 9c17ed29e1b8..517866996c80 100644 --- a/gm/modecolorfilters.cpp +++ b/gm/modecolorfilters.cpp @@ -73,13 +73,9 @@ class ModeColorFilterGM : public GM { } protected: - SkString onShortName() override { - return SkString("modecolorfilters"); - } + SkString getName() const override { return SkString("modecolorfilters"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onDraw(SkCanvas* canvas) override { // size of rect for each test case diff --git a/gm/morphology.cpp b/gm/morphology.cpp index 6bb56a257a69..a8e10b65341c 100644 --- a/gm/morphology.cpp +++ b/gm/morphology.cpp @@ -32,9 +32,7 @@ class MorphologyGM : public GM { } protected: - SkString onShortName() override { - return SkString("morphology"); - } + SkString getName() const override { return SkString("morphology"); } void onOnceBeforeDraw() override { auto surf = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(135, 135)); @@ -48,9 +46,7 @@ class MorphologyGM : public GM { fImage = surf->makeImageSnapshot(); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void drawClippedBitmap(SkCanvas* canvas, const SkPaint& paint, int x, int y) { canvas->save(); diff --git a/gm/nested.cpp b/gm/nested.cpp index b50cd413ba23..19b0121ea542 100644 --- a/gm/nested.cpp +++ b/gm/nested.cpp @@ -28,8 +28,7 @@ class NestedGM : public GM { } protected: - - SkString onShortName() override { + SkString getName() const override { SkString name("nested"); if (fFlipped) { name.append("_flipY"); @@ -42,9 +41,7 @@ class NestedGM : public GM { return name; } - SkISize onISize() override { - return SkISize::Make(kImageWidth, kImageHeight); - } + SkISize getISize() override { return SkISize::Make(kImageWidth, kImageHeight); } enum Shapes { kRect_Shape = 0, diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp index 6ae717b14013..a163023e7d07 100644 --- a/gm/ninepatchstretch.cpp +++ b/gm/ninepatchstretch.cpp @@ -61,13 +61,9 @@ class NinePatchStretchGM : public skiagm::GM { NinePatchStretchGM() {} protected: - SkString onShortName() override { - return SkString("ninepatch-stretch"); - } + SkString getName() const override { return SkString("ninepatch-stretch"); } - SkISize onISize() override { - return SkISize::Make(760, 800); - } + SkISize getISize() override { return SkISize::Make(760, 800); } void onDraw(SkCanvas* canvas) override { if (!fImage || !fImage->isValid(canvas->recordingContext())) { diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp index 05519641b42d..a42a5a9c7edf 100644 --- a/gm/nonclosedpaths.cpp +++ b/gm/nonclosedpaths.cpp @@ -37,15 +37,10 @@ class NonClosedPathsGM: public GM { }; protected: - - SkString onShortName() override { - return SkString("nonclosedpaths"); - } + SkString getName() const override { return SkString("nonclosedpaths"); } // 12 * 18 + 3 cases, every case is 100 * 100 pixels. - SkISize onISize() override { - return SkISize::Make(1220, 1920); - } + SkISize getISize() override { return SkISize::Make(1220, 1920); } // Use rect-like geometry for non-closed path, for right angles make it // easier to show the visual difference of lineCap and lineJoin. diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp index 63908d8d5e9f..a08f50831a4f 100644 --- a/gm/offsetimagefilter.cpp +++ b/gm/offsetimagefilter.cpp @@ -35,13 +35,9 @@ class OffsetImageFilterGM : public skiagm::GM { } protected: - SkString onShortName() override { - return SkString("offsetimagefilter"); - } + SkString getName() const override { return SkString("offsetimagefilter"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onOnceBeforeDraw() override { fBitmap = ToolUtils::create_string_image(80, 80, 0xD000D000, 15, 65, 96, "e"); @@ -107,11 +103,9 @@ class SimpleOffsetImageFilterGM : public skiagm::GM { SimpleOffsetImageFilterGM() {} protected: - SkString onShortName() override { - return SkString("simple-offsetimagefilter"); - } + SkString getName() const override { return SkString("simple-offsetimagefilter"); } - SkISize onISize() override { return SkISize::Make(640, 200); } + SkISize getISize() override { return SkISize::Make(640, 200); } void doDraw(SkCanvas* canvas, const SkRect& r, sk_sp imgf, const SkIRect* cropR = nullptr, const SkRect* clipR = nullptr) { diff --git a/gm/ovals.cpp b/gm/ovals.cpp index 715091de63e1..1e7af74c2a92 100644 --- a/gm/ovals.cpp +++ b/gm/ovals.cpp @@ -36,14 +36,9 @@ class OvalGM : public GM { } protected: + SkString getName() const override { return SkString("ovals"); } - SkString onShortName() override { - return SkString("ovals"); - } - - SkISize onISize() override { - return SkISize::Make(1200, 900); - } + SkISize getISize() override { return SkISize::Make(1200, 900); } void makePaints() { { diff --git a/gm/overdrawcolorfilter.cpp b/gm/overdrawcolorfilter.cpp index fcf53371320a..ce0c28372b09 100644 --- a/gm/overdrawcolorfilter.cpp +++ b/gm/overdrawcolorfilter.cpp @@ -31,11 +31,9 @@ static inline void set_bitmap(SkBitmap* bitmap, uint8_t alpha) { } struct OverdrawColorFilter : public skiagm::GM { - SkString onShortName() override { - return SkString{"overdrawcolorfilter"}; - } + SkString getName() const override { return SkString{"overdrawcolorfilter"}; } - SkISize onISize() override { return {200, 400}; } + SkISize getISize() override { return {200, 400}; } void onDraw(SkCanvas* canvas) override { static const SkColor colors[SkOverdrawColorFilter::kNumColors] = { diff --git a/gm/palette.cpp b/gm/palette.cpp index ae7dc5486647..40d71d9c7945 100644 --- a/gm/palette.cpp +++ b/gm/palette.cpp @@ -92,12 +92,12 @@ class FontPaletteGM : public GM { GetResourceAsStream(kColrCpalTestFontPath), paletteArguments); } - SkString onShortName() override { + SkString getName() const override { SkString gm_name = SkStringPrintf("font_palette_%s", fName.c_str()); return gm_name; } - SkISize onISize() override { return SkISize::Make(1000, 400); } + SkISize getISize() override { return SkISize::Make(1000, 400); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { canvas->drawColor(SK_ColorWHITE); diff --git a/gm/pathcontourstart.cpp b/gm/pathcontourstart.cpp index cf92309d09f0..73a17d231dec 100644 --- a/gm/pathcontourstart.cpp +++ b/gm/pathcontourstart.cpp @@ -48,11 +48,9 @@ class ContourStartGM : public GM { fRect = SkRect::MakeLTRB(10, 10, 100, 70); } - SkString onShortName() override { - return SkString("contour_start"); - } + SkString getName() const override { return SkString("contour_start"); } - SkISize onISize() override { return SkISize::Make(kImageWidth, kImageHeight); } + SkISize getISize() override { return SkISize::Make(kImageWidth, kImageHeight); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp index 045b765b8335..6cd74d1a417e 100644 --- a/gm/patheffects.cpp +++ b/gm/patheffects.cpp @@ -117,12 +117,9 @@ class PathEffectGM : public GM { PathEffectGM() {} protected: + SkString getName() const override { return SkString("patheffect"); } - SkString onShortName() override { - return SkString("patheffect"); - } - - SkISize onISize() override { return SkISize::Make(800, 600); } + SkISize getISize() override { return SkISize::Make(800, 600); } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -184,12 +181,9 @@ class ComboPathEfectsGM : public skiagm::GM { ComboPathEfectsGM() {} protected: + SkString getName() const override { return SkString("combo-patheffects"); } - SkString onShortName() override { - return SkString("combo-patheffects"); - } - - SkISize onISize() override { return SkISize::Make(360, 630); } + SkISize getISize() override { return SkISize::Make(360, 630); } void onDraw(SkCanvas* canvas) override { SkPath path0 = SkPath::Circle(100, 100, 60), @@ -362,9 +356,9 @@ sk_sp StrokeLineInflated::CreateProc(SkReadBuffer&) { return null class CTMPathEffectGM : public skiagm::GM { protected: - SkString onShortName() override { return SkString("ctmpatheffect"); } + SkString getName() const override { return SkString("ctmpatheffect"); } - SkISize onISize() override { return SkISize::Make(800, 600); } + SkISize getISize() override { return SkISize::Make(800, 600); } // TODO: ctm-aware path effects are currently CPU only DrawResult onGpuSetup(SkCanvas* canvas, SkString*) override { diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp index caa6641e3d59..1e1be050d16d 100644 --- a/gm/pathfill.cpp +++ b/gm/pathfill.cpp @@ -317,14 +317,9 @@ class PathFillGM : public skiagm::GM { fVisualizerPath = make_visualizer(); } + SkString getName() const override { return SkString("pathfill"); } - SkString onShortName() override { - return SkString("pathfill"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -367,13 +362,9 @@ class PathInverseFillGM : public skiagm::GM { } } - SkString onShortName() override { - return SkString("pathinvfill"); - } + SkString getName() const override { return SkString("pathinvfill"); } - SkISize onISize() override { - return SkISize::Make(450, 220); - } + SkISize getISize() override { return SkISize::Make(450, 220); } static void show(SkCanvas* canvas, const SkPath& path, const SkPaint& paint, const SkRect* clip, SkScalar top, const SkScalar bottom) { diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp index 636e5f5b942e..72f530b6dbee 100644 --- a/gm/pathinterior.cpp +++ b/gm/pathinterior.cpp @@ -29,13 +29,9 @@ class PathInteriorGM : public skiagm::GM { } protected: - SkISize onISize() override { - return SkISize::Make(770, 770); - } + SkISize getISize() override { return SkISize::Make(770, 770); } - SkString onShortName() override { - return SkString("pathinterior"); - } + SkString getName() const override { return SkString("pathinterior"); } void show(SkCanvas* canvas, const SkPath& path) { SkPaint paint; diff --git a/gm/pathmaskcache.cpp b/gm/pathmaskcache.cpp index 866df55946eb..8b3d92a1c5fa 100644 --- a/gm/pathmaskcache.cpp +++ b/gm/pathmaskcache.cpp @@ -26,11 +26,9 @@ class PathMaskCache : public skiagm::GM { PathMaskCache() {} protected: - SkString onShortName() override { return SkString("path_mask_cache"); } + SkString getName() const override { return SkString("path_mask_cache"); } - SkISize onISize() override { - return SkISize::Make(650, 950); - } + SkISize getISize() override { return SkISize::Make(650, 950); } void onDraw(SkCanvas* canvas) override { static constexpr SkScalar kPad = 5.f; diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp index c52a88f37f1f..d704450a1f03 100644 --- a/gm/pathopsinverse.cpp +++ b/gm/pathopsinverse.cpp @@ -57,13 +57,9 @@ class PathOpsInverseGM : public GM { paint->setColor(color); } - SkString onShortName() override { - return SkString("pathopsinverse"); - } + SkString getName() const override { return SkString("pathopsinverse"); } - SkISize onISize() override { - return SkISize::Make(1200, 900); - } + SkISize getISize() override { return SkISize::Make(1200, 900); } void onDraw(SkCanvas* canvas) override { SkPath one, two; diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp index 438d85ee61cc..a71a6110a8c1 100644 --- a/gm/perlinnoise.cpp +++ b/gm/perlinnoise.cpp @@ -55,9 +55,9 @@ class PerlinNoiseGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(0xFF000000); } - SkString onShortName() override { return SkString("perlinnoise"); } + SkString getName() const override { return SkString("perlinnoise"); } - SkISize onISize() override { return {200, 500}; } + SkISize getISize() override { return {200, 500}; } void drawRect(SkCanvas* canvas, int x, int y, const SkPaint& paint, const SkISize& size) { canvas->save(); @@ -132,9 +132,9 @@ class PerlinNoiseGM : public skiagm::GM { class PerlinNoiseLocalMatrixGM : public skiagm::GM { SkISize fSize = {80, 80}; - SkString onShortName() override { return SkString("perlinnoise_localmatrix"); } + SkString getName() const override { return SkString("perlinnoise_localmatrix"); } - SkISize onISize() override { return {640, 480}; } + SkISize getISize() override { return {640, 480}; } void onDraw(SkCanvas* canvas) override { canvas->translate(10, 10); @@ -196,10 +196,11 @@ class PerlinNoiseRotatedGM : public skiagm::GM { static constexpr int kCellsX = 3; static constexpr int kCellsY = 2; - SkString onShortName() override { return SkString("perlinnoise_rotated"); } + SkString getName() const override { return SkString("perlinnoise_rotated"); } - SkISize onISize() override { return { 2*kPad + kCellsX*kCellSize.width(), - 2*kPad + kCellsY*kCellSize.height() }; } + SkISize getISize() override { + return {2 * kPad + kCellsX * kCellSize.width(), 2 * kPad + kCellsY * kCellSize.height()}; + } void onDraw(SkCanvas* canvas) override { SkPaint outline; @@ -247,9 +248,9 @@ class PerlinNoiseRotatedGM : public skiagm::GM { // Demonstrate skbug.com/14411 (Intel GPUs show artifacts when applying perlin noise to layers) class PerlinNoiseLayeredGM : public skiagm::GM { - SkString onShortName() override { return SkString("perlinnoise_layered"); } + SkString getName() const override { return SkString("perlinnoise_layered"); } - SkISize onISize() override { return {500, 500}; } + SkISize getISize() override { return {500, 500}; } void onDraw(SkCanvas* canvas) override { const sk_sp perlin = SkImageFilters::ColorFilter( diff --git a/gm/perspimages.cpp b/gm/perspimages.cpp index 3d5f9c4c16e3..764bc74edc7e 100644 --- a/gm/perspimages.cpp +++ b/gm/perspimages.cpp @@ -37,9 +37,9 @@ class PerspImages : public GM { PerspImages() = default; protected: - SkString onShortName() override { return SkString("persp_images"); } + SkString getName() const override { return SkString("persp_images"); } - SkISize onISize() override { return SkISize::Make(1150, 1280); } + SkISize getISize() override { return SkISize::Make(1150, 1280); } void onOnceBeforeDraw() override { fImages.push_back(make_image1()); diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp index 7fd0dad1b284..9f2f465e7680 100644 --- a/gm/perspshaders.cpp +++ b/gm/perspshaders.cpp @@ -43,14 +43,14 @@ class PerspShadersGM : public GM { PerspShadersGM(bool doAA) : fDoAA(doAA) { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("persp_shaders_%s", fDoAA ? "aa" : "bw"); return name; } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kCellSize*kNumCols, kCellSize*kNumRows); } diff --git a/gm/persptext.cpp b/gm/persptext.cpp index e09d7fa9f2d8..fa9b7ba65678 100644 --- a/gm/persptext.cpp +++ b/gm/persptext.cpp @@ -33,16 +33,13 @@ class PerspTextGM : public skiagm::GM { } protected: - - SkString onShortName() override { + SkString getName() const override { return SkString(fMinimal ? "persptext_minimal" : "persptext"); } - SkISize onISize() override { - return SkISize::Make(1024, 768); - } + SkISize getISize() override { return SkISize::Make(1024, 768); } -//#define TEST_PERSP_CHECK + // #define TEST_PERSP_CHECK void onDraw(SkCanvas* canvas) override { diff --git a/gm/picture.cpp b/gm/picture.cpp index 18c4d38acd99..6b5fa23ddf52 100644 --- a/gm/picture.cpp +++ b/gm/picture.cpp @@ -55,13 +55,9 @@ class PictureGM : public skiagm::GM { fPicture = make_picture(); } - SkString onShortName() override { - return SkString("pictures"); - } + SkString getName() const override { return SkString("pictures"); } - SkISize onISize() override { - return SkISize::Make(450, 120); - } + SkISize getISize() override { return SkISize::Make(450, 120); } void onDraw(SkCanvas* canvas) override { canvas->translate(10, 10); @@ -123,13 +119,9 @@ class PictureCullRectGM : public skiagm::GM { SkASSERT(fPicture->cullRect().top() == 80); } - SkString onShortName() override { - return SkString("picture_cull_rect"); - } + SkString getName() const override { return SkString("picture_cull_rect"); } - SkISize onISize() override { - return SkISize::Make(120, 120); - } + SkISize getISize() override { return SkISize::Make(120, 120); } void onDraw(SkCanvas* canvas) override { canvas->clipRect(SkRect::MakeLTRB(0, 60, 120, 120)); diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp index 3ec0cba64f8f..f63d80aca0cd 100644 --- a/gm/pictureimagefilter.cpp +++ b/gm/pictureimagefilter.cpp @@ -66,11 +66,9 @@ class PictureImageFilterGM : public skiagm::GM { PictureImageFilterGM() { } protected: - SkString onShortName() override { - return SkString("pictureimagefilter"); - } + SkString getName() const override { return SkString("pictureimagefilter"); } - SkISize onISize() override { return SkISize::Make(600, 300); } + SkISize getISize() override { return SkISize::Make(600, 300); } void onOnceBeforeDraw() override { fPicture = make_picture(); diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp index 685e3ca3770d..672caa978635 100644 --- a/gm/pictureimagegenerator.cpp +++ b/gm/pictureimagegenerator.cpp @@ -118,13 +118,9 @@ static void draw_vector_logo(SkCanvas* canvas, const SkRect& viewBox) { // (in particular its matrix vs. bounds semantics). class PictureGeneratorGM : public skiagm::GM { protected: - SkString onShortName() override { - return SkString("pictureimagegenerator"); - } + SkString getName() const override { return SkString("pictureimagegenerator"); } - SkISize onISize() override { - return SkISize::Make(1160, 860); - } + SkISize getISize() override { return SkISize::Make(1160, 860); } void onOnceBeforeDraw() override { const SkRect rect = SkRect::MakeWH(kPictureWidth, kPictureHeight); diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp index 2aca7365a5e7..958ec4992c65 100644 --- a/gm/pictureshader.cpp +++ b/gm/pictureshader.cpp @@ -59,16 +59,13 @@ class PictureShaderGM : public skiagm::GM { this->drawTile(&bitmapCanvas); } - - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("pictureshader%s%s", fUseLocalMatrixWrapper ? "_localwrapper" : "", fAlpha < 1 ? "_alpha" : ""); } - SkISize onISize() override { - return SkISize::Make(1400, 1450); - } + SkISize getISize() override { return SkISize::Make(1400, 1450); } void onDraw(SkCanvas* canvas) override { this->drawSceneColumn(canvas, SkPoint::Make(0, 0), 1, 1, 0); diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp index cf79826d0f6e..9ce49e99e596 100644 --- a/gm/pictureshadercache.cpp +++ b/gm/pictureshadercache.cpp @@ -57,13 +57,9 @@ class PictureShaderCacheGM : public skiagm::GM { fPicture = recorder.finishRecordingAsPicture(); } - SkString onShortName() override { - return SkString("pictureshadercache"); - } + SkString getName() const override { return SkString("pictureshadercache"); } - SkISize onISize() override { - return SkISize::Make(100, 100); - } + SkISize getISize() override { return SkISize::Make(100, 100); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/pictureshadertile.cpp b/gm/pictureshadertile.cpp index 5d2a81a67bf2..782fa5d79f0e 100644 --- a/gm/pictureshadertile.cpp +++ b/gm/pictureshadertile.cpp @@ -93,14 +93,9 @@ static void draw_scene(SkCanvas* canvas, SkScalar pictureSize) { class PictureShaderTileGM : public skiagm::GM { protected: + SkString getName() const override { return SkString("pictureshadertile"); } - SkString onShortName() override { - return SkString("pictureshadertile"); - } - - SkISize onISize() override { - return SkISize::Make(800, 600); - } + SkISize getISize() override { return SkISize::Make(800, 600); } void onOnceBeforeDraw() override { SkPictureRecorder recorder; diff --git a/gm/png_codec.bzl b/gm/png_codec.bzl new file mode 100644 index 000000000000..5573984647c7 --- /dev/null +++ b/gm/png_codec.bzl @@ -0,0 +1,181 @@ +"""This module defines the png_codec_tests macro.""" + +load("//bazel:cc_test_with_flags.bzl", "cc_test_with_flags") + +# These lists of lists are shaped as follows: +# +# [images, decode_mode, dst_color_type, dst_alpha_type, surface_config] +# +# For each such list, we will define a test that decodes each image into an SkImage using +# SkPngDecoder. The decode mode, destination color type and alpha type are specified via the +# decode_mode, dst_color_type and dst_alpha_type fields, respectively. The resulting image is then +# drawn into an SkSurface specified via the surface_config field, and is saved as an undeclared +# test output which may be uploaded to Gold. See //gm/BazelGMRunner.cpp for more details. +# +# Some combinations of parameters are excluded because they are mutually incompatible or redundant. +_GRAYSCALE_8888_TESTS = [ + [ + "@skimage//:dm_pngs_gray8_opaque", + decode_mode, + dst_color_type, + "premul", + "8888", + ] + for decode_mode in ["get-all-pixels", "incremental", "zero-init"] + for dst_color_type in ["force-grayscale", "force-nonnative-premul-color", "get-from-canvas"] +] +_GRAYSCALE_565_TESTS = [ + [ + "@skimage//:dm_pngs_gray8_opaque", + decode_mode, + "get-from-canvas", + "premul", + "565", + ] + for decode_mode in ["get-all-pixels", "incremental", "zero-init"] +] +_COLOR_TRANSLUCENT_TESTS = [ + [ + "@skimage//:dm_pngs_rgba8888_translucent", + decode_mode, + dst_color_type, + dst_alpha_type, + "8888", + ] + for decode_mode in ["get-all-pixels", "incremental", "zero-init"] + for dst_color_type in ["force-nonnative-premul-color", "get-from-canvas"] + for dst_alpha_type in ["premul", "unpremul"] +] +_COLOR_OPAQUE_8888_TESTS = [ + [ + "@skimage//:dm_pngs_rgba8888_opaque", + decode_mode, + dst_color_type, + "premul", + "8888", + ] + for decode_mode in ["get-all-pixels", "incremental", "zero-init"] + for dst_color_type in ["force-nonnative-premul-color", "get-from-canvas"] +] +_COLOR_OPAQUE_565_TESTS = [ + [ + "@skimage//:dm_pngs_rgba8888_opaque", + decode_mode, + "get-from-canvas", + "premul", + "565", + ] + for decode_mode in ["get-all-pixels", "incremental", "zero-init"] +] +_TESTS = ( + _GRAYSCALE_8888_TESTS + + _GRAYSCALE_565_TESTS + + _COLOR_TRANSLUCENT_TESTS + + _COLOR_OPAQUE_8888_TESTS + + _COLOR_OPAQUE_565_TESTS +) + +def png_codec_tests(name): + """Generates various cc_test_with_flags targets for png_codec.cpp. + + Args: + name: The name of the test_suite to generate. + """ + + all_tests = [] + + for images, decode_mode, dst_color_type, dst_alpha_type, surface_config in _TESTS: + test_name = "png_codec_%s_%s_%s_%s_%s_test" % ( + images.replace("@skimage//:dm_pngs_", "").replace("_", "-"), + decode_mode, + dst_color_type, + dst_alpha_type, + surface_config, + ) + all_tests.append(test_name) + + cc_test_with_flags( + name = test_name, + size = "large", + srcs = [ + "BazelGMRunner.cpp", + "png_codec.cpp", + ], + args = [ + "--surfaceConfig", + surface_config, + "--pngCodecGMImages", + "external/skimage/dm", + "--pngCodecDecodeMode", + decode_mode, + "--pngCodecDstColorType", + dst_color_type, + "--pngCodecDstAlphaType", + dst_alpha_type, + ], + data = [images], + set_flags = { + "include_decoder": [ + "png_decode_codec", + ], + }, + deps = [":tests_base"], + ) + + native.test_suite( + name = name, + tests = all_tests, + ) + + # List all generated target names for greppability. + # + # Editing this list does not by itself affect which targets are generated. Instead, edit the + # list comprehensions at the top of this file, try to run a target with Bazel, and update this + # list as instructed in the "out of sync" error message produced by the below fail() statement. + greppable_test_list = [ + "png_codec_gray8-opaque_get-all-pixels_force-grayscale_premul_8888_test", + "png_codec_gray8-opaque_get-all-pixels_force-nonnative-premul-color_premul_8888_test", + "png_codec_gray8-opaque_get-all-pixels_get-from-canvas_premul_8888_test", + "png_codec_gray8-opaque_incremental_force-grayscale_premul_8888_test", + "png_codec_gray8-opaque_incremental_force-nonnative-premul-color_premul_8888_test", + "png_codec_gray8-opaque_incremental_get-from-canvas_premul_8888_test", + "png_codec_gray8-opaque_zero-init_force-grayscale_premul_8888_test", + "png_codec_gray8-opaque_zero-init_force-nonnative-premul-color_premul_8888_test", + "png_codec_gray8-opaque_zero-init_get-from-canvas_premul_8888_test", + "png_codec_gray8-opaque_get-all-pixels_get-from-canvas_premul_565_test", + "png_codec_gray8-opaque_incremental_get-from-canvas_premul_565_test", + "png_codec_gray8-opaque_zero-init_get-from-canvas_premul_565_test", + "png_codec_rgba8888-translucent_get-all-pixels_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-translucent_get-all-pixels_force-nonnative-premul-color_unpremul_8888_test", + "png_codec_rgba8888-translucent_get-all-pixels_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-translucent_get-all-pixels_get-from-canvas_unpremul_8888_test", + "png_codec_rgba8888-translucent_incremental_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-translucent_incremental_force-nonnative-premul-color_unpremul_8888_test", + "png_codec_rgba8888-translucent_incremental_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-translucent_incremental_get-from-canvas_unpremul_8888_test", + "png_codec_rgba8888-translucent_zero-init_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-translucent_zero-init_force-nonnative-premul-color_unpremul_8888_test", + "png_codec_rgba8888-translucent_zero-init_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-translucent_zero-init_get-from-canvas_unpremul_8888_test", + "png_codec_rgba8888-opaque_get-all-pixels_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-opaque_get-all-pixels_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-opaque_incremental_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-opaque_incremental_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-opaque_zero-init_force-nonnative-premul-color_premul_8888_test", + "png_codec_rgba8888-opaque_zero-init_get-from-canvas_premul_8888_test", + "png_codec_rgba8888-opaque_get-all-pixels_get-from-canvas_premul_565_test", + "png_codec_rgba8888-opaque_incremental_get-from-canvas_premul_565_test", + "png_codec_rgba8888-opaque_zero-init_get-from-canvas_premul_565_test", + ] + if greppable_test_list != all_tests: + msg = [ + "Variable greppable_test_list is out of sync. Please update it as follows:", + "", + " greppable_test_list = [", + ] + [ + " \"" + test + "\"," + for test in all_tests + ] + [ + " ]", + ] + fail("\n".join(msg)) diff --git a/gm/png_codec.cpp b/gm/png_codec.cpp new file mode 100644 index 000000000000..1ab9089220e7 --- /dev/null +++ b/gm/png_codec.cpp @@ -0,0 +1,533 @@ +/* + * Copyright 2023 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/codec/SkAndroidCodec.h" +#include "include/codec/SkCodec.h" +#include "include/codec/SkEncodedImageFormat.h" +#include "include/codec/SkPngDecoder.h" +#include "include/core/SkAlphaType.h" +#include "include/core/SkBitmap.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkImage.h" +#include "include/core/SkRect.h" +#include "include/core/SkSize.h" +#include "include/core/SkStream.h" +#include "include/core/SkString.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkTemplates.h" +#include "src/base/SkAutoMalloc.h" +#include "src/core/SkSwizzlePriv.h" +#include "src/utils/SkOSPath.h" +#include "tools/flags/CommandLineFlags.h" +#include "tools/flags/CommonFlags.h" + +#include +#include +#include +#include + +DEFINE_string(pngCodecGMImages, + "", + "Zero or more images or directories where to find PNG images to test with " + "PNGCodecGM. Directories are scanned non-recursively. All files are assumed to be " + "PNG images."); +DEFINE_string(pngCodecDecodeMode, + "", + "One of \"get-all-pixels\", \"incremental\" or \"zero-init\"."); +DEFINE_string(pngCodecDstColorType, + "", + "One of \"force-grayscale\", " + "\"force-nonnative-premul-color\" or \"get-from-canvas\"."); +DEFINE_string(pngCodecDstAlphaType, "", "One of \"premul\" or \"unpremul\"."); + +static constexpr const char* sk_color_type_to_str(SkColorType colorType) { + switch (colorType) { + case kUnknown_SkColorType: + return "kUnknown_SkColorType"; + case kAlpha_8_SkColorType: + return "kAlpha_8_SkColorType"; + case kRGB_565_SkColorType: + return "kRGB_565_SkColorType"; + case kARGB_4444_SkColorType: + return "kARGB_4444_SkColorType"; + case kRGBA_8888_SkColorType: + return "kRGBA_8888_SkColorType"; + case kRGB_888x_SkColorType: + return "kRGB_888x_SkColorType"; + case kBGRA_8888_SkColorType: + return "kBGRA_8888_SkColorType"; + case kRGBA_1010102_SkColorType: + return "kRGBA_1010102_SkColorType"; + case kBGRA_1010102_SkColorType: + return "kBGRA_1010102_SkColorType"; + case kRGB_101010x_SkColorType: + return "kRGB_101010x_SkColorType"; + case kBGR_101010x_SkColorType: + return "kBGR_101010x_SkColorType"; + case kBGR_101010x_XR_SkColorType: + return "kBGR_101010x_XR_SkColorType"; + case kGray_8_SkColorType: + return "kGray_8_SkColorType"; + case kRGBA_F16Norm_SkColorType: + return "kRGBA_F16Norm_SkColorType"; + case kRGBA_F16_SkColorType: + return "kRGBA_F16_SkColorType"; + case kRGBA_F32_SkColorType: + return "kRGBA_F32_SkColorType"; + case kR8G8_unorm_SkColorType: + return "kR8G8_unorm_SkColorType"; + case kA16_float_SkColorType: + return "kA16_float_SkColorType"; + case kR16G16_float_SkColorType: + return "kR16G16_float_SkColorType"; + case kA16_unorm_SkColorType: + return "kA16_unorm_SkColorType"; + case kR16G16_unorm_SkColorType: + return "kR16G16_unorm_SkColorType"; + case kR16G16B16A16_unorm_SkColorType: + return "kR16G16B16A16_unorm_SkColorType"; + case kSRGBA_8888_SkColorType: + return "kSRGBA_8888_SkColorType"; + case kR8_unorm_SkColorType: + return "kR8_unorm_SkColorType"; + } + SkUNREACHABLE; +} + +static constexpr const char* sk_alpha_type_to_str(SkAlphaType alphaType) { + switch (alphaType) { + case kUnknown_SkAlphaType: + return "kUnknown_SkAlphaType"; + case kOpaque_SkAlphaType: + return "kOpaque_SkAlphaType"; + case kPremul_SkAlphaType: + return "kPremul_SkAlphaType"; + case kUnpremul_SkAlphaType: + return "kUnpremul_SkAlphaType"; + } + SkUNREACHABLE; +} + +struct DecodeResult { + std::unique_ptr codec; + std::string errorMsg; +}; + +static DecodeResult decode(std::string path) { + sk_sp encoded(SkData::MakeFromFileName(path.c_str())); + if (!encoded) { + return {.errorMsg = SkStringPrintf("Could not read \"%s\".", path.c_str()).c_str()}; + } + SkCodec::Result result; + std::unique_ptr codec = SkPngDecoder::Decode(SkMemoryStream::Make(encoded), &result); + if (result != SkCodec::Result::kSuccess) { + return {.errorMsg = SkStringPrintf("Could not create codec for \"%s\": %s.", + path.c_str(), + SkCodec::ResultToString(result)) + .c_str()}; + } + return {.codec = std::move(codec)}; +} + +// This GM implements the PNG-related behaviors found in DM's CodecSrc class. It takes a single +// image as an argument and applies the same logic as CodecSrc. +// +// See the CodecSrc class here: +// https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.h#158. +class PNGCodecGM : public skiagm::GM { +public: + // Based on CodecSrc::Mode. + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.h#160 + enum class DecodeMode { + kGetAllPixels, + kIncremental, + kZeroInit, + }; + + // Based on CodecSrc::DstColorType. + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.h#172 + enum class DstColorType { + kForceGrayscale, + kForceNonNativePremulColor, + kGetFromCanvas, + }; + + static constexpr const char* DecodeModeToString(DecodeMode decodeMode) { + switch (decodeMode) { + case DecodeMode::kGetAllPixels: + return "kGetAllPixels"; + case DecodeMode::kIncremental: + return "kIncremental"; + case DecodeMode::kZeroInit: + return "kZeroInit"; + } + SkUNREACHABLE; + } + + static constexpr const char* DstColorTypeToString(DstColorType dstColorType) { + switch (dstColorType) { + case DstColorType::kForceGrayscale: + return "kForceGrayscale"; + case DstColorType::kForceNonNativePremulColor: + return "kForceNonNativePremulColor"; + case DstColorType::kGetFromCanvas: + return "kGetFromCanvas"; + } + SkUNREACHABLE; + } + + // Based on DM's CodecSrc::CodecSrc(). + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#371 + PNGCodecGM(std::string path, + DecodeMode decodeMode, + DstColorType dstColorType, + SkAlphaType dstAlphaType) + : skiagm::GM() + , fPath(path) + , fDecodeMode(decodeMode) + , fDstColorType(dstColorType) + , fDstAlphaType(dstAlphaType) {} + + bool isBazelOnly() const override { + // This GM class overlaps with DM's CodecSrc and related sources. + return true; + } + + std::map getGoldKeys() const override { + return std::map{ + {"name", getName().c_str()}, + {"source_type", "image"}, + {"decode_mode", DecodeModeToString(fDecodeMode)}, + {"dst_color_type", DstColorTypeToString(fDstColorType)}, + {"dst_alpha_type", sk_alpha_type_to_str(fDstAlphaType)}, + }; + } + +protected: + // Based on CodecSrc::name(). + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#828 + SkString getName() const override { + SkString name = SkOSPath::Basename(fPath.c_str()); + return name; + } + + // Based on CodecSrc::size(). + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#803 + SkISize getISize() override { + DecodeResult decodeResult = decode(fPath); + if (decodeResult.errorMsg != "") { + return {0, 0}; + } + return decodeResult.codec->dimensions(); + } + + // Based on CodecSrc::draw(). + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#450 + DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { + DecodeResult decodeResult = decode(fPath); + if (decodeResult.errorMsg != "") { + *errorMsg = decodeResult.errorMsg.c_str(); + return DrawResult::kFail; + } + std::unique_ptr codec = std::move(decodeResult.codec); + + SkImageInfo decodeInfo = codec->getInfo(); + if (*errorMsg = validateCanvasColorTypeAndGetDecodeInfo(&decodeInfo, + canvas->imageInfo().colorType()); + *errorMsg != SkString()) { + return DrawResult::kFail; + } + + SkISize size = codec->dimensions(); + decodeInfo = decodeInfo.makeDimensions(size); + + const int bpp = decodeInfo.bytesPerPixel(); + const size_t rowBytes = size.width() * bpp; + const size_t safeSize = decodeInfo.computeByteSize(rowBytes); + SkAutoMalloc pixels(safeSize); + + SkCodec::Options options; + if (DecodeMode::kZeroInit == fDecodeMode) { + memset(pixels.get(), 0, size.height() * rowBytes); + options.fZeroInitialized = SkCodec::kYes_ZeroInitialized; + } + + // For codec srcs, we want the "draw" step to be a memcpy. Any interesting color space or + // color format conversions should be performed by the codec. Sometimes the output of the + // decode will be in an interesting color space. On our srgb and f16 backends, we need to + // "pretend" that the color space is standard sRGB to avoid triggering color conversion + // at draw time. + SkImageInfo bitmapInfo = decodeInfo.makeColorSpace(SkColorSpace::MakeSRGB()); + + if (kRGBA_8888_SkColorType == decodeInfo.colorType() || + kBGRA_8888_SkColorType == decodeInfo.colorType()) { + bitmapInfo = bitmapInfo.makeColorType(kN32_SkColorType); + } + + switch (fDecodeMode) { + case DecodeMode::kZeroInit: + case DecodeMode::kGetAllPixels: { + switch (codec->getPixels(decodeInfo, pixels.get(), rowBytes, &options)) { + case SkCodec::kSuccess: + // We consider these to be valid, since we should still decode what is + // available. + case SkCodec::kErrorInInput: + case SkCodec::kIncompleteInput: + break; + default: + // Everything else is considered a failure. + *errorMsg = SkStringPrintf("Couldn't getPixels %s.", fPath.c_str()); + return DrawResult::kFail; + } + + drawToCanvas(canvas, bitmapInfo, pixels.get(), rowBytes); + break; + } + case DecodeMode::kIncremental: { + void* dst = pixels.get(); + uint32_t height = decodeInfo.height(); + if (SkCodec::kSuccess == + codec->startIncrementalDecode(decodeInfo, dst, rowBytes, &options)) { + int rowsDecoded; + auto result = codec->incrementalDecode(&rowsDecoded); + if (SkCodec::kIncompleteInput == result || SkCodec::kErrorInInput == result) { + codec->fillIncompleteImage(decodeInfo, + dst, + rowBytes, + SkCodec::kNo_ZeroInitialized, + height, + rowsDecoded); + } + } else { + *errorMsg = "Could not start incremental decode"; + return DrawResult::kFail; + } + drawToCanvas(canvas, bitmapInfo, dst, rowBytes); + break; + } + default: + SkASSERT(false); + *errorMsg = "Invalid fDecodeMode"; + return DrawResult::kFail; + } + return DrawResult::kOk; + } + +private: + // Checks that the canvas color type, destination color and alpha types and input image + // constitute an interesting test case, and constructs the SkImageInfo to use when decoding the + // image. + // + // Based on DM's get_decode_info() function. + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#398 + SkString validateCanvasColorTypeAndGetDecodeInfo(SkImageInfo* decodeInfo, + SkColorType canvasColorType) { + switch (fDstColorType) { + case DstColorType::kForceGrayscale: + if (kRGB_565_SkColorType == canvasColorType) { + return SkStringPrintf( + "canvas color type %s and destination color type %s are redundant", + sk_color_type_to_str(canvasColorType), + DstColorTypeToString(fDstColorType)); + } + *decodeInfo = decodeInfo->makeColorType(kGray_8_SkColorType); + break; + + case DstColorType::kForceNonNativePremulColor: + if (kRGB_565_SkColorType == canvasColorType || + kRGBA_F16_SkColorType == canvasColorType) { + return SkStringPrintf( + "canvas color type %s and destination color type %s are redundant", + sk_color_type_to_str(canvasColorType), + DstColorTypeToString(fDstColorType)); + } +#ifdef SK_PMCOLOR_IS_RGBA + *decodeInfo = decodeInfo->makeColorType(kBGRA_8888_SkColorType); +#else + *decodeInfo = decodeInfo->makeColorType(kRGBA_8888_SkColorType); +#endif + break; + + case DstColorType::kGetFromCanvas: + if (kRGB_565_SkColorType == canvasColorType && + kOpaque_SkAlphaType != decodeInfo->alphaType()) { + return SkStringPrintf( + "image \"%s\" has alpha type %s; this is incompatible with with " + "canvas color type %s and destination color type %s", + fPath.c_str(), + sk_alpha_type_to_str(decodeInfo->alphaType()), + sk_color_type_to_str(canvasColorType), + DstColorTypeToString(fDstColorType)); + } + *decodeInfo = decodeInfo->makeColorType(canvasColorType); + break; + + default: + SkUNREACHABLE; + } + + *decodeInfo = decodeInfo->makeAlphaType(fDstAlphaType); + return SkString(); + } + + // Based on DM's draw_to_canvas() function. + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#432 + void drawToCanvas(SkCanvas* canvas, + const SkImageInfo& info, + void* pixels, + size_t rowBytes, + SkScalar left = 0, + SkScalar top = 0) { + SkBitmap bitmap; + bitmap.installPixels(info, pixels, rowBytes); + swapRbIfNecessary(bitmap); + canvas->drawImage(bitmap.asImage(), left, top); + } + + // Allows us to test decodes to non-native 8888. + // + // Based on DM's swap_rb_if_necessary function. + // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#387 + void swapRbIfNecessary(SkBitmap& bitmap) { + if (DstColorType::kForceNonNativePremulColor != fDstColorType) { + return; + } + + for (int y = 0; y < bitmap.height(); y++) { + uint32_t* row = (uint32_t*)bitmap.getAddr(0, y); + SkOpts::RGBA_to_BGRA(row, row, bitmap.width()); + } + } + + std::string fPath; + DecodeMode fDecodeMode; + DstColorType fDstColorType; + SkAlphaType fDstAlphaType; +}; + +// Registers GMs with zero or more PNGCodecGM instances for the given image. Returns a non-empty, +// human-friendly error message in the case of errors. +// +// Based on DM's push_codec_srcs() function. It only covers "simple" codecs (lines 740-834). +// https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DM.cpp#740 +// +// Specifically, this function does not capture any behaviors found in the following DM classes: +// +// - AndroidCodecSrc +// - BRDSrc +// - ImageGenSrc +// +// TODO(lovisolo): Implement the above sources as GMs (if necessary). +static std::string registerGMsForImage(std::string path, + PNGCodecGM::DecodeMode decodeMode, + PNGCodecGM::DstColorType dstColorType, + SkAlphaType dstAlphaType) { + DecodeResult decodeResult = decode(path); + if (decodeResult.errorMsg != "") { + return decodeResult.errorMsg; + } + + if (dstColorType == PNGCodecGM::DstColorType::kForceGrayscale && + decodeResult.codec->getInfo().colorType() != kGray_8_SkColorType) { + return SkStringPrintf( + "image \"%s\" has color type %s; this is incompatible with the given " + "dstColorType argument: %s (expected image color type: %s)", + path.c_str(), + sk_color_type_to_str(decodeResult.codec->getInfo().colorType()), + PNGCodecGM::DstColorTypeToString(PNGCodecGM::DstColorType::kForceGrayscale), + sk_color_type_to_str(kGray_8_SkColorType)) + .c_str(); + } + + if (dstAlphaType == kUnpremul_SkAlphaType && + decodeResult.codec->getInfo().alphaType() == kOpaque_SkAlphaType) { + return SkStringPrintf( + "image \"%s\" has alpha type %s; this is incompatible with the given " + "dstAlphaType argument: %s", + path.c_str(), + sk_alpha_type_to_str(kOpaque_SkAlphaType), + sk_alpha_type_to_str(kUnpremul_SkAlphaType)) + .c_str(); + } + + skiagm::Register(new PNGCodecGM(path, decodeMode, dstColorType, dstAlphaType)); + return ""; +} + +// Returns a non-empty message in the case of errors. +static std::string parse_and_validate_flags(PNGCodecGM::DecodeMode* decodeMode, + PNGCodecGM::DstColorType* dstColorType, + SkAlphaType* dstAlphaType) { + skia_private::THashMap decodeModeValues = { + {SkString("get-all-pixels"), PNGCodecGM::DecodeMode::kGetAllPixels}, + {SkString("incremental"), PNGCodecGM::DecodeMode::kIncremental}, + {SkString("zero-init"), PNGCodecGM::DecodeMode::kZeroInit}, + }; + if (SkString errorMsg = FLAGS_pngCodecDecodeMode.parseAndValidate( + "--pngCodecDecodeMode", decodeModeValues, decodeMode); + errorMsg != SkString()) { + return errorMsg.c_str(); + } + + skia_private::THashMap dstColorTypeValues = { + {SkString("get-from-canvas"), PNGCodecGM::DstColorType::kGetFromCanvas}, + {SkString("force-grayscale"), PNGCodecGM::DstColorType::kForceGrayscale}, + {SkString("force-nonnative-premul-color"), + PNGCodecGM::DstColorType::kForceNonNativePremulColor}, + }; + if (SkString errorMsg = FLAGS_pngCodecDstColorType.parseAndValidate( + "--pngCodecDstColorType", dstColorTypeValues, dstColorType); + errorMsg != SkString()) { + return errorMsg.c_str(); + } + + skia_private::THashMap dstAlphaTypeValues = { + {SkString("premul"), kPremul_SkAlphaType}, + {SkString("unpremul"), kUnpremul_SkAlphaType}, + }; + if (SkString errorMsg = FLAGS_pngCodecDstAlphaType.parseAndValidate( + "--pngCodecDstAlphaType", dstAlphaTypeValues, dstAlphaType); + errorMsg != SkString()) { + return errorMsg.c_str(); + } + + return ""; +} + +// Registers one PNGCodecGM instance for each image passed via the --pngCodecGMImages flag, which +// can take files and directories. Directories are scanned non-recursively. +// +// Based on DM's gather_srcs() function. +// https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DM.cpp#953 +DEF_GM_REGISTERER_FN([]() -> std::string { + // Parse flags. + PNGCodecGM::DecodeMode decodeMode; + PNGCodecGM::DstColorType dstColorType; + SkAlphaType dstAlphaType; + if (std::string errorMsg = parse_and_validate_flags(&decodeMode, &dstColorType, &dstAlphaType); + errorMsg != "") { + return errorMsg; + } + + // Collect images. + skia_private::TArray images; + if (!CommonFlags::CollectImages(FLAGS_pngCodecGMImages, &images)) { + return "Failed to collect images."; + } + + // Register one GM per image. + for (const SkString& image : images) { + if (std::string errorMsg = + registerGMsForImage(image.c_str(), decodeMode, dstColorType, dstAlphaType); + errorMsg != "") { + return errorMsg; + } + } + + return ""; +}); diff --git a/gm/points.cpp b/gm/points.cpp index 0bf5cc1544cd..9a95be121707 100644 --- a/gm/points.cpp +++ b/gm/points.cpp @@ -25,14 +25,9 @@ class PointsGM : public GM { PointsGM() {} protected: + SkString getName() const override { return SkString("points"); } - SkString onShortName() override { - return SkString("points"); - } - - SkISize onISize() override { - return SkISize::Make(640, 490); - } + SkISize getISize() override { return SkISize::Make(640, 490); } static void fill_pts(SkPoint pts[], size_t n, SkRandom* rand) { for (size_t i = 0; i < n; i++) { diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp index c8695b9b6ebc..b7c35ee0d412 100644 --- a/gm/poly2poly.cpp +++ b/gm/poly2poly.cpp @@ -30,14 +30,9 @@ class Poly2PolyGM : public skiagm::GM { Poly2PolyGM() {} protected: + SkString getName() const override { return SkString("poly2poly"); } - SkString onShortName() override { - return SkString("poly2poly"); - } - - SkISize onISize() override { - return SkISize::Make(835, 840); - } + SkISize getISize() override { return SkISize::Make(835, 840); } static void doDraw(SkCanvas* canvas, const SkFont& font, SkPaint* paint, const int isrc[], const int idst[], int count) { diff --git a/gm/polygonoffset.cpp b/gm/polygonoffset.cpp index f102711ac2a1..167392577356 100644 --- a/gm/polygonoffset.cpp +++ b/gm/polygonoffset.cpp @@ -429,14 +429,14 @@ class PolygonOffsetGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { if (fConvexOnly) { return SkString("convex-polygon-inset"); } else { return SkString("simple-polygon-offset"); } } - SkISize onISize() override { return SkISize::Make(kGMWidth, kGMHeight); } + SkISize getISize() override { return SkISize::Make(kGMWidth, kGMHeight); } bool runAsBench() const override { return true; } static void GetConvexPolygon(int index, SkPathDirection dir, diff --git a/gm/polygons.cpp b/gm/polygons.cpp index 7112574566bc..90307d8bbcfa 100644 --- a/gm/polygons.cpp +++ b/gm/polygons.cpp @@ -30,12 +30,9 @@ class PolygonsGM: public GM { PolygonsGM() {} protected: + SkString getName() const override { return SkString("polygons"); } - SkString onShortName() override { - return SkString("polygons"); - } - - SkISize onISize() override { + SkISize getISize() override { int width = kNumPolygons * kCellSize + 40; int height = (kNumJoins * kNumStrokeWidths + kNumExtraStyles) * kCellSize + 40; return SkISize::Make(width, height); diff --git a/gm/postercircle.cpp b/gm/postercircle.cpp index a271ad09579c..7ef061c5ad10 100644 --- a/gm/postercircle.cpp +++ b/gm/postercircle.cpp @@ -31,14 +31,9 @@ class PosterCircleGM : public skiagm::GM { PosterCircleGM() : fTime(0.f) {} protected: + SkString getName() const override { return SkString("poster_circle"); } - SkString onShortName() override { - return SkString("poster_circle"); - } - - SkISize onISize() override { - return SkISize::Make(kStageWidth, kStageHeight + 50); - } + SkISize getISize() override { return SkISize::Make(kStageWidth, kStageHeight + 50); } bool onAnimate(double nanos) override { fTime = TimeUtils::Scaled(1e-9 * nanos, 0.5f); diff --git a/gm/preservefillrule.cpp b/gm/preservefillrule.cpp index 570c3ecf775b..90d68c2b12ad 100644 --- a/gm/preservefillrule.cpp +++ b/gm/preservefillrule.cpp @@ -38,12 +38,12 @@ class PreserveFillRuleGM : public GM { PreserveFillRuleGM(bool big) : fBig(big) , fStarSize((big) ? 200 : 20) {} private: - SkString onShortName() override { + SkString getName() const override { SkString name("preservefillrule"); name += (fBig) ? "_big" : "_little"; return name; } - SkISize onISize() override { return SkISize::Make(fStarSize * 2, fStarSize * 2); } + SkISize getISize() override { return SkISize::Make(fStarSize * 2, fStarSize * 2); } void modifyGrContextOptions(GrContextOptions* ctxOptions) override { ctxOptions->fAllowPathMaskCaching = true; diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp index 25fb68b16697..599fadfa31e4 100644 --- a/gm/quadpaths.cpp +++ b/gm/quadpaths.cpp @@ -27,12 +27,9 @@ class QuadPathGM : public GM { QuadPathGM() {} protected: + SkString getName() const override { return SkString("quadpath"); } - SkString onShortName() override { - return SkString("quadpath"); - } - - SkISize onISize() override { return SkISize::Make(1240, 390); } + SkISize getISize() override { return SkISize::Make(1240, 390); } void drawPath(SkPath& path,SkCanvas* canvas,SkColor color, const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join, @@ -157,12 +154,9 @@ class QuadClosePathGM : public GM { QuadClosePathGM() {} protected: + SkString getName() const override { return SkString("quadclosepath"); } - SkString onShortName() override { - return SkString("quadclosepath"); - } - - SkISize onISize() override { return SkISize::Make(1240, 390); } + SkISize getISize() override { return SkISize::Make(1240, 390); } void drawPath(SkPath& path,SkCanvas* canvas,SkColor color, const SkRect& clip,SkPaint::Cap cap, SkPaint::Join join, diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp index 351353096b6a..114b36525aa1 100644 --- a/gm/readpixels.cpp +++ b/gm/readpixels.cpp @@ -131,13 +131,9 @@ class ReadPixelsGM : public skiagm::GM { ReadPixelsGM() {} protected: - SkString onShortName() override { - return SkString("readpixels"); - } + SkString getName() const override { return SkString("readpixels"); } - SkISize onISize() override { - return SkISize::Make(6 * kWidth, 9 * kHeight); - } + SkISize getISize() override { return SkISize::Make(6 * kWidth, 9 * kHeight); } void onDraw(SkCanvas* canvas) override { const SkAlphaType alphaTypes[] = { @@ -191,11 +187,9 @@ class ReadPixelsCodecGM : public skiagm::GM { ReadPixelsCodecGM() {} protected: - SkString onShortName() override { - return SkString("readpixelscodec"); - } + SkString getName() const override { return SkString("readpixelscodec"); } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(3 * (kEncodedWidth + 1), 12 * (kEncodedHeight + 1)); } @@ -255,13 +249,9 @@ class ReadPixelsPictureGM : public skiagm::GM { ReadPixelsPictureGM() {} protected: - SkString onShortName() override { - return SkString("readpixelspicture"); - } + SkString getName() const override { return SkString("readpixelspicture"); } - SkISize onISize() override { - return SkISize::Make(3 * kWidth, 12 * kHeight); - } + SkISize getISize() override { return SkISize::Make(3 * kWidth, 12 * kHeight); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { if (!canvas->imageInfo().colorSpace()) { diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp index 2b5aa815ee81..4b64d7bd83a2 100644 --- a/gm/rectangletexture.cpp +++ b/gm/rectangletexture.cpp @@ -54,11 +54,9 @@ class RectangleTexture : public GM { k2x2 }; - SkString onShortName() override { - return SkString("rectangle_texture"); - } + SkString getName() const override { return SkString("rectangle_texture"); } - SkISize onISize() override { return SkISize::Make(1180, 710); } + SkISize getISize() override { return SkISize::Make(1180, 710); } SkBitmap makeImagePixels(int size, ImageType type) { auto ii = SkImageInfo::Make(size, size, kRGBA_8888_SkColorType, kOpaque_SkAlphaType); diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp index 866c446723e6..d1344b31ae07 100644 --- a/gm/resizeimagefilter.cpp +++ b/gm/resizeimagefilter.cpp @@ -31,9 +31,7 @@ class ResizeGM : public GM { } protected: - SkString onShortName() override { - return SkString("resizeimagefilter"); - } + SkString getName() const override { return SkString("resizeimagefilter"); } void draw(SkCanvas* canvas, const SkRect& rect, @@ -65,9 +63,7 @@ class ResizeGM : public GM { canvas->restore(); } - SkISize onISize() override { - return SkISize::Make(630, 100); - } + SkISize getISize() override { return SkISize::Make(630, 100); } void onDraw(SkCanvas* canvas) override { canvas->clear(SK_ColorBLACK); diff --git a/gm/rippleshadergm.cpp b/gm/rippleshadergm.cpp index ef1c5fad7fff..6f3f9c102728 100644 --- a/gm/rippleshadergm.cpp +++ b/gm/rippleshadergm.cpp @@ -52,8 +52,8 @@ class RippleShaderGM : public skiagm::GM { fEffect = std::move(effect); } - SkString onShortName() override { return SkString("rippleshader"); } - SkISize onISize() override { return kSize; } + SkString getName() const override { return SkString("rippleshader"); } + SkISize getISize() override { return kSize; } bool onAnimate(double nanos) override { fMillis = nanos / (1000. * 1000.); return true; diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp index 31c41d359a2d..63dedb587b94 100644 --- a/gm/roundrects.cpp +++ b/gm/roundrects.cpp @@ -46,14 +46,9 @@ class RoundRectGM : public GM { } protected: + SkString getName() const override { return SkString("roundrects"); } - SkString onShortName() override { - return SkString("roundrects"); - } - - SkISize onISize() override { - return SkISize::Make(1200, 900); - } + SkISize getISize() override { return SkISize::Make(1200, 900); } void makePaints() { { diff --git a/gm/rrect.cpp b/gm/rrect.cpp index b8c664c7ffc3..2ce342346078 100644 --- a/gm/rrect.cpp +++ b/gm/rrect.cpp @@ -134,14 +134,9 @@ class RRectGM : public skiagm::GM { RRectGM() {} protected: + SkString getName() const override { return SkString("rrect"); } - SkString onShortName() override { - return SkString("rrect"); - } - - SkISize onISize() override { - return SkISize::Make(820, 710); - } + SkISize getISize() override { return SkISize::Make(820, 710); } void onDraw(SkCanvas* canvas) override { constexpr InsetProc insetProcs[] = { diff --git a/gm/rrects.cpp b/gm/rrects.cpp index 179f62a8a1d1..623bdbb2081b 100644 --- a/gm/rrects.cpp +++ b/gm/rrects.cpp @@ -55,7 +55,7 @@ class RRectGM : public GM { this->setUpRRects(); } - SkString onShortName() override { + SkString getName() const override { SkString name("rrect"); switch (fType) { case kBW_Draw_Type: @@ -77,7 +77,7 @@ class RRectGM : public GM { return name; } - SkISize onISize() override { return SkISize::Make(kImageWidth, kImageHeight); } + SkISize getISize() override { return SkISize::Make(kImageWidth, kImageHeight); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { auto sdc = skgpu::ganesh::TopDeviceSurfaceDrawContext(canvas); diff --git a/gm/rsxtext.cpp b/gm/rsxtext.cpp index 9643b29c17f1..cc5da818a5ea 100644 --- a/gm/rsxtext.cpp +++ b/gm/rsxtext.cpp @@ -19,13 +19,9 @@ class RSXShaderGM : public skiagm::GM { public: private: - SkString onShortName() override { - return SkString("rsx_blob_shader"); - } + SkString getName() const override { return SkString("rsx_blob_shader"); } - SkISize onISize() override { - return SkISize::Make(kSZ*kScale*2.1f, kSZ*kScale*2.1f); - } + SkISize getISize() override { return SkISize::Make(kSZ * kScale * 2.1f, kSZ * kScale * 2.1f); } void onOnceBeforeDraw() override { const SkFontStyle style(SkFontStyle::kExtraBlack_Weight, diff --git a/gm/runtimecolorfilter.cpp b/gm/runtimecolorfilter.cpp index ebde682d8f38..8ecb8fcb7021 100644 --- a/gm/runtimecolorfilter.cpp +++ b/gm/runtimecolorfilter.cpp @@ -90,13 +90,9 @@ class RuntimeColorFilterGM : public skiagm::GM { RuntimeColorFilterGM() = default; protected: - SkString onShortName() override { - return SkString("runtimecolorfilter"); - } + SkString getName() const override { return SkString("runtimecolorfilter"); } - SkISize onISize() override { - return SkISize::Make(256 * 3, 256 * 2); - } + SkISize getISize() override { return SkISize::Make(256 * 3, 256 * 2); } void onOnceBeforeDraw() override { fImg = GetResourceAsImage("images/mandrill_256.png"); diff --git a/gm/runtimefunctions.cpp b/gm/runtimefunctions.cpp index 4da6a976b050..be4b88515a61 100644 --- a/gm/runtimefunctions.cpp +++ b/gm/runtimefunctions.cpp @@ -39,9 +39,9 @@ half4 main(vec2 fragcoord) { class RuntimeFunctions : public skiagm::GM { bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString("runtimefunctions"); } + SkString getName() const override { return SkString("runtimefunctions"); } - SkISize onISize() override { return {256, 256}; } + SkISize getISize() override { return {256, 256}; } void onDraw(SkCanvas* canvas) override { SkRuntimeEffect::Result result = diff --git a/gm/runtimeshader.cpp b/gm/runtimeshader.cpp index ff0c0135e1e1..e905cc5044ac 100644 --- a/gm/runtimeshader.cpp +++ b/gm/runtimeshader.cpp @@ -45,8 +45,8 @@ class RuntimeShaderGM : public skiagm::GM { } bool runAsBench() const override { return SkToBool(fFlags & kBench_RTFlag); } - SkString onShortName() override { return fName; } - SkISize onISize() override { return fSize; } + SkString getName() const override { return fName; } + SkISize getISize() override { return fSize; } bool onAnimate(double nanos) override { fSecs = nanos / (1000 * 1000 * 1000); diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp index 0563b60e0c09..122c467349bb 100644 --- a/gm/samplerstress.cpp +++ b/gm/samplerstress.cpp @@ -38,14 +38,9 @@ class SamplerStressGM : public GM { } protected: + SkString getName() const override { return SkString("gpusamplerstress"); } - SkString onShortName() override { - return SkString("gpusamplerstress"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } /** * Create a red & green stripes on black texture diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp index 14ef8aca34e7..b9f2bd0d74b7 100644 --- a/gm/scaledemoji.cpp +++ b/gm/scaledemoji.cpp @@ -52,11 +52,9 @@ class ScaledEmojiGM : public GM { fEmojiFont.fText = ToolUtils::emoji_sample_text(); } - SkString onShortName() override { - return SkString("scaledemoji"); - } + SkString getName() const override { return SkString("scaledemoji"); } - SkISize onISize() override { return SkISize::Make(1200, 1200); } + SkISize getISize() override { return SkISize::Make(1200, 1200); } void onDraw(SkCanvas* canvas) override { @@ -101,11 +99,9 @@ class ScaledEmojiPosGM : public GM { fEmojiFont.fText = ToolUtils::emoji_sample_text(); } - SkString onShortName() override { - return SkString("scaledemojipos"); - } + SkString getName() const override { return SkString("scaledemojipos"); } - SkISize onISize() override { return SkISize::Make(1200, 1200); } + SkISize getISize() override { return SkISize::Make(1200, 1200); } void onDraw(SkCanvas* canvas) override { @@ -169,11 +165,9 @@ class ScaledEmojiPerspectiveGM : public GM { } } - SkString onShortName() override { - return SkString("scaledemojiperspective"); - } + SkString getName() const override { return SkString("scaledemojiperspective"); } - SkISize onISize() override { return SkISize::Make(1200, 1200); } + SkISize getISize() override { return SkISize::Make(1200, 1200); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp index c854ccfc509a..bdb1d6d43e30 100644 --- a/gm/scaledemoji_rendering.cpp +++ b/gm/scaledemoji_rendering.cpp @@ -58,11 +58,9 @@ class ScaledEmojiRenderingGM : public GM { } } - SkString onShortName() override { - return SkString("scaledemoji_rendering"); - } + SkString getName() const override { return SkString("scaledemoji_rendering"); } - SkISize onISize() override { return SkISize::Make(1200, 1200); } + SkISize getISize() override { return SkISize::Make(1200, 1200); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/scaledrects.cpp b/gm/scaledrects.cpp index 81fb3e72be5d..d31e8260fcd5 100644 --- a/gm/scaledrects.cpp +++ b/gm/scaledrects.cpp @@ -24,13 +24,9 @@ class ScaledRectsGM : public GM { } protected: - SkString onShortName() override { - return SkString("scaledrects"); - } + SkString getName() const override { return SkString("scaledrects"); } - SkISize onISize() override { - return SkISize::Make(128, 64); - } + SkISize getISize() override { return SkISize::Make(128, 64); } void onDraw(SkCanvas* canvas) override { canvas->clipRect(SkRect::MakeXYWH(10, 50, 100, 10)); diff --git a/gm/scaledstrokes.cpp b/gm/scaledstrokes.cpp index be8eb61be271..0c91e7bb03c2 100644 --- a/gm/scaledstrokes.cpp +++ b/gm/scaledstrokes.cpp @@ -19,14 +19,9 @@ class ScaledStrokesGM : public skiagm::GM { ScaledStrokesGM() {} protected: + SkString getName() const override { return SkString("scaledstrokes"); } - SkString onShortName() override { - return SkString("scaledstrokes"); - } - - SkISize onISize() override { - return SkISize::Make(640, 320); - } + SkISize getISize() override { return SkISize::Make(640, 320); } static void draw_path(SkScalar size, SkCanvas* canvas, SkPaint paint) { SkScalar c = 0.551915024494f * size; diff --git a/gm/shaderpath.cpp b/gm/shaderpath.cpp index d188aa65eb00..ca5e755f722f 100644 --- a/gm/shaderpath.cpp +++ b/gm/shaderpath.cpp @@ -67,12 +67,9 @@ class ShaderPathGM : public GM { } protected: + SkString getName() const override { return SkString("shaderpath"); } - SkString onShortName() override { - return SkString("shaderpath"); - } - - SkISize onISize() override { return SkISize::Make(820, 930); } + SkISize getISize() override { return SkISize::Make(820, 930); } void onOnceBeforeDraw() override { makebm(&fBmp, kPointSize / 4, kPointSize / 4); diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp index 0e4450dfb273..a6f3f716c214 100644 --- a/gm/shadertext3.cpp +++ b/gm/shadertext3.cpp @@ -67,12 +67,9 @@ class ShaderText3GM : public GM { } protected: + SkString getName() const override { return SkString("shadertext3"); } - SkString onShortName() override { - return SkString("shadertext3"); - } - - SkISize onISize() override { return SkISize::Make(820, 930); } + SkISize getISize() override { return SkISize::Make(820, 930); } void onOnceBeforeDraw() override { makebm(&fBmp, kPointSize / 4, kPointSize / 4); diff --git a/gm/shallowgradient.cpp b/gm/shallowgradient.cpp index bfe8c64e4775..24bb4c753260 100644 --- a/gm/shallowgradient.cpp +++ b/gm/shallowgradient.cpp @@ -52,11 +52,11 @@ class ShallowGradientGM : public skiagm::GM { const char* fName; bool fDither; - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("shallow_gradient_%s%s", fName, fDither ? "" : "_nodither"); } - SkISize onISize() override { return {800, 800}; } + SkISize getISize() override { return {800, 800}; } void onDraw(SkCanvas* canvas) override { const SkColor colors[] = { 0xFF555555, 0xFF444444 }; diff --git a/gm/shapes.cpp b/gm/shapes.cpp index 1c09c1a14a70..0808bd5fda66 100644 --- a/gm/shapes.cpp +++ b/gm/shapes.cpp @@ -38,8 +38,8 @@ class ShapesGM : public GM { } } - SkString onShortName() final { return fName; } - SkISize onISize() override { return SkISize::Make(500, 500); } + SkString getName() const override { return fName; } + SkISize getISize() override { return SkISize::Make(500, 500); } void onOnceBeforeDraw() override { fShapes.push_back().setOval(SkRect::MakeXYWH(-5, 25, 200, 100)); diff --git a/gm/sharedcorners.cpp b/gm/sharedcorners.cpp index 3a98b2583160..34f58f814e12 100644 --- a/gm/sharedcorners.cpp +++ b/gm/sharedcorners.cpp @@ -36,11 +36,9 @@ class SharedCornersGM : public GM { SharedCornersGM() { this->setBGColor(ToolUtils::color_to_565(0xFF1A65D7)); } protected: - SkString onShortName() override { - return SkString("sharedcorners"); - } + SkString getName() const override { return SkString("sharedcorners"); } - SkISize onISize() override { + SkISize getISize() override { constexpr int numRows = 3 * 2; constexpr int numCols = (1 + std::size(kJitters)) * 2; return SkISize::Make(numCols * (kBoxSize + kPadSize) + kPadSize, diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp index 150a0d8a6f19..2b9e21900d7b 100644 --- a/gm/showmiplevels.cpp +++ b/gm/showmiplevels.cpp @@ -30,9 +30,9 @@ class ShowMipLevels3 : public skiagm::GM { sk_sp fImg; - SkString onShortName() override { return SkString("showmiplevels_explicit"); } + SkString getName() const override { return SkString("showmiplevels_explicit"); } - SkISize onISize() override { return {1130, 970}; } + SkISize getISize() override { return {1130, 970}; } void onOnceBeforeDraw() override { fImg = GetResourceAsImage("images/ship.png"); diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp index 718f8f490e12..21af5ed25116 100644 --- a/gm/simpleaaclip.cpp +++ b/gm/simpleaaclip.cpp @@ -141,7 +141,7 @@ class SimpleClipGM : public GM { canvas->restore(); } - SkString onShortName() override { + SkString getName() const override { SkString str; str.printf("simpleaaclip_%s", kRect_GeomType == fGeomType ? "rect" : @@ -150,9 +150,7 @@ class SimpleClipGM : public GM { return str; } - SkISize onISize() override { - return SkISize::Make(500, 240); - } + SkISize getISize() override { return SkISize::Make(500, 240); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/simplerect.cpp b/gm/simplerect.cpp index 7436ba0fa799..4058be048102 100644 --- a/gm/simplerect.cpp +++ b/gm/simplerect.cpp @@ -20,15 +20,13 @@ class SimpleRectGM : public skiagm::GM { SimpleRectGM() {} protected: - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("simplerect"); return name; } - SkISize onISize() override { - return SkISize::Make(800, 800); - } + SkISize getISize() override { return SkISize::Make(800, 800); } void onDraw(SkCanvas* canvas) override { canvas->translate(1, 1); // want to exercise non-identity ctm performance diff --git a/gm/slug.cpp b/gm/slug.cpp index dd5d547fd6e1..dea658e226fe 100644 --- a/gm/slug.cpp +++ b/gm/slug.cpp @@ -57,13 +57,9 @@ class SlugGM : public skiagm::GM { font.textToGlyphs(fText, txtLen, SkTextEncoding::kUTF8, fGlyphs.begin(), glyphCount); } - SkString onShortName() override { - return SkString("slug"); - } + SkString getName() const override { return SkString("slug"); } - SkISize onISize() override { - return SkISize::Make(1000, 480); - } + SkISize getISize() override { return SkISize::Make(1000, 480); } void onDraw(SkCanvas* canvas) override { sk_sp blob(this->makeBlob()); diff --git a/gm/smallpaths.cpp b/gm/smallpaths.cpp index 2c94c5d17bae..ead2447a3c63 100644 --- a/gm/smallpaths.cpp +++ b/gm/smallpaths.cpp @@ -333,13 +333,9 @@ class SmallPathsGM : public skiagm::GM { } } - SkString onShortName() override { - return SkString("smallpaths"); - } + SkString getName() const override { return SkString("smallpaths"); } - SkISize onISize() override { - return SkISize::Make(640, 512); - } + SkISize getISize() override { return SkISize::Make(640, 512); } void onDraw(SkCanvas* canvas) override { SkPaint paint; diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp index 2f636a2aa4b6..3fe43dd876a3 100644 --- a/gm/spritebitmap.cpp +++ b/gm/spritebitmap.cpp @@ -65,14 +65,9 @@ class SpriteBitmapGM : public skiagm::GM { SpriteBitmapGM() {} protected: + SkString getName() const override { return SkString("spritebitmap"); } - SkString onShortName() override { - return SkString("spritebitmap"); - } - - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkBitmap bm; diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp index 2ad19bda05af..5808844be51e 100644 --- a/gm/srcmode.cpp +++ b/gm/srcmode.cpp @@ -74,9 +74,9 @@ class SrcModeGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(SK_ColorBLACK); } - SkString onShortName() override { return SkString("srcmode"); } + SkString getName() const override { return SkString("srcmode"); } - SkISize onISize() override { return {640, 760}; } + SkISize getISize() override { return {640, 760}; } void drawContent(SkCanvas* canvas) { canvas->translate(SkIntToScalar(20), SkIntToScalar(20)); diff --git a/gm/stlouisarch.cpp b/gm/stlouisarch.cpp index a058b410ddbe..3c3a3ae0178b 100644 --- a/gm/stlouisarch.cpp +++ b/gm/stlouisarch.cpp @@ -21,11 +21,9 @@ namespace skiagm { // this GM tests hairlines which fill nearly the entire render target class StLouisArchGM : public GM { protected: - SkString onShortName() override { - return SkString("stlouisarch"); - } + SkString getName() const override { return SkString("stlouisarch"); } - SkISize onISize() override { return SkISize::Make((int)kWidth, (int)kHeight); } + SkISize getISize() override { return SkISize::Make((int)kWidth, (int)kHeight); } void onOnceBeforeDraw() override { { diff --git a/gm/stringart.cpp b/gm/stringart.cpp index 5d5302671c6a..b723d60f0ee4 100644 --- a/gm/stringart.cpp +++ b/gm/stringart.cpp @@ -32,14 +32,9 @@ class StringArtGM : public skiagm::GM { StringArtGM() : fNumSteps(kMaxNumSteps) {} protected: + SkString getName() const override { return SkString("stringart"); } - SkString onShortName() override { - return SkString("stringart"); - } - - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { SkScalar angle = kAngle*SK_ScalarPI + SkScalarHalf(SK_ScalarPI); @@ -120,9 +115,9 @@ class SkottieGM : public skiagm::GM { protected: - SkString onShortName() override { return SkString("skottie"); } + SkString getName() const override { return SkString("skottie"); } - SkISize onISize() override { return SkISize::Make(kWidth, kHeight); } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void init() { SkRandom rand; diff --git a/gm/strokedlines.cpp b/gm/strokedlines.cpp index 63c7a641de60..eaf60f73ad61 100644 --- a/gm/strokedlines.cpp +++ b/gm/strokedlines.cpp @@ -128,7 +128,7 @@ class StrokedLinesGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { // To preserve history, useDrawPath==true has no suffix. SkString name{"strokedlines"}; if (!fUseDrawPath) { @@ -137,7 +137,7 @@ class StrokedLinesGM : public GM { return name; } - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(kNumColumns * (2*kRadius+2*kPad), kNumRows * (2*kRadius+2*kPad)); } diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp index 0f04de9162ac..6eb62f02bfb1 100644 --- a/gm/strokerect.cpp +++ b/gm/strokerect.cpp @@ -60,14 +60,9 @@ class StrokeRectGM : public skiagm::GM { StrokeRectGM() {} protected: + SkString getName() const override { return SkString("strokerect"); } - SkString onShortName() override { - return SkString("strokerect"); - } - - SkISize onISize() override { - return SkISize::Make(1400, 740); - } + SkISize getISize() override { return SkISize::Make(1400, 740); } void onDraw(SkCanvas* canvas) override { canvas->drawColor(SK_ColorWHITE); diff --git a/gm/strokerect_anisotropic.cpp b/gm/strokerect_anisotropic.cpp index 2123130c7f5d..df6f4970d8bf 100644 --- a/gm/strokerect_anisotropic.cpp +++ b/gm/strokerect_anisotropic.cpp @@ -35,14 +35,9 @@ class StrokeRectAnisotropicGM : public skiagm::GM { StrokeRectAnisotropicGM() {} protected: + SkString getName() const override { return SkString("strokerect_anisotropic"); } - SkString onShortName() override { - return SkString("strokerect_anisotropic"); - } - - SkISize onISize() override { - return SkISize::Make(160, 160); - } + SkISize getISize() override { return SkISize::Make(160, 160); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp index 47983330c120..6be2999dbda3 100644 --- a/gm/strokerects.cpp +++ b/gm/strokerects.cpp @@ -28,8 +28,7 @@ class StrokeRectsGM : public GM { StrokeRectsGM(bool rotated) : fRotated(rotated) {} protected: - - SkString onShortName() override { + SkString getName() const override { if (fRotated) { return SkString("strokerects_rotated"); } else { @@ -37,9 +36,7 @@ class StrokeRectsGM : public GM { } } - SkISize onISize() override { - return SkISize::Make(W*2, H*2); - } + SkISize getISize() override { return SkISize::Make(W * 2, H * 2); } static void rnd_rect(SkRect* r, SkRandom& rand) { SkScalar x = rand.nextUScalar1() * W; diff --git a/gm/strokes.cpp b/gm/strokes.cpp index 76293f507b58..881b3ae06ec0 100644 --- a/gm/strokes.cpp +++ b/gm/strokes.cpp @@ -54,14 +54,9 @@ class StrokesGM : public skiagm::GM { StrokesGM() {} protected: + SkString getName() const override { return SkString("strokes_round"); } - SkString onShortName() override { - return SkString("strokes_round"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -118,13 +113,9 @@ class ZeroLenStrokesGM : public skiagm::GM { } } - SkString onShortName() override { - return SkString("zeroPath"); - } + SkString getName() const override { return SkString("zeroPath"); } - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { SkPaint fillPaint, strokePaint, dashPaint; @@ -174,14 +165,9 @@ class ZeroLenStrokesGM : public skiagm::GM { }; class TeenyStrokesGM : public skiagm::GM { + SkString getName() const override { return SkString("teenyStrokes"); } - SkString onShortName() override { - return SkString("teenyStrokes"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } static void line(SkScalar scale, SkCanvas* canvas, SkColor color) { SkPaint p; @@ -296,14 +282,9 @@ class Strokes2GM : public skiagm::GM { } } + SkString getName() const override { return SkString("strokes_poly"); } - SkString onShortName() override { - return SkString("strokes_poly"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { canvas->drawColor(SK_ColorWHITE); @@ -388,14 +369,9 @@ class Strokes3GM : public skiagm::GM { Strokes3GM() {} protected: + SkString getName() const override { return SkString("strokes3"); } - SkString onShortName() override { - return SkString("strokes3"); - } - - SkISize onISize() override { - return SkISize::Make(1500, 1500); - } + SkISize getISize() override { return SkISize::Make(1500, 1500); } void onDraw(SkCanvas* canvas) override { SkPaint origPaint; @@ -445,14 +421,9 @@ class Strokes4GM : public skiagm::GM { Strokes4GM() {} protected: + SkString getName() const override { return SkString("strokes_zoomed"); } - SkString onShortName() override { - return SkString("strokes_zoomed"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { SkPaint paint; @@ -473,14 +444,9 @@ class Strokes5GM : public skiagm::GM { Strokes5GM() {} protected: + SkString getName() const override { return SkString("zero_control_stroke"); } - SkString onShortName() override { - return SkString("zero_control_stroke"); - } - - SkISize onISize() override { - return SkISize::Make(W, H*2); - } + SkISize getISize() override { return SkISize::Make(W, H * 2); } void onDraw(SkCanvas* canvas) override { SkPaint p; diff --git a/gm/surface.cpp b/gm/surface.cpp index 3ffef347ca67..b20c584eaad5 100644 --- a/gm/surface.cpp +++ b/gm/surface.cpp @@ -78,13 +78,9 @@ class SurfacePropsGM : public skiagm::GM { SurfacePropsGM() {} protected: - SkString onShortName() override { - return SkString("surfaceprops"); - } + SkString getName() const override { return SkString("surfaceprops"); } - SkISize onISize() override { - return SkISize::Make(W, H * 5); - } + SkISize getISize() override { return SkISize::Make(W, H * 5); } void onDraw(SkCanvas* canvas) override { auto ctx = canvas->recordingContext(); @@ -133,13 +129,9 @@ class NewSurfaceGM : public skiagm::GM { NewSurfaceGM() {} protected: - SkString onShortName() override { - return SkString("surfacenew"); - } + SkString getName() const override { return SkString("surfacenew"); } - SkISize onISize() override { - return SkISize::Make(300, 140); - } + SkISize getISize() override { return SkISize::Make(300, 140); } static void drawInto(SkCanvas* canvas) { canvas->drawColor(SK_ColorRED); diff --git a/gm/surface_manager/BUILD.bazel b/gm/surface_manager/BUILD.bazel index b80c2c720c3f..1e47a4f6b94e 100644 --- a/gm/surface_manager/BUILD.bazel +++ b/gm/surface_manager/BUILD.bazel @@ -7,14 +7,17 @@ exports_files_legacy() skia_cc_library( name = "surface_manager", testonly = True, - srcs = select({ + srcs = ["SurfaceManager.cpp"] + select({ "//src/gpu:gl_ganesh": ["GaneshGLSurfaceManager.cpp"], "//src/gpu:vulkan_ganesh": ["GaneshVulkanSurfaceManager.cpp"], "//conditions:default": ["RasterSurfaceManager.cpp"], }), hdrs = ["SurfaceManager.h"], visibility = ["//gm:__pkg__"], - deps = ["//:skia_internal"] + select({ + deps = [ + "//:skia_internal", + "//tools:tool_utils", + ] + select({ "//src/gpu:has_ganesh_backend": ["//tools/gpu:utils"], "//conditions:default": [], }), diff --git a/gm/surface_manager/GaneshGLSurfaceManager.cpp b/gm/surface_manager/GaneshGLSurfaceManager.cpp index d62386fd4cc6..33dff869edd6 100644 --- a/gm/surface_manager/GaneshGLSurfaceManager.cpp +++ b/gm/surface_manager/GaneshGLSurfaceManager.cpp @@ -20,8 +20,13 @@ class GaneshGLSurfaceManager : public SurfaceManager { public: GaneshGLSurfaceManager(std::unique_ptr contextFactory, GrDirectContext* context, - sk_sp surface) - : fContextFactory(std::move(contextFactory)), fContext(context), fSurface(surface) {} + sk_sp surface, + std::string config, + SkColorInfo colorInfo) + : SurfaceManager(config, colorInfo) + , fContextFactory(std::move(contextFactory)) + , fContext(context) + , fSurface(surface) {} sk_sp getSurface() override { return fSurface; } @@ -43,7 +48,7 @@ std::unique_ptr SurfaceManager::FromConfig(std::string config, GrContextOptions grCtxOptions; auto testFactory = std::make_unique(grCtxOptions); sk_gpu_test::ContextInfo contextInfo = testFactory.get()->getContextInfo( - sk_gpu_test::GrContextFactory::kGLES_ContextType, + skgpu::ContextType::kGLES, sk_gpu_test::GrContextFactory::ContextOverrides::kNone); GrDirectContext* context = contextInfo.directContext(); SkASSERT_RELEASE(context); @@ -56,7 +61,8 @@ std::unique_ptr SurfaceManager::FromConfig(std::string config, context, skgpu::Budgeted::kNo, info, /* sampleCount= */ 1, &props); SkASSERT_RELEASE(surface); - return std::make_unique(std::move(testFactory), context, surface); + return std::make_unique( + std::move(testFactory), context, surface, config, colorInfo); } return nullptr; } diff --git a/gm/surface_manager/RasterSurfaceManager.cpp b/gm/surface_manager/RasterSurfaceManager.cpp index 72a432a31854..af47a7a043ec 100644 --- a/gm/surface_manager/RasterSurfaceManager.cpp +++ b/gm/surface_manager/RasterSurfaceManager.cpp @@ -16,7 +16,8 @@ class RasterSurfaceManager : public SurfaceManager { public: - RasterSurfaceManager(sk_sp surface) : fSurface(surface) {} + RasterSurfaceManager(sk_sp surface, std::string config, SkColorInfo colorInfo) + : SurfaceManager(config, colorInfo), fSurface(surface) {} sk_sp getSurface() override { return fSurface; } @@ -32,19 +33,18 @@ std::unique_ptr SurfaceManager::FromConfig(std::string config, // These configs are based on the RasterSink configs here: // https://skia.googlesource.com/skia/+/faaa8393a68b518ec1f204a60c7c3393e1da2fa2/dm/DM.cpp#1046. if (config == "8888") { - sk_sp surface = SkSurfaces::Raster(SkImageInfo::Make( - width, height, kN32_SkColorType, kPremul_SkAlphaType, SkColorSpace::MakeSRGB())); + SkColorInfo colorInfo(kN32_SkColorType, kPremul_SkAlphaType, SkColorSpace::MakeSRGB()); + sk_sp surface = + SkSurfaces::Raster(SkImageInfo::Make({width, height}, colorInfo)); SkASSERT_RELEASE(surface); - return std::make_unique(surface); + return std::make_unique(surface, config, colorInfo); } if (config == "565") { - sk_sp surface = SkSurfaces::Raster(SkImageInfo::Make(width, - height, - kRGB_565_SkColorType, - kPremul_SkAlphaType, - SkColorSpace::MakeSRGB())); + SkColorInfo colorInfo(kRGB_565_SkColorType, kPremul_SkAlphaType, SkColorSpace::MakeSRGB()); + sk_sp surface = + SkSurfaces::Raster(SkImageInfo::Make({width, height}, colorInfo)); SkASSERT_RELEASE(surface); - return std::make_unique(surface); + return std::make_unique(surface, config, colorInfo); } return nullptr; } diff --git a/gm/surface_manager/SurfaceManager.cpp b/gm/surface_manager/SurfaceManager.cpp new file mode 100644 index 000000000000..3ec3469e29ea --- /dev/null +++ b/gm/surface_manager/SurfaceManager.cpp @@ -0,0 +1,134 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm/surface_manager/SurfaceManager.h" +#include "include/core/SkCanvas.h" +#include "src/core/SkColorSpacePriv.h" +#include "tools/ToolUtils.h" + +// Based on +// https://skia.googlesource.com/skia/+/88d5e1daa3ba3aae65139d4a3ded1e1b7078d59b/dm/DM.cpp#1315. +static std::string identify_gamut(SkColorSpace* cs) { + if (!cs) { + return "untagged"; + } + + skcms_Matrix3x3 gamut; + if (cs->toXYZD50(&gamut)) { + auto eq = [](skcms_Matrix3x3 x, skcms_Matrix3x3 y) { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (x.vals[i][j] != y.vals[i][j]) { + return false; + } + } + } + return true; + }; + + if (eq(gamut, SkNamedGamut::kSRGB)) { + return "sRGB"; + } + if (eq(gamut, SkNamedGamut::kAdobeRGB)) { + return "Adobe"; + } + if (eq(gamut, SkNamedGamut::kDisplayP3)) { + return "P3"; + } + if (eq(gamut, SkNamedGamut::kRec2020)) { + return "2020"; + } + if (eq(gamut, SkNamedGamut::kXYZ)) { + return "XYZ"; + } + if (eq(gamut, gNarrow_toXYZD50)) { + return "narrow"; + } + return "other"; + } + return "non-XYZ"; +} + +// Based on +// https://skia.googlesource.com/skia/+/88d5e1daa3ba3aae65139d4a3ded1e1b7078d59b/dm/DM.cpp#1341. +static std::string identify_transfer_fn(SkColorSpace* cs) { + if (!cs) { + return "untagged"; + } + + auto eq = [](skcms_TransferFunction x, skcms_TransferFunction y) { + return x.g == y.g && x.a == y.a && x.b == y.b && x.c == y.c && x.d == y.d && x.e == y.e && + x.f == y.f; + }; + + skcms_TransferFunction tf; + cs->transferFn(&tf); + switch (skcms_TransferFunction_getType(&tf)) { + case skcms_TFType_sRGBish: + if (tf.a == 1 && tf.b == 0 && tf.c == 0 && tf.d == 0 && tf.e == 0 && tf.f == 0) { + return SkStringPrintf("gamma %.3g", tf.g).c_str(); + } + if (eq(tf, SkNamedTransferFn::kSRGB)) { + return "sRGB"; + } + if (eq(tf, SkNamedTransferFn::kRec2020)) { + return "2020"; + } + return SkStringPrintf("%.3g %.3g %.3g %.3g %.3g %.3g %.3g", + tf.g, + tf.a, + tf.b, + tf.c, + tf.d, + tf.e, + tf.f) + .c_str(); + + case skcms_TFType_PQish: + if (eq(tf, SkNamedTransferFn::kPQ)) { + return "PQ"; + } + return SkStringPrintf("PQish %.3g %.3g %.3g %.3g %.3g %.3g", + tf.a, + tf.b, + tf.c, + tf.d, + tf.e, + tf.f) + .c_str(); + + case skcms_TFType_HLGish: + if (eq(tf, SkNamedTransferFn::kHLG)) { + return "HLG"; + } + return SkStringPrintf("HLGish %.3g %.3g %.3g %.3g %.3g (%.3g)", + tf.a, + tf.b, + tf.c, + tf.d, + tf.e, + tf.f + 1) + .c_str(); + + case skcms_TFType_HLGinvish: + break; + case skcms_TFType_Invalid: + break; + } + return "non-numeric"; +} + +std::map SurfaceManager::getGoldKeys() const { + return std::map{ + {"surface_config", fConfig}, + {"gamut", identify_gamut(fColorInfo.colorSpace())}, + {"transfer_fn", identify_transfer_fn(fColorInfo.colorSpace())}, + {"color_type", std::string(ToolUtils::colortype_name(fColorInfo.colorType()))}, + {"alpha_type", std::string(ToolUtils::alphatype_name(fColorInfo.alphaType()))}, + {"color_depth", std::string(ToolUtils::colortype_depth(fColorInfo.colorType()))}, + }; +} diff --git a/gm/surface_manager/SurfaceManager.h b/gm/surface_manager/SurfaceManager.h index ea1df42ead6f..66ec38710d22 100644 --- a/gm/surface_manager/SurfaceManager.h +++ b/gm/surface_manager/SurfaceManager.h @@ -10,6 +10,7 @@ #include "include/core/SkSurface.h" +#include #include // Abstract class to create and manage surfaces. @@ -28,7 +29,21 @@ class SurfaceManager { // do so may lead to blank pixmaps. virtual void flush() = 0; + // Returns the subset of Gold keys that are determined by the surface config. These keys + // pertain to color and are generated from the SkColorInfo passed to this class' constructor. + std::map getGoldKeys() const; + virtual ~SurfaceManager() = default; + +protected: + // Takes the config name passed to FromConfig(), and the SkColorInfo used by FromConfig() to + // create the surface. + SurfaceManager(std::string config, SkColorInfo colorInfo) + : fConfig(config), fColorInfo(colorInfo) {} + +private: + std::string fConfig; + SkColorInfo fColorInfo; }; #endif // SurfaceManager_DEFINED diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp index 2b44811aad05..9eb36b532679 100644 --- a/gm/tablecolorfilter.cpp +++ b/gm/tablecolorfilter.cpp @@ -118,13 +118,9 @@ class TableColorFilterGM : public skiagm::GM { TableColorFilterGM() {} protected: - SkString onShortName() override { - return SkString("tablecolorfilter"); - } + SkString getName() const override { return SkString("tablecolorfilter"); } - SkISize onISize() override { - return {700, 1650}; - } + SkISize getISize() override { return {700, 1650}; } void onDraw(SkCanvas* canvas) override { canvas->drawColor(0xFFDDDDDD); @@ -225,9 +221,9 @@ class ComposeColorFilterGM : public skiagm::GM { : fColors(colors), fModes(modes), fName(name) {} private: - SkString onShortName() override { return SkString(fName); } + SkString getName() const override { return SkString(fName); } - SkISize onISize() override { return {790, 790}; } + SkISize getISize() override { return {790, 790}; } void onDraw(SkCanvas* canvas) override { SkBitmap bm; diff --git a/gm/tallstretchedbitmaps.cpp b/gm/tallstretchedbitmaps.cpp index c573b0fd69b6..98a468d57856 100644 --- a/gm/tallstretchedbitmaps.cpp +++ b/gm/tallstretchedbitmaps.cpp @@ -67,13 +67,9 @@ class TallStretchedBitmapsGM : public skiagm::GM { TallStretchedBitmapsGM() {} protected: - SkString onShortName() override { - return SkString("tall_stretched_bitmaps"); - } + SkString getName() const override { return SkString("tall_stretched_bitmaps"); } - SkISize onISize() override { - return SkISize::Make(730, 690); - } + SkISize getISize() override { return SkISize::Make(730, 690); } void onOnceBeforeDraw() override { for (size_t i = 0; i < std::size(fTallBmps); ++i) { diff --git a/gm/testgradient.cpp b/gm/testgradient.cpp index 808815c805e3..2d8e3e808485 100644 --- a/gm/testgradient.cpp +++ b/gm/testgradient.cpp @@ -23,13 +23,9 @@ class TestGradientGM : public skiagm::GM { TestGradientGM() {} protected: - SkString onShortName() override { - return SkString("testgradient"); - } + SkString getName() const override { return SkString("testgradient"); } - SkISize onISize() override { - return SkISize::Make(800, 800); - } + SkISize getISize() override { return SkISize::Make(800, 800); } void onDraw(SkCanvas* canvas) override { // Set up a gradient paint for a rect. diff --git a/gm/texelsubset.cpp b/gm/texelsubset.cpp index a40e778c4801..a4b8e2df028c 100644 --- a/gm/texelsubset.cpp +++ b/gm/texelsubset.cpp @@ -50,7 +50,7 @@ class TexelSubset : public GpuGM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("texel_subset"); switch (fFilter) { case Filter::kNearest: @@ -74,7 +74,7 @@ class TexelSubset : public GpuGM { return name; } - SkISize onISize() override { + SkISize getISize() override { static constexpr int kN = GrSamplerState::kWrapModeCount; int w = kTestPad + 2*kN*(kImageSize.width() + 2*kDrawPad + kTestPad); int h = kTestPad + 2*kN*(kImageSize.height() + 2*kDrawPad + kTestPad); @@ -139,7 +139,7 @@ class TexelSubset : public GpuGM { SkRect localRect = SkRect::Make(fBitmap.bounds()).makeOutset(kDrawPad, kDrawPad); - auto size = this->onISize(); + auto size = this->getISize(); SkScalar y = kDrawPad + kTestPad; SkRect drawRect; diff --git a/gm/textblob.cpp b/gm/textblob.cpp index 04d83e168b80..ed6e1e55880b 100644 --- a/gm/textblob.cpp +++ b/gm/textblob.cpp @@ -95,13 +95,9 @@ class TextBlobGM : public skiagm::GM { font.textToGlyphs(fText, txtLen, SkTextEncoding::kUTF8, fGlyphs.begin(), glyphCount); } - SkString onShortName() override { - return SkString("textblob"); - } + SkString getName() const override { return SkString("textblob"); } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { for (unsigned b = 0; b < std::size(blobConfigs); ++b) { diff --git a/gm/textblobblockreordering.cpp b/gm/textblobblockreordering.cpp index 2f9350329e27..ef0aa286bc8a 100644 --- a/gm/textblobblockreordering.cpp +++ b/gm/textblobblockreordering.cpp @@ -50,13 +50,9 @@ class TextBlobBlockReordering : public GM { fBlob = builder.make(); } - SkString onShortName() override { - return SkString("textblobblockreordering"); - } + SkString getName() const override { return SkString("textblobblockreordering"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } // This draws the same text blob 3 times. The second draw used a different xfer mode so its // GrDrawOp doesn't get combined with the first and third. Ultimately, they will be flushed in diff --git a/gm/textblobcolortrans.cpp b/gm/textblobcolortrans.cpp index a9a013c7fd36..76c34e826cf8 100644 --- a/gm/textblobcolortrans.cpp +++ b/gm/textblobcolortrans.cpp @@ -57,13 +57,9 @@ class TextBlobColorTrans : public GM { fBlob = builder.make(); } - SkString onShortName() override { - return SkString("textblobcolortrans"); - } + SkString getName() const override { return SkString("textblobcolortrans"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp index 26c0b9d68b6b..01ff5efe270f 100644 --- a/gm/textblobgeometrychange.cpp +++ b/gm/textblobgeometrychange.cpp @@ -29,13 +29,9 @@ class TextBlobGeometryChange : public GM { TextBlobGeometryChange() { } protected: - SkString onShortName() override { - return SkString("textblobgeometrychange"); - } + SkString getName() const override { return SkString("textblobgeometrychange"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { const char text[] = "Hamburgefons"; diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp index d29d4e74ccb6..0b85fc5ddcdc 100644 --- a/gm/textblobmixedsizes.cpp +++ b/gm/textblobmixedsizes.cpp @@ -93,14 +93,12 @@ class TextBlobMixedSizes : public GM { fBlob = builder.make(); } - SkString onShortName() override { + SkString getName() const override { return SkStringPrintf("textblobmixedsizes%s", fUseDFT ? "_df" : ""); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* inputCanvas) override { SkCanvas* canvas = inputCanvas; @@ -108,7 +106,7 @@ class TextBlobMixedSizes : public GM { if (fUseDFT) { // Create a new Canvas to enable DFT auto ctx = inputCanvas->recordingContext(); - SkISize size = onISize(); + SkISize size = getISize(); sk_sp colorSpace = inputCanvas->imageInfo().refColorSpace(); SkImageInfo info = SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType, colorSpace); diff --git a/gm/textblobrandomfont.cpp b/gm/textblobrandomfont.cpp index 7c4a8202f083..c15bac63cbde 100644 --- a/gm/textblobrandomfont.cpp +++ b/gm/textblobrandomfont.cpp @@ -97,13 +97,9 @@ class TextBlobRandomFont : public GM { fBlob = builder.make(); } - SkString onShortName() override { - return SkString("textblobrandomfont"); - } + SkString getName() const override { return SkString("textblobrandomfont"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { GrDirectContext* dContext = GrAsDirectContext(canvas->recordingContext()); diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp index bfad0b4eb816..0932fbb644cc 100644 --- a/gm/textblobshader.cpp +++ b/gm/textblobshader.cpp @@ -80,7 +80,7 @@ class TextBlobShaderGM : public skiagm::GM { pos[i] = (float)i / (std::size(pos) - 1); } - SkISize sz = this->onISize(); + SkISize sz = this->getISize(); fShader = SkGradientShader::MakeRadial(SkPoint::Make(SkIntToScalar(sz.width() / 2), SkIntToScalar(sz.height() / 2)), sz.width() * .66f, colors, pos, @@ -88,13 +88,9 @@ class TextBlobShaderGM : public skiagm::GM { SkTileMode::kRepeat); } - SkString onShortName() override { - return SkString("textblobshader"); - } + SkString getName() const override { return SkString("textblobshader"); } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkPaint p; @@ -102,7 +98,7 @@ class TextBlobShaderGM : public skiagm::GM { p.setStyle(SkPaint::kFill_Style); p.setShader(fShader); - SkISize sz = this->onISize(); + SkISize sz = this->getISize(); constexpr int kXCount = 4; constexpr int kYCount = 3; for (int i = 0; i < kXCount; ++i) { diff --git a/gm/textblobtransforms.cpp b/gm/textblobtransforms.cpp index b5e9f832ee39..dc3754c99c7c 100644 --- a/gm/textblobtransforms.cpp +++ b/gm/textblobtransforms.cpp @@ -59,13 +59,9 @@ class TextBlobTransforms : public GM { fBlob = builder.make(); } - SkString onShortName() override { - return SkString("textblobtransforms"); - } + SkString getName() const override { return SkString("textblobtransforms"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp index 947f6bfc0ddf..66ff46130ac9 100644 --- a/gm/textblobuseaftergpufree.cpp +++ b/gm/textblobuseaftergpufree.cpp @@ -27,13 +27,9 @@ class TextBlobUseAfterGpuFree : public GM { TextBlobUseAfterGpuFree() { } protected: - SkString onShortName() override { - return SkString("textblobuseaftergpufree"); - } + SkString getName() const override { return SkString("textblobuseaftergpufree"); } - SkISize onISize() override { - return SkISize::Make(kWidth, kHeight); - } + SkISize getISize() override { return SkISize::Make(kWidth, kHeight); } void onDraw(SkCanvas* canvas) override { auto dContext = GrAsDirectContext(canvas->recordingContext()); diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp index 8f627192de59..16a563b419c3 100644 --- a/gm/thinrects.cpp +++ b/gm/thinrects.cpp @@ -27,13 +27,9 @@ class ThinRectsGM : public GM { } protected: - SkString onShortName() override { - return SkString(fRound ? "thinroundrects" : "thinrects"); - } + SkString getName() const override { return SkString(fRound ? "thinroundrects" : "thinrects"); } - SkISize onISize() override { - return SkISize::Make(240, 320); - } + SkISize getISize() override { return SkISize::Make(240, 320); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp index f6d765eaccf2..35580e99b3f0 100644 --- a/gm/thinstrokedrects.cpp +++ b/gm/thinstrokedrects.cpp @@ -25,13 +25,9 @@ class ThinStrokedRectsGM : public GM { } protected: - SkString onShortName() override { - return SkString("thinstrokedrects"); - } + SkString getName() const override { return SkString("thinstrokedrects"); } - SkISize onISize() override { - return SkISize::Make(240, 320); - } + SkISize getISize() override { return SkISize::Make(240, 320); } void onDraw(SkCanvas* canvas) override { diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp index ca880b73c83d..1705d8ec7a76 100644 --- a/gm/tiledscaledbitmap.cpp +++ b/gm/tiledscaledbitmap.cpp @@ -32,13 +32,9 @@ class TiledScaledBitmapGM : public GM { } protected: - SkString onShortName() override { - return SkString("tiledscaledbitmap"); - } + SkString getName() const override { return SkString("tiledscaledbitmap"); } - SkISize onISize() override { - return SkISize::Make(1016, 616); - } + SkISize getISize() override { return SkISize::Make(1016, 616); } static SkBitmap make_bm(int width, int height) { SkBitmap bm; diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp index 815836bb8cb4..c616eb2aa3cb 100644 --- a/gm/tileimagefilter.cpp +++ b/gm/tileimagefilter.cpp @@ -38,13 +38,9 @@ class TileImageFilterGM : public GM { } protected: - SkString onShortName() override { - return SkString("tileimagefilter"); - } + SkString getName() const override { return SkString("tileimagefilter"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onOnceBeforeDraw() override { fBitmap = ToolUtils::create_string_image(50, 50, 0xD000D000, 10, 45, 50, "e"); diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp index 9b4b44856e9b..724a73205d41 100644 --- a/gm/tilemodes.cpp +++ b/gm/tilemodes.cpp @@ -76,7 +76,7 @@ class TilingGM : public skiagm::GM { kNPOTSize = 21, }; - SkString onShortName() override { + SkString getName() const override { SkString name("tilemodes"); if (!fPowerOfTwoSize) { name.append("_npot"); @@ -84,7 +84,7 @@ class TilingGM : public skiagm::GM { return name; } - SkISize onISize() override { return SkISize::Make(880, 560); } + SkISize getISize() override { return SkISize::Make(880, 560); } void onOnceBeforeDraw() override { int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize; @@ -205,9 +205,9 @@ class Tiling2GM : public skiagm::GM { Tiling2GM(ShaderProc proc, const char name[]) : fProc(proc), fName(name) {} private: - SkString onShortName() override { return SkString(fName); } + SkString getName() const override { return SkString(fName); } - SkISize onISize() override { return SkISize::Make(650, 610); } + SkISize getISize() override { return SkISize::Make(650, 610); } void onDraw(SkCanvas* canvas) override { canvas->scale(SkIntToScalar(3)/2, SkIntToScalar(3)/2); diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp index 9da0db43515a..3b4318518e66 100644 --- a/gm/tilemodes_scaled.cpp +++ b/gm/tilemodes_scaled.cpp @@ -74,7 +74,7 @@ class ScaledTilingGM : public skiagm::GM { kNPOTSize = 3, }; - SkString onShortName() override { + SkString getName() const override { SkString name("scaled_tilemodes"); if (!fPowerOfTwoSize) { name.append("_npot"); @@ -82,7 +82,7 @@ class ScaledTilingGM : public skiagm::GM { return name; } - SkISize onISize() override { return SkISize::Make(880, 880); } + SkISize getISize() override { return SkISize::Make(880, 880); } void onOnceBeforeDraw() override { int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize; @@ -200,9 +200,9 @@ class ScaledTiling2GM : public skiagm::GM { ScaledTiling2GM(ShaderProc proc, const char name[]) : fProc(proc), fName(name) {} private: - SkString onShortName() override { return SkString(fName); } + SkString getName() const override { return SkString(fName); } - SkISize onISize() override { return SkISize::Make(650, 610); } + SkISize getISize() override { return SkISize::Make(650, 610); } void onDraw(SkCanvas* canvas) override { canvas->scale(SkIntToScalar(3)/2, SkIntToScalar(3)/2); diff --git a/gm/tinybitmap.cpp b/gm/tinybitmap.cpp index 470358f33143..f8a619c64ee7 100644 --- a/gm/tinybitmap.cpp +++ b/gm/tinybitmap.cpp @@ -19,9 +19,9 @@ namespace { class TinyBitmapGM : public skiagm::GM { void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); } - SkString onShortName() override { return SkString("tinybitmap"); } + SkString getName() const override { return SkString("tinybitmap"); } - SkISize onISize() override { return SkISize::Make(100, 100); } + SkISize getISize() override { return SkISize::Make(100, 100); } void onDraw(SkCanvas* canvas) override { SkBitmap bm; diff --git a/gm/typeface.cpp b/gm/typeface.cpp index 4bfd2ec56e81..f51ec044925a 100644 --- a/gm/typeface.cpp +++ b/gm/typeface.cpp @@ -107,7 +107,7 @@ class TypefaceStylesGM : public skiagm::GM { } } - SkString onShortName() override { + SkString getName() const override { SkString name("typefacestyles"); if (fApplyKerning) { name.append("_kerning"); @@ -115,9 +115,7 @@ class TypefaceStylesGM : public skiagm::GM { return name; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onDraw(SkCanvas* canvas) override { SkFont font; diff --git a/gm/userfont.cpp b/gm/userfont.cpp index 8e9b93d15ce2..35d3e33e1314 100644 --- a/gm/userfont.cpp +++ b/gm/userfont.cpp @@ -102,9 +102,9 @@ class UserFontGM : public skiagm::GM { bool runAsBench() const override { return true; } - SkString onShortName() override { return SkString("user_typeface"); } + SkString getName() const override { return SkString("user_typeface"); } - SkISize onISize() override { return {810, 452}; } + SkISize getISize() override { return {810, 452}; } void onDraw(SkCanvas* canvas) override { auto waterfall = [&](sk_sp tf) { diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp index 9755ce114223..7d8152e6d4e8 100644 --- a/gm/variedtext.cpp +++ b/gm/variedtext.cpp @@ -36,7 +36,7 @@ class VariedTextGM : public skiagm::GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("varied_text"); if (fEffectiveClip) { name.append("_clipped"); @@ -51,9 +51,7 @@ class VariedTextGM : public skiagm::GM { return name; } - SkISize onISize() override { - return SkISize::Make(640, 480); - } + SkISize getISize() override { return SkISize::Make(640, 480); } void onOnceBeforeDraw() override { fPaint.setAntiAlias(true); diff --git a/gm/vertices.cpp b/gm/vertices.cpp index 7a12fab3428b..997c705cb048 100644 --- a/gm/vertices.cpp +++ b/gm/vertices.cpp @@ -124,7 +124,7 @@ class VerticesGM : public skiagm::GM { fColorFilter = make_color_filter(); } - SkString onShortName() override { + SkString getName() const override { SkString name("vertices"); if (fShaderScale != 1) { name.append("_scaled_shader"); @@ -132,9 +132,7 @@ class VerticesGM : public skiagm::GM { return name; } - SkISize onISize() override { - return SkISize::Make(975, 1175); - } + SkISize getISize() override { return SkISize::Make(975, 1175); } void onDraw(SkCanvas* canvas) override { const SkBlendMode modes[] = { diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp index 041df778d1a7..1280ccad6281 100644 --- a/gm/verylargebitmap.cpp +++ b/gm/verylargebitmap.cpp @@ -113,7 +113,7 @@ class VeryLargeBitmapGM : public skiagm::GM { , fManuallyTile(manuallyTile) {} private: - SkString onShortName() override { + SkString getName() const override { SkString name(fBaseName); if (fManuallyTile) { @@ -123,7 +123,7 @@ class VeryLargeBitmapGM : public skiagm::GM { return name; } - SkISize onISize() override { return {500, 600}; } + SkISize getISize() override { return {500, 600}; } void onDraw(SkCanvas* canvas) override { int veryBig = 65*1024; // 64K < size diff --git a/gm/video_decoder.cpp b/gm/video_decoder.cpp index 107f8ebfa4e8..507026134b95 100644 --- a/gm/video_decoder.cpp +++ b/gm/video_decoder.cpp @@ -17,14 +17,9 @@ class VideoDecoderGM : public skiagm::GM { VideoDecoderGM() {} protected: + SkString getName() const override { return SkString("videodecoder"); } - SkString onShortName() override { - return SkString("videodecoder"); - } - - SkISize onISize() override { - return SkISize::Make(1024, 768); - } + SkISize getISize() override { return SkISize::Make(1024, 768); } void onOnceBeforeDraw() override { if (!fDecoder.loadStream(SkStream::MakeFromFile("/skia/ice.mp4"))) { diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp index a322b9a5dd18..2bb24ffb7438 100644 --- a/gm/wacky_yuv_formats.cpp +++ b/gm/wacky_yuv_formats.cpp @@ -771,7 +771,7 @@ class WackyYUVFormatsGM : public GM { } protected: - SkString onShortName() override { + SkString getName() const override { SkString name("wacky_yuv_formats"); if (fUseTargetColorSpace) { name += "_cs"; @@ -796,7 +796,7 @@ class WackyYUVFormatsGM : public GM { return name; } - SkISize onISize() override { + SkISize getISize() override { int numCols = 2 * (kLastEnum_SkYUVColorSpace + 1); // opacity x #-color-spaces int numRows = 1 + (kLast_YUVFormat + 1); // original + #-yuv-formats int wh = SkScalarCeilToInt(kTileWidthHeight * (fUseSubset ? 1.5f : 1.f)); @@ -1024,11 +1024,9 @@ class YUVMakeColorSpaceGM : public GM { } protected: - SkString onShortName() override { - return SkString("yuv_make_color_space"); - } + SkString getName() const override { return SkString("yuv_make_color_space"); } - SkISize onISize() override { + SkISize getISize() override { int numCols = 4; // (transparent, opaque) x (untagged, tagged) int numRows = 5; // original, YUV, subset, makeNonTextureImage, readPixels return SkISize::Make(numCols * (kTileWidthHeight + kPad) + kPad, @@ -1212,14 +1210,9 @@ class YUVSplitterGM : public skiagm::GM { YUVSplitterGM() {} protected: + SkString getName() const override { return SkString("yuv_splitter"); } - SkString onShortName() override { - return SkString("yuv_splitter"); - } - - SkISize onISize() override { - return SkISize::Make(1280, 768); - } + SkISize getISize() override { return SkISize::Make(1280, 768); } void onOnceBeforeDraw() override { fOrig = GetResourceAsImage("images/mandrill_256.png"); diff --git a/gm/windowrectangles.cpp b/gm/windowrectangles.cpp index 75f231970c66..87281b474c08 100644 --- a/gm/windowrectangles.cpp +++ b/gm/windowrectangles.cpp @@ -41,8 +41,8 @@ class WindowRectanglesGM : public GM { private: DrawResult coverClipStack(const SkClipStack&, SkCanvas*, SkString* errorMsg); - SkISize onISize() override { return SkISize::Make(kDeviceRect.width(), kDeviceRect.height()); } - SkString onShortName() override { return SkString("windowrectangles"); } + SkISize getISize() override { return SkISize::Make(kDeviceRect.width(), kDeviceRect.height()); } + SkString getName() const override { return SkString("windowrectangles"); } DrawResult onDraw(SkCanvas*, SkString* errorMsg) override; }; diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp index ee997af8f0ca..ca10682841ff 100644 --- a/gm/xfermodeimagefilter.cpp +++ b/gm/xfermodeimagefilter.cpp @@ -37,13 +37,9 @@ class XfermodeImageFilterGM : public GM { } protected: - SkString onShortName() override { - return SkString("xfermodeimagefilter"); - } + SkString getName() const override { return SkString("xfermodeimagefilter"); } - SkISize onISize() override { - return SkISize::Make(WIDTH, HEIGHT); - } + SkISize getISize() override { return SkISize::Make(WIDTH, HEIGHT); } void onOnceBeforeDraw() override { fBitmap = ToolUtils::create_string_bitmap(80, 80, 0xD000D000, 15, 65, 96, "e"); diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp index 54a228374f9f..67c8115b0f24 100644 --- a/gm/xfermodes.cpp +++ b/gm/xfermodes.cpp @@ -222,13 +222,9 @@ class XfermodesGM : public skiagm::GM { XfermodesGM() {} protected: - SkString onShortName() override { - return SkString("xfermodes"); - } + SkString getName() const override { return SkString("xfermodes"); } - SkISize onISize() override { - return SkISize::Make(1990, 570); - } + SkISize getISize() override { return SkISize::Make(1990, 570); } void onDraw(SkCanvas* canvas) override { canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp index 9d334c949c98..96ff5d4366fa 100644 --- a/gm/xfermodes2.cpp +++ b/gm/xfermodes2.cpp @@ -34,13 +34,11 @@ class Xfermodes2GM : public GM { Xfermodes2GM(bool grayscale) : fGrayscale(grayscale) {} protected: - SkString onShortName() override { + SkString getName() const override { return fGrayscale ? SkString("xfermodes2_gray") : SkString("xfermodes2"); } - SkISize onISize() override { - return SkISize::Make(455, 475); - } + SkISize getISize() override { return SkISize::Make(455, 475); } void onDraw(SkCanvas* canvas) override { canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp index 58ba19ad949a..3745c6ccb434 100644 --- a/gm/xfermodes3.cpp +++ b/gm/xfermodes3.cpp @@ -43,13 +43,9 @@ class Xfermodes3GM : public GM { Xfermodes3GM() { this->setBGColor(ToolUtils::color_to_565(0xFF70D0E0)); } protected: - SkString onShortName() override { - return SkString("xfermodes3"); - } + SkString getName() const override { return SkString("xfermodes3"); } - SkISize onISize() override { - return SkISize::Make(630, 1215); - } + SkISize getISize() override { return SkISize::Make(630, 1215); } void onDraw(SkCanvas* canvas) override { canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); diff --git a/gm/ycbcrimage.cpp b/gm/ycbcrimage.cpp index 3d2b40bd4640..c7076cce0f95 100644 --- a/gm/ycbcrimage.cpp +++ b/gm/ycbcrimage.cpp @@ -35,12 +35,9 @@ class YCbCrImageGM : public GM { } protected: + SkString getName() const override { return SkString("ycbcrimage"); } - SkString onShortName() override { - return SkString("ycbcrimage"); - } - - SkISize onISize() override { + SkISize getISize() override { return SkISize::Make(2*kPad+kImageSize, 2*kPad+kImageSize); } diff --git a/gm/yuvtorgbsubset.cpp b/gm/yuvtorgbsubset.cpp index 0f0c451ff779..4a4af1a4d61b 100644 --- a/gm/yuvtorgbsubset.cpp +++ b/gm/yuvtorgbsubset.cpp @@ -47,11 +47,9 @@ class YUVtoRGBSubsetEffect : public GpuGM { } protected: - SkString onShortName() override { - return SkString("yuv_to_rgb_subset_effect"); - } + SkString getName() const override { return SkString("yuv_to_rgb_subset_effect"); } - SkISize onISize() override { return {1310, 540}; } + SkISize getISize() override { return {1310, 540}; } void makePixmaps() { SkYUVAInfo yuvaInfo = SkYUVAInfo({8, 8}, diff --git a/gn/bazel_build.py b/gn/bazel_build.py index fd3089f26823..7cf5a99cec3a 100644 --- a/gn/bazel_build.py +++ b/gn/bazel_build.py @@ -4,6 +4,20 @@ # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# +# This script runs bazel build [target] [additional_arg] [additional_arg] +# and then copies each of the specified outputs from the bazel-bin output +# folder under the current working directory. This allows GN to shell out +# to Bazel to generate or compile files, but still have them show up where +# GN expects (in the output folder). +# +# The first argument passed in to this script is the Bazel target. +# subsequent arguments are treated either as Bazel flags (if they start with +# --) or output files to copy (if they do not). +# +# Output files may contain an equals sign (=), which means the first part is +# the Bazel file to copy and the second part is where to copy it. If omitted, +# the file will go immediately under the GN output directory. import hashlib import os @@ -12,21 +26,42 @@ import sys target = sys.argv[1] -output = sys.argv[2] +outputs = {} +bazel_args = [] +for arg in sys.argv[2:]: + if arg.startswith("--"): + bazel_args.append(arg) + else: + if "=" in arg: + # "../../bazel-bin/src/ports/ffi.h=src/core/ffi.h" means to + # copy ../../bazel-bin/src/ports/ffi.h to + # $GN_OUTPUT/src/core/ffi.h + bazel_file, output_path = arg.split("=") + outputs[bazel_file] = output_path + else: + # "../../bazel-bin/src/ports/libstuff.a" means to copy + # ../../bazel-bin/src/ports/libstuff.a to + # $GN_OUTPUT/libstuff.a + outputs[arg] = os.path.basename(arg) print("Invoking bazelisk from ", os.getcwd()) - # Forward the remaining args to the bazel invocation -subprocess.run(["bazelisk", "build", target ] + sys.argv[3:], check=True) +subprocess.run(["bazelisk", "build", target ] + bazel_args, check=True) -expected_output = os.path.join(os.getcwd(), os.path.basename(output)) -if not os.path.exists(expected_output): - shutil.copyfile(output, expected_output) - os.chmod(expected_output, 0o755) -else: - created_hash = hashlib.sha256(open(output, 'rb').read()).hexdigest() - existing_hash = hashlib.sha256(open(expected_output, 'rb').read()).hexdigest() - if created_hash != existing_hash: - os.remove(expected_output) - shutil.copyfile(output, expected_output) +for bazel_file, output_path in outputs.items(): + # GN expects files to be created underneath the output directory from which + # this script is invoked. + expected_output = os.path.join(os.getcwd(), output_path) + if not os.path.exists(expected_output): + shutil.copyfile(bazel_file, expected_output) os.chmod(expected_output, 0o755) + else: + # GN uses timestamps to determine if it should re-build a file. If the + # two files match (via hash) we should not re-copy the output, which would + # re-trigger subsequent rebuilds. + created_hash = hashlib.sha256(open(bazel_file, 'rb').read()).hexdigest() + existing_hash = hashlib.sha256(open(expected_output, 'rb').read()).hexdigest() + if created_hash != existing_hash: + os.remove(expected_output) + shutil.copyfile(bazel_file, expected_output) + os.chmod(expected_output, 0o755) diff --git a/gn/core.gni b/gn/core.gni index 111fbd3093a2..d4bf8077aebe 100644 --- a/gn/core.gni +++ b/gn/core.gni @@ -232,6 +232,7 @@ skia_core_sources = [ "$_include/private/base/SkAPI.h", "$_include/private/base/SkAlign.h", "$_include/private/base/SkAlignedStorage.h", + "$_include/private/base/SkAnySubclass.h", "$_include/private/base/SkAssert.h", "$_include/private/base/SkAttributes.h", "$_include/private/base/SkCPUTypes.h", @@ -358,6 +359,8 @@ skia_core_sources = [ "$_src/core/SkBlitMask_opts_ssse3.cpp", "$_src/core/SkBlitRow.h", "$_src/core/SkBlitRow_D32.cpp", + "$_src/core/SkBlitRow_opts.cpp", + "$_src/core/SkBlitRow_opts_hsw.cpp", "$_src/core/SkBlitter.cpp", "$_src/core/SkBlitter.h", "$_src/core/SkBlitter_A8.cpp", @@ -377,7 +380,6 @@ skia_core_sources = [ "$_src/core/SkCapabilities.cpp", "$_src/core/SkChecksum.cpp", "$_src/core/SkChecksum.h", - "$_src/core/SkChromeRemoteGlyphCache.cpp", "$_src/core/SkClipStack.cpp", "$_src/core/SkClipStack.h", "$_src/core/SkClipStackDevice.cpp", @@ -446,7 +448,6 @@ skia_core_sources = [ "$_src/core/SkFontStream.cpp", "$_src/core/SkFontStream.h", "$_src/core/SkFont_serial.cpp", - "$_src/core/SkFuzzLogging.h", "$_src/core/SkGaussFilter.cpp", "$_src/core/SkGaussFilter.h", "$_src/core/SkGeometry.cpp", @@ -495,6 +496,12 @@ skia_core_sources = [ "$_src/core/SkMatrixInvert.h", "$_src/core/SkMatrixPriv.h", "$_src/core/SkMatrixUtils.h", + "$_src/core/SkMemset.h", + "$_src/core/SkMemset_opts.cpp", + "$_src/core/SkMemset_opts_avx.cpp", + "$_src/core/SkMemset_opts_erms.cpp", + "$_src/core/SkMesh.cpp", + "$_src/core/SkMeshPriv.h", "$_src/core/SkMessageBus.h", "$_src/core/SkMipmap.cpp", "$_src/core/SkMipmap.h", @@ -506,7 +513,7 @@ skia_core_sources = [ "$_src/core/SkOSFile.h", "$_src/core/SkOpts.cpp", "$_src/core/SkOpts.h", - "$_src/core/SkOpts_erms.cpp", + "$_src/core/SkOptsTargets.h", "$_src/core/SkOverdrawCanvas.cpp", "$_src/core/SkPaint.cpp", "$_src/core/SkPaintDefaults.h", @@ -570,6 +577,12 @@ skia_core_sources = [ "$_src/core/SkRegion_path.cpp", "$_src/core/SkResourceCache.cpp", "$_src/core/SkResourceCache.h", + "$_src/core/SkRuntimeBlender.cpp", + "$_src/core/SkRuntimeBlender.h", + "$_src/core/SkRuntimeEffect.cpp", + "$_src/core/SkRuntimeEffectPriv.h", + "$_src/core/SkSLTypeShared.cpp", + "$_src/core/SkSLTypeShared.h", "$_src/core/SkSafeRange.h", "$_src/core/SkSamplingPriv.h", "$_src/core/SkScalar.cpp", @@ -610,6 +623,9 @@ skia_core_sources = [ "$_src/core/SkSurfacePriv.h", "$_src/core/SkSwizzle.cpp", "$_src/core/SkSwizzlePriv.h", + "$_src/core/SkSwizzler_opts.cpp", + "$_src/core/SkSwizzler_opts_hsw.cpp", + "$_src/core/SkSwizzler_opts_ssse3.cpp", "$_src/core/SkTDynamicHash.h", "$_src/core/SkTHash.h", "$_src/core/SkTMultiMap.h", @@ -675,11 +691,11 @@ skia_core_sources = [ "$_src/opts/SkBitmapProcState_opts.h", "$_src/opts/SkBlitMask_opts.h", "$_src/opts/SkBlitRow_opts.h", + "$_src/opts/SkMemset_opts.h", "$_src/opts/SkOpts_RestoreTarget.h", "$_src/opts/SkOpts_SetTarget.h", "$_src/opts/SkRasterPipeline_opts.h", "$_src/opts/SkSwizzler_opts.h", - "$_src/opts/SkUtils_opts.h", "$_src/shaders/SkBitmapProcShader.cpp", "$_src/shaders/SkBitmapProcShader.h", "$_src/shaders/SkBlendShader.cpp", @@ -692,12 +708,15 @@ skia_core_sources = [ "$_src/shaders/SkCoordClampShader.h", "$_src/shaders/SkEmptyShader.cpp", "$_src/shaders/SkEmptyShader.h", + "$_src/shaders/SkGainmapShader.cpp", "$_src/shaders/SkImageShader.cpp", "$_src/shaders/SkImageShader.h", "$_src/shaders/SkLocalMatrixShader.cpp", "$_src/shaders/SkLocalMatrixShader.h", "$_src/shaders/SkPerlinNoiseShaderImpl.cpp", "$_src/shaders/SkPerlinNoiseShaderImpl.h", + "$_src/shaders/SkRuntimeShader.cpp", + "$_src/shaders/SkRuntimeShader.h", "$_src/shaders/SkShader.cpp", "$_src/shaders/SkShaderBase.cpp", "$_src/shaders/SkShaderBase.h", @@ -712,25 +731,6 @@ skia_core_sources = [ "$_src/text/TextBlobMailbox.h", ] -# List generated by Bazel rules: -# //src/core:sksl_hdrs -# //src/core:sksl_srcs -# //src/shaders:sksl_hdrs -# //src/shaders:sksl_srcs -skia_needs_sksl_sources = [ - "$_src/core/SkMesh.cpp", - "$_src/core/SkMeshPriv.h", - "$_src/core/SkRuntimeBlender.cpp", - "$_src/core/SkRuntimeBlender.h", - "$_src/core/SkRuntimeEffect.cpp", - "$_src/core/SkRuntimeEffectPriv.h", - "$_src/core/SkSLTypeShared.cpp", - "$_src/core/SkSLTypeShared.h", - "$_src/shaders/SkGainmapShader.cpp", - "$_src/shaders/SkRuntimeShader.cpp", - "$_src/shaders/SkRuntimeShader.h", -] - # Generated by Bazel rule //include/pathops:public_hdrs skia_pathops_public = [ "$_include/pathops/SkPathOps.h" ] diff --git a/gn/effects.gni b/gn/effects.gni index 5236594f6416..18fda8f96e2d 100644 --- a/gn/effects.gni +++ b/gn/effects.gni @@ -93,17 +93,10 @@ skia_colorfilters_sources = [ "$_src/effects/colorfilters/SkGaussianColorFilter.h", "$_src/effects/colorfilters/SkMatrixColorFilter.cpp", "$_src/effects/colorfilters/SkMatrixColorFilter.h", + "$_src/effects/colorfilters/SkRuntimeColorFilter.cpp", "$_src/effects/colorfilters/SkRuntimeColorFilter.h", "$_src/effects/colorfilters/SkTableColorFilter.cpp", "$_src/effects/colorfilters/SkTableColorFilter.h", "$_src/effects/colorfilters/SkWorkingFormatColorFilter.cpp", "$_src/effects/colorfilters/SkWorkingFormatColorFilter.h", ] - -# Generated by Bazel rule //src/effects/colorfilters:sksl_srcs -skia_colorfilters_sksl_sources = - [ "$_src/effects/colorfilters/SkRuntimeColorFilter.cpp" ] - -# Generated by Bazel rule //src/effects/colorfilters:no_sksl_srcs -skia_colorfilters_nosksl_sources = - [ "$_src/effects/colorfilters/SkRuntimeColorFilter_none.cpp" ] diff --git a/gn/gn_to_bp.py b/gn/gn_to_bp.py index eaf582268a68..d97fdb0936ee 100755 --- a/gn/gn_to_bp.py +++ b/gn/gn_to_bp.py @@ -311,6 +311,7 @@ cflags: [ "-DSK_SHAPER_HARFBUZZ_AVAILABLE", "-DSK_UNICODE_AVAILABLE", + "-DSK_UNICODE_ICU_IMPLEMENTATION", "-Wno-implicit-fallthrough", "-Wno-unused-parameter", "-Wno-unused-variable", @@ -655,26 +656,26 @@ def strip_headers(sources): js_skqp = gn_to_bp_utils.GenerateJSONFromGN(skqp_gn_args.GetGNArgs(api_level=skqp_sdk_version, debug=False, is_android_bp=True)) -skqp_srcs = strip_slashes(js_skqp['targets']['//:libskqp_app']['sources']) -skqp_includes = strip_slashes(js_skqp['targets']['//:libskqp_app']['include_dirs']) -skqp_cflags = strip_slashes(js_skqp['targets']['//:libskqp_app']['cflags']) -skqp_cflags_cc = strip_slashes(js_skqp['targets']['//:libskqp_app']['cflags_cc']) -skqp_defines = strip_slashes(js_skqp['targets']['//:libskqp_app']['defines']) +skqp_srcs = strip_slashes(js_skqp['targets']['//:libskqp_jni']['sources']) +skqp_includes = strip_slashes(js_skqp['targets']['//:libskqp_jni']['include_dirs']) +skqp_cflags = strip_slashes(js_skqp['targets']['//:libskqp_jni']['cflags']) +skqp_cflags_cc = strip_slashes(js_skqp['targets']['//:libskqp_jni']['cflags_cc']) +skqp_defines = strip_slashes(js_skqp['targets']['//:libskqp_jni']['defines']) skqp_includes.update(strip_slashes(js_skqp['targets']['//:public']['include_dirs'])) -gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_app', 'sources', +gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_jni', 'sources', skqp_srcs, None) # We are exlcuding gpu here to get rid of the includes that are being added from # vulkanmemoryallocator. This does not seem to remove any other incldues from gpu so things # should work out fine for now -gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_app', 'include_dirs', +gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_jni', 'include_dirs', skqp_includes, ['//:gif', '//:gpu']) -gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_app', 'cflags', +gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_jni', 'cflags', skqp_cflags, None) -gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_app', 'cflags_cc', +gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_jni', 'cflags_cc', skqp_cflags_cc, None) -gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_app', 'defines', +gn_to_bp_utils.GrabDependentValues(js_skqp, '//:libskqp_jni', 'defines', skqp_defines, None) skqp_defines.add("SK_ENABLE_DUMP_GPU") @@ -781,9 +782,7 @@ def bpfmt(indent, lst, sort=True): 'cflags': bpfmt(8, cflags, False), 'cflags_cc': bpfmt(8, cflags_cc), - 'x86_srcs': bpfmt(16, strip_headers(defs['ssse3'] + - defs['avx' ] + - defs['hsw' ])), + 'x86_srcs': bpfmt(16, strip_headers(defs['hsw' ])), 'gm_includes' : bpfmt(8, gm_includes), 'gm_srcs' : bpfmt(8, gm_srcs), diff --git a/gn/gpu.gni b/gn/gpu.gni index b6eb1418f2ec..4790e0033dfa 100644 --- a/gn/gpu.gni +++ b/gn/gpu.gni @@ -4,9 +4,9 @@ # The sources of truth are: # //include/gpu/BUILD.bazel # //include/gpu/d3d/BUILD.bazel -# //include/gpu/dawn/BUILD.bazel # //include/gpu/ganesh/BUILD.bazel # //include/gpu/ganesh/gl/BUILD.bazel +# //include/gpu/ganesh/vk/BUILD.bazel # //include/gpu/gl/BUILD.bazel # //include/gpu/gl/egl/BUILD.bazel # //include/gpu/gl/glx/BUILD.bazel @@ -21,7 +21,6 @@ # //src/gpu/dawn/BUILD.bazel # //src/gpu/ganesh/BUILD.bazel # //src/gpu/ganesh/d3d/BUILD.bazel -# //src/gpu/ganesh/dawn/BUILD.bazel # //src/gpu/ganesh/effects/BUILD.bazel # //src/gpu/ganesh/geometry/BUILD.bazel # //src/gpu/ganesh/gl/BUILD.bazel @@ -63,7 +62,6 @@ skia_gpu_public = [ "$_include/gpu/GrBackendDrawableInfo.h", "$_include/gpu/GrBackendSemaphore.h", "$_include/gpu/GrBackendSurface.h", - "$_include/gpu/GrBackendSurfaceMutableState.h", "$_include/gpu/GrContextOptions.h", "$_include/gpu/GrContextThreadSafeProxy.h", "$_include/gpu/GrDirectContext.h", @@ -388,10 +386,6 @@ skia_ganesh_private = [ "$_src/gpu/ganesh/effects/GrDisableColorXP.h", "$_src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp", "$_src/gpu/ganesh/effects/GrDistanceFieldGeoProc.h", - "$_src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.cpp", - "$_src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h", - "$_src/gpu/ganesh/effects/GrMatrixConvolutionEffect.cpp", - "$_src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h", "$_src/gpu/ganesh/effects/GrMatrixEffect.cpp", "$_src/gpu/ganesh/effects/GrMatrixEffect.h", "$_src/gpu/ganesh/effects/GrModulateAtlasCoverageEffect.cpp", @@ -750,8 +744,11 @@ skia_skgpu_v1_sources = [ "$_src/gpu/ganesh/ops/TriangulatingPathRenderer.h", ] -# Generated by Bazel rule //include/gpu/vk:public_hdrs +# List generated by Bazel rules: +# //include/gpu/vk:public_hdrs +# //include/gpu/ganesh/vk:public_hdrs skia_gpu_vk_public = [ + "$_include/gpu/ganesh/vk/GrVkBackendSurface.h", "$_include/gpu/vk/GrVkBackendContext.h", "$_include/gpu/vk/GrVkExtensions.h", "$_include/gpu/vk/GrVkMemoryAllocator.h", @@ -769,6 +766,8 @@ skia_gpu_vk_chromium_public = skia_gpu_vk_private = [ "$_include/private/gpu/ganesh/GrVkTypesPriv.h", "$_src/gpu/ganesh/vk/AHardwareBufferVk.cpp", + "$_src/gpu/ganesh/vk/GrVkBackendSurface.cpp", + "$_src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h", "$_src/gpu/ganesh/vk/GrVkBuffer.cpp", "$_src/gpu/ganesh/vk/GrVkBuffer.h", "$_src/gpu/ganesh/vk/GrVkCaps.cpp", @@ -895,44 +894,6 @@ skia_direct3d_sources = [ "$_src/gpu/ganesh/d3d/GrD3DUtil.h", ] -# Generated by Bazel rule //include/gpu/dawn:public_hdrs -skia_gpu_dawn_public = [ "$_include/gpu/dawn/GrDawnTypes.h" ] - -# List generated by Bazel rules: -# //include/private/gpu/ganesh:dawn_private_hdrs -# //src/gpu/ganesh/dawn:dawn_hdrs -# //src/gpu/ganesh/dawn:dawn_srcs -skia_gpu_dawn_private = [ - "$_include/private/gpu/ganesh/GrDawnTypesPriv.h", - "$_src/gpu/ganesh/dawn/GrDawnAsyncWait.cpp", - "$_src/gpu/ganesh/dawn/GrDawnAsyncWait.h", - "$_src/gpu/ganesh/dawn/GrDawnAttachment.cpp", - "$_src/gpu/ganesh/dawn/GrDawnAttachment.h", - "$_src/gpu/ganesh/dawn/GrDawnBuffer.cpp", - "$_src/gpu/ganesh/dawn/GrDawnBuffer.h", - "$_src/gpu/ganesh/dawn/GrDawnCaps.cpp", - "$_src/gpu/ganesh/dawn/GrDawnCaps.h", - "$_src/gpu/ganesh/dawn/GrDawnGpu.cpp", - "$_src/gpu/ganesh/dawn/GrDawnGpu.h", - "$_src/gpu/ganesh/dawn/GrDawnOpsRenderPass.cpp", - "$_src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h", - "$_src/gpu/ganesh/dawn/GrDawnProgramBuilder.cpp", - "$_src/gpu/ganesh/dawn/GrDawnProgramBuilder.h", - "$_src/gpu/ganesh/dawn/GrDawnProgramDataManager.cpp", - "$_src/gpu/ganesh/dawn/GrDawnProgramDataManager.h", - "$_src/gpu/ganesh/dawn/GrDawnRenderTarget.cpp", - "$_src/gpu/ganesh/dawn/GrDawnRenderTarget.h", - "$_src/gpu/ganesh/dawn/GrDawnRingBuffer.cpp", - "$_src/gpu/ganesh/dawn/GrDawnRingBuffer.h", - "$_src/gpu/ganesh/dawn/GrDawnTexture.cpp", - "$_src/gpu/ganesh/dawn/GrDawnTexture.h", - "$_src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.cpp", - "$_src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h", - "$_src/gpu/ganesh/dawn/GrDawnTypesPriv.cpp", - "$_src/gpu/ganesh/dawn/GrDawnUtil.cpp", - "$_src/gpu/ganesh/dawn/GrDawnUtil.h", -] - # Generated by Bazel rule //include/gpu/mtl:public_hdrs skia_gpu_metal_public = [ "$_include/gpu/mtl/GrMtlBackendContext.h", @@ -1046,6 +1007,8 @@ skia_shared_gpu_sources = [ "$_src/gpu/Blend.h", "$_src/gpu/BlendFormula.cpp", "$_src/gpu/BlendFormula.h", + "$_src/gpu/BlurUtils.cpp", + "$_src/gpu/BlurUtils.h", "$_src/gpu/BufferWriter.h", "$_src/gpu/DitherUtils.cpp", "$_src/gpu/DitherUtils.h", @@ -1090,6 +1053,7 @@ skia_shared_gpu_sources = [ "$_src/text/gpu/SDFMaskFilter.h", "$_src/text/gpu/SDFTControl.cpp", "$_src/text/gpu/SDFTControl.h", + "$_src/text/gpu/SkChromeRemoteGlyphCache.cpp", "$_src/text/gpu/Slug.cpp", "$_src/text/gpu/SlugImpl.cpp", "$_src/text/gpu/SlugImpl.h", diff --git a/gn/graphite.gni b/gn/graphite.gni index b9cba91567e2..54e446789de3 100644 --- a/gn/graphite.gni +++ b/gn/graphite.gni @@ -14,6 +14,7 @@ skia_graphite_public = [ "$_include/Context.h", "$_include/ContextOptions.h", "$_include/GraphiteTypes.h", + "$_include/Image.h", "$_include/ImageProvider.h", "$_include/Recorder.h", "$_include/Recording.h", @@ -82,8 +83,6 @@ skia_graphite_sources = [ "$_src/GraphiteResourceKey.cpp", "$_src/GraphiteResourceKey.h", "$_src/ImageFactories.cpp", - "$_src/ImageUtils.cpp", - "$_src/ImageUtils.h", "$_src/Image_Base_Graphite.cpp", "$_src/Image_Base_Graphite.h", "$_src/Image_Graphite.cpp", @@ -221,6 +220,10 @@ skia_graphite_dawn_sources = [ "$_src/dawn/DawnCaps.h", "$_src/dawn/DawnCommandBuffer.cpp", "$_src/dawn/DawnCommandBuffer.h", + "$_src/dawn/DawnComputePipeline.cpp", + "$_src/dawn/DawnComputePipeline.h", + "$_src/dawn/DawnErrorChecker.cpp", + "$_src/dawn/DawnErrorChecker.h", "$_src/dawn/DawnGraphicsPipeline.cpp", "$_src/dawn/DawnGraphicsPipeline.h", "$_src/dawn/DawnGraphiteUtils.cpp", diff --git a/gn/opts.gni b/gn/opts.gni index f2e49fb6f39e..b65600c1ab43 100644 --- a/gn/opts.gni +++ b/gn/opts.gni @@ -6,6 +6,4 @@ # Things are easiest for everyone if these source paths are absolute. _src = get_path_info("../src", "abspath") -ssse3 = [ "$_src/opts/SkOpts_ssse3.cpp" ] -avx = [ "$_src/opts/SkOpts_avx.cpp" ] hsw = [ "$_src/opts/SkOpts_hsw.cpp" ] diff --git a/gn/shared_sources.gni b/gn/shared_sources.gni index 25a50dd7cbd7..44daadb642d0 100644 --- a/gn/shared_sources.gni +++ b/gn/shared_sources.gni @@ -17,8 +17,5 @@ import("utils.gni") import("xml.gni") import("xps.gni") skia_opts = { - none_sources = [] - ssse3_sources = ssse3 - avx_sources = avx hsw_sources = hsw } diff --git a/gn/skia.gni b/gn/skia.gni index 1b0aa4176461..188397942648 100644 --- a/gn/skia.gni +++ b/gn/skia.gni @@ -25,7 +25,6 @@ declare_args() { skia_enable_skottie = !(is_win && is_component_build) || (is_wasm && skia_canvaskit_enable_skottie) skia_enable_precompile = true - skia_enable_sksl = true skia_enable_svg = !is_component_build skia_enable_tools = is_skia_dev_build skia_enable_gpu_debug_layers = is_skia_dev_build && is_debug @@ -198,14 +197,12 @@ declare_args() { } } +assert(!skia_use_dawn || skia_enable_graphite) # Dawn is Graphite-only + # Our tools require static linking (they use non-exported symbols), and the Ganesh backend. skia_enable_tools = skia_enable_tools && !is_component_build && skia_enable_ganesh -# The GPU build requires SkSL -skia_enable_sksl = - skia_enable_sksl || skia_enable_ganesh || skia_enable_graphite - if (skia_enable_optimize_size) { assert( !is_debug, diff --git a/gn/sksl.gni b/gn/sksl.gni index 853641c4da7d..01d969baeb92 100644 --- a/gn/sksl.gni +++ b/gn/sksl.gni @@ -266,13 +266,15 @@ skia_sksl_gpu_sources = [ # List generated by Bazel rules: # //src/base:skslc_srcs +# //src/core:core_skslc_hdrs # //src/core:core_skslc_srcs +# //src/gpu/ganesh:core_skslc_hdrs # //src/gpu/ganesh:core_skslc_srcs # //src/ports:malloc # //src/ports:osfile +# //src/utils:core_skslc_hdrs # //src/utils:core_skslc_srcs # //src/utils:json_srcs -# //src/utils:sksl_srcs skslc_deps = [ "$_src/base/SkArenaAlloc.cpp", "$_src/base/SkBlockAllocator.cpp", @@ -286,18 +288,25 @@ skslc_deps = [ "$_src/base/SkUTF.cpp", "$_src/base/SkUtils.cpp", "$_src/core/SkChecksum.cpp", + "$_src/core/SkChecksum.h", "$_src/core/SkCpu.cpp", + "$_src/core/SkCpu.h", "$_src/core/SkData.cpp", "$_src/core/SkMatrixInvert.cpp", + "$_src/core/SkMatrixInvert.h", "$_src/core/SkStream.cpp", "$_src/core/SkString.cpp", "$_src/core/SkStringUtils.cpp", + "$_src/core/SkStringUtils.h", "$_src/gpu/ganesh/GrMemoryPool.cpp", + "$_src/gpu/ganesh/GrMemoryPool.h", "$_src/ports/SkMemory_malloc.cpp", "$_src/ports/SkOSFile_stdio.cpp", "$_src/utils/SkJSON.cpp", "$_src/utils/SkJSONWriter.cpp", "$_src/utils/SkOSPath.cpp", + "$_src/utils/SkOSPath.h", "$_src/utils/SkParse.cpp", "$_src/utils/SkShaderUtils.cpp", + "$_src/utils/SkShaderUtils.h", ] diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni index ae2b84890d2c..c4146bc7c9ed 100644 --- a/gn/sksl_tests.gni +++ b/gn/sksl_tests.gni @@ -66,6 +66,7 @@ sksl_error_tests = [ "errors/CallNonFunction.rts", "errors/CanExitWithoutReturningValue.sksl", "errors/CommasAsConstantExpressions.rts", + "errors/CommasWithArrays.sksl", "errors/ComparisonDimensional.rts", "errors/ConstructorArgumentCount.rts", "errors/ConstructorTypeMismatch.rts", @@ -208,6 +209,9 @@ sksl_error_tests = [ "errors/OverflowUintLiteral.sksl", "errors/OverloadedBuiltin.sksl", "errors/OverloadedMain.sksl", + "errors/PixelFormatMismatch.compute", + "errors/PixelFormatMissing.compute", + "errors/PixelFormatOverloads.compute", "errors/PrecisionQualifiersDisallowed.sksl", "errors/PrivateTypes.rts", "errors/PrivateVariables.rts", @@ -275,6 +279,7 @@ sksl_error_tests = [ "errors/ReturnFromVoid.rts", "errors/ReturnMissingValue.rts", "errors/ReturnTypeMismatch.rts", + "errors/SamplerExternalOES.frag", "errors/SelfReferentialInitializerExpression.rts", "errors/SpuriousFloat.rts", "errors/StructMemberReservedName.rts", @@ -369,6 +374,7 @@ sksl_spirv_tests = [ "spirv/InterfaceBlockPushConstant.sksl", "spirv/LayoutMultipleOf4.sksl", "spirv/LayoutOutOfOrder.sksl", + "spirv/MixedSamplerTypes.sksl", "spirv/OpaqueTypeInArray.sksl", "spirv/Ossfuzz35916.sksl", "spirv/Ossfuzz37627.sksl", @@ -376,13 +382,20 @@ sksl_spirv_tests = [ "spirv/Ossfuzz53202.sksl", "spirv/StructArrayMemberInDifferentLayouts.sksl", "spirv/UnusedInterfaceBlock.sksl", - "spirv/WGSLLayoutInVulkanSPIRV.sksl", - "spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.sksl", + "spirv/WrongCombinedSamplerLayoutForWebGPUSampler.sksl", "workarounds/RewriteMatrixVectorMultiply.sksl", ] # Generated by Bazel rule //resources/sksl:sksl_wgsl_tests sksl_wgsl_tests = [ + "shared/Derivatives.sksl", + "shared/Optimizations.sksl", + "shared/Switch.sksl", + "shared/SwitchDefaultOnly.sksl", + "shared/SwitchWithFallthrough.sksl", + "shared/SwitchWithFallthroughAndVarDecls.sksl", + "shared/SwitchWithLoops.sksl", + "shared/SwitchWithLoopsES3.sksl", "spirv/CombinedSamplerTypeDawnCompatMode.sksl", "spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl", "wgsl/BuiltinFragmentStageIO.sksl", @@ -393,6 +406,7 @@ sksl_wgsl_tests = [ "wgsl/CastMat4x4ToMat3x4.sksl", "wgsl/CastMat4x4ToMat4x3.sksl", "wgsl/CastVec4ToMat2x2.sksl", + "wgsl/EntrypointIsWrittenLast.sksl", "wgsl/Equality.sksl", "wgsl/FunctionCallDependencies.sksl", "wgsl/GlobalUniforms.sksl", @@ -406,6 +420,7 @@ sksl_wgsl_tests = [ "wgsl/OutParams.sksl", "wgsl/Sample.sksl", "wgsl/TernaryThenShortCircuit.sksl", + "wgsl/UniformArrays.sksl", "wgsl/UniformMatrices.sksl", "wgsl/UserDefinedPipelineIO.sksl", "wgsl/VertexPositionOutputIsAlwaysDeclared.vert", @@ -585,6 +600,7 @@ sksl_shared_tests = [ "shared/MatrixSwizzleStore.sksl", "shared/MatrixToVectorCast.sksl", "shared/MultipleAssignments.sksl", + "shared/NestedComparisonIntrinsics.sksl", "shared/NoFragCoordsPos.vert", "shared/NoFragCoordsPosRT.vert", "shared/NormalizationVert.vert", @@ -762,7 +778,6 @@ sksl_inliner_tests = [ "inliner/ModifiedArrayParametersCannotBeInlined.sksl", "inliner/ModifiedStructParametersCannotBeInlined.sksl", "inliner/NoInline.sksl", - "inliner/OpaqueCallsCannotBeInlined.sksl", "inliner/Ossfuzz37994.sksl", "inliner/ShortCircuitEvaluationsCannotInlineRightHandSide.sksl", "inliner/StaticSwitch.sksl", @@ -840,6 +855,8 @@ sksl_settings_tests = [ "workarounds/RewriteMatrixComparisons.sksl", "workarounds/RewriteMatrixVectorMultiply.sksl", "workarounds/TernaryShortCircuit.sksl", + "workarounds/VoidInSequenceExpressions.sksl", + "workarounds/VoidInSequenceExpressionsWithVoidMain.sksl", ] # Generated by Bazel rule //resources/sksl:sksl_rte_tests @@ -949,7 +966,8 @@ sksl_metal_tests_sources = sksl_hlsl_tests_sources = sksl_blend_tests + sksl_shared_tests -sksl_wgsl_tests_sources = sksl_blend_tests + sksl_shared_tests + sksl_wgsl_tests +sksl_wgsl_tests_sources = + sksl_blend_tests + sksl_folding_tests + sksl_shared_tests + sksl_wgsl_tests sksl_spirv_tests_sources = sksl_blend_tests + sksl_compute_tests + sksl_shared_tests + sksl_spirv_tests diff --git a/gn/tests.gni b/gn/tests.gni index 873223e58456..bf992db03a72 100644 --- a/gn/tests.gni +++ b/gn/tests.gni @@ -348,11 +348,13 @@ graphite_tests_sources = [ "$_tests/graphite/BackendTextureTest.cpp", "$_tests/graphite/BoundsManagerTest.cpp", "$_tests/graphite/BufferManagerTest.cpp", + "$_tests/graphite/CacheKeyTest.cpp", "$_tests/graphite/ComputeTest.cpp", "$_tests/graphite/DeviceTest.cpp", "$_tests/graphite/GraphitePromiseImageTest.cpp", "$_tests/graphite/GraphiteResourceCacheTest.cpp", "$_tests/graphite/GraphiteYUVAPromiseImageTest.cpp", + "$_tests/graphite/ImageOriginTest.cpp", "$_tests/graphite/ImageProviderTest.cpp", "$_tests/graphite/ImageShaderTest.cpp", "$_tests/graphite/IntersectionTreeTest.cpp", diff --git a/gn/utils.gni b/gn/utils.gni index d86380e4d2fe..6f1c01189987 100644 --- a/gn/utils.gni +++ b/gn/utils.gni @@ -46,8 +46,6 @@ skia_utils_chromium = [ "$_src/utils/SkMultiPictureDocument.h" ] # //src/utils:core_srcs # //src/utils:json_hdrs # //src/utils:json_srcs -# //src/utils:sksl_hdrs -# //src/utils:sksl_srcs # //src/utils/mac:core_hdrs # //src/utils/mac:core_srcs # //src/utils/win:core_hdrs diff --git a/include/BUILD.bazel b/include/BUILD.bazel index 587f7b48eac8..1ec64e07b824 100644 --- a/include/BUILD.bazel +++ b/include/BUILD.bazel @@ -15,11 +15,9 @@ skia_filegroup( "//include/encode:public_hdrs", "//include/pathops:public_hdrs", "//include/ports:public_hdrs", + "//include/sksl:public_hdrs", "//include/utils:public_hdrs", ] + select({ - "//src/sksl:needs_sksl": ["//include/sksl:public_hdrs"], - "//conditions:default": [], - }) + select({ "//src/gpu:has_ganesh_backend": ["//include/gpu:public_hdrs"], "//conditions:default": [], }) + select({ @@ -89,7 +87,6 @@ generate_cpp_files_for_headers( "include/encode/SkJpegEncoder.h", "include/encode/SkPngEncoder.h", "include/encode/SkWebpEncoder.h", - "include/gpu/GrBackendSurfaceMutableState.h", "include/gpu/GrTypes.h", "include/gpu/MutableTextureState.h", "include/gpu/ganesh/GrExternalTextureGenerator.h", diff --git a/include/c/gr_context.h b/include/c/gr_context.h index c33f19e4579f..bdece4ace14e 100644 --- a/include/c/gr_context.h +++ b/include/c/gr_context.h @@ -91,8 +91,8 @@ SK_C_API bool gr_backendtexture_get_gl_textureinfo(const gr_backendtexture_t* te // GrBackendRenderTarget SK_C_API gr_backendrendertarget_t* gr_backendrendertarget_new_gl(int width, int height, int samples, int stencils, const gr_gl_framebufferinfo_t* glInfo); -SK_C_API gr_backendrendertarget_t* gr_backendrendertarget_new_vulkan(int width, int height, int samples, const gr_vk_imageinfo_t* vkImageInfo); -SK_C_API gr_backendrendertarget_t* gr_backendrendertarget_new_metal(int width, int height, int samples, const gr_mtl_textureinfo_t* mtlInfo); +SK_C_API gr_backendrendertarget_t* gr_backendrendertarget_new_vulkan(int width, int height, const gr_vk_imageinfo_t* vkImageInfo); +SK_C_API gr_backendrendertarget_t* gr_backendrendertarget_new_metal(int width, int height, const gr_mtl_textureinfo_t* mtlInfo); SK_C_API void gr_backendrendertarget_delete(gr_backendrendertarget_t* rendertarget); diff --git a/include/c/sk_types.h b/include/c/sk_types.h index 12dd12aa64b6..9d55044d588e 100644 --- a/include/c/sk_types.h +++ b/include/c/sk_types.h @@ -637,11 +637,11 @@ typedef struct gr_direct_context_t gr_direct_context_t; typedef struct gr_recording_context_t gr_recording_context_t; typedef enum { - OPENGL_GR_BACKEND, - VULKAN_GR_BACKEND, - METAL_GR_BACKEND, - DIRECT3D_GR_BACKEND, - DAWN_GR_BACKEND, + OPENGL_GR_BACKEND = 0, + VULKAN_GR_BACKEND = 1, + METAL_GR_BACKEND = 2, + DIRECT3D_GR_BACKEND = 3, + UNSUPPORTED_GR_BACKEND = 5, } gr_backend_t; typedef intptr_t gr_backendcontext_t; diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h index ed758d81aea9..69a973fd08a6 100644 --- a/include/codec/SkCodec.h +++ b/include/codec/SkCodec.h @@ -1008,6 +1008,7 @@ class SK_API SkCodec : SkNoncopyable { virtual SkSampler* getSampler(bool /*createIfNecessary*/) { return nullptr; } friend class DM::CodecSrc; // for fillIncompleteImage + friend class PNGCodecGM; // for fillIncompleteImage friend class SkSampledCodec; friend class SkIcoCodec; friend class SkAndroidCodec; // for fEncodedInfo diff --git a/include/config/copts.bzl b/include/config/copts.bzl index bdce70c27903..326aac072489 100644 --- a/include/config/copts.bzl +++ b/include/config/copts.bzl @@ -90,9 +90,11 @@ WARNINGS = [ "-Wno-undefined-func-template", "-Wno-unused-parameter", # It is common to have unused parameters in src/ "-Wno-zero-as-null-pointer-constant", # VK_NULL_HANDLE is defined as 0 + "-Wno-unsafe-buffer-usage", #### Warnings we would like to fix #### "-Wno-abstract-vbase-init", "-Wno-cast-align", + "-Wno-cast-function-type-strict", "-Wno-cast-qual", "-Wno-class-varargs", "-Wno-conversion", # -Wsign-conversion re-enabled for header sources diff --git a/include/core/SkCapabilities.h b/include/core/SkCapabilities.h index 8ccb3fdf3877..3053c5755935 100644 --- a/include/core/SkCapabilities.h +++ b/include/core/SkCapabilities.h @@ -10,11 +10,9 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkTypes.h" - -#ifdef SK_ENABLE_SKSL #include "include/sksl/SkSLVersion.h" + namespace SkSL { struct ShaderCaps; } -#endif #if defined(SK_GRAPHITE) namespace skgpu::graphite { class Caps; } @@ -24,9 +22,7 @@ class SK_API SkCapabilities : public SkRefCnt { public: static sk_sp RasterBackend(); -#ifdef SK_ENABLE_SKSL SkSL::Version skslVersion() const { return fSkSLVersion; } -#endif protected: #if defined(SK_GRAPHITE) @@ -35,11 +31,9 @@ class SK_API SkCapabilities : public SkRefCnt { SkCapabilities() = default; -#ifdef SK_ENABLE_SKSL void initSkCaps(const SkSL::ShaderCaps*); SkSL::Version fSkSLVersion = SkSL::Version::k100; -#endif }; #endif diff --git a/include/core/SkGraphics.h b/include/core/SkGraphics.h index b79ee91ac0c6..5ca1cea14dc2 100644 --- a/include/core/SkGraphics.h +++ b/include/core/SkGraphics.h @@ -9,13 +9,15 @@ #define SkGraphics_DEFINED #include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" +#include +#include #include class SkData; class SkImageGenerator; class SkOpenTypeSVGDecoder; -class SkPath; class SkTraceMemoryDump; class SK_API SkGraphics { diff --git a/include/core/SkImage.h b/include/core/SkImage.h index bd73ab8483bc..e30eaca81ed6 100644 --- a/include/core/SkImage.h +++ b/include/core/SkImage.h @@ -216,6 +216,34 @@ SK_API sk_sp RasterFromData(const SkImageInfo& info, sk_sp pixels, size_t rowBytes); +/** Creates a filtered SkImage on the CPU. filter processes the src image, potentially changing + the color, position, and size. subset is the bounds of src that are processed + by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset + is required storage for the actual bounds of the filtered SkImage. offset is + required storage for translation of returned SkImage. + + Returns nullptr a filtered result could not be created. If nullptr is returned, outSubset + and offset are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. + outSubset describes the valid bounds of returned image. offset translates the returned SkImage + to keep subsequent animation frames aligned with respect to each other. + + @param src the image to be filtered + @param filter the image filter to be applied + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + } // namespace SkImages /** \class SkImage @@ -728,6 +756,11 @@ class SK_API SkImage : public SkRefCnt { */ bool hasMipmaps() const; + /** + * Returns true if the image holds protected content. + */ + bool isProtected() const; + /** * Returns an image with the same "base" pixels as the this image, but with mipmap levels * automatically generated and attached. @@ -768,36 +801,17 @@ class SK_API SkImage : public SkRefCnt { } #endif - /** Creates filtered SkImage. filter processes original SkImage, potentially changing - color, position, and size. subset is the bounds of original SkImage processed - by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset - is required storage for the actual bounds of the filtered SkImage. offset is - required storage for translation of returned SkImage. - - Returns nullptr if SkImage could not be created or if the recording context provided doesn't - match the GPU context in which the image was created. If nullptr is returned, outSubset - and offset are undefined. - - Useful for animation of SkImageFilter that varies size from frame to frame. - Returned SkImage is created larger than required by filter so that GPU texture - can be reused with different sized effects. outSubset describes the valid bounds - of GPU texture returned. offset translates the returned SkImage to keep subsequent - animation frames aligned with respect to each other. - - @param context the GrRecordingContext in play - if it exists - @param filter how SkImage is sampled when transformed - @param subset bounds of SkImage processed by filter - @param clipBounds expected bounds of filtered SkImage - @param outSubset storage for returned SkImage bounds - @param offset storage for returned SkImage translation - @return filtered SkImage, or nullptr - */ +#if !defined(SK_DISABLE_LEGACY_MAKEWITHFILTER) + /** DEPRECATED + * Please use the SkImages::MakeWithFilter factory functions + */ sk_sp makeWithFilter(GrRecordingContext* context, const SkImageFilter* filter, const SkIRect& subset, const SkIRect& clipBounds, SkIRect* outSubset, SkIPoint* offset) const; +#endif /** Deprecated. */ diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h index e2240916d405..7352cf71f720 100644 --- a/include/core/SkImageFilter.h +++ b/include/core/SkImageFilter.h @@ -9,10 +9,15 @@ #define SkImageFilter_DEFINED #include "include/core/SkFlattenable.h" -#include "include/core/SkMatrix.h" #include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include class SkColorFilter; +class SkMatrix; +struct SkDeserialProcs; /** * Base class for image filters. If one is installed in the paint, then all drawing occurs as diff --git a/include/core/SkImageGenerator.h b/include/core/SkImageGenerator.h index 7021c8b7da29..4210cdb60195 100644 --- a/include/core/SkImageGenerator.h +++ b/include/core/SkImageGenerator.h @@ -59,6 +59,13 @@ class SK_API SkImageGenerator { return this->onIsValid(context); } + /** + * Will this generator produce protected content + */ + bool isProtected() const { + return this->onIsProtected(); + } + /** * Decode into the given pixels, a block of memory of size at * least (info.fHeight - 1) * rowBytes + (info.fWidth * @@ -122,6 +129,7 @@ class SK_API SkImageGenerator { struct Options {}; virtual bool onGetPixels(const SkImageInfo&, void*, size_t, const Options&) { return false; } virtual bool onIsValid(GrRecordingContext*) const { return true; } + virtual bool onIsProtected() const { return false; } virtual bool onQueryYUVAInfo(const SkYUVAPixmapInfo::SupportedDataTypes&, SkYUVAPixmapInfo*) const { return false; } virtual bool onGetYUVAPlanes(const SkYUVAPixmaps&) { return false; } diff --git a/include/core/SkMilestone.h b/include/core/SkMilestone.h index 449e7e1d39d4..e797d055ed43 100644 --- a/include/core/SkMilestone.h +++ b/include/core/SkMilestone.h @@ -5,5 +5,5 @@ * found in the LICENSE file. */ #ifndef SK_MILESTONE -#define SK_MILESTONE 117 +#define SK_MILESTONE 118 #endif diff --git a/include/core/SkRegion.h b/include/core/SkRegion.h index 6f8aa25d5428..d72cd2ab7df3 100644 --- a/include/core/SkRegion.h +++ b/include/core/SkRegion.h @@ -9,10 +9,16 @@ #define SkRegion_DEFINED #include "include/core/SkRect.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" #include "include/private/base/SkTypeTraits.h" +#include +#include +#include + class SkPath; -class SkRgnBuilder; /** \class SkRegion SkRegion describes the set of pixels used to clip SkCanvas. SkRegion is compact, diff --git a/include/core/SkTiledImageUtils.h b/include/core/SkTiledImageUtils.h index 24af0a4116a0..fc5a4f25c5aa 100644 --- a/include/core/SkTiledImageUtils.h +++ b/include/core/SkTiledImageUtils.h @@ -102,7 +102,7 @@ inline void DrawImage(SkCanvas* canvas, DrawImage(canvas, image.get(), x, y, sampling, paint, constraint); } -static constexpr int kNumImageKeyValues = 5; +static constexpr int kNumImageKeyValues = 6; /** Retrieves a set of values that can be used as part of a cache key for the provided image. @@ -110,6 +110,10 @@ static constexpr int kNumImageKeyValues = 5; SkBitmap-backed SkImages can share a single SkBitmap and refer to different subsets of it. In this situation the optimal key is based on the SkBitmap's generation ID and the subset rectangle. + For Picture-backed images this method will attempt to generate a concise internally-based + key (i.e., containing picture ID, matrix translation, width and height, etc.). For complicated + Picture-backed images (i.e., those w/ a paint or a full matrix) it will fall back to + using 'image's unique key. @param image The image for which key values are desired @param keyValues The resulting key values diff --git a/include/core/SkTime.h b/include/core/SkTime.h index 9135c7e113c0..35e788c3cbab 100644 --- a/include/core/SkTime.h +++ b/include/core/SkTime.h @@ -10,10 +10,9 @@ #ifndef SkTime_DEFINED #define SkTime_DEFINED -#include "include/core/SkTypes.h" -#include "include/private/base/SkMacros.h" +#include "include/private/base/SkAPI.h" -#include +#include class SkString; @@ -42,22 +41,4 @@ class SK_API SkTime { static double GetNSecs(); }; -/////////////////////////////////////////////////////////////////////////////// - -class SkAutoTime { -public: - // The label is not deep-copied, so its address must remain valid for the - // lifetime of this object - SkAutoTime(const char* label = nullptr) - : fLabel(label) - , fNow(SkTime::GetMSecs()) {} - ~SkAutoTime() { - uint64_t dur = static_cast(SkTime::GetMSecs() - fNow); - SkDebugf("%s %" PRIu64 "\n", fLabel ? fLabel : "", dur); - } -private: - const char* fLabel; - double fNow; -}; - #endif diff --git a/include/core/SkTypeface.h b/include/core/SkTypeface.h index 802740a9e6d6..f1b351c6e58e 100644 --- a/include/core/SkTypeface.h +++ b/include/core/SkTypeface.h @@ -11,20 +11,25 @@ #include "include/core/SkFontArguments.h" #include "include/core/SkFontParameters.h" #include "include/core/SkFontStyle.h" -#include "include/core/SkFontTypes.h" #include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" #include "include/core/SkString.h" +#include "include/core/SkTypes.h" #include "include/private/SkWeakRefCnt.h" #include "include/private/base/SkOnce.h" +#include +#include +#include + class SkData; class SkDescriptor; -class SkFontData; class SkFontDescriptor; class SkScalerContext; class SkStream; class SkStreamAsset; class SkWStream; +enum class SkTextEncoding; struct SkAdvancedTypefaceMetrics; struct SkScalerContextEffects; struct SkScalerContextRec; diff --git a/include/core/SkTypes.h b/include/core/SkTypes.h index 768701b0bf20..d4ae1a99ead1 100644 --- a/include/core/SkTypes.h +++ b/include/core/SkTypes.h @@ -26,11 +26,7 @@ #include #include -#if defined(SK_GANESH) || defined(SK_GRAPHITE) -# if !defined(SK_ENABLE_SKSL) -# define SK_ENABLE_SKSL -# endif -#else +#if !defined(SK_GANESH) && !defined(SK_GRAPHITE) # undef SK_GL # undef SK_VULKAN # undef SK_METAL @@ -90,11 +86,6 @@ #define SK_GAMMA_EXPONENT (0.0f) // SRGB #endif -#ifndef GR_TEST_UTILS -# define GR_TEST_UTILS 0 -#endif - - #if defined(SK_HISTOGRAM_ENUMERATION) || \ defined(SK_HISTOGRAM_BOOLEAN) || \ defined(SK_HISTOGRAM_EXACT_LINEAR) || \ @@ -142,7 +133,8 @@ #endif /** - * Gr defines are set to 0 or 1, rather than being undefined or defined + * These defines are set to 0 or 1, rather than being undefined or defined + * TODO: consider updating these for consistency */ #if !defined(GR_CACHE_STATS) @@ -154,7 +146,7 @@ #endif #if !defined(GR_GPU_STATS) - #if defined(SK_DEBUG) || defined(SK_DUMP_STATS) || GR_TEST_UTILS + #if defined(SK_DEBUG) || defined(SK_DUMP_STATS) || defined(GR_TEST_UTILS) #define GR_GPU_STATS 1 #else #define GR_GPU_STATS 0 diff --git a/include/docs/SkPDFDocument.h b/include/docs/SkPDFDocument.h index 16e953be5e5e..19735ea85e6e 100644 --- a/include/docs/SkPDFDocument.h +++ b/include/docs/SkPDFDocument.h @@ -63,6 +63,8 @@ struct StructureElementNode { SkString fLang; }; +using DateTime = SkTime::DateTime; + /** Optional metadata to be passed into the PDF factory function. */ struct Metadata { @@ -96,12 +98,12 @@ struct Metadata { /** The date and time the document was created. The zero default value represents an unknown/unset time. */ - SkTime::DateTime fCreation = {0, 0, 0, 0, 0, 0, 0, 0}; + DateTime fCreation = {0, 0, 0, 0, 0, 0, 0, 0}; /** The date and time the document was most recently modified. The zero default value represents an unknown/unset time. */ - SkTime::DateTime fModified = {0, 0, 0, 0, 0, 0, 0, 0}; + DateTime fModified = {0, 0, 0, 0, 0, 0, 0, 0}; /** The DPI (pixels-per-inch) at which features without native PDF support will be rasterized (e.g. draw image with perspective, draw text with diff --git a/include/effects/SkImageFilters.h b/include/effects/SkImageFilters.h index a677ac62f859..aecbf1213b31 100644 --- a/include/effects/SkImageFilters.h +++ b/include/effects/SkImageFilters.h @@ -190,6 +190,11 @@ class SK_API SkImageFilters { SkColor color, sk_sp input, const CropRect& cropRect = {}); + /** + * Create a filter that always produces transparent black. + */ + static sk_sp Empty(); + /** * Create a filter that draws the 'srcRect' portion of image into 'dstRect' using the given * filter quality. Similar to SkCanvas::drawImageRect. The returned image filter evaluates diff --git a/include/gpu/BUILD.bazel b/include/gpu/BUILD.bazel index f664b6a9945b..a89fcc540058 100644 --- a/include/gpu/BUILD.bazel +++ b/include/gpu/BUILD.bazel @@ -20,7 +20,6 @@ skia_filegroup( "GrBackendDrawableInfo.h", "GrBackendSemaphore.h", "GrBackendSurface.h", - "GrBackendSurfaceMutableState.h", "GrContextOptions.h", "GrContextThreadSafeProxy.h", "GrDirectContext.h", @@ -37,7 +36,6 @@ skia_filegroup( "//include/gpu/ganesh:public_hdrs", ] + select_multi( { - "//src/gpu:dawn_ganesh": ["//include/gpu/dawn:public_hdrs"], "//src/gpu:vulkan_ganesh": ["//include/gpu/vk:public_hdrs"], "//src/gpu:metal_ganesh": ["//include/gpu/mtl:public_hdrs"], # TODO(kjlubick) d3d backend diff --git a/include/gpu/GpuTypes.h b/include/gpu/GpuTypes.h index e2e3961f8b9e..9fd7e7bc6ff6 100644 --- a/include/gpu/GpuTypes.h +++ b/include/gpu/GpuTypes.h @@ -24,6 +24,11 @@ enum class BackendApi : unsigned { kMetal, kVulkan, kMock, + + /** + * Graphite doesn't support some context types (e.g. Direct3D) and will return Unsupported. + */ + kUnsupported, }; /** Indicates whether an allocation should count against a cache budget. */ @@ -66,6 +71,14 @@ enum class Renderable : bool { kYes = true, }; +/** + * What is the logical origin of a BackendTexture passed into Skia + */ +enum class Origin : unsigned { + kTopLeft, + kBottomLeft, +}; + } // namespace skgpu diff --git a/include/gpu/GrBackendSurface.h b/include/gpu/GrBackendSurface.h index f120625f6367..52eb5506f04b 100644 --- a/include/gpu/GrBackendSurface.h +++ b/include/gpu/GrBackendSurface.h @@ -13,23 +13,16 @@ #include "include/gpu/GpuTypes.h" #include "include/gpu/GrTypes.h" #include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "include/gpu/mock/GrMockTypes.h" -#if !defined(SK_DISABLE_LEGACY_GL_BACKEND_SURFACE) && defined(SK_GL) -#include "include/gpu/gl/GrGLTypes.h" // IWYU pragma: keep -#include "include/private/gpu/ganesh/GrGLTypesPriv.h" // IWYU pragma: keep -#endif - -#ifdef SK_VULKAN -#include "include/gpu/vk/GrVkTypes.h" -#include "include/private/gpu/ganesh/GrVkTypesPriv.h" +#if !defined(SK_DISABLE_LEGACY_VK_BACKEND_SURFACE) && defined(SK_VULKAN) #include "include/private/gpu/vk/SkiaVulkan.h" -#endif -#ifdef SK_DAWN -#include "include/gpu/dawn/GrDawnTypes.h" +struct GrVkImageInfo; +struct GrVkYcbcrConversionInfo; #endif enum class SkTextureCompressionType; @@ -42,10 +35,6 @@ class MutableTextureState; class MutableTextureStateRef; } -#ifdef SK_DAWN -#include "webgpu/webgpu_cpp.h" -#endif - #ifdef SK_METAL #include "include/gpu/mtl/GrMtlTypes.h" #endif @@ -55,12 +44,12 @@ class MutableTextureStateRef; class GrD3DResourceState; #endif -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) class SkString; #endif +#include #include -#include #include #include @@ -72,21 +61,6 @@ class SK_API GrBackendFormat { GrBackendFormat& operator=(const GrBackendFormat&); ~GrBackendFormat(); -#ifdef SK_VULKAN - static GrBackendFormat MakeVk(VkFormat format, bool willUseDRMFormatModifiers = false) { - return GrBackendFormat(format, GrVkYcbcrConversionInfo(), willUseDRMFormatModifiers); - } - - static GrBackendFormat MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, - bool willUseDRMFormatModifiers = false); -#endif - -#ifdef SK_DAWN - static GrBackendFormat MakeDawn(wgpu::TextureFormat format) { - return GrBackendFormat(format); - } -#endif - #ifdef SK_METAL static GrBackendFormat MakeMtl(GrMTLPixelFormat format) { return GrBackendFormat(format); @@ -117,24 +91,6 @@ class SK_API GrBackendFormat { GrColorFormatDesc desc() const; -#ifdef SK_VULKAN - /** - * If the backend API is Vulkan this gets the format as a VkFormat and returns true. Otherwise, - * returns false. - */ - bool asVkFormat(VkFormat*) const; - - const GrVkYcbcrConversionInfo* getVkYcbcrConversionInfo() const; -#endif - -#ifdef SK_DAWN - /** - * If the backend API is Dawn this gets the format as a wgpu::TextureFormat and returns true. - * Otherwise, returns false. - */ - bool asDawnFormat(wgpu::TextureFormat*) const; -#endif - #ifdef SK_METAL /** * If the backend API is Metal this gets the format as a GrMtlPixelFormat. Otherwise, @@ -168,24 +124,26 @@ class SK_API GrBackendFormat { // Returns true if the backend format has been initialized. bool isValid() const { return fValid; } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) SkString toStr() const; #endif private: + // Size determined by looking at the GrBackendFormatData subclasses, then guessing-and-checking. + // Compiler will complain if this is too small - in that case, just increase the number. + inline constexpr static size_t kMaxSubclassSize = 64; + using AnyFormatData = SkAnySubclass; + friend class GrBackendSurfacePriv; + friend class GrBackendFormatData; + // Used by internal factories. Should not be used externally. Use factories like // GrBackendFormats::MakeGL instead. - GrBackendFormat(GrTextureType, GrBackendApi, std::unique_ptr); - -#ifdef SK_VULKAN - GrBackendFormat(const VkFormat vkFormat, const GrVkYcbcrConversionInfo&, - bool willUseDRMFormatModifiers); -#endif - -#ifdef SK_DAWN - GrBackendFormat(wgpu::TextureFormat format); -#endif + template + GrBackendFormat(GrTextureType textureType, GrBackendApi api, const FormatData& formatData) + : fBackend(api), fValid(true), fTextureType(textureType) { + fFormatData.emplace(formatData); + } #ifdef SK_METAL GrBackendFormat(const GrMTLPixelFormat mtlFormat); @@ -203,19 +161,9 @@ class SK_API GrBackendFormat { GrBackendApi fBackend = GrBackendApi::kMock; bool fValid = false; - std::unique_ptr fFormatData; + AnyFormatData fFormatData; union { -#ifdef SK_VULKAN - struct { - VkFormat fFormat; - GrVkYcbcrConversionInfo fYcbcrConversionInfo; - } fVk; -#endif -#ifdef SK_DAWN - wgpu::TextureFormat fDawnFormat; -#endif - #ifdef SK_METAL GrMTLPixelFormat fMtlFormat; #endif @@ -231,11 +179,16 @@ class SK_API GrBackendFormat { }; GrTextureType fTextureType = GrTextureType::kNone; -#if !defined(SK_DISABLE_LEGACY_GL_BACKEND_SURFACE) && defined(SK_GL) +#if !defined(SK_DISABLE_LEGACY_VK_BACKEND_SURFACE) && defined(SK_VULKAN) public: -static GrBackendFormat MakeGL(GrGLenum format, GrGLenum target); -GrGLFormat asGLFormat() const; -GrGLenum asGLFormatEnum() const; + GrBackendFormat(VkFormat vkFormat, + const GrVkYcbcrConversionInfo& ycbcrInfo, + bool willUseDRMFormatModifiers = false); + static GrBackendFormat MakeVk(VkFormat format, bool willUseDRMFormatModifiers = false); + static GrBackendFormat MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, + bool willUseDRMFormatModifiers = false); + bool asVkFormat(VkFormat*) const; + const GrVkYcbcrConversionInfo* getVkYcbcrConversionInfo() const; #endif }; @@ -244,13 +197,6 @@ class SK_API GrBackendTexture { // Creates an invalid backend texture. GrBackendTexture(); -#ifdef SK_VULKAN - GrBackendTexture(int width, - int height, - const GrVkImageInfo& vkInfo, - std::string_view label = {}); -#endif - #ifdef SK_METAL GrBackendTexture(int width, int height, @@ -266,13 +212,6 @@ class SK_API GrBackendTexture { std::string_view label = {}); #endif -#ifdef SK_DAWN - GrBackendTexture(int width, - int height, - const GrDawnTextureInfo& dawnInfo, - std::string_view label = {}); -#endif - GrBackendTexture(int width, int height, GrMipmapped, @@ -296,23 +235,6 @@ class SK_API GrBackendTexture { GrBackendApi backend() const {return fBackend; } GrTextureType textureType() const { return fTextureType; } -#ifdef SK_DAWN - // If the backend API is Dawn, copies a snapshot of the GrDawnTextureInfo struct into the passed - // in pointer and returns true. Otherwise returns false if the backend API is not Dawn. - bool getDawnTextureInfo(GrDawnTextureInfo*) const; -#endif - -#ifdef SK_VULKAN - // If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed - // in pointer and returns true. This snapshot will set the fImageLayout to the current layout - // state. Otherwise returns false if the backend API is not Vulkan. - bool getVkImageInfo(GrVkImageInfo*) const; - - // Anytime the client changes the VkImageLayout of the VkImage captured by this - // GrBackendTexture, they must call this function to notify Skia of the changed layout. - void setVkImageLayout(VkImageLayout); -#endif - #ifdef SK_METAL // If the backend API is Metal, copies a snapshot of the GrMtlTextureInfo struct into the passed // in pointer and returns true. Otherwise returns false if the backend API is not Metal. @@ -353,34 +275,42 @@ class SK_API GrBackendTexture { // Returns true if both textures are valid and refer to the same API texture. bool isSameTexture(const GrBackendTexture&); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static bool TestingOnly_Equals(const GrBackendTexture&, const GrBackendTexture&); #endif private: + // Size determined by looking at the GrBackendTextureData subclasses, then guessing-and-checking. + // Compiler will complain if this is too small - in that case, just increase the number. + inline constexpr static size_t kMaxSubclassSize = 160; + using AnyTextureData = SkAnySubclass; + friend class GrBackendSurfacePriv; + friend class GrBackendTextureData; + // Used by internal factories. Should not be used externally. Use factories like // GrBackendTextures::MakeGL instead. + template GrBackendTexture(int width, int height, std::string_view label, skgpu::Mipmapped mipped, GrBackendApi backend, GrTextureType texture, - std::unique_ptr data); + const TextureData& textureData) + : fIsValid(true) + , fWidth(width) + , fHeight(height) + , fLabel(label) + , fMipmapped(mipped) + , fBackend(backend) + , fTextureType(texture) { + fTextureData.emplace(textureData); + } friend class GrVkGpu; // for getMutableState sk_sp getMutableState() const; -#ifdef SK_VULKAN - friend class GrVkTexture; - GrBackendTexture(int width, - int height, - const GrVkImageInfo& vkInfo, - sk_sp mutableState, - std::string_view label = {}); -#endif - #ifdef SK_DIRECT3D friend class GrD3DTexture; friend class GrD3DGpu; // for getGrD3DResourceState @@ -402,12 +332,9 @@ class SK_API GrBackendTexture { GrMipmapped fMipmapped; GrBackendApi fBackend; GrTextureType fTextureType; - std::unique_ptr fTextureData; + AnyTextureData fTextureData; union { -#ifdef SK_VULKAN - GrVkBackendSurfaceInfo fVkInfo; -#endif GrMockTextureInfo fMockInfo; #ifdef SK_DIRECT3D GrD3DBackendSurfaceInfo fD3DInfo; @@ -416,21 +343,15 @@ class SK_API GrBackendTexture { #ifdef SK_METAL GrMtlTextureInfo fMtlInfo; #endif -#ifdef SK_DAWN - GrDawnTextureInfo fDawnInfo; -#endif - sk_sp fMutableState; - -#if !defined(SK_DISABLE_LEGACY_GL_BACKEND_SURFACE) && defined(SK_GL) +#if !defined(SK_DISABLE_LEGACY_VK_BACKEND_SURFACE) && defined(SK_VULKAN) public: GrBackendTexture(int width, int height, - GrMipmapped, - const GrGLTextureInfo& glInfo, + const GrVkImageInfo& vkInfo, std::string_view label = {}); - bool getGLTextureInfo(GrGLTextureInfo*) const; - void glTextureParametersModified(); + bool getVkImageInfo(GrVkImageInfo*) const; + void setVkImageLayout(VkImageLayout); #endif }; @@ -439,31 +360,10 @@ class SK_API GrBackendRenderTarget { // Creates an invalid backend texture. GrBackendRenderTarget(); -#ifdef SK_DAWN - // If wrapping in an SkSurface we require the stencil bits to be either 0, 8 or 16. - GrBackendRenderTarget(int width, - int height, - int sampleCnt, - int stencilBits, - const GrDawnRenderTargetInfo& dawnInfo); -#endif - -#ifdef SK_VULKAN - /** Deprecated. Sample count is now part of GrVkImageInfo. */ - GrBackendRenderTarget(int width, int height, int sampleCnt, const GrVkImageInfo& vkInfo); - - GrBackendRenderTarget(int width, int height, const GrVkImageInfo& vkInfo); -#endif - #ifdef SK_METAL GrBackendRenderTarget(int width, int height, const GrMtlTextureInfo& mtlInfo); - /** Deprecated. Sample count is ignored and is instead retrieved from the MtlTexture. */ - GrBackendRenderTarget(int width, - int height, - int sampleCnt, - const GrMtlTextureInfo& mtlInfo); #endif #ifdef SK_DIRECT3D @@ -491,23 +391,6 @@ class SK_API GrBackendRenderTarget { GrBackendApi backend() const {return fBackend; } bool isFramebufferOnly() const { return fFramebufferOnly; } -#ifdef SK_DAWN - // If the backend API is Dawn, copies a snapshot of the GrDawnRenderTargetInfo struct into the - // passed-in pointer and returns true. Otherwise returns false if the backend API is not Dawn. - bool getDawnRenderTargetInfo(GrDawnRenderTargetInfo*) const; -#endif - -#ifdef SK_VULKAN - // If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed - // in pointer and returns true. This snapshot will set the fImageLayout to the current layout - // state. Otherwise returns false if the backend API is not Vulkan. - bool getVkImageInfo(GrVkImageInfo*) const; - - // Anytime the client changes the VkImageLayout of the VkImage captured by this - // GrBackendRenderTarget, they must call this function to notify Skia of the changed layout. - void setVkImageLayout(VkImageLayout); -#endif - #ifdef SK_METAL // If the backend API is Metal, copies a snapshot of the GrMtlTextureInfo struct into the passed // in pointer and returns true. Otherwise returns false if the backend API is not Metal. @@ -544,33 +427,43 @@ class SK_API GrBackendRenderTarget { // Returns true if the backend texture has been initialized. bool isValid() const { return fIsValid; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static bool TestingOnly_Equals(const GrBackendRenderTarget&, const GrBackendRenderTarget&); #endif private: + // Size determined by looking at the GrBackendRenderTargetData subclasses, then + // guessing-and-checking. Compiler will complain if this is too small - in that case, just + // increase the number. + inline constexpr static size_t kMaxSubclassSize = 160; + using AnyRenderTargetData = SkAnySubclass; + friend class GrBackendSurfacePriv; + friend class GrBackendRenderTargetData; + // Used by internal factories. Should not be used externally. Use factories like // GrBackendRenderTargets::MakeGL instead. + template GrBackendRenderTarget(int width, int height, int sampleCnt, int stencilBits, GrBackendApi backend, bool framebufferOnly, - std::unique_ptr data); + const RenderTargetData& rtData) + : fIsValid(true) + , fFramebufferOnly(framebufferOnly) + , fWidth(width) + , fHeight(height) + , fSampleCnt(sampleCnt) + , fStencilBits(stencilBits) + , fBackend(backend) { + fRTData.emplace(rtData); + } friend class GrVkGpu; // for getMutableState sk_sp getMutableState() const; -#ifdef SK_VULKAN - friend class GrVkRenderTarget; - GrBackendRenderTarget(int width, - int height, - const GrVkImageInfo& vkInfo, - sk_sp mutableState); -#endif - #ifdef SK_DIRECT3D friend class GrD3DGpu; friend class GrD3DRenderTarget; @@ -593,12 +486,9 @@ class SK_API GrBackendRenderTarget { int fStencilBits; GrBackendApi fBackend; - std::unique_ptr fRTData; + AnyRenderTargetData fRTData; union { -#ifdef SK_VULKAN - GrVkBackendSurfaceInfo fVkInfo; -#endif GrMockRenderTargetInfo fMockInfo; #ifdef SK_DIRECT3D GrD3DBackendSurfaceInfo fD3DInfo; @@ -607,19 +497,12 @@ class SK_API GrBackendRenderTarget { #ifdef SK_METAL GrMtlTextureInfo fMtlInfo; #endif -#ifdef SK_DAWN - GrDawnRenderTargetInfo fDawnInfo; -#endif - sk_sp fMutableState; -#if !defined(SK_DISABLE_LEGACY_GL_BACKEND_SURFACE) && defined(SK_GL) +#if !defined(SK_DISABLE_LEGACY_VK_BACKEND_SURFACE) && defined(SK_VULKAN) public: - GrBackendRenderTarget(int width, - int height, - int sampleCnt, - int stencilBits, - const GrGLFramebufferInfo& glInfo); - bool getGLFramebufferInfo(GrGLFramebufferInfo*) const; + GrBackendRenderTarget(int width, int height, const GrVkImageInfo& vkInfo); + bool getVkImageInfo(GrVkImageInfo*) const; + void setVkImageLayout(VkImageLayout); #endif }; diff --git a/include/gpu/GrBackendSurfaceMutableState.h b/include/gpu/GrBackendSurfaceMutableState.h deleted file mode 100644 index 0467e8f81e5f..000000000000 --- a/include/gpu/GrBackendSurfaceMutableState.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrBackendSurfaceMutableState_DEFINED -#define GrBackendSurfaceMutableState_DEFINED - -#include "include/gpu/MutableTextureState.h" - -#ifdef SK_VULKAN -#include "include/private/gpu/vk/SkiaVulkan.h" - -#include -#endif - -class GrBackendSurfaceMutableState : public skgpu::MutableTextureState { -public: - GrBackendSurfaceMutableState() = default; - -#ifdef SK_VULKAN - GrBackendSurfaceMutableState(VkImageLayout layout, uint32_t queueFamilyIndex) - : skgpu::MutableTextureState(layout, queueFamilyIndex) {} -#endif - - GrBackendSurfaceMutableState(const GrBackendSurfaceMutableState& that) - : skgpu::MutableTextureState(that) {} -}; - -#endif diff --git a/include/gpu/GrContextOptions.h b/include/gpu/GrContextOptions.h index bf4ca409a8f6..230f6d704260 100644 --- a/include/gpu/GrContextOptions.h +++ b/include/gpu/GrContextOptions.h @@ -292,7 +292,7 @@ struct SK_API GrContextOptions { GrDirectContextDestroyedContext fContextDeleteContext = nullptr; GrDirectContextDestroyedProc fContextDeleteProc = nullptr; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** * Private options that are only meant for testing within Skia's tools. */ diff --git a/include/gpu/GrDirectContext.h b/include/gpu/GrDirectContext.h index ee086063ca28..b72c8e040f00 100644 --- a/include/gpu/GrDirectContext.h +++ b/include/gpu/GrDirectContext.h @@ -116,12 +116,6 @@ class SK_API GrDirectContext : public GrRecordingContext { static sk_sp MakeDirect3D(const GrD3DBackendContext&); #endif -#ifdef SK_DAWN - static sk_sp MakeDawn(const wgpu::Device&, - const GrContextOptions&); - static sk_sp MakeDawn(const wgpu::Device&); -#endif - static sk_sp MakeMock(const GrMockOptions*, const GrContextOptions&); static sk_sp MakeMock(const GrMockOptions*); @@ -332,6 +326,11 @@ class SK_API GrDirectContext : public GrRecordingContext { */ using GrRecordingContext::colorTypeSupportedAsImage; + /** + * Does this context support protected content? + */ + using GrRecordingContext::supportsProtectedContent; + /** * Can a SkSurface be created with the given color type. To check whether MSAA is supported * use maxSurfaceSampleCountForColorType(). diff --git a/include/gpu/GrRecordingContext.h b/include/gpu/GrRecordingContext.h index ec3cf325f3d0..af50d93704b8 100644 --- a/include/gpu/GrRecordingContext.h +++ b/include/gpu/GrRecordingContext.h @@ -83,6 +83,11 @@ class GrRecordingContext : public GrImageContext { */ SK_API bool colorTypeSupportedAsImage(SkColorType) const; + /** + * Does this context support protected content? + */ + SK_API bool supportsProtectedContent() const; + /** * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA * rendering is supported for the color type. 0 is returned if rendering to this color type @@ -215,7 +220,7 @@ class GrRecordingContext : public GrImageContext { int numPathMaskCacheHits() const { return fNumPathMaskCacheHits; } void incNumPathMasksCacheHits() { fNumPathMaskCacheHits++; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString* out) const; void dumpKeyValuePairs(skia_private::TArray* keys, skia_private::TArray* values) const; @@ -229,7 +234,7 @@ class GrRecordingContext : public GrImageContext { void incNumPathMasksGenerated() {} void incNumPathMasksCacheHits() {} -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString*) const {} void dumpKeyValuePairs(skia_private::TArray* keys, skia_private::TArray* values) const {} @@ -237,7 +242,7 @@ class GrRecordingContext : public GrImageContext { #endif // GR_GPU_STATS } fStats; -#if GR_GPU_STATS && GR_TEST_UTILS +#if GR_GPU_STATS && defined(GR_TEST_UTILS) struct DMSAAStats { void dumpKeyValuePairs(skia_private::TArray* keys, skia_private::TArray* values) const; @@ -265,7 +270,7 @@ class GrRecordingContext : public GrImageContext { std::unique_ptr fDrawingManager; std::unique_ptr fProxyProvider; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int fSuppressWarningMessages = 0; #endif }; diff --git a/include/gpu/GrSurfaceInfo.h b/include/gpu/GrSurfaceInfo.h index e037fb495781..dc18a07a0942 100644 --- a/include/gpu/GrSurfaceInfo.h +++ b/include/gpu/GrSurfaceInfo.h @@ -23,9 +23,6 @@ struct GrD3DSurfaceInfo; #ifdef SK_METAL #include "include/private/gpu/ganesh/GrMtlTypesPriv.h" #endif -#ifdef SK_DAWN -#include "include/private/gpu/ganesh/GrDawnTypesPriv.h" -#endif #include "include/private/gpu/ganesh/GrMockTypesPriv.h" class GrSurfaceInfo { @@ -60,15 +57,6 @@ class GrSurfaceInfo { , fLevelCount(mtlInfo.fLevelCount) , fProtected(mtlInfo.fProtected) , fMtlSpec(mtlInfo) {} -#endif -#ifdef SK_DAWN - GrSurfaceInfo(const GrDawnSurfaceInfo& dawnInfo) - : fBackend(GrBackendApi::kDawn) - , fValid(true) - , fSampleCount(dawnInfo.fSampleCount) - , fLevelCount(dawnInfo.fLevelCount) - , fProtected(dawnInfo.fProtected) - , fDawnSpec(dawnInfo) {} #endif GrSurfaceInfo(const GrMockSurfaceInfo& mockInfo) : fBackend(GrBackendApi::kMock) @@ -117,15 +105,6 @@ class GrSurfaceInfo { *info = GrMtlTextureSpecToSurfaceInfo(fMtlSpec, fSampleCount, fLevelCount, fProtected); return true; } -#endif -#ifdef SK_DAWN - bool getDawnSurfaceInfo(GrDawnSurfaceInfo* info) const { - if (!this->isValid() || fBackend != GrBackendApi::kDawn) { - return false; - } - *info = GrDawnTextureSpecToSurfaceInfo(fDawnSpec, fSampleCount, fLevelCount, fProtected); - return true; - } #endif bool getMockSurfaceInfo(GrMockSurfaceInfo* info) const { if (!this->isValid() || fBackend != GrBackendApi::kMock) { @@ -155,9 +134,6 @@ class GrSurfaceInfo { #endif #ifdef SK_METAL GrMtlTextureSpec fMtlSpec; -#endif -#ifdef SK_DAWN - GrDawnTextureSpec fDawnSpec; #endif GrMockTextureSpec fMockSpec; }; diff --git a/include/gpu/GrTypes.h b/include/gpu/GrTypes.h index 177a35a9437f..083ffe380679 100644 --- a/include/gpu/GrTypes.h +++ b/include/gpu/GrTypes.h @@ -98,13 +98,18 @@ enum class GrBackendApi : unsigned { kVulkan, kMetal, kDirect3D, - kDawn, + /** * Mock is a backend that does not draw anything. It is used for unit tests * and to measure CPU overhead. */ kMock, + /** + * Ganesh doesn't support some context types (e.g. Dawn) and will return Unsupported. + */ + kUnsupported, + /** * Added here to support the legacy GrBackend enum value and clients who referenced it using * GrBackend::kOpenGL_GrBackend. diff --git a/include/gpu/d3d/GrD3DTypes.h b/include/gpu/d3d/GrD3DTypes.h index 99cdb09213be..4830c572f413 100644 --- a/include/gpu/d3d/GrD3DTypes.h +++ b/include/gpu/d3d/GrD3DTypes.h @@ -216,7 +216,7 @@ struct GrD3DTextureResourceInfo { , fSampleQualityPattern(info.fSampleQualityPattern) , fProtected(info.fProtected) {} -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool operator==(const GrD3DTextureResourceInfo& that) const { return fResource == that.fResource && fResourceState == that.fResourceState && fFormat == that.fFormat && fSampleCount == that.fSampleCount && diff --git a/include/gpu/dawn/GrDawnTypes.h b/include/gpu/dawn/GrDawnTypes.h deleted file mode 100644 index fbd3dbaf55cb..000000000000 --- a/include/gpu/dawn/GrDawnTypes.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnTypes_DEFINED -#define GrDawnTypes_DEFINED - -#include "include/gpu/GpuTypes.h" - -#ifdef Always -#undef Always -static constexpr int Always = 2; -#endif -#ifdef Success -#undef Success -static constexpr int Success = 0; -#endif -#ifdef None -#undef None -static constexpr int None = 0L; -#endif -#include "webgpu/webgpu_cpp.h" // IWYU pragma: export - -struct GrDawnTextureInfo { - wgpu::Texture fTexture; - wgpu::TextureFormat fFormat; - uint32_t fLevelCount; - GrDawnTextureInfo() : fTexture(nullptr), fFormat(), fLevelCount(0) { - } - GrDawnTextureInfo(const GrDawnTextureInfo& other) - : fTexture(other.fTexture) - , fFormat(other.fFormat) - , fLevelCount(other.fLevelCount) { - } - GrDawnTextureInfo& operator=(const GrDawnTextureInfo& other) { - fTexture = other.fTexture; - fFormat = other.fFormat; - fLevelCount = other.fLevelCount; - return *this; - } - bool operator==(const GrDawnTextureInfo& other) const { - return fTexture.Get() == other.fTexture.Get() && - fFormat == other.fFormat && - fLevelCount == other.fLevelCount; - } -}; - -// GrDawnRenderTargetInfo holds a reference to a (1-mip) TextureView. This means that, for now, -// GrDawnRenderTarget is suitable for rendering, but not readPixels() or writePixels(). Also, -// backdrop filters and certain blend modes requiring copying the destination framebuffer -// will not work. -struct GrDawnRenderTargetInfo { - wgpu::TextureView fTextureView; - wgpu::TextureFormat fFormat; - uint32_t fLevelCount; - GrDawnRenderTargetInfo() : fTextureView(nullptr), fFormat(), fLevelCount(0) { - } - GrDawnRenderTargetInfo(const GrDawnRenderTargetInfo& other) - : fTextureView(other.fTextureView) - , fFormat(other.fFormat) - , fLevelCount(other.fLevelCount) { - } - explicit GrDawnRenderTargetInfo(const GrDawnTextureInfo& texInfo) - : fFormat(texInfo.fFormat) - , fLevelCount(1) { - wgpu::TextureViewDescriptor desc; - desc.format = texInfo.fFormat; - desc.mipLevelCount = 1; - fTextureView = texInfo.fTexture.CreateView(&desc); - } - GrDawnRenderTargetInfo& operator=(const GrDawnRenderTargetInfo& other) { - fTextureView = other.fTextureView; - fFormat = other.fFormat; - fLevelCount = other.fLevelCount; - return *this; - } - bool operator==(const GrDawnRenderTargetInfo& other) const { - return fTextureView.Get() == other.fTextureView.Get() && - fFormat == other.fFormat && - fLevelCount == other.fLevelCount; - } -}; - -struct GrDawnSurfaceInfo { - uint32_t fSampleCount = 1; - uint32_t fLevelCount = 0; - skgpu::Protected fProtected = skgpu::Protected::kNo; - - wgpu::TextureFormat fFormat; -}; - -#endif diff --git a/include/gpu/ganesh/BUILD.bazel b/include/gpu/ganesh/BUILD.bazel index ba8a5a7774ff..7a9bd21d6719 100644 --- a/include/gpu/ganesh/BUILD.bazel +++ b/include/gpu/ganesh/BUILD.bazel @@ -14,6 +14,7 @@ skia_filegroup( ] + select_multi( { "//src/gpu:gl_ganesh": ["//include/gpu/ganesh/gl:public_hdrs"], + "//src/gpu:vulkan_ganesh": ["//include/gpu/ganesh/vk:public_hdrs"], }, ), visibility = ["//include/gpu:__pkg__"], diff --git a/include/gpu/ganesh/SkImageGanesh.h b/include/gpu/ganesh/SkImageGanesh.h index 646feef0b2fb..d065957a2d56 100644 --- a/include/gpu/ganesh/SkImageGanesh.h +++ b/include/gpu/ganesh/SkImageGanesh.h @@ -23,6 +23,8 @@ class GrRecordingContext; class GrYUVABackendTextures; class SkColorSpace; class SkData; +class SkImageFilter; +struct SkIPoint; class SkPixmap; class SkYUVAPixmaps; enum SkAlphaType : int; @@ -321,6 +323,38 @@ SK_API sk_sp SubsetTextureFrom(GrDirectContext* context, const SkImage* img, const SkIRect& subset); +/** Creates a filtered SkImage on the GPU. filter processes the src image, potentially changing + color, position, and size. subset is the bounds of src that are processed + by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset + is required storage for the actual bounds of the filtered SkImage. offset is + required storage for translation of returned SkImage. + + Returns nullptr if SkImage could not be created or if the recording context provided doesn't + match the GPU context in which the image was created. If nullptr is returned, outSubset + and offset are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. + Returned SkImage is created larger than required by filter so that GPU texture + can be reused with different sized effects. outSubset describes the valid bounds + of GPU texture returned. offset translates the returned SkImage to keep subsequent + animation frames aligned with respect to each other. + + @param context the GrRecordingContext in play - if it exists + @param filter how SkImage is sampled when transformed + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(GrRecordingContext* context, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + } // namespace SkImages #endif diff --git a/include/gpu/ganesh/SkSurfaceGanesh.h b/include/gpu/ganesh/SkSurfaceGanesh.h index 4ee29b709c59..6cf0f71130c8 100644 --- a/include/gpu/ganesh/SkSurfaceGanesh.h +++ b/include/gpu/ganesh/SkSurfaceGanesh.h @@ -67,7 +67,8 @@ SK_API sk_sp RenderTarget(GrRecordingContext* context, int sampleCount, GrSurfaceOrigin surfaceOrigin, const SkSurfaceProps* surfaceProps, - bool shouldCreateWithMips = false); + bool shouldCreateWithMips = false, + bool isProtected = false); inline sk_sp RenderTarget(GrRecordingContext* context, skgpu::Budgeted budgeted, const SkImageInfo& imageInfo, diff --git a/include/gpu/ganesh/vk/BUILD.bazel b/include/gpu/ganesh/vk/BUILD.bazel new file mode 100644 index 000000000000..bda9f2ba788a --- /dev/null +++ b/include/gpu/ganesh/vk/BUILD.bazel @@ -0,0 +1,13 @@ +load("//bazel:macros.bzl", "exports_files_legacy", "skia_filegroup") + +licenses(["notice"]) + +exports_files_legacy() + +skia_filegroup( + name = "public_hdrs", + srcs = [ + "GrVkBackendSurface.h", + ], + visibility = ["//include/gpu/ganesh:__pkg__"], +) diff --git a/include/gpu/ganesh/vk/GrVkBackendSurface.h b/include/gpu/ganesh/vk/GrVkBackendSurface.h new file mode 100644 index 000000000000..4b880fb2df9b --- /dev/null +++ b/include/gpu/ganesh/vk/GrVkBackendSurface.h @@ -0,0 +1,67 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkBackendSurface_DEFINED +#define GrVkBackendSurface_DEFINED + +#include "include/gpu/vk/GrVkTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; + + +namespace GrBackendFormats { + +SK_API GrBackendFormat MakeVk(VkFormat format, bool willUseDRMFormatModifiers = false); +SK_API GrBackendFormat MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, + bool willUseDRMFormatModifiers = false); + +SK_API bool AsVkFormat(const GrBackendFormat&, VkFormat*); +SK_API const GrVkYcbcrConversionInfo* GetVkYcbcrConversionInfo(const GrBackendFormat&); + +} // namespace GrBackendFormats + + +namespace GrBackendTextures { + +SK_API GrBackendTexture MakeVk(int width, + int height, + const GrVkImageInfo&, + std::string_view label = {}); + +// If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed +// in pointer and returns true. This snapshot will set the fImageLayout to the current layout +// state. Otherwise returns false if the backend API is not Vulkan. +SK_API bool GetVkImageInfo(const GrBackendTexture&, GrVkImageInfo*); + +// Anytime the client changes the VkImageLayout of the VkImage captured by this +// GrBackendTexture, they must call this function to notify Skia of the changed layout. +SK_API void SetVkImageLayout(GrBackendTexture*, VkImageLayout); + +} // namespace GrBackendTextures + + +namespace GrBackendRenderTargets { + +SK_API GrBackendRenderTarget MakeVk(int width, int height, const GrVkImageInfo&); + +// If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed +// in pointer and returns true. This snapshot will set the fImageLayout to the current layout +// state. Otherwise returns false if the backend API is not Vulkan. +SK_API bool GetVkImageInfo(const GrBackendRenderTarget&, GrVkImageInfo*); + +// Anytime the client changes the VkImageLayout of the VkImage captured by this +// GrBackendRenderTarget, they must call this function to notify Skia of the changed layout. +SK_API void SetVkImageLayout(GrBackendRenderTarget*, VkImageLayout); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/include/gpu/gl/GrGLInterface.h b/include/gpu/gl/GrGLInterface.h index 64ca419b9b16..aadce831238a 100644 --- a/include/gpu/gl/GrGLInterface.h +++ b/include/gpu/gl/GrGLInterface.h @@ -68,7 +68,7 @@ struct SK_API GrGLInterface : public SkRefCnt { void suppressErrorLogging(); #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGLInterface(const GrGLInterface& that) : fStandard(that.fStandard) , fExtensions(that.fExtensions) @@ -331,7 +331,7 @@ struct SK_API GrGLInterface : public SkRefCnt { GrGLFunction fEndTiling; } fFunctions; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // This exists for internal testing. virtual void abandon() const; #endif diff --git a/include/gpu/graphite/Context.h b/include/gpu/graphite/Context.h index ed5b39edd10c..c2ebb70ce509 100644 --- a/include/gpu/graphite/Context.h +++ b/include/gpu/graphite/Context.h @@ -16,6 +16,7 @@ #include "include/gpu/graphite/Recorder.h" #include "include/private/base/SingleOwner.h" +#include #include #include @@ -126,6 +127,21 @@ class SK_API Context final { */ void deleteBackendTexture(BackendTexture&); + /** + * Frees GPU resources created and held by the Context. Can be called to reduce GPU memory + * pressure. Any resources that are still in use (e.g. being used by work submitted to the GPU) + * will not be deleted by this call. If the caller wants to make sure all resources are freed, + * then they should first make sure to submit and wait on any outstanding work. + */ + void freeGpuResources(); + + /** + * Purge GPU resources on the Context that haven't been used in the past 'msNotUsed' + * milliseconds or are otherwise marked for deletion, regardless of whether the context is under + * budget. + */ + void performDeferredCleanup(std::chrono::milliseconds msNotUsed); + // Provides access to functions that aren't part of the public API. ContextPriv priv(); const ContextPriv priv() const; // NOLINT(readability-const-return-type) @@ -216,7 +232,7 @@ class SK_API Context final { // ResourceCache for the Context. mutable SingleOwner fSingleOwner; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) // In test builds a Recorder may track the Context that was used to create it. bool fStoreContextRefInRecorder = false; // If this tracking is on, to allow the client to safely delete this Context or its Recorders diff --git a/include/gpu/graphite/ContextOptions.h b/include/gpu/graphite/ContextOptions.h index b9fbfe8fc806..85f4599f0c1b 100644 --- a/include/gpu/graphite/ContextOptions.h +++ b/include/gpu/graphite/ContextOptions.h @@ -75,7 +75,20 @@ struct SK_API ContextOptions { bool fAllowMultipleGlyphCacheTextures = true; bool fSupportBilerpFromGlyphAtlas = false; -#if GRAPHITE_TEST_UTILS + /** + * In the Dawn backend, controls SkSL compilation to native code. When false, we emit SPIR-V and + * rely on Tint's SPIR-V Reader. When true, we emit native WGSL. + * TODO(b/40044196): once WGSL is stable, remove this flag and always emit WGSL. + */ + bool fEnableWGSL = false; + + static constexpr size_t kDefaultContextBudget = 256 * (1 << 20); + /** + * What is the budget for GPU resources allocated and held by the Context. + */ + size_t fGpuBudgetInBytes = kDefaultContextBudget; + +#if defined(GRAPHITE_TEST_UTILS) /** * Private options that are only meant for testing within Skia's tools. */ diff --git a/include/gpu/graphite/Image.h b/include/gpu/graphite/Image.h index 0b8993271854..2abb09113403 100644 --- a/include/gpu/graphite/Image.h +++ b/include/gpu/graphite/Image.h @@ -11,6 +11,7 @@ #include "include/core/SkImage.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSpan.h" +#include "include/gpu/GpuTypes.h" class SkYUVAInfo; class SkYUVAPixmaps; @@ -58,8 +59,19 @@ using GraphitePromiseTextureReleaseProc = void (*)(GraphitePromiseTextureRelease backend texture is linear, then the colorSpace should include a description of the transfer function as well (e.g., SkColorSpace::MakeSRGB()). + @param origin Whether the Texture logically treats the origin as TopLeft or + BottomLeft @return created SkImage, or nullptr */ +SK_API sk_sp AdoptTextureFrom(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + skgpu::Origin origin, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr); + SK_API sk_sp AdoptTextureFrom(skgpu::graphite::Recorder*, const skgpu::graphite::BackendTexture&, SkColorType colorType, @@ -107,6 +119,7 @@ SK_API sk_sp AdoptTextureFrom(skgpu::graphite::Recorder*, @param dimensions width & height of promised gpu texture @param textureInfo structural information for the promised gpu texture @param colorInfo color type, alpha type and colorSpace information for the image + @param origin Whether the Texture logically treats the origin as TopLeft or BottomLeft @param isVolatile volatility of the promise image @param fulfill function called to get the actual backend texture, and the instance for the GraphitePromiseTextureReleaseProc @@ -115,6 +128,17 @@ SK_API sk_sp AdoptTextureFrom(skgpu::graphite::Recorder*, @param imageContext state passed to fulfill and imageRelease @return created SkImage, or nullptr */ +SK_API sk_sp PromiseTextureFrom(skgpu::graphite::Recorder*, + SkISize dimensions, + const skgpu::graphite::TextureInfo&, + const SkColorInfo&, + skgpu::Origin origin, + skgpu::graphite::Volatile, + GraphitePromiseImageFulfillProc, + GraphitePromiseImageReleaseProc, + GraphitePromiseTextureReleaseProc, + GraphitePromiseImageContext); + SK_API sk_sp PromiseTextureFrom(skgpu::graphite::Recorder*, SkISize dimensions, const skgpu::graphite::TextureInfo&, @@ -271,6 +295,38 @@ SK_API sk_sp SubsetTextureFrom(skgpu::graphite::Recorder* recorder, const SkImage* img, const SkIRect& subset, SkImage::RequiredProperties props = {}); + +/** Creates a filtered SkImage on the GPU. filter processes the src image, potentially changing + color, position, and size. subset is the bounds of src that are processed + by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset + is required storage for the actual bounds of the filtered SkImage. offset is + required storage for translation of returned SkImage. + + Returns nullptr if SkImage could not be created. If nullptr is returned, outSubset + and offset are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. + Returned SkImage is created larger than required by filter so that GPU texture + can be reused with different sized effects. outSubset describes the valid bounds + of GPU texture returned. offset translates the returned SkImage to keep subsequent + animation frames aligned with respect to each other. + + @param recorder the recorder in which the filtering operation is to be performed + @param filter how SkImage is sampled when transformed + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(skgpu::graphite::Recorder* recorder, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + } // namespace SkImages diff --git a/include/gpu/graphite/ImageProvider.h b/include/gpu/graphite/ImageProvider.h index e62940941c70..67db59031361 100644 --- a/include/gpu/graphite/ImageProvider.h +++ b/include/gpu/graphite/ImageProvider.h @@ -33,6 +33,11 @@ class Recorder; * If the requirements are not met by the returned image (modulo the flexibility wrt mipmapping) * Graphite will drop the draw. * + * All returned images must be backed by textures that have a TopLeft origin. If Skia is used to + * create the texture (e.g. using makeTextureImage) then this is always guaranteed. If the client + * returns a texture they created themselves and wrapped in Skia, they must ensure that texture has + * a TopLeft origin. + * * Note: by default, Graphite will not perform any caching of images * * Threading concerns: diff --git a/include/gpu/graphite/Recorder.h b/include/gpu/graphite/Recorder.h index b5d0be754d55..a81c620a3095 100644 --- a/include/gpu/graphite/Recorder.h +++ b/include/gpu/graphite/Recorder.h @@ -15,6 +15,7 @@ #include "include/private/base/SingleOwner.h" #include "include/private/base/SkTArray.h" +#include #include class SkCanvas; @@ -63,6 +64,10 @@ struct SK_API RecorderOptions final { ~RecorderOptions(); sk_sp fImageProvider; + + const size_t kDefaultRecorderBudget = 256 * (1 << 20); + // What is the budget for GPU resources allocated and held by this Recorder. + size_t fGpuBudgetInBytes = kDefaultRecorderBudget; }; class SK_API Recorder final { @@ -134,11 +139,27 @@ class SK_API Recorder final { // Recording snap, at which point it is deleted. SkCanvas* makeDeferredCanvas(const SkImageInfo&, const TextureInfo&); + /** + * Frees GPU resources created and held by the Recorder. Can be called to reduce GPU memory + * pressure. Any resources that are still in use (e.g. being used by work submitted to the GPU) + * will not be deleted by this call. If the caller wants to make sure all resources are freed, + * then they should first make sure to submit and wait on any outstanding work. + */ + void freeGpuResources(); + + /** + * Purge GPU resources on the Recorder that haven't been used in the past 'msNotUsed' + * milliseconds or are otherwise marked for deletion, regardless of whether the context is under + * budget. + */ + void performDeferredCleanup(std::chrono::milliseconds msNotUsed); + + // Provides access to functions that aren't part of the public API. RecorderPriv priv(); const RecorderPriv priv() const; // NOLINT(readability-const-return-type) -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) bool deviceIsRegistered(Device*); #endif @@ -202,7 +223,7 @@ class SK_API Recorder final { skia_private::TArray> fFinishedProcs; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) // For testing use only -- the Context used to create this Recorder Context* fContext = nullptr; #endif diff --git a/include/gpu/graphite/TextureInfo.h b/include/gpu/graphite/TextureInfo.h index 91d9d9c7dd33..d340f4875a77 100644 --- a/include/gpu/graphite/TextureInfo.h +++ b/include/gpu/graphite/TextureInfo.h @@ -113,6 +113,7 @@ class SK_API TextureInfo { #ifdef SK_DAWN friend class DawnCaps; friend class DawnCommandBuffer; + friend class DawnComputePipeline; friend class DawnGraphicsPipeline; friend class DawnResourceProvider; friend class DawnTexture; diff --git a/include/gpu/vk/GrVkTypes.h b/include/gpu/vk/GrVkTypes.h index ae680a8af552..26a3cd3b3d63 100644 --- a/include/gpu/vk/GrVkTypes.h +++ b/include/gpu/vk/GrVkTypes.h @@ -34,7 +34,10 @@ struct GrVkYcbcrConversionInfo { } bool operator!=(const GrVkYcbcrConversionInfo& that) const { return !(*this == that); } - bool isValid() const { return fYcbcrModel != VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY; } + bool isValid() const { + return fYcbcrModel != VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY || + fExternalFormat != 0; + } // Format of the source image. Must be set to VK_FORMAT_UNDEFINED for external images or // a valid image format otherwise. @@ -79,7 +82,6 @@ struct GrVkImageInfo { bool fPartOfSwapchainOrAndroidWindow = false; #endif -#if GR_TEST_UTILS bool operator==(const GrVkImageInfo& that) const { bool equal = fImage == that.fImage && fAlloc == that.fAlloc && fImageTiling == that.fImageTiling && @@ -97,7 +99,6 @@ struct GrVkImageInfo { #endif return equal; } -#endif }; using GrVkGetProc = skgpu::VulkanGetProc; diff --git a/include/private/base/BUILD.bazel b/include/private/base/BUILD.bazel index 84b26afc1904..39b873868a8f 100644 --- a/include/private/base/BUILD.bazel +++ b/include/private/base/BUILD.bazel @@ -17,6 +17,7 @@ IWYU_HDRS = [ "SkAPI.h", "SkAlign.h", "SkAlignedStorage.h", + "SkAnySubclass.h", "SkAssert.h", "SkAttributes.h", "SkCPUTypes.h", diff --git a/include/private/base/SkAnySubclass.h b/include/private/base/SkAnySubclass.h new file mode 100644 index 000000000000..2b666cbdb174 --- /dev/null +++ b/include/private/base/SkAnySubclass.h @@ -0,0 +1,73 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAnySubclass_DEFINED +#define SkAnySubclass_DEFINED + +#include "include/private/base/SkAssert.h" + +#include +#include +#include // IWYU pragma: keep +#include + +/** + * Stores any subclass `T` of `Base`, where sizeof(T) <= `Size`, without using the heap. + * Doesn't need advance knowledge of T, so it's particularly suited to platform or backend + * implementations of a generic interface, where the set of possible subclasses is finite and + * known, but can't be made available at compile-time. + */ +template +class SkAnySubclass { +public: + SkAnySubclass() = default; + ~SkAnySubclass() { + this->reset(); + } + + SkAnySubclass(const SkAnySubclass&) = delete; + SkAnySubclass& operator=(const SkAnySubclass&) = delete; + SkAnySubclass(SkAnySubclass&&) = delete; + SkAnySubclass& operator=(SkAnySubclass&&) = delete; + + template + void emplace(Args&&... args) { + static_assert(std::is_base_of_v); + static_assert(sizeof(T) <= Size); + // We're going to clean up our stored object by calling ~Base: + static_assert(std::has_virtual_destructor_v || std::is_trivially_destructible_v); + SkASSERT(!fValid); + new (fData) T(std::forward(args)...); + fValid = true; + } + + void reset() { + if (fValid) { + this->get()->~Base(); + } + fValid = false; + } + + const Base* get() const { + SkASSERT(fValid); + return std::launder(reinterpret_cast(fData)); + } + + Base* get() { + SkASSERT(fValid); + return std::launder(reinterpret_cast(fData)); + } + + Base* operator->() { return this->get(); } + const Base* operator->() const { return this->get(); } + +private: + alignas(8) std::byte fData[Size]; + bool fValid = false; +}; + +#endif // SkAnySubclass_DEFINED diff --git a/include/private/chromium/SkChromeRemoteGlyphCache.h b/include/private/chromium/SkChromeRemoteGlyphCache.h index 962d183b2d97..3a71a45e1746 100644 --- a/include/private/chromium/SkChromeRemoteGlyphCache.h +++ b/include/private/chromium/SkChromeRemoteGlyphCache.h @@ -8,20 +8,22 @@ #ifndef SkChromeRemoteGlyphCache_DEFINED #define SkChromeRemoteGlyphCache_DEFINED -#include -#include - -#include "include/core/SkData.h" #include "include/core/SkRefCnt.h" #include "include/core/SkTypeface.h" -#include "include/utils/SkNoDrawCanvas.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include +#include -struct SkPackedGlyphID; class SkAutoDescriptor; +class SkCanvas; +class SkColorSpace; class SkStrikeCache; class SkStrikeClientImpl; -class SkStrikeServer; class SkStrikeServerImpl; +class SkSurfaceProps; namespace sktext::gpu { class Slug; } using SkDiscardableHandleId = uint32_t; diff --git a/include/private/gpu/ganesh/BUILD.bazel b/include/private/gpu/ganesh/BUILD.bazel index 8bbb7c2c63fd..96e046b95dd5 100644 --- a/include/private/gpu/ganesh/BUILD.bazel +++ b/include/private/gpu/ganesh/BUILD.bazel @@ -44,7 +44,6 @@ skia_filegroup( "GrTypesPriv.h", ] + select_multi( { - "//src/gpu:dawn_ganesh": [":dawn_private_hdrs"], "//src/gpu:gl_ganesh": [":gl_private_hdrs"], "//src/gpu:vulkan_ganesh": [":vk_private_hdrs"], "//src/gpu:metal_ganesh": [":mtl_private_hdrs"], diff --git a/include/private/gpu/ganesh/GrD3DTypesMinimal.h b/include/private/gpu/ganesh/GrD3DTypesMinimal.h index 26b75344760e..9d6156d6218b 100644 --- a/include/private/gpu/ganesh/GrD3DTypesMinimal.h +++ b/include/private/gpu/ganesh/GrD3DTypesMinimal.h @@ -48,7 +48,7 @@ struct GrD3DBackendSurfaceInfo { GrD3DTextureResourceInfo snapTextureResourceInfo() const; bool isProtected() const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool operator==(const GrD3DBackendSurfaceInfo& that) const; #endif diff --git a/include/private/gpu/ganesh/GrDawnTypesPriv.h b/include/private/gpu/ganesh/GrDawnTypesPriv.h deleted file mode 100644 index ffcdc0eaaf49..000000000000 --- a/include/private/gpu/ganesh/GrDawnTypesPriv.h +++ /dev/null @@ -1,26 +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 GrDawnTypesPriv_DEFINED -#define GrDawnTypesPriv_DEFINED - -#include "include/gpu/dawn/GrDawnTypes.h" - -struct GrDawnTextureSpec { - GrDawnTextureSpec() {} - GrDawnTextureSpec(const GrDawnSurfaceInfo& info) : fFormat(info.fFormat) {} - - wgpu::TextureFormat fFormat; -}; - -GrDawnSurfaceInfo GrDawnTextureSpecToSurfaceInfo(const GrDawnTextureSpec& dawnSpec, - uint32_t sampleCount, - uint32_t levelCount, - skgpu::Protected isProtected); - -#endif - diff --git a/include/private/gpu/ganesh/GrGLTypesPriv.h b/include/private/gpu/ganesh/GrGLTypesPriv.h index ed8c5c4c2e50..8f9d2eb98968 100644 --- a/include/private/gpu/ganesh/GrGLTypesPriv.h +++ b/include/private/gpu/ganesh/GrGLTypesPriv.h @@ -80,14 +80,10 @@ class GrGLBackendTextureInfo { public: GrGLBackendTextureInfo(const GrGLTextureInfo& info, sk_sp params) : fInfo(info), fParams(params) {} - GrGLBackendTextureInfo(const GrGLBackendTextureInfo&) = delete; - GrGLBackendTextureInfo& operator=(const GrGLBackendTextureInfo&) = delete; const GrGLTextureInfo& info() const { return fInfo; } GrGLTextureParameters* parameters() const { return fParams.get(); } sk_sp refParameters() const { return fParams; } - void assign(const GrGLBackendTextureInfo&, bool thisIsValid); - bool isProtected() const { return fInfo.isProtected(); } private: diff --git a/include/private/gpu/ganesh/GrTypesPriv.h b/include/private/gpu/ganesh/GrTypesPriv.h index de65342bfb17..157346532336 100644 --- a/include/private/gpu/ganesh/GrTypesPriv.h +++ b/include/private/gpu/ganesh/GrTypesPriv.h @@ -942,15 +942,15 @@ GR_MAKE_BITFIELD_CLASS_OPS(GrDstSampleFlags) using GrVisitProxyFunc = std::function; -#if defined(SK_DEBUG) || GR_TEST_UTILS || defined(SK_ENABLE_DUMP_GPU) +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) || defined(SK_ENABLE_DUMP_GPU) static constexpr const char* GrBackendApiToStr(GrBackendApi api) { switch (api) { - case GrBackendApi::kOpenGL: return "OpenGL"; - case GrBackendApi::kVulkan: return "Vulkan"; - case GrBackendApi::kMetal: return "Metal"; - case GrBackendApi::kDirect3D: return "Direct3D"; - case GrBackendApi::kDawn: return "Dawn"; - case GrBackendApi::kMock: return "Mock"; + case GrBackendApi::kOpenGL: return "OpenGL"; + case GrBackendApi::kVulkan: return "Vulkan"; + case GrBackendApi::kMetal: return "Metal"; + case GrBackendApi::kDirect3D: return "Direct3D"; + case GrBackendApi::kMock: return "Mock"; + case GrBackendApi::kUnsupported: return "Unsupported"; } SkUNREACHABLE; } diff --git a/include/private/gpu/ganesh/GrVkTypesPriv.h b/include/private/gpu/ganesh/GrVkTypesPriv.h index f300a7139632..351c13d024cb 100644 --- a/include/private/gpu/ganesh/GrVkTypesPriv.h +++ b/include/private/gpu/ganesh/GrVkTypesPriv.h @@ -15,34 +15,8 @@ namespace skgpu { class MutableTextureStateRef; } - -// This struct is to used to store the the actual information about the vulkan backend image on the -// GrBackendTexture and GrBackendRenderTarget. When a client calls getVkImageInfo on a -// GrBackendTexture/RenderTarget, we use the GrVkBackendSurfaceInfo to create a snapshot -// GrVkImgeInfo object. Internally, this uses a ref count GrVkImageLayout object to track the -// current VkImageLayout which can be shared with an internal GrVkImage so that layout updates can -// be seen by all users of the image. -struct GrVkBackendSurfaceInfo { - GrVkBackendSurfaceInfo(GrVkImageInfo info) : fImageInfo(info) {} - - void cleanup(); - - GrVkBackendSurfaceInfo& operator=(const GrVkBackendSurfaceInfo&) = delete; - - // Assigns the passed in GrVkBackendSurfaceInfo to this object. if isValid is true we will also - // attempt to unref the old fLayout on this object. - void assign(const GrVkBackendSurfaceInfo&, bool isValid); - - GrVkImageInfo snapImageInfo(const skgpu::MutableTextureStateRef*) const; - - bool isProtected() const { return fImageInfo.fProtected == skgpu::Protected::kYes; } -#if GR_TEST_UTILS - bool operator==(const GrVkBackendSurfaceInfo& that) const; -#endif - -private: - GrVkImageInfo fImageInfo; -}; +GrVkImageInfo GrVkImageInfoWithMutableState(const GrVkImageInfo&, + const skgpu::MutableTextureStateRef*); struct GrVkImageSpec { GrVkImageSpec() diff --git a/infra/bots/BUILD.bazel b/infra/bots/BUILD.bazel index d4b77ad4429f..331f9f903996 100644 --- a/infra/bots/BUILD.bazel +++ b/infra/bots/BUILD.bazel @@ -18,6 +18,7 @@ genrule( name = "all_task_drivers", srcs = [ "//infra/bots/task_drivers/bazel_build", + "//infra/bots/task_drivers/bazel_test_gm", "//infra/bots/task_drivers/bazel_test_precompiled", "//infra/bots/task_drivers/canvaskit_gold", "//infra/bots/task_drivers/check_generated_files", diff --git a/infra/bots/assets/dwritecore/VERSION b/infra/bots/assets/dwritecore/VERSION index 56a6051ca2b0..e440e5c84258 100644 --- a/infra/bots/assets/dwritecore/VERSION +++ b/infra/bots/assets/dwritecore/VERSION @@ -1 +1 @@ -1 \ No newline at end of file +3 \ No newline at end of file diff --git a/infra/bots/assets/dwritecore/create.py b/infra/bots/assets/dwritecore/create.py index 561ef7cd392c..40efc76983c6 100644 --- a/infra/bots/assets/dwritecore/create.py +++ b/infra/bots/assets/dwritecore/create.py @@ -22,9 +22,9 @@ import subprocess -VERSION = "1.4.230518007-experimental1" -SHORT_VERSION = "1.4-experimental1" -SHA256 = "09a0c154df0bf923923b43e62605c91d81099d18d53b0825d0b42f561993e27a" +VERSION = "1.4.230822000" +SHORT_VERSION = "1.4" +SHA256 = "7f20ada4989afb3efd885f3c26ad2b63c1b01f4b1d7bb183f5f1a7f859c566df" URL = "https://www.nuget.org/api/v2/package/Microsoft.WindowsAppSDK/%s" diff --git a/infra/bots/gen_tasks_logic/dm_flags.go b/infra/bots/gen_tasks_logic/dm_flags.go index 639c942c4cfd..46e446914bdc 100644 --- a/infra/bots/gen_tasks_logic/dm_flags.go +++ b/infra/bots/gen_tasks_logic/dm_flags.go @@ -152,13 +152,13 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { threadLimit := -1 const MAIN_THREAD_ONLY = 0 - // 32-bit desktop bots tend to run out of memory, because they have relatively + // 32-bit desktop machines tend to run out of memory, because they have relatively // far more cores than RAM (e.g. 32 cores, 3G RAM). Hold them back a bit. if b.arch("x86") { threadLimit = 4 } - // These bots run out of memory easily. + // These devices run out of memory easily. if b.model("MotoG4", "Nexus7") { threadLimit = MAIN_THREAD_ONLY } @@ -185,6 +185,8 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { configs = append(configs, "vk", "vkdmsaa") // skbug.com/12826 skip(ALL, "test", ALL, "GrThreadSafeCache16Verts") + // b/296440036 + skip(ALL, "test", ALL, "ImageAsyncReadPixels") // skbug.com/12829 skip(ALL, "test", ALL, "image_subset") } else if b.cpu() { @@ -245,7 +247,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { configs = append(configs, glPrefix, glPrefix+"dft") if sampleCount > 0 { configs = append(configs, fmt.Sprintf("%smsaa%d", glPrefix, sampleCount)) - // Temporarily limit the bots we test dynamic MSAA on. + // Temporarily limit the machines we test dynamic MSAA on. if b.gpu("QuadroP400", "MaliG77") || b.matchOs("Mac") { configs = append(configs, fmt.Sprintf("%sdmsaa", glPrefix)) } @@ -267,20 +269,12 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { configs = append(configs, "gles", "glesdft") } - // Dawn bot *only* runs the dawn config - if b.extraConfig("Dawn") && !b.extraConfig("Graphite") { - // The SPIR-V reader emits bad code for a `matrixCompMult` that overflows. (tint:1989) - skip(ALL, "test", ALL, "SkSLIntrinsicMatrixCompMultES2_GPU") - - configs = []string{"dawn"} - } - - // The FailFlushTimeCallbacks bots only run the 'gl' config + // The FailFlushTimeCallbacks tasks only run the 'gl' config if b.extraConfig("FailFlushTimeCallbacks") { configs = []string{"gl"} } - // Graphite bot *only* runs the gr*** configs + // Graphite task *only* runs the gr*** configs if b.extraConfig("Graphite") { args = append(args, "--nogpu") // disable non-Graphite tests @@ -315,7 +309,6 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { // https://skbug.com/14105 skip(ALL, "test", ALL, "BackendTextureTest") skip(ALL, "test", ALL, "GraphitePurgeNotUsedSinceResourcesTest") - skip(ALL, "test", ALL, "MakeColorSpace_Test") skip(ALL, "test", ALL, "PaintParamsKeyTest") if b.matchOs("Win10") { @@ -337,6 +330,8 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { skip(ALL, "test", ALL, "GraphiteTextureProxyTest") skip(ALL, "test", ALL, "GraphiteYUVAPromiseImageMultipleImgUses") skip(ALL, "test", ALL, "GraphiteYUVAPromiseImageRecorderLoss") + skip(ALL, "test", ALL, "ImageOriginTest_drawImage_Graphite") + skip(ALL, "test", ALL, "ImageOriginTest_imageShader_Graphite") skip(ALL, "test", ALL, "ImageProviderTest_Graphite_Testing") skip(ALL, "test", ALL, "ImageProviderTest_Graphite_Default") skip(ALL, "test", ALL, "MakeColorSpace_Test") @@ -351,7 +346,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { skip(ALL, "test", ALL, "RecordingSurfacesTestClear") skip(ALL, "test", ALL, "ShaderTestNestedBlendsGraphite") skip(ALL, "test", ALL, "SkRuntimeEffectSimple_Graphite") - skip(ALL, "test", ALL, "SkSLMatrixScalarNoOpFolding_GPU") + skip(ALL, "test", ALL, "SkSLMatrixScalarNoOpFolding_Ganesh") skip(ALL, "test", ALL, "VolatileGraphiteYUVAPromiseImageTest") skip(ALL, "test", ALL, "VolatileGraphitePromiseImageTest") } @@ -377,22 +372,22 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { } if b.matchGpu("Intel") { // anglebug.com/5588 - skip(ALL, "test", ALL, "SkSLIntrinsicFloor_GPU") + skip(ALL, "test", ALL, "SkSLIntrinsicFloor_Ganesh") // Debug-ANGLE-All on Intel frequently timeout, and the FilterResult test suite // produces many test cases, that are multiplied by the number of configs (of // which ANGLE has many variations). There is not a lot of value gained by // running these if they are the source of long 'dm' time on Xe hardware given - // many other bots are executing them. + // many other tasks are executing them. skip(ALL, "test", ALL, "FilterResult") } } else if b.matchOs("Mac") { configs = []string{"angle_mtl_es2", "angle_mtl_es3"} // anglebug.com/7145 - skip(ALL, "test", ALL, "SkSLOutParamsAreDistinctFromGlobal_GPU") + skip(ALL, "test", ALL, "SkSLOutParamsAreDistinctFromGlobal_Ganesh") // b/268720489 - skip(ALL, "test", ALL, "SkSLIntrinsicMixFloatES3_GPU") + skip(ALL, "test", ALL, "SkSLIntrinsicMixFloatES3_Ganesh") // anglebug.com/7245 skip("angle_mtl_es3", "gm", ALL, "runtime_intrinsics_common_es3") @@ -443,7 +438,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { if !b.matchGpu("Intel") { configs = append(configs, "vkmsaa4") } - // Temporarily limit the bots we test dynamic MSAA on. + // Temporarily limit the machines we test dynamic MSAA on. if b.gpu("QuadroP400", "MaliG77") && !b.extraConfig("TSAN") { configs = append(configs, "vkdmsaa") } @@ -471,15 +466,15 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { configs = []string{"d3d"} } - // Test 1010102 on our Linux/NVIDIA bots and the persistent cache config - // on the GL bots. + // Test 1010102 on our Linux/NVIDIA tasks and the persistent cache config + // on the GL tasks. if b.gpu("QuadroP400") && !b.extraConfig("PreAbandonGpuContext") && !b.extraConfig("TSAN") && b.isLinux() && !b.extraConfig("FailFlushTimeCallbacks") && !b.extraConfig("Graphite") { if b.extraConfig("Vulkan") { configs = append(configs, "vk1010102") // Decoding transparent images to 1010102 just looks bad skip("vk1010102", "image", ALL, ALL) - } else if !b.extraConfig("Dawn") { + } else { configs = append(configs, "gl1010102", "gltestpersistentcache", "gltestglslcache", "gltestprecompile") // Decoding transparent images to 1010102 just looks bad skip("gl1010102", "image", ALL, ALL) @@ -566,7 +561,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { args = append(args, "--gpuResourceCacheLimit", "16777216") } - // Test rendering to wrapped dsts on a few bots + // Test rendering to wrapped dsts on a few tasks if b.extraConfig("BonusConfigs") { configs = []string{"glbetex", "glbert", "glreducedshaders", "glr8"} } @@ -709,9 +704,18 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { removeFromArgs("svg") } - // Remove skps for all bots except for a select few. On bots that will run SKPs remove some of their other tests. + if b.matchExtraConfig("Fontations") { + // The only fontations code is exercised via gms and tests + removeFromArgs("image") + removeFromArgs("lottie") + removeFromArgs("colorImage") + removeFromArgs("svg") + } + + // Remove skps for all tasks except for a select few. On tasks that will run SKPs remove some of + // their other tests. if b.matchExtraConfig("DDL", "PDF") { - // The DDL and PDF bots just render the large skps and the gms + // The DDL and PDF tasks just render the large skps and the gms removeFromArgs("tests") removeFromArgs("image") removeFromArgs("colorImage") @@ -729,12 +733,12 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { removeFromArgs("image") removeFromArgs("colorImage") } else { - // No other bots render the .skps. + // No other tasks render the .skps. removeFromArgs("skp") } if b.extraConfig("Lottie") { - // Only run the lotties on Lottie bots. + // Only run the lotties on Lottie tasks. removeFromArgs("tests") removeFromArgs("gm") removeFromArgs("image") @@ -1028,7 +1032,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { } // skbug.com/4888 - // Skip RAW images (and a few large PNGs) on GPU bots + // Skip RAW images (and a few large PNGs) on GPU tasks // until we can resolve failures. if b.gpu() { skip(ALL, "image", ALL, "interlaced1.png") @@ -1063,53 +1067,68 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { skip(glMsaaConfig, "gm", ALL, "imagefiltersbase") } - skip(ALL, "tests", ALL, "SkSLUnaryPositiveNegative_GPU") + skip(ALL, "tests", ALL, "SkSLUnaryPositiveNegative_Ganesh") } if b.model("Pixel3") || b.model("Pixel2XL") { - skip(ALL, "tests", ALL, "SkSLEmptyBlocksES3_GPU") // skia:13309 + skip(ALL, "tests", ALL, "SkSLEmptyBlocksES3_Ganesh") // skia:13309 + } + + if b.extraConfig("Vulkan") && + (b.model("Pixel2XL") || b.model("Pixel3") || b.model("Pixel4XL") || b.model("Pixel3a")) { + skip(ALL, "tests", ALL, "SkSLVoidInSequenceExpressions_Ganesh") // b/295217166 + } + + // b/296440036 + // disable broken tests on Adreno 5/6xx Vulkan or API30 + if b.matchGpu("Adreno[56]") && (b.extraConfig("Vulkan") || b.extraConfig("API30")) { + skip(ALL, "tests", ALL, "ImageAsyncReadPixels_Renderable_BottomLeft") + skip(ALL, "tests", ALL, "ImageAsyncReadPixels_Renderable_TopLeft") + skip(ALL, "tests", ALL, "ImageAsyncReadPixels_NonRenderable_BottomLeft") + skip(ALL, "tests", ALL, "ImageAsyncReadPixels_NonRenderable_TopLeft") + skip(ALL, "tests", ALL, "SurfaceAsyncReadPixels") } - if b.matchGpu("Adreno[3456]") { // disable broken tests on Adreno 3/4/5/6xx - skip(ALL, "tests", ALL, "SkSLArrayCast_GPU") // skia:12332 - skip(ALL, "tests", ALL, "SkSLArrayComparison_GPU") // skia:12332 - skip(ALL, "tests", ALL, "SkSLCommaSideEffects_GPU") - skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES2_GPU") - skip(ALL, "tests", ALL, "SkSLIntrinsicClampFloat_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_GPU") - skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_GPU") // skia:14177 - skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_GPU") // skia:14177 + if b.matchGpu("Adreno[3456]") { // disable broken tests on Adreno 3/4/5/6xx + skip(ALL, "tests", ALL, "SkSLArrayCast_Ganesh") // skia:12332 + skip(ALL, "tests", ALL, "SkSLArrayComparison_Ganesh") // skia:12332 + skip(ALL, "tests", ALL, "SkSLCommaSideEffects_Ganesh") + skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES2_Ganesh") + skip(ALL, "tests", ALL, "SkSLIntrinsicClampFloat_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_Ganesh") // skia:14177 + skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_Ganesh") // skia:14177 } if b.matchGpu("Adreno[345]") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 3/4/5xx GLSL skip(ALL, "tests", ALL, "DSLFPTest_SwitchStatement") // skia:11891 - skip(ALL, "tests", ALL, "SkSLMatrixToVectorCast_GPU") // skia:12192 - skip(ALL, "tests", ALL, "SkSLStructsInFunctions_GPU") // skia:11929 + skip(ALL, "tests", ALL, "SkSLMatrixToVectorCast_Ganesh") // skia:12192 + skip(ALL, "tests", ALL, "SkSLStructsInFunctions_Ganesh") // skia:11929 } if b.matchGpu("Adreno[3456]") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 3/4/5/6xx GLSL - skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_GPU") // skia:13115 + skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_Ganesh") // skia:13115 } if b.matchGpu("Adreno6") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 6xx GLSL - skip(ALL, "tests", ALL, "SkSLIntrinsicIsInf_GPU") // skia:12377 + skip(ALL, "tests", ALL, "SkSLIntrinsicIsInf_Ganesh") // skia:12377 } if b.matchGpu("Adreno[56]") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 5/6xx GLSL - skip(ALL, "tests", ALL, "SkSLStructFieldFolding_GPU") // skia:13393 + skip(ALL, "tests", ALL, "SkSLStructFieldFolding_Ganesh") // skia:13393 } if b.matchGpu("Adreno[56]") && b.extraConfig("Vulkan") { // disable broken tests on Adreno 5/6xx Vulkan - skip(ALL, "tests", ALL, "SkSLInoutParameters_GPU") // skia:12869 - skip(ALL, "tests", ALL, "SkSLOutParams_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLOutParamsDoubleSwizzle_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLOutParamsNoInline_GPU") // skia:11919 + skip(ALL, "tests", ALL, "SkSLInoutParameters_Ganesh") // skia:12869 + skip(ALL, "tests", ALL, "SkSLOutParams_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLOutParamsDoubleSwizzle_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLOutParamsNoInline_Ganesh") // skia:11919 skip(ALL, "tests", ALL, "SkSLOutParamsFunctionCallInArgument") } if (b.matchGpu("Adreno3") || b.matchGpu("Mali400")) && !b.extraConfig("Vulkan") { skip(ALL, "tests", ALL, "SkSLMatrices") // skia:12456 - skip(ALL, "tests", ALL, "SkSLMatrixNoOpFolding_GPU") + skip(ALL, "tests", ALL, "SkSLMatrixNoOpFolding_Ganesh") } if b.gpu("QuadroP400") { @@ -1123,83 +1142,92 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { if b.matchGpu("Mali400") { skip(ALL, "tests", ALL, "BlendRequiringDstReadWithLargeCoordinates") skip(ALL, "tests", ALL, "SkSLCross") - skip(ALL, "tests", ALL, "SkSLMatrixSwizzleStore_GPU") + skip(ALL, "tests", ALL, "SkSLMatrixSwizzleStore_Ganesh") } if (b.matchOs("Mac") || b.matchOs("iOS")) && !b.extraConfig("Metal") { // MacOS/iOS do not handle short-circuit evaluation properly in OpenGL (chromium:307751) - skip(ALL, "tests", ALL, "SkSLLogicalAndShortCircuit_GPU") - skip(ALL, "tests", ALL, "SkSLLogicalOrShortCircuit_GPU") + skip(ALL, "tests", ALL, "SkSLLogicalAndShortCircuit_Ganesh") + skip(ALL, "tests", ALL, "SkSLLogicalOrShortCircuit_Ganesh") } if b.matchOs("iOS") && !b.extraConfig("Metal") { - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_GPU") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_Ganesh") } - if b.matchOs("Mac") && b.extraConfig("Metal") && (b.gpu("IntelIrisPlus") || - b.gpu("IntelHD6000")) { - skip(ALL, "tests", ALL, "SkSLIntrinsicNot_GPU") // skia:14025 - skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES3_GPU") // skia:14025 + if b.matchOs("Mac") && (b.gpu("IntelIrisPlus") || b.gpu("IntelHD6000")) && + (b.extraConfig("Metal") || b.extraConfig("Dawn")) { + skip(ALL, "tests", ALL, "SkSLIntrinsicNot_Ganesh") // skia:14025 + skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES3_Ganesh") // skia:14025 + skip(ALL, "tests", ALL, "SkSLIntrinsicNot_Graphite") // skia:14025 + skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES3_Graphite") // skia:14025 + + // TODO(skia:296960708): The IntelIrisPlus+Metal config hangs on this test, but passes + // SurfaceContextWritePixelsMipped so let that one keep running. + skip(ALL, "tests", ALL, "SurfaceContextWritePixels") + skip(ALL, "tests", ALL, "SurfaceContextWritePixelsMipped") + skip(ALL, "tests", ALL, "ImageAsyncReadPixels") + skip(ALL, "tests", ALL, "SurfaceAsyncReadPixels") } if b.gpu("IntelIris6100", "IntelHD4400") && b.matchOs("Win") && b.extraConfig("ANGLE") { - skip(ALL, "tests", ALL, "SkSLVectorToMatrixCast_GPU") // skia:12179, vec4(mat2) crash - skip(ALL, "tests", ALL, "SkSLTrivialArgumentsInlineDirectly_GPU") // skia:12179 again - skip(ALL, "tests", ALL, "SkSLVectorScalarMath_GPU") + skip(ALL, "tests", ALL, "SkSLVectorToMatrixCast_Ganesh") // skia:12179, vec4(mat2) crash + skip(ALL, "tests", ALL, "SkSLTrivialArgumentsInlineDirectly_Ganesh") // skia:12179 again + skip(ALL, "tests", ALL, "SkSLVectorScalarMath_Ganesh") } if b.gpu("IntelIris6100", "IntelHD4400") && b.matchOs("Win") && !b.extraConfig("Vulkan") { - skip(ALL, "tests", ALL, "SkSLMatrixFoldingES2_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLMatrixEquality_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLTemporaryIndexLookup_GPU") // skia:14151 - skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_GPU") // skia:14177 + skip(ALL, "tests", ALL, "SkSLMatrixFoldingES2_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLMatrixEquality_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLTemporaryIndexLookup_Ganesh") // skia:14151 + skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_Ganesh") // skia:14177 } if b.matchGpu("Intel") && b.matchOs("Win") && !b.extraConfig("Vulkan") { - skip(ALL, "tests", ALL, "SkSLReturnsValueOnEveryPathES3_GPU") // skia:12465 - skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_GPU") // skia:13115 - skip(ALL, "tests", ALL, "SkSLStructFieldFolding_GPU") // skia:13393 + skip(ALL, "tests", ALL, "SkSLReturnsValueOnEveryPathES3_Ganesh") // skia:12465 + skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_Ganesh") // skia:13115 + skip(ALL, "tests", ALL, "SkSLStructFieldFolding_Ganesh") // skia:13393 } if b.extraConfig("Vulkan") && b.isLinux() && b.matchGpu("Intel") { - skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_GPU") // skia:12465 - skip(ALL, "tests", ALL, "SkSLReturnsValueOnEveryPathES3_GPU") // skia:14131 + skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_Ganesh") // skia:12465 + skip(ALL, "tests", ALL, "SkSLReturnsValueOnEveryPathES3_Ganesh") // skia:14131 } if b.extraConfig("ANGLE") && b.matchOs("Win") && b.matchGpu("IntelIris(540|655|Xe)") { - skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_GPU") // skia:12465 - skip(ALL, "tests", ALL, "ImageFilterCropRect_Gpu") // b/294080402 + skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_Ganesh") // skia:12465 + skip(ALL, "tests", ALL, "ImageFilterCropRect_Gpu") // b/294080402 } if b.extraConfig("Dawn") { // skia:13922: WGSL does not support case fallthrough in switch statements. - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthroughAndVarDecls_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithLoops_GPU") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthroughAndVarDecls_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithLoops_Ganesh") } if b.gpu("Tegra3") { // Tegra3 fails to compile break stmts inside a for loop (skia:12477) - skip(ALL, "tests", ALL, "SkSLSwitch_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithFallthroughAndVarDecls_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchWithLoops_GPU") - skip(ALL, "tests", ALL, "SkSLSwitchCaseFolding_GPU") - skip(ALL, "tests", ALL, "SkSLLoopFloat_GPU") - skip(ALL, "tests", ALL, "SkSLLoopInt_GPU") + skip(ALL, "tests", ALL, "SkSLSwitch_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchDefaultOnly_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthrough_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithFallthroughAndVarDecls_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchWithLoops_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwitchCaseFolding_Ganesh") + skip(ALL, "tests", ALL, "SkSLLoopFloat_Ganesh") + skip(ALL, "tests", ALL, "SkSLLoopInt_Ganesh") } if b.gpu("QuadroP400") || b.gpu("GTX660") || b.gpu("GTX960") || b.gpu("Tegra3") || b.gpu("RTX3060") { if !b.extraConfig("Vulkan") { // Various Nvidia GPUs crash or generate errors when assembling weird matrices - skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES2_GPU") // skia:12443 - skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES3_GPU") // skia:12443 + skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES2_Ganesh") // skia:12443 + skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES3_Ganesh") // skia:12443 // Nvidia drivers erroneously constant-fold expressions with side-effects in // constructors when compiling GLSL. - skip(ALL, "tests", ALL, "SkSLPreserveSideEffects_GPU") // skia:13035 - skip(ALL, "tests", ALL, "SkSLStructFieldNoFolding_GPU") // skia:13395 + skip(ALL, "tests", ALL, "SkSLPreserveSideEffects_Ganesh") // skia:13035 + skip(ALL, "tests", ALL, "SkSLStructFieldNoFolding_Ganesh") // skia:13395 } } @@ -1209,41 +1237,42 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { b.matchGpu("Mali400") || b.matchGpu("Tegra3") || b.matchGpu("Radeon(R9|HD)")) { - skip(ALL, "tests", ALL, "SkSLMatrixScalarNoOpFolding_GPU") // skia:13556 + skip(ALL, "tests", ALL, "SkSLMatrixScalarNoOpFolding_Ganesh") // skia:13556 } if b.matchOs("Mac") && b.extraConfig("ANGLE") { - skip(ALL, "tests", ALL, "SkSLMatrixScalarNoOpFolding_GPU") // https://anglebug.com/7525 - skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_GPU") // Apple bug FB12055941 + skip(ALL, "tests", ALL, "SkSLMatrixScalarNoOpFolding_Ganesh") // https://anglebug.com/7525 + skip(ALL, "tests", ALL, "SkSLMatrixScalarMath_Ganesh") // https://anglebug.com/7525 + skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_Ganesh") // Apple bug FB12055941 } if b.matchOs("Mac") && b.matchGpu("Intel") && !b.extraConfig("Metal") { - skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_GPU") // skia:14177 + skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_Ganesh") // skia:14177 } if b.matchOs("Win10") && b.gpu("IntelIris655") { - skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_GPU") // skia:14177 + skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_Ganesh") // skia:14177 } if b.matchOs("Win") && (b.matchGpu("Intel") || b.extraConfig("ANGLE")) { - skip(ALL, "tests", ALL, "SkSLSwizzleAsLValueES3_GPU") // https://anglebug.com/8260 + skip(ALL, "tests", ALL, "SkSLSwizzleAsLValueES3_Ganesh") // https://anglebug.com/8260 } if b.gpu("RTX3060") && b.extraConfig("Vulkan") && b.matchOs("Win") { skip(ALL, "gm", ALL, "blurcircles2") // skia:13342 - skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES3_GPU") + skip(ALL, "tests", ALL, "SkSLIntrinsicMixFloatES3_Ganesh") } if b.gpu("Tegra3") { - skip(ALL, "tests", ALL, "SkSLMatrixFoldingES2_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLMatrixEquality_GPU") // skia:11919 - skip(ALL, "tests", ALL, "SkSLIntrinsicFract_GPU") - skip(ALL, "tests", ALL, "SkSLModifiedStructParametersCannotBeInlined_GPU") + skip(ALL, "tests", ALL, "SkSLMatrixFoldingES2_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLMatrixEquality_Ganesh") // skia:11919 + skip(ALL, "tests", ALL, "SkSLIntrinsicFract_Ganesh") + skip(ALL, "tests", ALL, "SkSLModifiedStructParametersCannotBeInlined_Ganesh") } if b.gpu("QuadroP400") && b.matchOs("Ubuntu") && b.matchModel("Golo") { - // Fails on Ubuntu18-Golo bots with QuadroP400 GPUs on Vulkan and OpenGL - skip(ALL, "tests", ALL, "SkSLPreserveSideEffects_GPU") // skia:13035 + // Fails on Ubuntu18-Golo machines with QuadroP400 GPUs on Vulkan and OpenGL + skip(ALL, "tests", ALL, "SkSLPreserveSideEffects_Ganesh") // skia:13035 } if b.gpu("QuadroP400") && b.matchOs("Win10") && b.matchModel("Golo") { @@ -1252,27 +1281,28 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { } if b.gpu("PowerVRGE8320") { - skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinct_GPU") - skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_GPU") // skia:13115 + skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinct_Ganesh") + skip(ALL, "tests", ALL, "SkSLOutParamsAreDistinctFromGlobal_Ganesh") // skia:13115 } if !b.extraConfig("Vulkan") && (b.gpu("RadeonR9M470X") || b.gpu("RadeonHD7770")) { // Some AMD GPUs can get the wrong result when assembling non-square matrices (skia:12443) - skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES3_GPU") + skip(ALL, "tests", ALL, "SkSLMatrixConstructorsES3_Ganesh") // Some AMD GPUs miscompile the all() intrinsic. (skia:14034) - skip(ALL, "tests", ALL, "SkSLIntrinsicAll_GPU") + skip(ALL, "tests", ALL, "SkSLIntrinsicAll_Ganesh") // Some AMD GPUs do not like storing into deeply-nested structs. (skia:14159) - skip(ALL, "tests", ALL, "SkSLStructIndexStore_GPU") + skip(ALL, "tests", ALL, "SkSLStructIndexStore_Ganesh") // Accessing an indexed swizzle can be trouble. (skia:14177) - skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_GPU") - skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_GPU") + skip(ALL, "tests", ALL, "SkSLSwizzleIndexLookup_Ganesh") + skip(ALL, "tests", ALL, "SkSLSwizzleIndexStore_Ganesh") } if b.gpu("RadeonR9M470X") && b.extraConfig("ANGLE") { // skbug:14293 - ANGLE D3D9 ES2 has flaky texture sampling that leads to fuzzy diff errors skip(ALL, "tests", ALL, "FilterResult") // skbug:13815 - Flaky failures on ANGLE D3D9 ES2 - skip(ALL, "tests", ALL, "SkRuntimeEffectSimple_GPU") + skip(ALL, "tests", ALL, "SkRuntimeEffectSimple_Ganesh") + skip(ALL, "tests", ALL, "TestSweepGradientZeroXGanesh") } if b.extraConfig("Vulkan") && b.gpu("RadeonVega6") { @@ -1281,13 +1311,13 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { } if b.matchGpu("Intel") || b.matchGpu("RadeonVega6") { // some Intel and AMD GPUs don't return zero for the derivative of a uniform - skip(ALL, "tests", ALL, "SkSLIntrinsicDFdy_GPU") - skip(ALL, "tests", ALL, "SkSLIntrinsicDFdx_GPU") - skip(ALL, "tests", ALL, "SkSLIntrinsicFwidth_GPU") + skip(ALL, "tests", ALL, "SkSLIntrinsicDFdy_Ganesh") + skip(ALL, "tests", ALL, "SkSLIntrinsicDFdx_Ganesh") + skip(ALL, "tests", ALL, "SkSLIntrinsicFwidth_Ganesh") } if b.matchOs("Mac") && b.matchGpu("Intel(Iris5100|HD6000)") { - skip(ALL, "tests", ALL, "SkSLLoopFloat_GPU") // skia:12426 + skip(ALL, "tests", ALL, "SkSLLoopFloat_Ganesh") // skia:12426 } match := []string{} @@ -1491,7 +1521,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { args = append(args, match...) } - // These bots run out of memory running RAW codec tests. Do not run them in + // These devices run out of memory running RAW codec tests. Do not run them in // parallel // TODO(borenet): Previously this was `'Nexus5' in bot or 'Nexus9' in bot` // which also matched 'Nexus5x'. I added That here to maintain the @@ -1521,7 +1551,7 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { args = append(args, "--gdi") } - // Let's make all bots produce verbose output by default. + // Let's make all tasks produce verbose output by default. args = append(args, "--verbose") // See skia:2789. diff --git a/infra/bots/gen_tasks_logic/gen_tasks_logic.go b/infra/bots/gen_tasks_logic/gen_tasks_logic.go index e72e9cd035b6..7c9abb799c03 100644 --- a/infra/bots/gen_tasks_logic/gen_tasks_logic.go +++ b/infra/bots/gen_tasks_logic/gen_tasks_logic.go @@ -428,8 +428,10 @@ func GenTasks(cfg *Config) { "skia/resources", "skia/package.json", "skia/package-lock.json", - "skia/DEPS", // needed to check generation + "skia/DEPS", // needed to check generation + "skia/infra/bots", // Many Go tests live here. // Needed to run bazel + "skia/.bazelignore", "skia/.bazelrc", "skia/.bazelversion", "skia/BUILD.bazel", @@ -918,6 +920,9 @@ func (b *taskBuilder) defaultSwarmDimensions() { "AppleM1": { "MacMini9.1": "arm64-64-Apple_M1", }, + "AppleIntel": { + "MacBookPro16.2": "x86-64", + }, "AVX": { "VMware7.1": "x86-64", }, @@ -928,11 +933,11 @@ func (b *taskBuilder) defaultSwarmDimensions() { "MacMini7.1": "x86-64-i5-4278U", "NUC5i7RYH": "x86-64-i7-5557U", "NUC9i7QN": "x86-64-i7-9750H", - "NUC11TZi5": "x86-64-avx2", + "NUC11TZi5": "x86-64-i5-1135G7", }, "AVX512": { - "GCE": "x86-64-Skylake_GCE", - "Golo": "Intel64_Family_6_Model_85_Stepping_7__GenuineIntel", + "GCE": "x86-64-Skylake_GCE", + "Golo": "Intel64_Family_6_Model_85_Stepping_7__GenuineIntel", }, "Rome": { "GCE": "x86-64-AMD_Rome_GCE", @@ -961,7 +966,7 @@ func (b *taskBuilder) defaultSwarmDimensions() { gpu, ok := map[string]string{ // At some point this might use the device ID, but for now it's like Chromebooks. "GTX660": "10de:11c0-26.21.14.4120", - "GTX960": "10de:1401-31.0.15.3667", + "GTX960": "10de:1401-31.0.15.3699", "IntelHD4400": "8086:0a16-20.19.15.4963", "IntelIris540": "8086:1926-31.0.101.2115", "IntelIris6100": "8086:162b-20.19.15.4963", @@ -971,7 +976,7 @@ func (b *taskBuilder) defaultSwarmDimensions() { "RadeonR9M470X": "1002:6646-26.20.13031.18002", "QuadroP400": "10de:1cb3-30.0.15.1179", "RadeonVega6": "1002:1636-31.0.14057.5006", - "RTX3060": "10de:2489-31.0.15.3667", + "RTX3060": "10de:2489-31.0.15.3699", }[b.parts["cpu_or_gpu_value"]] if !ok { log.Fatalf("Entry %q not found in Win GPU mapping.", b.parts["cpu_or_gpu_value"]) @@ -1265,7 +1270,7 @@ func (b *jobBuilder) compile() string { b.addTask(name, func(b *taskBuilder) { recipe := "compile" casSpec := CAS_COMPILE - if b.extraConfig("NoDEPS", "CMake", "Flutter", "NoPatch", "Vello") { + if b.extraConfig("NoDEPS", "CMake", "Flutter", "NoPatch", "Vello", "Fontations") { recipe = "sync_and_compile" casSpec = CAS_RUN_RECIPE b.recipeProps(EXTRA_PROPS) @@ -1321,6 +1326,10 @@ func (b *jobBuilder) compile() string { } b.asset("ccache_linux") b.usesCCache() + if b.extraConfig("Fontations") { + b.usesBazel("linux_x64") + b.attempts(1) + } } else if b.matchOs("Win") { b.asset("win_toolchain") if b.compiler("Clang") { @@ -1340,7 +1349,7 @@ func (b *jobBuilder) compile() string { if b.extraConfig("iOS") { b.asset("provisioning_profile_ios") } - if b.extraConfig("Vello") { + if b.extraConfig("Vello") || b.extraConfig("Fontations") { // All of our current Mac compile machines are x64 Mac only. b.usesBazel("mac_x64") b.attempts(1) @@ -2125,6 +2134,30 @@ var shorthandToLabel = map[string]labelAndSavedOutputDir{ "skottie_tool_gpu": {"//modules/skottie:skottie_tool_gpu", ""}, "tests": {"//tests:linux_rbe_build", ""}, "experimental_bazel_test_client": {"//experimental/bazel_test/client:client_lib", ""}, + "cpu_gms": {"//gm:cpu_gm_tests", ""}, + "hello_bazel_world_test": {"//gm:hello_bazel_world_test", ""}, + + // Currently there is no way to tell Bazel "only test go_test targets", so we must group them + // under a test_suite. + // + // Alternatives: + // + // - Use --test_lang_filters, which currently does not work for non-native rules. See + // https://github.com/bazelbuild/bazel/issues/12618. + // + // - As suggested in the same GitHub issue, "bazel query 'kind(go_test, //...)'" would normally + // return the list of labels. However, this fails due to BUILD.bazel files in + // //third_party/externals and //bazel/external/vello. We could try either fixing those files + // when possible, or adding them to //.bazelignore (either permanently or temporarily inside a + // specialized task driver just for Go tests). + // + // - Have Gazelle add a tag to all Go tests: go_test(name = "foo_test", tag = "go", ... ). Then, + // we can use a wildcard label such as //... and tell Bazel to only test those targets with + // said tag, e.g. "bazel test //... --test_tag_filters=go" + // (https://bazel.build/reference/command-line-reference#flag--test_tag_filters). Today this + // does not work due to the third party and external BUILD.bazel files mentioned in the + // previous bullet point. + "all_go_tests": {"//:all_go_tests", ""}, // Android tests that run on a device. We store the //bazel-bin/tests directory into CAS for use // by subsequent CI tasks. @@ -2228,6 +2261,9 @@ func (b *jobBuilder) bazelTest() { if taskdriverName == "precompiled" { taskdriverName = "bazel_test_precompiled" } + if taskdriverName == "gm" { + taskdriverName = "bazel_test_gm" + } b.addTask(b.Name, func(b *taskBuilder) { cmd := []string{"./" + taskdriverName, @@ -2287,6 +2323,17 @@ func (b *jobBuilder) bazelTest() { "--command="+command, "--command_workdir="+commandWorkDir) + case "bazel_test_gm": + cmd = append(cmd, + "--test_label="+labelAndSavedOutputDir.label, + "--test_config="+config, + "--goldctl_path=./cipd_bin_packages/goldctl", + "--git_commit="+specs.PLACEHOLDER_REVISION, + "--changelist_id="+specs.PLACEHOLDER_ISSUE, + "--patchset_order="+specs.PLACEHOLDER_PATCHSET, + "--tryjob_id="+specs.PLACEHOLDER_BUILDBUCKET_BUILD_ID) + b.cipd(CIPD_PKGS_GOLDCTL) + default: panic("Unsupported Bazel taskdriver " + taskdriverName) } diff --git a/infra/bots/gen_tasks_logic/nano_flags.go b/infra/bots/gen_tasks_logic/nano_flags.go index 0bc803e240d8..538a9391f492 100644 --- a/infra/bots/gen_tasks_logic/nano_flags.go +++ b/infra/bots/gen_tasks_logic/nano_flags.go @@ -21,8 +21,6 @@ func (b *taskBuilder) nanobenchFlags(doUpload bool) { args = append(args, "--gpuStatsDump", "true") } - args = append(args, "--scales", "1.0", "1.1") - configs := []string{} if b.cpu() { args = append(args, "--nogpu") @@ -49,11 +47,7 @@ func (b *taskBuilder) nanobenchFlags(doUpload bool) { sampleCount := 8 if b.matchOs("Android") || b.os("iOS") { sampleCount = 4 - // The NVIDIA_Shield has a regular OpenGL implementation. We bench that - // instead of ES. - if !b.model("NVIDIA_Shield") { - glPrefix = "gles" - } + glPrefix = "gles" // iOS crashes with MSAA (skia:6399) // Nexus7 (Tegra3) does not support MSAA. // MSAA is disabled on Pixel3a (https://b.corp.google.com/issues/143074513). @@ -204,9 +198,6 @@ func (b *taskBuilder) nanobenchFlags(doUpload bool) { match = append(match, "~patch_grid") // skia:2847 match = append(match, "~desk_carsvg") } - if b.matchModel("Nexus5") { - match = append(match, "~keymobi_shop_mobileweb_ebay_com.skp") // skia:5178 - } if b.os("iOS") { match = append(match, "~blurroundrect") match = append(match, "~patch_grid") // skia:2847 @@ -253,10 +244,6 @@ func (b *taskBuilder) nanobenchFlags(doUpload bool) { // floor2int_undef benches undefined behavior, so ASAN correctly complains. match = append(match, "~^floor2int_undef$") } - if b.model("AcerChromebook13_CB5_311") && b.gpu() { - // skia:7551 - match = append(match, "~^shapes_rrect_inner_rrect_50_500x500$") - } if b.model("Pixel3a") { // skia:9413 match = append(match, "~^path_text$") @@ -277,9 +264,6 @@ func (b *taskBuilder) nanobenchFlags(doUpload bool) { if b.model(DONT_REDUCE_OPS_TASK_SPLITTING_MODELS...) { args = append(args, "--dontReduceOpsTaskSplitting", "true") } - if b.model("NUC7i5BNK") { - args = append(args, "--gpuResourceCacheLimit", "16777216") - } if (!b.isLinux() && b.extraConfig("Vulkan") && b.gpu("QuadroP400")) { // skia:14302 (desk_carsvg.skp hangs indefinitely on Windows QuadroP400 vkdmsaa configs) match = append(match, "~desk_carsvg.skp") diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json index e86d3b105996..f88a03820295 100644 --- a/infra/bots/jobs.json +++ b/infra/bots/jobs.json @@ -65,9 +65,22 @@ "experimental": true } }, + { + "name": "BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64", + "cq_config": { + "experimental": true + } + }, + { + "name": "BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64", + "cq_config": { + "experimental": true + } + }, {"name": "BazelTest-toolchain_layering_check-experimental_bazel_test_client-release-linux_x64"}, {"name": "BazelTest-precompiled-android_codec_test-pixel_5-linux_arm64"}, {"name": "BazelTest-precompiled-android_cpu_only_test-pixel_5-linux_arm64"}, + {"name": "BazelTest-cpu_tests-all_go_tests-linux_rbe-linux_x64"}, {"name": "Build-Debian11-GCC-x86-Debug-Docker"}, {"name": "Build-Debian11-GCC-x86-Release-Docker"}, {"name": "Build-Debian11-GCC-x86_64-Debug-Docker"}, @@ -140,7 +153,7 @@ {"name": "Build-Debian10-Clang-x86_64-Debug-ASAN_Graphite_Vulkan"}, {"name": "Build-Debian10-Clang-x86_64-Debug-AVIF"}, {"name": "Build-Debian10-Clang-x86_64-Debug-Chromebook_GLES"}, - {"name": "Build-Debian10-Clang-x86_64-Debug-Dawn"}, + {"name": "Build-Debian10-Clang-x86_64-Debug-Fontations"}, {"name": "Build-Debian10-Clang-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE"}, {"name": "Build-Debian10-Clang-x86_64-Debug-SafeStack"}, {"name": "Build-Debian10-Clang-x86_64-Debug-Static"}, @@ -247,6 +260,7 @@ {"name": "Build-Mac-Clang-x86_64-Debug-ANGLE"}, {"name": "Build-Mac-Clang-x86_64-Debug-ASAN"}, {"name": "Build-Mac-Clang-x86_64-Debug-ASAN_Metal"}, + {"name": "Build-Mac-Clang-x86_64-Debug-Fontations"}, { "name": "Build-Mac-Clang-x86_64-Debug-Graphite_Dawn", "cq_config": { @@ -352,7 +366,6 @@ {"name": "Build-Win-Clang-x86_64-Debug-Direct3D"}, {"name": "Build-Win-Clang-x86_64-Debug-DWriteCore"}, {"name": "Build-Win-Clang-x86_64-Debug-ASAN"}, - {"name": "Build-Win-Clang-x86_64-Debug-Dawn"}, {"name": "Build-Win-Clang-x86_64-Debug-Graphite_Dawn"}, {"name": "Build-Win-Clang-x86_64-Debug-Graphite_Vulkan"}, {"name": "Build-Win-Clang-x86_64-Debug-Vulkan"}, @@ -364,10 +377,6 @@ "cq_config": {} }, {"name": "Build-Win-Clang-x86_64-Release-Shared"}, - { - "name": "Build-Win-Clang-x86_64-Release-Dawn", - "cq_config": {} - }, {"name": "Build-Win-Clang-x86_64-Release-Graphite_Dawn"}, {"name": "Build-Win-Clang-x86_64-Release-Graphite_Vulkan"}, { @@ -714,6 +723,7 @@ }, {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN"}, {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN"}, + {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations"}, {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts"}, {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE"}, {"name": "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack"}, @@ -874,6 +884,7 @@ }, {"name": "Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_Metal_ColorSpaces"}, {"name": "Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal"}, + {"name": "Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations"}, {"name": "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All"}, {"name": "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE"}, { @@ -906,7 +917,6 @@ "name": "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan", "cq_config": {} }, - {"name": "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn"}, {"name": "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan"}, {"name": "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext"}, { @@ -933,10 +943,6 @@ {"name": "Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-Vulkan"}, {"name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All"}, {"name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE"}, - { - "name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn", - "cq_config": {} - }, {"name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs"}, {"name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess"}, {"name": "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ReleaseAndAbandonGpuContext"}, diff --git a/infra/bots/recipe_modules/build/default.py b/infra/bots/recipe_modules/build/default.py index 3e5950a8a28d..fc5acb69ea47 100644 --- a/infra/bots/recipe_modules/build/default.py +++ b/infra/bots/recipe_modules/build/default.py @@ -237,6 +237,8 @@ def compile_fn(api, checkout_root, out_dir): args['skia_enable_graphite'] = 'true' if 'Vello' in extra_tokens: args['skia_enable_vello_shaders'] = 'true' + if 'Fontations' in extra_tokens: + args['skia_use_fontations'] = 'true' if 'NoGpu' in extra_tokens: args['skia_enable_ganesh'] = 'false' if 'NoDEPS' in extra_tokens: diff --git a/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Dawn.json b/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-Clang-x86_64-Debug-Fontations.json similarity index 59% rename from infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Dawn.json rename to infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-Clang-x86_64-Debug-Fontations.json index dffce51ee1d3..a00ab7eac895 100644 --- a/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Dawn.json +++ b/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-Clang-x86_64-Debug-Fontations.json @@ -3,15 +3,15 @@ "cmd": [ "vpython3", "-u", - "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", "--json-output", "/path/to/tmp/json", "copy", - "[START_DIR]\\cache\\work\\skia\\infra\\bots\\assets\\clang_win\\VERSION", + "[START_DIR]/cache/work/skia/infra/bots/assets/clang_linux/VERSION", "/path/to/tmp/" ], "infra_step": true, - "name": "Get clang_win VERSION", + "name": "Get clang_linux VERSION", "~followup_annotations": [ "@@@STEP_LOG_LINE@VERSION@42@@@", "@@@STEP_LOG_END@VERSION@@@" @@ -20,28 +20,47 @@ { "cmd": [ "python", - "[START_DIR]\\cache\\work\\skia\\bin\\fetch-gn" + "[START_DIR]/cache/work/skia/bin/fetch-gn" ], - "cwd": "[START_DIR]\\cache\\work\\skia", + "cwd": "[START_DIR]/cache/work/skia", "env": { "CHROME_HEADLESS": "1", - "PATH": ";RECIPE_REPO[depot_tools]" + "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, "name": "fetch-gn" }, { "cmd": [ - "[START_DIR]\\cache\\work\\skia\\bin\\gn", + "[START_DIR]/ccache_linux/bin/ccache", + "-s" + ], + "cwd": "[START_DIR]/cache/work/skia", + "env": { + "CCACHE_COMPILERCHECK": "content", + "CCACHE_DIR": "[START_DIR]/cache/ccache", + "CCACHE_MAXFILES": "0", + "CCACHE_MAXSIZE": "75G", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "name": "ccache stats-start" + }, + { + "cmd": [ + "[START_DIR]/cache/work/skia/bin/gn", "gen", - "[START_DIR]\\cache\\work\\skia\\out\\Build-Win-Clang-x86_64-Release-Dawn\\Release_x64", - "--args=cc=\"clang\" clang_win=\"[START_DIR]\\clang_win\" cxx=\"clang++\" extra_cflags=[\"-DPLACEHOLDER_clang_win_version=42\"] is_debug=false skia_use_dawn=true skia_use_gl=false target_cpu=\"x86_64\" werror=true win_sdk=\"[START_DIR]\\win_toolchain/win_sdk\" win_vc=\"[START_DIR]\\win_toolchain/VC\"" + "[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-x86_64-Debug-Fontations/Debug", + "--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cc_wrapper=\"[START_DIR]/ccache_linux/bin/ccache\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-DPLACEHOLDER_clang_linux_version=42\", \"-O1\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\", \"-L[START_DIR]/clang_linux/lib\"] skia_use_fontations=true target_cpu=\"x86_64\" werror=true" ], - "cwd": "[START_DIR]\\cache\\work\\skia", + "cwd": "[START_DIR]/cache/work/skia", "env": { + "CCACHE_COMPILERCHECK": "content", + "CCACHE_DIR": "[START_DIR]/cache/ccache", + "CCACHE_MAXFILES": "0", + "CCACHE_MAXSIZE": "75G", "CHROME_HEADLESS": "1", - "PATH": ";RECIPE_REPO[depot_tools]", - "PYTHONPATH": "[START_DIR]\\cache\\work\\skia\\third_party\\externals;%(PYTHONPATH)s" + "PATH": ":RECIPE_REPO[depot_tools]" }, "name": "gn gen" }, @@ -49,22 +68,41 @@ "cmd": [ "ninja", "-C", - "[START_DIR]\\cache\\work\\skia\\out\\Build-Win-Clang-x86_64-Release-Dawn\\Release_x64" + "[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-x86_64-Debug-Fontations/Debug" ], - "cwd": "[START_DIR]\\cache\\work\\skia", + "cwd": "[START_DIR]/cache/work/skia", "env": { + "CCACHE_COMPILERCHECK": "content", + "CCACHE_DIR": "[START_DIR]/cache/ccache", + "CCACHE_MAXFILES": "0", + "CCACHE_MAXSIZE": "75G", "CHROME_HEADLESS": "1", - "PATH": ";RECIPE_REPO[depot_tools]", - "PYTHONPATH": "[START_DIR]\\cache\\work\\skia\\third_party\\externals;%(PYTHONPATH)s" + "PATH": ":RECIPE_REPO[depot_tools]" }, "name": "ninja" }, + { + "cmd": [ + "[START_DIR]/ccache_linux/bin/ccache", + "-s" + ], + "cwd": "[START_DIR]/cache/work/skia", + "env": { + "CCACHE_COMPILERCHECK": "content", + "CCACHE_DIR": "[START_DIR]/cache/ccache", + "CCACHE_MAXFILES": "0", + "CCACHE_MAXSIZE": "75G", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "name": "ccache stats-end" + }, { "cmd": [ "python", "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print('Copying build product %s to %s' % (f, dst_path))\n shutil.move(f, dst_path)\n", - "[START_DIR]\\cache\\work\\skia\\out\\Build-Win-Clang-x86_64-Release-Dawn\\Release_x64", - "[START_DIR]\\[SWARM_OUT_DIR]\\out\\Release_x64" + "[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-x86_64-Debug-Fontations/Debug", + "[START_DIR]/[SWARM_OUT_DIR]/out/Debug" ], "infra_step": true, "name": "copy build products", diff --git a/infra/bots/recipe_modules/build/examples/full.py b/infra/bots/recipe_modules/build/examples/full.py index ff31b30d0cbe..5cb62d1d19fc 100644 --- a/infra/bots/recipe_modules/build/examples/full.py +++ b/infra/bots/recipe_modules/build/examples/full.py @@ -40,6 +40,7 @@ def RunSteps(api): 'Build-Debian10-Clang-x86_64-Debug-AVIF', 'Build-Debian10-Clang-x86_64-Debug-Chromebook_GLES', 'Build-Debian10-Clang-x86_64-Debug-Coverage', + 'Build-Debian10-Clang-x86_64-Debug-Fontations', 'Build-Debian10-Clang-x86_64-Debug-MSAN', 'Build-Debian10-Clang-x86_64-Debug-SK_CPU_LIMIT_SSE41', 'Build-Debian10-Clang-x86_64-Debug-SafeStack', @@ -89,7 +90,6 @@ def RunSteps(api): 'Build-Win-Clang-x86_64-Release-Graphite_Vulkan', 'Build-Win-Clang-x86_64-Release-Direct3D', 'Build-Win-Clang-x86_64-Release-Shared', - 'Build-Win-Clang-x86_64-Release-Dawn', 'Build-Win-Clang-x86_64-Release-Vulkan', ] diff --git a/infra/bots/task_drivers/bazel_test_gm/BUILD.bazel b/infra/bots/task_drivers/bazel_test_gm/BUILD.bazel new file mode 100644 index 000000000000..fb0324ea1afa --- /dev/null +++ b/infra/bots/task_drivers/bazel_test_gm/BUILD.bazel @@ -0,0 +1,34 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "bazel_test_gm_lib", + srcs = ["bazel_test_gm.go"], + importpath = "go.skia.org/skia/infra/bots/task_drivers/bazel_test_gm", + visibility = ["//visibility:private"], + deps = [ + "@org_skia_go_infra//go/exec", + "@org_skia_go_infra//go/skerr", + "@org_skia_go_infra//go/util", + "@org_skia_go_infra//task_driver/go/lib/bazel", + "@org_skia_go_infra//task_driver/go/lib/os_steps", + "@org_skia_go_infra//task_driver/go/td", + ], +) + +go_binary( + name = "bazel_test_gm", + embed = [":bazel_test_gm_lib"], + visibility = ["//visibility:public"], +) + +go_test( + name = "bazel_test_gm_test", + srcs = ["bazel_test_gm_test.go"], + embed = [":bazel_test_gm_lib"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_skia_go_infra//go/exec", + "@org_skia_go_infra//task_driver/go/td", + ], +) diff --git a/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm.go b/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm.go new file mode 100644 index 000000000000..7c4efe1067ac --- /dev/null +++ b/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm.go @@ -0,0 +1,520 @@ +// Copyright 2023 Google LLC +// +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This task driver runs a single Bazel test target representing one or more GMs, or a Bazel test +// suite consisting of multiple such targets, using the provided config (which is assumed to be in +// //bazel/buildrc). GM results are uploaded to Gold via goldctl. This task driver handles any +// setup steps needed to run Bazel on our CI machines before running the task, such as setting up +// logs and the Bazel cache. + +package main + +import ( + "archive/zip" + "bytes" + "context" + "encoding/json" + "errors" + "flag" + "fmt" + "io" + "os" + "path/filepath" + "regexp" + "runtime" + "sort" + "strings" + + sk_exec "go.skia.org/infra/go/exec" + "go.skia.org/infra/go/skerr" + "go.skia.org/infra/go/util" + "go.skia.org/infra/task_driver/go/lib/bazel" + "go.skia.org/infra/task_driver/go/lib/os_steps" + "go.skia.org/infra/task_driver/go/td" +) + +// goldctlBazelLabelAllowList is the list of Bazel targets that are allowed to upload results to +// Gold via goldctl. This is to prevent polluting Gold with spurious digests, or digests with the +// wrong keys while we experiment with running GMs with Bazel. +// +// TODO(lovisolo): Delete once migration is complete. +var goldctlBazelLabelAllowList = map[string]bool{ + "//gm:hello_bazel_world_test": true, +} + +var ( + // Required properties for this task. + // + // We want the cache to be on a bigger disk than default. The root disk, where the home directory + // (and default Bazel cache) lives, is only 15 GB on our GCE VMs. + cachePath = flag.String("cache_path", "/mnt/pd0/bazel_cache", "The path where the Bazel cache should live. This should be able to hold tens of GB at least.") + cross = flag.String("cross", "", "An identifier specifying the target platform that Bazel should build for. If empty, Bazel builds for the host platform (the machine on which this executable is run).") + label = flag.String("test_label", "", "The label of the Bazel target to test.") + config = flag.String("test_config", "", "A custom configuration specified in //bazel/buildrc. This configuration potentially encapsulates many features and options.") + 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.") + + // goldctl data. + goldctlPath = flag.String("goldctl_path", "", "The path to the golctl binary on disk.") + gitCommit = flag.String("git_commit", "", "The git hash to which the data should be associated. This will be used when changelist_id and patchset_order are not set to report data to Gold that belongs on the primary branch.") + changelistID = flag.String("changelist_id", "", "Should be non-empty only when run on the CQ.") + patchsetOrderStr = flag.String("patchset_order", "", "Should be non-zero only when run on the CQ.") + tryjobID = flag.String("tryjob_id", "", "Should be non-zero only when run on the CQ.") + + // Optional flags. + local = flag.Bool("local", false, "True if running locally (as opposed to on the CI/CQ)") + output = flag.String("o", "", "If provided, dump a JSON blob of step data to the given file. Prints to stdout if '-' is given.") +) + +func main() { + // StartRun calls flag.Parse(). + ctx := td.StartRun(projectId, taskId, taskName, output, local) + defer td.EndRun(ctx) + + if *label == "" { + td.Fatal(ctx, fmt.Errorf("--test_label is required")) + } + + if *config == "" { + td.Fatal(ctx, fmt.Errorf("--test_config is required")) + } + + wd, err := os_steps.Abs(ctx, *workdir) + if err != nil { + td.Fatal(ctx, err) + } + + opts := bazel.BazelOptions{ + CachePath: *cachePath, + } + if err := bazel.EnsureBazelRCFile(ctx, opts); err != nil { + td.Fatal(ctx, err) + } + + if *cross != "" { + // See https://bazel.build/concepts/platforms-intro and https://bazel.build/docs/platforms when + // ready to support this. + td.Fatal(ctx, fmt.Errorf("cross compilation not yet supported")) + } + + if err := run(ctx, taskDriverArgs{ + checkoutDir: filepath.Join(wd, "skia"), + bazelLabel: *label, + bazelConfig: *config, + goldctlPath: filepath.Join(wd, *goldctlPath), + gitCommit: *gitCommit, + changelistID: *changelistID, + patchsetOrder: *patchsetOrderStr, + tryjobID: *tryjobID, + }); err != nil { + td.Fatal(ctx, err) + } +} + +// taskDriverArgs gathers the inputs to this task driver, and decouples the task driver's +// entry-point function from the command line flags, which facilitates writing unit tests. +type taskDriverArgs struct { + checkoutDir string + bazelLabel string + bazelConfig string + goldctlPath string + gitCommit string + changelistID string + patchsetOrder string // 1, 2, 3, etc. + tryjobID string + + // testOnlyAllowAnyBazelLabel should only be used from tests. If true, the + // goldctlBazelLabelAllowList will be ignored. + // + // TODO(lovisolo): Delete once migration is complete. + testOnlyAllowAnyBazelLabel bool +} + +// run is the entrypoint of this task driver. +func run(ctx context.Context, tdArgs taskDriverArgs) error { + outputsZipPath, err := validateLabelAndReturnOutputsZipPath(tdArgs.checkoutDir, tdArgs.bazelLabel) + if err != nil { + return skerr.Wrap(err) + } + + if err := bazelTest(ctx, tdArgs.checkoutDir, tdArgs.bazelLabel, tdArgs.bazelConfig); err != nil { + return skerr.Wrap(err) + } + + // TODO(lovisolo): Delete once migration is complete. + if !tdArgs.testOnlyAllowAnyBazelLabel { + if _, ok := goldctlBazelLabelAllowList[tdArgs.bazelLabel]; !ok { + return nil + } + } + + if err := maybeUploadToGold(ctx, tdArgs, outputsZipPath); err != nil { + return skerr.Wrap(err) + } + + return nil +} + +// validLabelRegexps represent valid, fully-qualified Bazel labels. +var validLabelRegexps = []*regexp.Regexp{ + regexp.MustCompile(`^//:[a-zA-Z0-9_-]+$`), // Matches "//:foo". + regexp.MustCompile(`^/(/[a-zA-Z0-9_-]+)+:[a-zA-Z0-9_-]+$`), // Matches "//foo:bar", "//foo/bar:baz", etc. +} + +// validateLabelAndReturnOutputsZipPath validates the given Bazel label and returns the path within +// the checkout directory where the ZIP archive with undeclared test outputs will be found, if +// applicable. +func validateLabelAndReturnOutputsZipPath(checkoutDir, label string) (string, error) { + valid := false + for _, re := range validLabelRegexps { + if re.MatchString(label) { + valid = true + break + } + } + if !valid { + return "", skerr.Fmt("invalid label: %q", label) + } + + return filepath.Join( + checkoutDir, + "bazel-testlogs", + strings.ReplaceAll(strings.TrimPrefix(label, "//"), ":", "/"), + "test.outputs", + "outputs.zip"), nil +} + +// bazelTest runs the test referenced by the given fully qualified Bazel label under the given +// config. +func bazelTest(ctx context.Context, checkoutDir, label, config string) error { + return td.Do(ctx, td.Props(fmt.Sprintf("Test %s with config %s", label, config)), func(ctx context.Context) error { + runCmd := &sk_exec.Command{ + Name: "bazelisk", + Args: []string{"test", + label, + "--config=" + config, // Should be defined in //bazel/buildrc. + "--test_output=errors", + "--jobs=100", + }, + InheritEnv: true, // Makes sure bazelisk is on PATH. + Dir: checkoutDir, + LogStdout: true, + LogStderr: true, + } + _, err := sk_exec.RunCommand(ctx, runCmd) + if err != nil { + return err + } + return nil + }) +} + +// maybeUploadToGold uploads any GM results to Gold via goldctl. +func maybeUploadToGold(ctx context.Context, tdArgs taskDriverArgs, outputsZipPath string) error { + // Were there any undeclared test outputs? + if _, err := os.Stat(outputsZipPath); err != nil { + if errors.Is(err, os.ErrNotExist) { + return td.Do(ctx, td.Props("Test did not produce an undeclared test outputs ZIP file; nothing to upload to Gold"), func(ctx context.Context) error { + return nil + }) + } else { + return skerr.Wrap(err) + } + } + + // Extract undeclared outputs ZIP archive. + outputsDir, err := extractOutputsZip(ctx, outputsZipPath) + if err != nil { + return skerr.Wrap(err) + } + defer util.RemoveAll(outputsDir) + + // Gather GM outputs. + gmOutputs, err := gatherGMOutputs(ctx, outputsDir) + if err != nil { + return skerr.Wrap(err) + } + if len(gmOutputs) == 0 { + return td.Do(ctx, td.Props("Undeclared test outputs ZIP file contains no GM outputs; nothing to upload to Gold"), func(ctx context.Context) error { + return nil + }) + } + + return td.Do(ctx, td.Props("Upload GM outputs to Gold"), func(ctx context.Context) error { + // Create working directory for goldctl. + goldctlWorkDir, err := os_steps.TempDir(ctx, "", "goldctl-workdir-*") + if err != nil { + return skerr.Wrap(err) + } + defer util.RemoveAll(goldctlWorkDir) + + // Authorize goldctl. + if err := goldctl(ctx, tdArgs.checkoutDir, tdArgs.goldctlPath, "auth", "--work-dir", goldctlWorkDir, "--luci"); err != nil { + return skerr.Wrap(err) + } + + // Prepare task-specific key:value pairs. + var taskSpecificKeyValuePairs []string + for k, v := range computeTaskSpecificGoldctlKeyValuePairs() { + taskSpecificKeyValuePairs = append(taskSpecificKeyValuePairs, k+":"+v) + } + sort.Strings(taskSpecificKeyValuePairs) // Sort for determinism. + + // Initialize goldctl. + args := []string{ + "imgtest", "init", + "--work-dir", goldctlWorkDir, + "--instance", "skia", + // If we use flag --instance alone, goldctl will incorrectly infer the Gold instance URL as + // https://skia-gold.skia.org. + "--url", "https://gold.skia.org", + // Similarly, unless we specify a GCE bucket explicitly, goldctl will incorrectly infer + // "skia-gold-skia" as the instance's bucket. + "--bucket", "skia-infra-gm", + "--git_hash", tdArgs.gitCommit, + } + if tdArgs.changelistID != "" && tdArgs.patchsetOrder != "" { + args = append(args, + "--crs", "gerrit", + "--cis", "buildbucket", + "--changelist", tdArgs.changelistID, + "--patchset", tdArgs.patchsetOrder, + "--jobid", tdArgs.tryjobID) + } + for _, kv := range taskSpecificKeyValuePairs { + args = append(args, "--key", kv) + } + if err := goldctl(ctx, tdArgs.checkoutDir, tdArgs.goldctlPath, args...); err != nil { + return skerr.Wrap(err) + } + + // Add PNGs. + for _, gmOutput := range gmOutputs { + args := []string{ + "imgtest", "add", + "--work-dir", goldctlWorkDir, + "--test-name", gmOutput.TestName, + "--png-file", gmOutput.PNGPath, + "--png-digest", gmOutput.MD5, + } + var testSpecificKeyValuePairs []string + for k, v := range gmOutput.Keys { + testSpecificKeyValuePairs = append(testSpecificKeyValuePairs, k+":"+v) + } + sort.Strings(testSpecificKeyValuePairs) // Sort for determinism. + for _, kv := range testSpecificKeyValuePairs { + // We assume that all keys are non-optional. That is, all keys are part of the trace. It is + // possible to add support for optional keys in the future, which can be specified via the + // --add-test-optional-key flag. + args = append(args, "--add-test-key", kv) + } + + if err := goldctl(ctx, tdArgs.checkoutDir, tdArgs.goldctlPath, args...); err != nil { + return skerr.Wrap(err) + } + } + + // Finalize and upload screenshots to Gold. + return goldctl(ctx, tdArgs.checkoutDir, tdArgs.goldctlPath, "imgtest", "finalize", "--work-dir", goldctlWorkDir) + }) +} + +// extractOutputsZip extracts the undeclared outputs ZIP archive into a temporary directory, and +// returns the path to said directory. +func extractOutputsZip(ctx context.Context, outputsZipPath string) (string, error) { + // Create extraction directory. + extractionDir, err := os.MkdirTemp("", "bazel-test-output-dir-*") + if err != nil { + return "", skerr.Wrap(err) + } + + // Extract ZIP archive. + if err := td.Do(ctx, td.Props(fmt.Sprintf("Extract undeclared outputs archive %s into %s", outputsZipPath, extractionDir)), func(ctx context.Context) error { + outputsZip, err := zip.OpenReader(outputsZipPath) + if err != nil { + return skerr.Wrap(err) + } + defer util.Close(outputsZip) + + for _, file := range outputsZip.File { + // Skip directories. We assume all output files are at the root directory of the archive. + if file.FileInfo().IsDir() { + if err := td.Do(ctx, td.Props(fmt.Sprintf("Ignoring directory: %s", file.Name)), func(ctx context.Context) error { return nil }); err != nil { + return skerr.Wrap(err) + } + continue + } + + // Ignore anything that is not a PNG or JSON file. + if !strings.HasSuffix(strings.ToLower(file.Name), ".png") && !strings.HasSuffix(strings.ToLower(file.Name), ".json") { + if err := td.Do(ctx, td.Props(fmt.Sprintf("Ignoring non-PNG / non-JSON file: %s", file.Name)), func(ctx context.Context) error { return nil }); err != nil { + return skerr.Wrap(err) + } + continue + } + + // Extract file. + if err := td.Do(ctx, td.Props(fmt.Sprintf("Extracting file: %s", file.Name)), func(ctx context.Context) error { + reader, err := file.Open() + if err != nil { + return skerr.Wrap(err) + } + defer util.Close(reader) + + buf := &bytes.Buffer{} + if _, err := io.Copy(buf, reader); err != nil { + return skerr.Wrap(err) + } + + return skerr.Wrap(os.WriteFile(filepath.Join(extractionDir, file.Name), buf.Bytes(), 0644)) + }); err != nil { + return skerr.Wrap(err) + } + } + + return nil + }); err != nil { + return "", skerr.Wrap(err) + } + + return extractionDir, nil +} + +// gmJSONOutput represents a JSON file produced by //gm/BazelGMRunner.cpp, plus bookkeeping +// information required by this task driver. +type gmJSONOutput struct { + MD5 string `json:"md5"` + Keys map[string]string `json:"keys"` + + TestName string `json:"-"` // Convenience alias, should be the same as the "name" key. + PNGPath string `json:"-"` +} + +// gatherGMOutputs inspects a directory with the contents of the undeclared test outputs ZIP +// archive and gathers any GM outputs found therein. +func gatherGMOutputs(ctx context.Context, outputsDir string) ([]gmJSONOutput, error) { + var outputs []gmJSONOutput + + if err := td.Do(ctx, td.Props("Gather JSON and PNG files produced by GMs"), func(ctx context.Context) error { + files, err := os.ReadDir(outputsDir) + if err != nil { + return skerr.Wrap(err) + } + + for _, file := range files { + if !strings.HasSuffix(file.Name(), ".json") { + continue + } + + jsonPath := file.Name() + pngPath := strings.TrimSuffix(jsonPath, ".json") + ".png" + testName := strings.TrimSuffix(jsonPath, ".json") + + // Skip JSON file if there is no associated PNG file. + if _, err := os.Stat(filepath.Join(outputsDir, pngPath)); err != nil { + if errors.Is(err, os.ErrNotExist) { + if err := td.Do(ctx, td.Props(fmt.Sprintf("Ignoring %q: file %q not found", jsonPath, pngPath)), func(ctx context.Context) error { + return nil + }); err != nil { + return skerr.Wrap(err) + } + continue + } else { + return skerr.Wrap(err) + } + } + + // Parse JSON file. Skip it if parsing fails (rather than failing the entire task in the off + // chance that the test has other kinds of undeclared outputs). + bytes, err := os.ReadFile(filepath.Join(outputsDir, jsonPath)) + if err != nil { + return skerr.Wrap(err) + } + output := gmJSONOutput{ + TestName: testName, + PNGPath: filepath.Join(outputsDir, pngPath), + } + if err := json.Unmarshal(bytes, &output); err != nil { + if err := td.Do(ctx, td.Props(fmt.Sprintf("Ignoring %q; JSON parsing error: %s", jsonPath, err)), func(ctx context.Context) error { + return nil + }); err != nil { + return skerr.Wrap(err) + } + continue + } + if output.MD5 == "" { + if err := td.Do(ctx, td.Props(fmt.Sprintf(`Ignoring %q: field "md5" not found`, jsonPath)), func(ctx context.Context) error { + return nil + }); err != nil { + return skerr.Wrap(err) + } + continue + } + + // Save GM output. + if err := td.Do(ctx, td.Props(fmt.Sprintf("Gather %q", pngPath)), func(ctx context.Context) error { + outputs = append(outputs, output) + return nil + }); err != nil { + return skerr.Wrap(err) + } + } + + return nil + }); err != nil { + return nil, skerr.Wrap(err) + } + + // Sort outputs for determinism. + sort.Slice(outputs, func(i, j int) bool { + return outputs[i].TestName < outputs[j].TestName + }) + + return outputs, nil +} + +// goldctl runs the goldctl command. +func goldctl(ctx context.Context, checkoutDir, goldctlPath string, args ...string) error { + cmd := &sk_exec.Command{ + Name: goldctlPath, + Args: args, + Dir: checkoutDir, + LogStdout: true, + LogStderr: true, + } + _, err := sk_exec.RunCommand(ctx, cmd) + return skerr.Wrap(err) +} + +// computeTaskSpecificGoldctlKeyValuePairs returns the set of task-specific key-value pairs. +func computeTaskSpecificGoldctlKeyValuePairs() map[string]string { + // The "os" key produced by DM can have values like these: + // + // - Android + // - ChromeOS + // - Debian10 + // - Mac10.15.7 + // - Mac11 + // - Ubuntu18 + // - Win10 + // - Win2019 + // - iOS + // + // TODO(lovisolo): Determine the "os" key in a fashion similar to DM. + if runtime.GOOS != "linux" { + panic("only linux is supported at this time") + } + os := "linux" + + // TODO(lovisolo): "arch" key ("arm", "arm64", "x86", "x86_64", etc.). + // TODO(lovisolo): "configuration" key ("Debug", "Release", "OptimizeForSize", etc.). + // TODO(lovisolo): "model" key ("MacBook10.1", "Pixel5", "iPadPro", "iPhone11", etc.). + + return map[string]string{ + "os": os, + } +} diff --git a/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm_test.go b/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm_test.go new file mode 100644 index 000000000000..231596158ec3 --- /dev/null +++ b/infra/bots/task_drivers/bazel_test_gm/bazel_test_gm_test.go @@ -0,0 +1,521 @@ +// Copyright 2023 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 ( + "archive/zip" + "bytes" + "context" + "fmt" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.skia.org/infra/go/exec" + "go.skia.org/infra/task_driver/go/td" + "os" + "path/filepath" + "regexp" + "sort" + "testing" +) + +func TestValidateLabelAndReturnOutputZipPath_ValidLabel_Success(t *testing.T) { + test := func(label, expected string) { + t.Run(label, func(t *testing.T) { + actual, err := validateLabelAndReturnOutputsZipPath("/path/to/skia", label) + require.NoError(t, err) + assert.Equal(t, expected, actual) + }) + } + + test("//:foo", "/path/to/skia/bazel-testlogs/foo/test.outputs/outputs.zip") + test("//foo:bar", "/path/to/skia/bazel-testlogs/foo/bar/test.outputs/outputs.zip") + test("//foo/bar:baz", "/path/to/skia/bazel-testlogs/foo/bar/baz/test.outputs/outputs.zip") + test("//foo/bar/baz:qux", "/path/to/skia/bazel-testlogs/foo/bar/baz/qux/test.outputs/outputs.zip") +} + +func TestValidateLabelAndReturnOutputZipPath_InvalidLabel_Error(t *testing.T) { + test := func(label string) { + t.Run(label, func(t *testing.T) { + _, err := validateLabelAndReturnOutputsZipPath("/path/to/skia", label) + require.Error(t, err) + assert.Contains(t, err.Error(), fmt.Sprintf("invalid label: %q", label)) + }) + } + + test("foo") + test("/foo") + test("//foo") + test(":foo") + test("/:foo") + + test("foo/bar") + test("foo:bar") + test("/foo/bar") + test("/foo:bar") + test(":foo/bar") + test(":foo:bar") + test("//foo/bar") + + test("foo/bar/baz") + test("foo/bar:baz") + test("foo:bar/baz") + test("foo:bar:baz") + test("/foo/bar/baz") + test("/foo/bar:baz") + test("/foo:bar/baz") + test("/foo:bar:baz") + test("//foo/bar/baz") + test("//foo:bar/baz") + test("//foo:bar:baz") +} + +func TestRun_NoOutputsZip_Success(t *testing.T) { + test := func(name string, tdArgs taskDriverArgs) { + t.Run(name, func(t *testing.T) { + commandCollector := exec.CommandCollector{} + res := td.RunTestSteps(t, false, func(ctx context.Context) error { + ctx = td.WithExecRunFn(ctx, commandCollector.Run) + + err := run(ctx, tdArgs) + + assert.NoError(t, err) + return err + }) + + require.Empty(t, res.Errors) + require.Empty(t, res.Exceptions) + assertStepNamesMatchStringsOrRegexps(t, res, + "Test //some/test:target with config linux_rbe", + "bazelisk test //some/test:target --config=linux_rbe --test_output=errors --jobs=100", + "Test did not produce an undeclared test outputs ZIP file; nothing to upload to Gold", + ) + + require.Len(t, commandCollector.Commands(), 1) + cmd := commandCollector.Commands()[0] + assert.Equal(t, "/path/to/skia", cmd.Dir) + assert.Equal(t, "bazelisk", cmd.Name) + assert.Equal(t, []string{ + "test", + "//some/test:target", + "--config=linux_rbe", + "--test_output=errors", + "--jobs=100", + }, cmd.Args) + }) + } + + test("post-submit task", taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: "/path/to/skia", + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + }) + + test("CL task", taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: "/path/to/skia", + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + + // These arguments are only used when there are images to upload, and are therefore + // ignored by the task driver under this test. + changelistID: "changelist-id", + patchsetOrder: "1", + tryjobID: "tryjob-id", + }) +} + +func TestRun_WithOutputsZip_NoValidImages_NoGoldctlInvocations(t *testing.T) { + test := func(name string, tdArgs taskDriverArgs) { + t.Run(name, func(t *testing.T) { + // Create fake archive with undeclared test outputs. + outputsZipPath := filepath.Join(tdArgs.checkoutDir, "bazel-testlogs", "some", "test", "target", "test.outputs", "outputs.zip") + require.NoError(t, os.MkdirAll(filepath.Dir(outputsZipPath), 0700)) + makeZip(t, outputsZipPath, map[string]string{ + // The contents of PNG files does not matter for this test. + "image-with-invalid-json-file.png": "fake PNG", + "image-with-invalid-json-file.json": `{ + "invalid JSON file": "This JSON file should be ignored" + }`, + "image-with-no-json-file.png": "fake PNG", + "json-file-with-no-image.json": `{ + "md5": "00000000000000000000000000000000", + "keys": { + "name": "no-image", + "source_type": "no-corpus" + } + }`, + "not-an-image-nor-json-file.txt": "I'm neither a PNG nor a JSON file.", + }) + + commandCollector := exec.CommandCollector{} + res := td.RunTestSteps(t, false, func(ctx context.Context) error { + ctx = td.WithExecRunFn(ctx, commandCollector.Run) + + err := run(ctx, tdArgs) + + assert.NoError(t, err) + return err + }) + + require.Empty(t, res.Errors) + require.Empty(t, res.Exceptions) + + assertStepNamesMatchStringsOrRegexps(t, res, + "Test //some/test:target with config linux_rbe", + "bazelisk test //some/test:target --config=linux_rbe --test_output=errors --jobs=100", + regexp.MustCompile("^Extract undeclared outputs archive .+/bazel-testlogs/some/test/target/test.outputs/outputs.zip into .+$"), + "Extracting file: image-with-invalid-json-file.json", + "Extracting file: image-with-invalid-json-file.png", + "Extracting file: image-with-no-json-file.png", + "Extracting file: json-file-with-no-image.json", + "Ignoring non-PNG / non-JSON file: not-an-image-nor-json-file.txt", + "Gather JSON and PNG files produced by GMs", + "Ignoring \"image-with-invalid-json-file.json\": field \"md5\" not found", + "Ignoring \"json-file-with-no-image.json\": file \"json-file-with-no-image.png\" not found", + "Undeclared test outputs ZIP file contains no GM outputs; nothing to upload to Gold", + ) + + require.Len(t, commandCollector.Commands(), 1) + + cmd := commandCollector.Commands()[0] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "bazelisk", cmd.Name) + assert.Equal(t, []string{ + "test", + "//some/test:target", + "--config=linux_rbe", + "--test_output=errors", + "--jobs=100", + }, cmd.Args) + }) + } + + checkoutDir := t.TempDir() + + test("post-submit task", taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: checkoutDir, + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + }) + + test("CL task", taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: checkoutDir, + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + + // These arguments are only used when there are images to upload, and are therefore + // ignored by the task driver under this test. + changelistID: "changelist-id", + patchsetOrder: "1", + tryjobID: "tryjob-id", + }) +} + +func TestRun_WithOutputsZip_ValidImages_ImagesUploadedToGold(t *testing.T) { + test := func(name string, tdArgs taskDriverArgs, goldctlImgtestInitStepName *regexp.Regexp, goldctlImgtestInitArgsStringsOrRegexps []interface{}) { + t.Run(name, func(t *testing.T) { + // Create fake archive with undeclared test outputs. + outputsZipPath := filepath.Join(tdArgs.checkoutDir, "bazel-testlogs", "some", "test", "target", "test.outputs", "outputs.zip") + require.NoError(t, os.MkdirAll(filepath.Dir(outputsZipPath), 0700)) + makeZip(t, outputsZipPath, map[string]string{ + // The contents of PNG files does not matter for this test. + "alfa.png": "fake PNG", + "alfa.json": `{ + "md5": "a01a01a01a01a01a01a01a01a01a01a0", + "keys": { + "build_system": "bazel", + "name": "alfa", + "source_type": "gm" + } + }`, + "beta.png": "fake PNG", + "beta.json": `{ + "md5": "b02b02b02b02b02b02b02b02b02b02b0", + "keys": { + "build_system": "bazel", + "name": "beta", + "source_type": "gm" + } + }`, + "image-with-invalid-json-file.png": "fake PNG", + "image-with-invalid-json-file.json": `{ + "invalid JSON file": "This JSON file should be ignored" + }`, + "image-with-no-json-file.png": "fake PNG", + "json-file-with-no-image.json": `{ + "md5": "00000000000000000000000000000000", + "keys": { + "name": "no-image", + "source_type": "no-corpus" + } + }`, + "not-an-image-nor-json-file.txt": "I'm neither a PNG nor a JSON file.", + }) + + commandCollector := exec.CommandCollector{} + res := td.RunTestSteps(t, false, func(ctx context.Context) error { + ctx = td.WithExecRunFn(ctx, commandCollector.Run) + + err := run(ctx, tdArgs) + + assert.NoError(t, err) + return err + }) + + require.Empty(t, res.Errors) + require.Empty(t, res.Exceptions) + + assertStepNamesMatchStringsOrRegexps(t, res, + "Test //some/test:target with config linux_rbe", + "bazelisk test //some/test:target --config=linux_rbe --test_output=errors --jobs=100", + regexp.MustCompile("^Extract undeclared outputs archive .+/bazel-testlogs/some/test/target/test.outputs/outputs.zip into .+$"), + "Extracting file: alfa.json", + "Extracting file: alfa.png", + "Extracting file: beta.json", + "Extracting file: beta.png", + "Extracting file: image-with-invalid-json-file.json", + "Extracting file: image-with-invalid-json-file.png", + "Extracting file: image-with-no-json-file.png", + "Extracting file: json-file-with-no-image.json", + "Ignoring non-PNG / non-JSON file: not-an-image-nor-json-file.txt", + "Gather JSON and PNG files produced by GMs", + "Gather \"alfa.png\"", + "Gather \"beta.png\"", + "Ignoring \"image-with-invalid-json-file.json\": field \"md5\" not found", + "Ignoring \"json-file-with-no-image.json\": file \"json-file-with-no-image.png\" not found", + "Upload GM outputs to Gold", + "Creating TempDir", + regexp.MustCompile("^/path/to/goldctl auth --work-dir [a-zA-Z0-9-/]+ --luci$"), + goldctlImgtestInitStepName, + regexp.MustCompile("^/path/to/goldctl imgtest add --work-dir [a-zA-Z0-9-/]+ --test-name alfa --png-file [a-zA-Z0-9-/]+/alfa.png --png-digest a01a01a01a01a01a01a01a01a01a01a0 --add-test-key build_system:bazel --add-test-key name:alfa --add-test-key source_type:gm$"), + regexp.MustCompile("^/path/to/goldctl imgtest add --work-dir [a-zA-Z0-9-/]+ --test-name beta --png-file [a-zA-Z0-9-/]+/beta.png --png-digest b02b02b02b02b02b02b02b02b02b02b0 --add-test-key build_system:bazel --add-test-key name:beta --add-test-key source_type:gm$"), + regexp.MustCompile("^/path/to/goldctl imgtest finalize --work-dir [a-zA-Z0-9-/]+$"), + ) + + require.Len(t, commandCollector.Commands(), 6) + + cmd := commandCollector.Commands()[0] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "bazelisk", cmd.Name) + assert.Equal(t, []string{ + "test", + "//some/test:target", + "--config=linux_rbe", + "--test_output=errors", + "--jobs=100", + }, cmd.Args) + + cmd = commandCollector.Commands()[1] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "/path/to/goldctl", cmd.Name) + assertSliceMatchesStringsOrRegexps(t, cmd.Args, + "auth", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + "--luci", + ) + + cmd = commandCollector.Commands()[2] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "/path/to/goldctl", cmd.Name) + assertSliceMatchesStringsOrRegexps(t, cmd.Args, goldctlImgtestInitArgsStringsOrRegexps...) + + cmd = commandCollector.Commands()[3] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "/path/to/goldctl", cmd.Name) + assertSliceMatchesStringsOrRegexps(t, cmd.Args, + "imgtest", + "add", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + "--test-name", + "alfa", + "--png-file", + regexp.MustCompile("[a-zA-Z0-9-/]+/alfa.png"), + "--png-digest", + "a01a01a01a01a01a01a01a01a01a01a0", + "--add-test-key", + "build_system:bazel", + "--add-test-key", + "name:alfa", + "--add-test-key", + "source_type:gm", + ) + + cmd = commandCollector.Commands()[4] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "/path/to/goldctl", cmd.Name) + assertSliceMatchesStringsOrRegexps(t, cmd.Args, + "imgtest", + "add", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + "--test-name", + "beta", + "--png-file", + regexp.MustCompile("^[a-zA-Z0-9-/]+/beta.png$"), + "--png-digest", + "b02b02b02b02b02b02b02b02b02b02b0", + "--add-test-key", + "build_system:bazel", + "--add-test-key", + "name:beta", + "--add-test-key", + "source_type:gm", + ) + + cmd = commandCollector.Commands()[5] + assert.Equal(t, tdArgs.checkoutDir, cmd.Dir) + assert.Equal(t, "/path/to/goldctl", cmd.Name) + assertSliceMatchesStringsOrRegexps(t, cmd.Args, + "imgtest", + "finalize", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + ) + }) + } + + checkoutDir := t.TempDir() + + test( + "post-submit task", + taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: checkoutDir, + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + }, + regexp.MustCompile("^/path/to/goldctl imgtest init --work-dir [a-zA-Z0-9-/]+ --instance skia --url https://gold.skia.org --bucket skia-infra-gm --git_hash ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99 --key os:linux$"), + []interface{}{ + "imgtest", + "init", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + "--instance", + "skia", + "--url", + "https://gold.skia.org", + "--bucket", + "skia-infra-gm", + "--git_hash", + "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + "--key", + "os:linux", + }, + ) + + test( + "CL task", + taskDriverArgs{ + testOnlyAllowAnyBazelLabel: true, + checkoutDir: checkoutDir, + bazelLabel: "//some/test:target", + bazelConfig: "linux_rbe", + goldctlPath: "/path/to/goldctl", + gitCommit: "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + changelistID: "changelist-id", + patchsetOrder: "1", + tryjobID: "tryjob-id", + }, + regexp.MustCompile("^/path/to/goldctl imgtest init --work-dir [a-zA-Z0-9-/]+ --instance skia --url https://gold.skia.org --bucket skia-infra-gm --git_hash ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99 --crs gerrit --cis buildbucket --changelist changelist-id --patchset 1 --jobid tryjob-id --key os:linux$"), + []interface{}{ + "imgtest", + "init", + "--work-dir", + regexp.MustCompile("^[a-zA-Z0-9-/]+$"), + "--instance", + "skia", + "--url", + "https://gold.skia.org", + "--bucket", + "skia-infra-gm", + "--git_hash", + "ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99", + "--crs", + "gerrit", + "--cis", + "buildbucket", + "--changelist", + "changelist-id", + "--patchset", + "1", + "--jobid", + "tryjob-id", + "--key", + "os:linux", + }, + ) +} + +// assertStepNamesMatchStringsOrRegexps flattens the names of the steps in the given report, then +// asserts that they match the given strings or regular expressions. +func assertStepNamesMatchStringsOrRegexps(t *testing.T, report *td.StepReport, expectedStringsOrRegexps ...interface{}) { + var actualStepNames []string + report.Recurse(func(sr *td.StepReport) bool { + if sr == report { + // The root step created by td.RunTestSteps() is always "fake-test-task". We can omit it. + return true + } + actualStepNames = append(actualStepNames, sr.Name) + return true + }) + + assertSliceMatchesStringsOrRegexps(t, actualStepNames, expectedStringsOrRegexps...) +} + +// assertSliceMatchesRegexps asserts that the elements in the given slice match the given strings +// or regular expressions. +func assertSliceMatchesStringsOrRegexps(t *testing.T, actual []string, expectedStringsOrRegexps ...interface{}) { + require.Len(t, actual, len(expectedStringsOrRegexps), "actual slice: %#v", actual) + for i, expected := range expectedStringsOrRegexps { + switch stringOrRegexp := expected.(type) { + case string: + assert.Equal(t, stringOrRegexp, actual[i], "offending item index: %d", i) + case *regexp.Regexp: + assert.Regexp(t, stringOrRegexp, actual[i], "offending item index: %d", i) + default: + assert.Fail(t, "expected item is neither a string nor a regular expression", "expected item index: %d", i) + } + } +} + +// makeZip creates a ZIP archive with the given contents, represented as a map from file paths to +// file contents. +func makeZip(t *testing.T, zipPath string, contents map[string]string) { + buf := &bytes.Buffer{} + zipWriter := zip.NewWriter(buf) + + // Sort files before adding them to the archive for determinism. + var sortedFiles []string + for file := range contents { + sortedFiles = append(sortedFiles, file) + } + sort.Strings(sortedFiles) + + for _, file := range sortedFiles { + fileWriter, err := zipWriter.Create(file) + require.NoError(t, err) + _, err = fileWriter.Write([]byte(contents[file])) + require.NoError(t, err) + } + + require.NoError(t, zipWriter.Close()) + require.NoError(t, os.WriteFile(zipPath, buf.Bytes(), 0644)) +} diff --git a/infra/bots/task_drivers/codesize/BUILD.bazel b/infra/bots/task_drivers/codesize/BUILD.bazel index e9d0f2b803aa..21b9a685bcda 100644 --- a/infra/bots/task_drivers/codesize/BUILD.bazel +++ b/infra/bots/task_drivers/codesize/BUILD.bazel @@ -39,17 +39,23 @@ go_binary( go_test( name = "codesize_test", srcs = ["codesize_test.go"], + data = select({ + "@platforms//os:linux": ["@git_linux_amd64//:all_files"], + "//conditions:default": [], # Prevent errors on platforms without this CIPD package. + }), embed = [":codesize_lib"], deps = [ "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//mock", "@com_github_stretchr_testify//require", + "@org_skia_go_infra//bazel/go/bazel", "@org_skia_go_infra//go/exec", "@org_skia_go_infra//go/gcs", "@org_skia_go_infra//go/gcs/test_gcsclient", "@org_skia_go_infra//go/gerrit", "@org_skia_go_infra//go/gerrit/testutils", "@org_skia_go_infra//go/git", + "@org_skia_go_infra//go/git/git_common", "@org_skia_go_infra//go/git/testutils", "@org_skia_go_infra//go/gitiles", "@org_skia_go_infra//go/gitiles/testutils", diff --git a/infra/bots/task_drivers/codesize/codesize_test.go b/infra/bots/task_drivers/codesize/codesize_test.go index af40e04a9aff..228ca063a1d2 100644 --- a/infra/bots/task_drivers/codesize/codesize_test.go +++ b/infra/bots/task_drivers/codesize/codesize_test.go @@ -6,15 +6,16 @@ package main import ( "context" - "io/ioutil" "os" "path/filepath" + "runtime" "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "go.skia.org/infra/bazel/go/bazel" "go.skia.org/infra/go/exec" "go.skia.org/infra/go/gcs" @@ -22,6 +23,7 @@ import ( "go.skia.org/infra/go/gerrit" gerrit_testutils "go.skia.org/infra/go/gerrit/testutils" "go.skia.org/infra/go/git" + "go.skia.org/infra/go/git/git_common" git_testutils "go.skia.org/infra/go/git/testutils" "go.skia.org/infra/go/gitiles" gitiles_testutils "go.skia.org/infra/go/gitiles/testutils" @@ -335,6 +337,11 @@ func TestRunSteps_Tryjob_Success(t *testing.T) { res := td.RunTestSteps(t, false, func(ctx context.Context) error { ctx = now.TimeTravelingContext(fakeNow).WithContext(ctx) ctx = td.WithExecRunFn(ctx, commandCollector.Run) + // Be in a temporary directory + require.NoError(t, os.Chdir(t.TempDir())) + // Create a file to simulate the result of copying and stripping the binary + createTestFile(t, filepath.Join("build", "dm_stripped"), "This has 17 bytes") + createTestFile(t, filepath.Join("build_nopatch", "dm_stripped"), "This has 23 bytes total") err := runSteps(ctx, args) assert.NoError(t, err) @@ -402,20 +409,21 @@ func setupMockGit(t *testing.T, repoState types.RepoState) (*gerrit_testutils.Mo commitTimestamp := time.Date(2022, time.January, 30, 23, 59, 0, 0, time.UTC) // Seed a fake Git repository. - gitBuilder := git_testutils.GitInit(t, context.Background()) + ctx := context.Background() + if bazel.InBazelTest() && runtime.GOOS == "linux" { + ctx = git_common.WithGitFinder(context.Background(), func() (string, error) { + return filepath.Join(bazel.RunfilesDir(), "external", "git_linux_amd64", "bin", "git"), nil + }) + } + gitBuilder := git_testutils.GitInit(t, ctx) t.Cleanup(func() { gitBuilder.Cleanup() }) - gitBuilder.Add(context.Background(), "README.md", "I'm a fake repository.") - repoState.Revision = gitBuilder.CommitMsgAt(context.Background(), "Fake commit subject", commitTimestamp) + gitBuilder.Add(ctx, "README.md", "I'm a fake repository.") + repoState.Revision = gitBuilder.CommitMsgAt(ctx, "Fake commit subject", commitTimestamp) // Mock a Gerrit client. - tmp, err := ioutil.TempDir("", "") - require.NoError(t, err) - t.Cleanup(func() { - testutils.RemoveAll(t, tmp) - }) - mockGerrit := gerrit_testutils.NewGerrit(t, tmp) + mockGerrit := gerrit_testutils.NewGerrit(t) mockGerrit.MockGetIssueProperties(&gerrit.ChangeInfo{ Issue: 12345, Owner: &gerrit.Person{ @@ -447,7 +455,7 @@ func setupMockGit(t *testing.T, repoState types.RepoState) (*gerrit_testutils.Mo // Mock a Gitiles client. urlMock := mockhttpclient.NewURLMock() mockRepo := gitiles_testutils.NewMockRepo(t, gitBuilder.RepoUrl(), git.GitDir(gitBuilder.Dir()), urlMock) - mockRepo.MockGetCommit(context.Background(), repoState.Revision) + mockRepo.MockGetCommit(ctx, repoState.Revision) mockGitiles := gitiles.NewRepo(gitBuilder.RepoUrl(), urlMock.Client()) return mockGerrit, mockGitiles, repoState } diff --git a/infra/bots/task_drivers/cpu_tests/cpu_tests.go b/infra/bots/task_drivers/cpu_tests/cpu_tests.go index 06bd6545077c..550234cfcf41 100644 --- a/infra/bots/task_drivers/cpu_tests/cpu_tests.go +++ b/infra/bots/task_drivers/cpu_tests/cpu_tests.go @@ -79,15 +79,16 @@ func main() { // config and any additional args to the build command. Instead of calling Bazel directly, we use // Bazelisk to make sure we use the right version of Bazel, as defined in the .bazelversion file // at the Skia root. -func bazelTest(ctx context.Context, checkoutDir, label, config string, args ...string) error { - step := fmt.Sprintf("Test %s with config %s and %d extra flags", label, config, len(args)) +func bazelTest(ctx context.Context, checkoutDir, label, config string, extraArgs ...string) error { + step := fmt.Sprintf("Test %s with config %s and %d extra flags", label, config, len(extraArgs)) return td.Do(ctx, td.Props(step), func(ctx context.Context) error { runCmd := &sk_exec.Command{ Name: "bazelisk", - Args: append([]string{"test", + Args: append([]string{ + "test", label, "--config=" + config, // Should be defined in //bazel/buildrc - }, args...), + }, extraArgs...), InheritEnv: true, // Makes sure bazelisk is on PATH Dir: checkoutDir, LogStdout: true, diff --git a/infra/bots/task_drivers/perf_puppeteer_canvas/perf_puppeteer_canvas_test.go b/infra/bots/task_drivers/perf_puppeteer_canvas/perf_puppeteer_canvas_test.go index f4f709eca375..ca02672be787 100644 --- a/infra/bots/task_drivers/perf_puppeteer_canvas/perf_puppeteer_canvas_test.go +++ b/infra/bots/task_drivers/perf_puppeteer_canvas/perf_puppeteer_canvas_test.go @@ -75,7 +75,7 @@ func TestBenchCanvas_CPUHasNoUseGPUFlag(t *testing.T) { "--canvaskit_wasm", "/fake/path/to/canvaskit/canvaskit.wasm", "--assets", "canvas_perf_assets", "--output", "/fake/path/to/perf-puppeteer/out/perf.json", - "--timeout", "240", + "--timeout=300", }, cmd.Args) return nil }) @@ -111,7 +111,7 @@ func TestBenchCanvas_GPUHasFlag(t *testing.T) { "--canvaskit_wasm", "/fake/path/to/canvaskit/canvaskit.wasm", "--assets", "canvas_perf_assets", "--output", "/fake/path/to/perf-puppeteer/out/perf.json", - "--timeout", "240", + "--timeout=300", "--use_gpu"}, cmd.Args) return nil }) diff --git a/infra/bots/task_drivers/perf_puppeteer_skottie_frames/perf_puppeteer_skottie_frames_test.go b/infra/bots/task_drivers/perf_puppeteer_skottie_frames/perf_puppeteer_skottie_frames_test.go index d73515f2d52f..9dfd8d7165b6 100644 --- a/infra/bots/task_drivers/perf_puppeteer_skottie_frames/perf_puppeteer_skottie_frames_test.go +++ b/infra/bots/task_drivers/perf_puppeteer_skottie_frames/perf_puppeteer_skottie_frames_test.go @@ -81,7 +81,8 @@ func TestBenchSkottieFrames_CPUHasNoUseGPUFlag(t *testing.T) { "--canvaskit_wasm", "/fake/path/to/canvaskit/canvaskit.wasm", "--input_lottie", filepath.Join(lotties, "animation_1", "data.json"), "--assets", filepath.Join(lotties, "animation_1", "images"), - "--output", "/fake/path/to/perf-puppeteer/out/animation_1.json"}, cmd.Args) + "--output", "/fake/path/to/perf-puppeteer/out/animation_1.json", + "--timeout=90"}, cmd.Args) return nil }) require.Empty(t, res.Errors) diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json index 695737fc37d7..b7c68d3ba673 100755 --- a/infra/bots/tasks.json +++ b/infra/bots/tasks.json @@ -80,6 +80,11 @@ "BazelTest-canvaskit_gold-modules_canvaskit_js_tests-ck_full_webgl2_release_chrome-linux_x64" ] }, + "BazelTest-cpu_tests-all_go_tests-linux_rbe-linux_x64": { + "tasks": [ + "BazelTest-cpu_tests-all_go_tests-linux_rbe-linux_x64" + ] + }, "BazelTest-cpu_tests-tests-cpu_only_debug_rbe-linux_x64": { "tasks": [ "BazelTest-cpu_tests-tests-cpu_only_debug_rbe-linux_x64" @@ -90,6 +95,16 @@ "BazelTest-cpu_tests-tests-cpu_only_release_rbe-linux_x64" ] }, + "BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64": { + "tasks": [ + "BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64" + ] + }, + "BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64": { + "tasks": [ + "BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64" + ] + }, "BazelTest-precompiled-android_codec_test-pixel_5-linux_arm64": { "tasks": [ "BazelTest-precompiled-android_codec_test-pixel_5-linux_arm64" @@ -290,9 +305,9 @@ "Build-Debian10-Clang-x86_64-Debug-Chromebook_GLES" ] }, - "Build-Debian10-Clang-x86_64-Debug-Dawn": { + "Build-Debian10-Clang-x86_64-Debug-Fontations": { "tasks": [ - "Build-Debian10-Clang-x86_64-Debug-Dawn" + "Build-Debian10-Clang-x86_64-Debug-Fontations" ] }, "Build-Debian10-Clang-x86_64-Debug-Graphite_Dawn": { @@ -805,6 +820,11 @@ "Build-Mac-Clang-x86_64-Debug-ASAN_Metal" ] }, + "Build-Mac-Clang-x86_64-Debug-Fontations": { + "tasks": [ + "Build-Mac-Clang-x86_64-Debug-Fontations" + ] + }, "Build-Mac-Clang-x86_64-Debug-Graphite_Dawn": { "tasks": [ "Build-Mac-Clang-x86_64-Debug-Graphite_Dawn" @@ -940,11 +960,6 @@ "Build-Win-Clang-x86_64-Debug-DWriteCore" ] }, - "Build-Win-Clang-x86_64-Debug-Dawn": { - "tasks": [ - "Build-Win-Clang-x86_64-Debug-Dawn" - ] - }, "Build-Win-Clang-x86_64-Debug-Direct3D": { "tasks": [ "Build-Win-Clang-x86_64-Debug-Direct3D" @@ -980,11 +995,6 @@ "Build-Win-Clang-x86_64-Release-ANGLE" ] }, - "Build-Win-Clang-x86_64-Release-Dawn": { - "tasks": [ - "Build-Win-Clang-x86_64-Release-Dawn" - ] - }, "Build-Win-Clang-x86_64-Release-Direct3D": { "tasks": [ "Build-Win-Clang-x86_64-Release-Direct3D" @@ -2393,6 +2403,11 @@ "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN" ] }, + "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations": { + "tasks": [ + "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations" + ] + }, "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts": { "tasks": [ "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts" @@ -2888,6 +2903,11 @@ "Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal" ] }, + "Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations": { + "tasks": [ + "Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations" + ] + }, "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All": { "tasks": [ "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All" @@ -2988,11 +3008,6 @@ "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan" ] }, - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": { - "tasks": [ - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn" - ] - }, "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan": { "tasks": [ "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan" @@ -3101,11 +3116,6 @@ "Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs" ] }, - "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": { - "tasks": [ - "Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn" - ] - }, "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess": { "tasks": [ "Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess" @@ -4274,6 +4284,43 @@ "max_attempts": 1, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, + "BazelTest-cpu_tests-all_go_tests-linux_rbe-linux_x64": { + "casSpec": "bazel", + "cipd_packages": [ + { + "name": "skia/bots/bazelisk_linux_amd64", + "path": "bazelisk_linux_amd64", + "version": "version:0" + } + ], + "command": [ + "./cpu_tests", + "--project_id=skia-swarming-bots", + "--task_id=<(TASK_ID)", + "--task_name=BazelTest-cpu_tests-all_go_tests-linux_rbe-linux_x64", + "--workdir=.", + "--test_label=//:all_go_tests", + "--test_config=linux_rbe" + ], + "dependencies": [ + "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64" + ], + "dimensions": [ + "cpu:x86-64-Haswell_GCE", + "gpu:none", + "machine_type:n1-standard-16", + "os:Debian-10.3", + "pool:Skia" + ], + "env_prefixes": { + "PATH": [ + "bazelisk_linux_amd64" + ] + }, + "idempotent": true, + "max_attempts": 1, + "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" + }, "BazelTest-cpu_tests-tests-cpu_only_debug_rbe-linux_x64": { "casSpec": "bazel", "cipd_packages": [ @@ -4348,6 +4395,100 @@ "max_attempts": 1, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, + "BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64": { + "casSpec": "bazel", + "cipd_packages": [ + { + "name": "skia/bots/bazelisk_linux_amd64", + "path": "bazelisk_linux_amd64", + "version": "version:0" + }, + { + "name": "skia/tools/goldctl/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:9f6c2de25cce548433f4d0301bbde675a65a2f95" + } + ], + "command": [ + "./bazel_test_gm", + "--project_id=skia-swarming-bots", + "--task_id=<(TASK_ID)", + "--task_name=BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64", + "--workdir=.", + "--test_label=//gm:cpu_gm_tests", + "--test_config=cpu_only_debug_rbe", + "--goldctl_path=./cipd_bin_packages/goldctl", + "--git_commit=<(REVISION)", + "--changelist_id=<(ISSUE)", + "--patchset_order=<(PATCHSET)", + "--tryjob_id=<(BUILDBUCKET_BUILD_ID)" + ], + "dependencies": [ + "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64" + ], + "dimensions": [ + "cpu:x86-64-Haswell_GCE", + "gpu:none", + "machine_type:n1-standard-16", + "os:Debian-10.3", + "pool:Skia" + ], + "env_prefixes": { + "PATH": [ + "bazelisk_linux_amd64" + ] + }, + "idempotent": true, + "max_attempts": 1, + "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" + }, + "BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64": { + "casSpec": "bazel", + "cipd_packages": [ + { + "name": "skia/bots/bazelisk_linux_amd64", + "path": "bazelisk_linux_amd64", + "version": "version:0" + }, + { + "name": "skia/tools/goldctl/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:9f6c2de25cce548433f4d0301bbde675a65a2f95" + } + ], + "command": [ + "./bazel_test_gm", + "--project_id=skia-swarming-bots", + "--task_id=<(TASK_ID)", + "--task_name=BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64", + "--workdir=.", + "--test_label=//gm:hello_bazel_world_test", + "--test_config=linux_rbe", + "--goldctl_path=./cipd_bin_packages/goldctl", + "--git_commit=<(REVISION)", + "--changelist_id=<(ISSUE)", + "--patchset_order=<(PATCHSET)", + "--tryjob_id=<(BUILDBUCKET_BUILD_ID)" + ], + "dependencies": [ + "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64" + ], + "dimensions": [ + "cpu:x86-64-Haswell_GCE", + "gpu:none", + "machine_type:n1-standard-16", + "os:Debian-10.3", + "pool:Skia" + ], + "env_prefixes": { + "PATH": [ + "bazelisk_linux_amd64" + ] + }, + "idempotent": true, + "max_attempts": 1, + "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" + }, "BazelTest-precompiled-android_codec_test-pixel_5-linux_arm64": { "casSpec": "bazel", "command": [ @@ -7925,7 +8066,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Debian10-Clang-x86_64-Debug-Dawn": { + "Build-Debian10-Clang-x86_64-Debug-Fontations": { "caches": [ { "name": "ccache", @@ -7942,9 +8083,13 @@ { "name": "vpython", "path": "cache/vpython" + }, + { + "name": "work", + "path": "cache/work" } ], - "casSpec": "compile", + "casSpec": "run-recipe", "cipd_packages": [ { "name": "infra/3pp/tools/cpython3/linux-amd64", @@ -7986,6 +8131,11 @@ "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, + { + "name": "skia/bots/bazelisk_linux_amd64", + "path": "bazelisk_linux_amd64", + "version": "version:0" + }, { "name": "skia/bots/ccache_linux", "path": "ccache_linux", @@ -8002,8 +8152,8 @@ "-u", "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", - "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Debian10-Clang-x86_64-Debug-Dawn\",\"swarm_out_dir\":\"build\"}", + "sync_and_compile", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Build-Debian10-Clang-x86_64-Debug-Fontations\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"build\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -8025,7 +8175,8 @@ "cipd_bin_packages/cpython3", "cipd_bin_packages/cpython3/bin", "cipd_bin_packages", - "cipd_bin_packages/bin" + "cipd_bin_packages/bin", + "bazelisk_linux_amd64" ], "VPYTHON_DEFAULT_SPEC": [ "skia/.vpython" @@ -8038,9 +8189,8 @@ "extra_tags": { "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" }, - "idempotent": true, "io_timeout_ns": 3600000000000, - "max_attempts": 2, + "max_attempts": 1, "outputs": [ "build" ], @@ -18560,6 +18710,139 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, + "Build-Mac-Clang-x86_64-Debug-Fontations": { + "caches": [ + { + "name": "ccache", + "path": "cache/ccache" + }, + { + "name": "git", + "path": "cache/git" + }, + { + "name": "git_cache", + "path": "cache/git_cache" + }, + { + "name": "vpython", + "path": "cache/vpython" + }, + { + "name": "work", + "path": "cache/work" + }, + { + "name": "xcode", + "path": "cache/Xcode.app" + } + ], + "casSpec": "run-recipe", + "cipd_packages": [ + { + "name": "infra/3pp/tools/cpython3/mac-amd64", + "path": "cipd_bin_packages/cpython3", + "version": "version:2@3.8.10.chromium.19" + }, + { + "name": "infra/3pp/tools/git/mac-amd64", + "path": "cipd_bin_packages", + "version": "version:2@2.38.1.chromium.9" + }, + { + "name": "infra/tools/git/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci-auth/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/git-credential-luci/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/kitchen/${platform}", + "path": ".", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython-native/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/mac_toolchain/${platform}", + "path": "mac_toolchain", + "version": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + }, + { + "name": "skia/bots/bazelisk_mac_amd64", + "path": "bazelisk_mac_amd64", + "version": "version:0" + }, + { + "name": "skia/bots/ccache_mac", + "path": "ccache_mac", + "version": "version:1" + } + ], + "command": [ + "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", + "-u", + "skia/infra/bots/run_recipe.py", + "${ISOLATED_OUTDIR}", + "sync_and_compile", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Build-Mac-Clang-x86_64-Debug-Fontations\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"build\",\"task_id\":\"<(TASK_ID)\"}", + "skia" + ], + "dependencies": [ + "Housekeeper-PerCommit-BundleRecipes" + ], + "dimensions": [ + "cores:12", + "cpu:x86-64", + "os:Mac-10.15.7", + "pool:Skia" + ], + "environment": { + "RECIPES_USE_PY3": "true", + "VPYTHON_LOG_TRACE": "1" + }, + "env_prefixes": { + "PATH": [ + "cipd_bin_packages/cpython3", + "cipd_bin_packages/cpython3/bin", + "cipd_bin_packages", + "cipd_bin_packages/bin", + "bazelisk_mac_amd64" + ], + "VPYTHON_DEFAULT_SPEC": [ + "skia/.vpython" + ], + "VPYTHON_VIRTUALENV_ROOT": [ + "cache/vpython" + ] + }, + "execution_timeout_ns": 3600000000000, + "extra_tags": { + "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" + }, + "io_timeout_ns": 3600000000000, + "max_attempts": 1, + "outputs": [ + "build" + ], + "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" + }, "Build-Mac-Clang-x86_64-Debug-Graphite_Dawn": { "caches": [ { @@ -20668,187 +20951,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Debug\",\"swarm_out_dir\":\"build\"}", - "skia" - ], - "dependencies": [ - "Housekeeper-PerCommit-BundleRecipes", - "Housekeeper-PerCommit-IsolateWinToolchain" - ], - "dimensions": [ - "cpu:x86-64-Haswell_GCE", - "gpu:none", - "machine_type:n1-highcpu-64", - "os:Windows-Server-17763", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 3600000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "idempotent": true, - "io_timeout_ns": 3600000000000, - "max_attempts": 2, - "outputs": [ - "build" - ], - "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" - }, - "Build-Win-Clang-x86-Debug-Exceptions": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "compile", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/windows-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/clang_win", - "path": "clang_win", - "version": "version:17" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "skia/infra/bots/run_recipe.py", - "${ISOLATED_OUTDIR}", - "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Debug-Exceptions\",\"swarm_out_dir\":\"build\"}", - "skia" - ], - "dependencies": [ - "Housekeeper-PerCommit-BundleRecipes", - "Housekeeper-PerCommit-IsolateWinToolchain" - ], - "dimensions": [ - "cpu:x86-64-Haswell_GCE", - "gpu:none", - "machine_type:n1-highcpu-64", - "os:Windows-Server-17763", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 3600000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "idempotent": true, - "io_timeout_ns": 3600000000000, - "max_attempts": 2, - "outputs": [ - "build" - ], - "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" - }, - "Build-Win-Clang-x86-Release": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "compile", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/windows-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/clang_win", - "path": "clang_win", - "version": "version:17" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "skia/infra/bots/run_recipe.py", - "${ISOLATED_OUTDIR}", - "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Release\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Debug\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -20892,7 +20995,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug": { + "Build-Win-Clang-x86-Debug-Exceptions": { "caches": [ { "name": "vpython", @@ -20938,7 +21041,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Debug-Exceptions\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -20982,7 +21085,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-ANGLE": { + "Build-Win-Clang-x86-Release": { "caches": [ { "name": "vpython", @@ -21028,7 +21131,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-ANGLE\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86-Release\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21072,7 +21175,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-ASAN": { + "Build-Win-Clang-x86_64-Debug": { "caches": [ { "name": "vpython", @@ -21118,7 +21221,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-ASAN\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21162,7 +21265,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-DWriteCore": { + "Build-Win-Clang-x86_64-Debug-ANGLE": { "caches": [ { "name": "vpython", @@ -21200,11 +21303,6 @@ "name": "skia/bots/clang_win", "path": "clang_win", "version": "version:17" - }, - { - "name": "skia/bots/dwritecore", - "path": "dwritecore", - "version": "version:1" } ], "command": [ @@ -21213,7 +21311,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-DWriteCore\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-ANGLE\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21257,16 +21355,8 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Dawn": { + "Build-Win-Clang-x86_64-Debug-ASAN": { "caches": [ - { - "name": "git", - "path": "cache/git" - }, - { - "name": "git_cache", - "path": "cache/git_cache" - }, { "name": "vpython", "path": "cache/vpython" @@ -21279,26 +21369,11 @@ "path": "cipd_bin_packages/cpython3", "version": "version:2@3.8.10.chromium.19" }, - { - "name": "infra/3pp/tools/git/windows-amd64", - "path": "cipd_bin_packages", - "version": "version:2@2.38.1.chromium.9" - }, - { - "name": "infra/tools/git/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, - { - "name": "infra/tools/luci/git-credential-luci/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", @@ -21326,7 +21401,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Dawn\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-ASAN\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21370,7 +21445,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Direct3D": { + "Build-Win-Clang-x86_64-Debug-DWriteCore": { "caches": [ { "name": "vpython", @@ -21408,6 +21483,11 @@ "name": "skia/bots/clang_win", "path": "clang_win", "version": "version:17" + }, + { + "name": "skia/bots/dwritecore", + "path": "dwritecore", + "version": "version:3" } ], "command": [ @@ -21416,7 +21496,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Direct3D\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-DWriteCore\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21460,16 +21540,8 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Graphite_Dawn": { + "Build-Win-Clang-x86_64-Debug-Direct3D": { "caches": [ - { - "name": "git", - "path": "cache/git" - }, - { - "name": "git_cache", - "path": "cache/git_cache" - }, { "name": "vpython", "path": "cache/vpython" @@ -21482,26 +21554,11 @@ "path": "cipd_bin_packages/cpython3", "version": "version:2@3.8.10.chromium.19" }, - { - "name": "infra/3pp/tools/git/windows-amd64", - "path": "cipd_bin_packages", - "version": "version:2@2.38.1.chromium.9" - }, - { - "name": "infra/tools/git/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, - { - "name": "infra/tools/luci/git-credential-luci/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", @@ -21529,7 +21586,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Graphite_Dawn\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Direct3D\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21573,8 +21630,16 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Graphite_Vulkan": { + "Build-Win-Clang-x86_64-Debug-Graphite_Dawn": { "caches": [ + { + "name": "git", + "path": "cache/git" + }, + { + "name": "git_cache", + "path": "cache/git_cache" + }, { "name": "vpython", "path": "cache/vpython" @@ -21587,11 +21652,26 @@ "path": "cipd_bin_packages/cpython3", "version": "version:2@3.8.10.chromium.19" }, + { + "name": "infra/3pp/tools/git/windows-amd64", + "path": "cipd_bin_packages", + "version": "version:2@2.38.1.chromium.9" + }, + { + "name": "infra/tools/git/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, + { + "name": "infra/tools/luci/git-credential-luci/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", @@ -21619,7 +21699,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Graphite_Vulkan\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Graphite_Dawn\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21663,7 +21743,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Vulkan": { + "Build-Win-Clang-x86_64-Debug-Graphite_Vulkan": { "caches": [ { "name": "vpython", @@ -21709,7 +21789,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Vulkan\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Graphite_Vulkan\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21753,7 +21833,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Debug-Wuffs": { + "Build-Win-Clang-x86_64-Debug-Vulkan": { "caches": [ { "name": "vpython", @@ -21799,7 +21879,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Wuffs\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Vulkan\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21843,7 +21923,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Release": { + "Build-Win-Clang-x86_64-Debug-Wuffs": { "caches": [ { "name": "vpython", @@ -21889,7 +21969,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Release\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Debug-Wuffs\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -21933,7 +22013,7 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Release-ANGLE": { + "Build-Win-Clang-x86_64-Release": { "caches": [ { "name": "vpython", @@ -21979,7 +22059,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Release-ANGLE\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Release\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -22023,16 +22103,8 @@ ], "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" }, - "Build-Win-Clang-x86_64-Release-Dawn": { + "Build-Win-Clang-x86_64-Release-ANGLE": { "caches": [ - { - "name": "git", - "path": "cache/git" - }, - { - "name": "git_cache", - "path": "cache/git_cache" - }, { "name": "vpython", "path": "cache/vpython" @@ -22045,26 +22117,11 @@ "path": "cipd_bin_packages/cpython3", "version": "version:2@3.8.10.chromium.19" }, - { - "name": "infra/3pp/tools/git/windows-amd64", - "path": "cipd_bin_packages", - "version": "version:2@2.38.1.chromium.9" - }, - { - "name": "infra/tools/git/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, - { - "name": "infra/tools/luci/git-credential-luci/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", @@ -22092,7 +22149,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "compile", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Release-Dawn\",\"swarm_out_dir\":\"build\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildername\":\"Build-Win-Clang-x86_64-Release-ANGLE\",\"swarm_out_dir\":\"build\"}", "skia" ], "dependencies": [ @@ -27469,7 +27526,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -27646,7 +27703,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"glesdmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG77\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS20\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"glesdmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG77\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS20\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -27902,7 +27959,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG77\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS20\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG77\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS20\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28158,7 +28215,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT880\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS7_G930FD\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT880\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS7_G930FD\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28244,7 +28301,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT880\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS7_G930FD\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT880\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS7_G930FD\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28330,7 +28387,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG72\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS9\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG72\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"GalaxyS9\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28416,7 +28473,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG72\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS9\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-GalaxyS9-GPU-MaliG72-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG72\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"GalaxyS9\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28507,7 +28564,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-JioNext-CPU-SnapdragonQM215-arm-Release-All-Android\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SnapdragonQM215\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\",\"textTraces\":\"true\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-JioNext-CPU-SnapdragonQM215-arm-Release-All-Android\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SnapdragonQM215\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\",\"textTraces\":\"true\"}", "skia" ], "dependencies": [ @@ -28593,7 +28650,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28679,7 +28736,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG76\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"P30\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG76\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"P30\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28765,7 +28822,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG76\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"P30\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG76\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"P30\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28851,7 +28908,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -28937,7 +28994,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29023,7 +29080,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29109,7 +29166,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29195,7 +29252,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text$\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text$\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29281,7 +29338,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text$\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^path_text$\\\",\\\"~^path_text_clipped_uncached$\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29372,7 +29429,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-CPU-Snapdragon855-arm64-Release-All-Android_Wuffs\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Snapdragon855\\\",\\\"extra_config\\\",\\\"Android_Wuffs\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\",\"textTraces\":\"true\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-CPU-Snapdragon855-arm64-Release-All-Android_Wuffs\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Snapdragon855\\\",\\\"extra_config\\\",\\\"Android_Wuffs\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\",\"textTraces\":\"true\"}", "skia" ], "dependencies": [ @@ -29458,7 +29515,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29544,7 +29601,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29630,7 +29687,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -29886,7 +29943,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30142,7 +30199,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30228,7 +30285,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30314,7 +30371,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel6-GPU-MaliG78-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG78\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel6\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel6-GPU-MaliG78-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG78\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel6\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30400,7 +30457,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel7-GPU-MaliG710-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG710\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel7\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Pixel7-GPU-MaliG710-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliG710\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel7\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30486,7 +30543,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Wembley-GPU-PowerVRGE8320-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^create_backend_texture\\\",\\\"~^draw_coverage\\\",\\\"~^compositing_images\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android-Clang-Wembley-GPU-PowerVRGE8320-arm-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"glesmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~^create_backend_texture\\\",\\\"~^draw_coverage\\\",\\\"~^compositing_images\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30572,7 +30629,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"glesfakev2\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30658,7 +30715,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30744,7 +30801,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Kevin-GPU-MaliT860-arm-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT860\\\",\\\"model\\\",\\\"Kevin\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Kevin-GPU-MaliT860-arm-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"MaliT860\\\",\\\"model\\\",\\\"Kevin\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30830,7 +30887,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -30916,7 +30973,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31002,7 +31059,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Spin514-GPU-RadeonVega3-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega3\\\",\\\"model\\\",\\\"Spin514\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-ChromeOS-Clang-Spin514-GPU-RadeonVega3-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega3\\\",\\\"model\\\",\\\"Spin514\\\",\\\"os\\\",\\\"ChromeOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31108,7 +31165,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31220,7 +31277,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-ASAN_Vulkan\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~desk_carsvg.skp_1\\\",\\\"~desk_googlehome.skp\\\",\\\"~desk_tiger8svg.skp_1\\\",\\\"~desk_wowwiki.skp\\\",\\\"~desk_ynevsvg.skp_1.1\\\",\\\"~desk_nostroke_tiger8svg.skp\\\",\\\"~keymobi_booking_com.skp_1\\\",\\\"~keymobi_cnn_article.skp_1\\\",\\\"~keymobi_forecast_io.skp_1\\\",\\\"~keymobi_sfgate.skp_1\\\",\\\"~keymobi_techcrunch_com.skp_1.1\\\",\\\"~keymobi_techcrunch.skp_1.1\\\",\\\"~svgparse_Seal_of_California.svg_1.1\\\",\\\"~svgparse_NewYork-StateSeal.svg_1.1\\\",\\\"~svgparse_Vermont_state_seal.svg_1\\\",\\\"~tabl_gamedeksiam.skp_1.1\\\",\\\"~tabl_pravda.skp_1\\\",\\\"~top25desk_ebay_com.skp_1.1\\\",\\\"~top25desk_ebay.skp_1.1\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-ASAN_Vulkan\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~desk_carsvg.skp_1\\\",\\\"~desk_googlehome.skp\\\",\\\"~desk_tiger8svg.skp_1\\\",\\\"~desk_wowwiki.skp\\\",\\\"~desk_ynevsvg.skp_1.1\\\",\\\"~desk_nostroke_tiger8svg.skp\\\",\\\"~keymobi_booking_com.skp_1\\\",\\\"~keymobi_cnn_article.skp_1\\\",\\\"~keymobi_forecast_io.skp_1\\\",\\\"~keymobi_sfgate.skp_1\\\",\\\"~keymobi_techcrunch_com.skp_1.1\\\",\\\"~keymobi_techcrunch.skp_1.1\\\",\\\"~svgparse_Seal_of_California.svg_1.1\\\",\\\"~svgparse_NewYork-StateSeal.svg_1.1\\\",\\\"~svgparse_Vermont_state_seal.svg_1\\\",\\\"~tabl_gamedeksiam.skp_1.1\\\",\\\"~tabl_pravda.skp_1\\\",\\\"~top25desk_ebay_com.skp_1.1\\\",\\\"~top25desk_ebay.skp_1.1\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31434,7 +31491,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~desk_carsvg.skp_1\\\",\\\"~desk_googlehome.skp\\\",\\\"~desk_tiger8svg.skp_1\\\",\\\"~desk_wowwiki.skp\\\",\\\"~desk_ynevsvg.skp_1.1\\\",\\\"~desk_nostroke_tiger8svg.skp\\\",\\\"~keymobi_booking_com.skp_1\\\",\\\"~keymobi_cnn_article.skp_1\\\",\\\"~keymobi_forecast_io.skp_1\\\",\\\"~keymobi_sfgate.skp_1\\\",\\\"~keymobi_techcrunch_com.skp_1.1\\\",\\\"~keymobi_techcrunch.skp_1.1\\\",\\\"~svgparse_Seal_of_California.svg_1.1\\\",\\\"~svgparse_NewYork-StateSeal.svg_1.1\\\",\\\"~svgparse_Vermont_state_seal.svg_1\\\",\\\"~tabl_gamedeksiam.skp_1.1\\\",\\\"~tabl_pravda.skp_1\\\",\\\"~top25desk_ebay_com.skp_1.1\\\",\\\"~top25desk_ebay.skp_1.1\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--match\\\",\\\"~desk_carsvg.skp_1\\\",\\\"~desk_googlehome.skp\\\",\\\"~desk_tiger8svg.skp_1\\\",\\\"~desk_wowwiki.skp\\\",\\\"~desk_ynevsvg.skp_1.1\\\",\\\"~desk_nostroke_tiger8svg.skp\\\",\\\"~keymobi_booking_com.skp_1\\\",\\\"~keymobi_cnn_article.skp_1\\\",\\\"~keymobi_forecast_io.skp_1\\\",\\\"~keymobi_sfgate.skp_1\\\",\\\"~keymobi_techcrunch_com.skp_1.1\\\",\\\"~keymobi_techcrunch.skp_1.1\\\",\\\"~svgparse_Seal_of_California.svg_1.1\\\",\\\"~svgparse_NewYork-StateSeal.svg_1.1\\\",\\\"~svgparse_Vermont_state_seal.svg_1\\\",\\\"~tabl_gamedeksiam.skp_1.1\\\",\\\"~tabl_pravda.skp_1\\\",\\\"~top25desk_ebay_com.skp_1.1\\\",\\\"~top25desk_ebay.skp_1.1\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31536,7 +31593,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31638,7 +31695,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31735,7 +31792,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31743,7 +31800,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-avx2", + "cpu:x86-64-i5-1135G7", "os:Debian-11.5", "pool:Skia" ], @@ -31832,7 +31889,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All-BonusConfigs\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"f16\\\",\\\"srgb-rgba\\\",\\\"srgb-f16\\\",\\\"narrow-rgba\\\",\\\"narrow-f16\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All-BonusConfigs\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"f16\\\",\\\"srgb-rgba\\\",\\\"srgb-f16\\\",\\\"narrow-rgba\\\",\\\"narrow-f16\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31840,7 +31897,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-avx2", + "cpu:x86-64-i5-1135G7", "os:Debian-11.5", "pool:Skia" ], @@ -31929,7 +31986,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All-ColorSpaces\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"ColorSpaces\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-CPU-AVX2-x86_64-Release-All-ColorSpaces\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"ColorSpaces\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -31937,7 +31994,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-avx2", + "cpu:x86-64-i5-1135G7", "os:Debian-11.5", "pool:Skia" ], @@ -32031,7 +32088,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--verbose\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32138,7 +32195,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32235,7 +32292,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-CPU-AVX2-x86_64-OptimizeForSize-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-CPU-AVX2-x86_64-OptimizeForSize-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32536,7 +32593,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32735,7 +32792,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32837,7 +32894,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-ASAN\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-ASAN\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -32939,7 +32996,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33353,7 +33410,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33450,7 +33507,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33547,7 +33604,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33644,7 +33701,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33742,7 +33799,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33839,7 +33896,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -33936,7 +33993,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Graphite_Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Graphite_Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34033,7 +34090,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34130,7 +34187,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34319,7 +34376,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34600,7 +34657,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"glreducedshaders\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"glreducedshaders\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34697,7 +34754,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DMSAAStats\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--sourceType\\\",\\\"skp\\\",\\\"--clip\\\",\\\"0,0,1600,16384\\\",\\\"--GPUbenchTileW\\\",\\\"1600\\\",\\\"--GPUbenchTileH\\\",\\\"512\\\",\\\"--samples\\\",\\\"1\\\",\\\"--loops\\\",\\\"1\\\",\\\"--config\\\",\\\"gldmsaa\\\",\\\"--dmsaaStatsDump\\\",\\\"--match\\\",\\\"~svg\\\",\\\"~chalkboard\\\",\\\"~motionmark\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DMSAAStats\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DMSAAStats\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--sourceType\\\",\\\"skp\\\",\\\"--clip\\\",\\\"0,0,1600,16384\\\",\\\"--GPUbenchTileW\\\",\\\"1600\\\",\\\"--GPUbenchTileH\\\",\\\"512\\\",\\\"--samples\\\",\\\"1\\\",\\\"--loops\\\",\\\"1\\\",\\\"--config\\\",\\\"gldmsaa\\\",\\\"--dmsaaStatsDump\\\",\\\"--match\\\",\\\"~svg\\\",\\\"~chalkboard\\\",\\\"~motionmark\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DMSAAStats\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34799,7 +34856,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\",\"do_upload\":\"false\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--loops\\\",\\\"1\\\",\\\"--samples\\\",\\\"1\\\",\\\"--keepAlive\\\",\\\"true\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -34902,7 +34959,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -35634,7 +35691,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -35731,7 +35788,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -35920,7 +35977,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36109,7 +36166,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36206,7 +36263,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"angle_gl_es2\\\",\\\"angle_gl_es3\\\",\\\"angle_gl_es2_msaa8\\\",\\\"angle_gl_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"angle_gl_es2\\\",\\\"angle_gl_es3\\\",\\\"angle_gl_es2_msaa8\\\",\\\"angle_gl_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36395,7 +36452,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~desk_carsvg.skp\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~desk_carsvg.skp\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36768,7 +36825,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36865,7 +36922,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -36962,7 +37019,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37059,7 +37116,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37156,7 +37213,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37253,7 +37310,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37350,7 +37407,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37447,7 +37504,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37544,7 +37601,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37641,7 +37698,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37738,7 +37795,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37746,7 +37803,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -37835,7 +37892,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -37843,7 +37900,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -37932,7 +37989,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38029,7 +38086,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38126,7 +38183,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38223,7 +38280,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38320,7 +38377,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38417,7 +38474,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~compositing_images\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~compositing_images\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38514,7 +38571,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38611,7 +38668,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38708,7 +38765,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38805,7 +38862,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38813,7 +38870,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -38902,7 +38959,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa8\\\",\\\"angle_d3d11_es3_msaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -38910,7 +38967,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -38999,7 +39056,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39007,7 +39064,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -39096,7 +39153,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"srgb-gl\\\",\\\"narrow-gl\\\",\\\"glmsaa8\\\",\\\"gldmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39193,7 +39250,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~desk_carsvg.skp\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa8\\\",\\\"vkdmsaa\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~desk_carsvg.skp\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39290,7 +39347,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Win2019\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Release-All\",\"do_upload\":\"true\",\"images\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"nonrendering\\\",\\\"--internalSamples\\\",\\\"8\\\",\\\"--match\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Win2019\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39378,7 +39435,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39468,7 +39525,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39558,7 +39615,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39648,7 +39705,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone7-GPU-PowerVRGT7600-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39738,7 +39795,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone8-GPU-AppleA11-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone8-GPU-AppleA11-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39828,7 +39885,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone8-GPU-AppleA11-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Clang-iPhone8-GPU-AppleA11-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -39918,7 +39975,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"srgb-gles\\\",\\\"narrow-gles\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -40008,7 +40065,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "perf", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--scales\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"mtlreducedshaders\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Perf-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All-Metal\",\"do_upload\":\"true\",\"nanobench_flags\":\"[\\\"nanobench\\\",\\\"--pre_log\\\",\\\"--gpuStatsDump\\\",\\\"true\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"mtlreducedshaders\\\",\\\"--internalSamples\\\",\\\"4\\\",\\\"--match\\\",\\\"~blurroundrect\\\",\\\"~patch_grid\\\",\\\"~desk_carsvg\\\",\\\"~keymobi\\\",\\\"~path_hairline\\\",\\\"~GLInstancedArraysBench\\\",\\\"~compositing_images_tile_size\\\",\\\"~inc0.gif\\\",\\\"~inc1.gif\\\",\\\"~incInterlaced.gif\\\",\\\"~inc0.jpg\\\",\\\"~incGray.jpg\\\",\\\"~inc0.wbmp\\\",\\\"~inc1.wbmp\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"~inc0.ico\\\",\\\"~inc1.ico\\\",\\\"~inc0.png\\\",\\\"~inc1.png\\\",\\\"~inc2.png\\\",\\\"~inc12.png\\\",\\\"~inc13.png\\\",\\\"~inc14.png\\\",\\\"~inc0.webp\\\",\\\"~inc1.webp\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\"]\",\"nanobench_properties\":\"{\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\"}\",\"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)\",\"svgs\":\"true\",\"swarm_out_dir\":\"perf\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -40098,7 +40155,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-AndroidOne-GPU-Mali400MP2-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bigblurs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dropshadowimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"filterfastbounds\\\",\\\"gles\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersclipped\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersscaled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageresizetiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"matrixconvolution\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strokedlines\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersbase\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLUnaryPositiveNegative_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"BlendRequiringDstReadWithLargeCoordinates\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCross\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixSwizzleStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~WritePixels\\\",\\\"~PremulAlphaRoundTrip_Gpu\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"~MorphologyFilterRadiusWithMirrorCTM_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-AndroidOne-GPU-Mali400MP2-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-AndroidOne-GPU-Mali400MP2-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bigblurs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dropshadowimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"filterfastbounds\\\",\\\"gles\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersclipped\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersscaled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageresizetiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"matrixconvolution\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strokedlines\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersbase\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLUnaryPositiveNegative_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"BlendRequiringDstReadWithLargeCoordinates\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCross\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixSwizzleStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~WritePixels\\\",\\\"~PremulAlphaRoundTrip_Gpu\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"~MorphologyFilterRadiusWithMirrorCTM_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-AndroidOne-GPU-Mali400MP2-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": [ @@ -40191,7 +40248,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-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bigblurs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dropshadowimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"filterfastbounds\\\",\\\"gles\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersclipped\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersscaled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageresizetiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"matrixconvolution\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strokedlines\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersbase\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLUnaryPositiveNegative_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"BlendRequiringDstReadWithLargeCoordinates\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCross\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixSwizzleStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~WritePixels\\\",\\\"~PremulAlphaRoundTrip_Gpu\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"~MorphologyFilterRadiusWithMirrorCTM_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-AndroidOne-GPU-Mali400MP2-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-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Mali400MP2\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"AndroidOne\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bigblurs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dropshadowimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"filterfastbounds\\\",\\\"gles\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersclipped\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersscaled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageresizetiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"matrixconvolution\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"strokedlines\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurtiled\\\",\\\"glesmsaa4\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefiltersbase\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLUnaryPositiveNegative_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"BlendRequiringDstReadWithLargeCoordinates\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCross\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixSwizzleStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~WritePixels\\\",\\\"~PremulAlphaRoundTrip_Gpu\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"~MorphologyFilterRadiusWithMirrorCTM_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-AndroidOne-GPU-Mali400MP2-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": [ @@ -41493,7 +41550,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-JioNext-GPU-Adreno308-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno308\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-platform\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_GPU\\\",\\\"--noRAW_threading\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-JioNext-GPU-Adreno308-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-JioNext-GPU-Adreno308-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno308\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-platform\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_Ganesh\\\",\\\"--noRAW_threading\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-JioNext-GPU-Adreno308-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": [ @@ -41586,7 +41643,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-JioNext-GPU-Adreno308-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno308\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-platform\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_GPU\\\",\\\"--noRAW_threading\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-JioNext-GPU-Adreno308-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-JioNext-GPU-Adreno308-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno308\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"JioNext\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-platform\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrices\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixNoOpFolding_Ganesh\\\",\\\"--noRAW_threading\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-JioNext-GPU-Adreno308-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": [ @@ -41679,7 +41736,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\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchCaseFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFract_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLModifiedStructParametersCannotBeInlined_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\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitch_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchCaseFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFract_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLModifiedStructParametersCannotBeInlined_Ganesh\\\",\\\"--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": [ @@ -41772,7 +41829,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\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchCaseFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFract_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLModifiedStructParametersCannotBeInlined_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\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitch_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchCaseFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFract_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLModifiedStructParametersCannotBeInlined_Ganesh\\\",\\\"--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": [ @@ -42423,7 +42480,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-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"glestestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-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-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"glestestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-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": [ @@ -42516,7 +42573,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-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android_Vulkan\\\",\\\"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-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android_Vulkan\\\",\\\"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": [ @@ -42609,7 +42666,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-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"glestestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-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-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"glestestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"DSLFPTest_SwitchStatement\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixToVectorCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructsInFunctions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-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": [ @@ -42702,7 +42759,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-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno540\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel2XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -42795,7 +42852,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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-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": [ @@ -42888,7 +42945,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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL1_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_DDL1_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"DDL\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL1_Vulkan\\\",\\\"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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL1_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_DDL1_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"DDL\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL1_Vulkan\\\",\\\"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": [ @@ -42981,7 +43038,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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL3_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_DDL3_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"DDL\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures_nmof\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures_npot\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL3_Vulkan\\\",\\\"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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL3_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_DDL3_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"DDL\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures_nmof\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures_npot\\\",\\\"vkddl\\\",\\\"gm\\\",\\\"_\\\",\\\"compressed_textures\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_DDL3_Vulkan\\\",\\\"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": [ @@ -43074,7 +43131,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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan\\\",\\\"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-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan\\\",\\\"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": [ @@ -43167,7 +43224,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-Pixel3-GPU-Adreno630-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-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-Pixel3-GPU-Adreno630-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-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": [ @@ -43260,7 +43317,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-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno630\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLEmptyBlocksES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -43353,7 +43410,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-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-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-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-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": [ @@ -43446,7 +43503,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-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan\\\",\\\"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-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan\\\",\\\"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": [ @@ -43539,7 +43596,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-Pixel3a-GPU-Adreno615-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-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-Pixel3a-GPU-Adreno615-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-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": [ @@ -43632,7 +43689,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-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno615\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel3a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -43725,7 +43782,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-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_API30\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_API30\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_API30\\\",\\\"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-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_API30\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_API30\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_API30\\\",\\\"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": [ @@ -43818,7 +43875,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-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\\\",\\\"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-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\\\",\\\"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": [ @@ -43911,7 +43968,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-Pixel4-GPU-Adreno640-arm64-Release-All-Android_API30\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_API30\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_API30\\\",\\\"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-Pixel4-GPU-Adreno640-arm64-Release-All-Android_API30\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_API30\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_API30\\\",\\\"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": [ @@ -44004,7 +44061,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-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4-GPU-Adreno640-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -44097,7 +44154,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-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-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-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-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": [ @@ -44190,7 +44247,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-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\\\",\\\"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-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Debug-All-Android_Vulkan\\\",\\\"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": [ @@ -44283,7 +44340,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-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-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-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-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": [ @@ -44376,7 +44433,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-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno640\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel4XL\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVoidInSequenceExpressions_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -44551,7 +44608,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-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_HWASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"extra_config\\\",\\\"Android_HWASAN\\\",\\\"model\\\",\\\"Pixel4a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRasterPipeline_stack_rewind\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_HWASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android-Clang-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_HWASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"extra_config\\\",\\\"Android_HWASAN\\\",\\\"model\\\",\\\"Pixel4a\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRasterPipeline_stack_rewind\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_HWASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -44643,7 +44700,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-Pixel5-GPU-Adreno620-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-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-Pixel5-GPU-Adreno620-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-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": [ @@ -44736,7 +44793,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-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-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-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-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": [ @@ -44829,7 +44886,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-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\\\",\\\"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-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -45573,7 +45630,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-Wembley-GPU-PowerVRGE8320-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinct_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"--match\\\",\\\"~Programs\\\",\\\"~ProcessorCloneTest\\\",\\\"~ProcessorOptimizationValidationTest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Wembley-GPU-PowerVRGE8320-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-Wembley-GPU-PowerVRGE8320-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinct_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"--match\\\",\\\"~Programs\\\",\\\"~ProcessorCloneTest\\\",\\\"~ProcessorOptimizationValidationTest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Wembley-GPU-PowerVRGE8320-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": [ @@ -45666,7 +45723,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-Wembley-GPU-PowerVRGE8320-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinct_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"--match\\\",\\\"~Programs\\\",\\\"~ProcessorCloneTest\\\",\\\"~ProcessorOptimizationValidationTest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Wembley-GPU-PowerVRGE8320-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-Wembley-GPU-PowerVRGE8320-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGE8320\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Wembley\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinct_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"--match\\\",\\\"~Programs\\\",\\\"~ProcessorCloneTest\\\",\\\"~ProcessorOptimizationValidationTest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Wembley-GPU-PowerVRGE8320-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": [ @@ -45759,7 +45816,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-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-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-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": [ @@ -45852,7 +45909,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android_FrameworkWorkarounds\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_FrameworkWorkarounds\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android_FrameworkWorkarounds\\\",\\\"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-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android_FrameworkWorkarounds\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_FrameworkWorkarounds\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Debug-All-Android_FrameworkWorkarounds\\\",\\\"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": [ @@ -45945,7 +46002,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-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-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-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": [ @@ -46038,7 +46095,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\\\",\\\"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-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno620\\\",\\\"extra_config\\\",\\\"Android_Vulkan\\\",\\\"model\\\",\\\"Pixel5\\\",\\\"os\\\",\\\"Android12\\\",\\\"style\\\",\\\"default\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_Renderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_BottomLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels_NonRenderable_TopLeft\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLInoutParameters_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParams_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsDoubleSwizzle_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsNoInline_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsFunctionCallInArgument\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~WritePixelsMSAA_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android12-Clang-Pixel5-GPU-Adreno620-arm64-Release-All-Android_Vulkan\\\",\\\"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": [ @@ -46317,7 +46374,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-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-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-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": [ @@ -46410,7 +46467,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-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-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelUHDGraphics605\\\",\\\"model\\\",\\\"Sparky360\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Sparky360-GPU-IntelUHDGraphics605-x86_64-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": [ @@ -46503,7 +46560,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestMockContext\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuRenderingContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuAllContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TextBlobCache\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"OverdrawSurface_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ReplaceSurfaceBackendTexture\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceAttachStencil_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfacePartialDraw_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceWrappedWithRelease_Gpu\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-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-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestMockContext\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuRenderingContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuAllContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TextBlobCache\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"OverdrawSurface_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ReplaceSurfaceBackendTexture\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceAttachStencil_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfacePartialDraw_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceWrappedWithRelease_Gpu\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-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": [ @@ -46596,7 +46653,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestMockContext\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuRenderingContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuAllContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TextBlobCache\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"OverdrawSurface_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ReplaceSurfaceBackendTexture\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceAttachStencil_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfacePartialDraw_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceWrappedWithRelease_Gpu\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-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-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Adreno618\\\",\\\"model\\\",\\\"Spin513\\\",\\\"os\\\",\\\"ChromeOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"--src\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestMockContext\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuRenderingContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TestGpuAllContexts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TextBlobCache\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"OverdrawSurface_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ReplaceSurfaceBackendTexture\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceAttachStencil_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfacePartialDraw_Gpu\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SurfaceWrappedWithRelease_Gpu\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLArrayCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLArrayComparison_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLCommaSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicClampFloat_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicIsInf_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-ChromeOS-Clang-Spin513-GPU-Adreno618-arm-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": [ @@ -47282,9 +47339,114 @@ "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, { - "name": "skia/bots/gsutil", - "path": "gsutil", - "version": "version:0" + "name": "skia/bots/gsutil", + "path": "gsutil", + "version": "version:0" + }, + { + "name": "skia/bots/skimage", + "path": "skimage", + "version": "version:47" + }, + { + "name": "skia/bots/skp", + "path": "skp", + "version": "version:438" + }, + { + "name": "skia/bots/svg", + "path": "svg", + "version": "version:14" + } + ], + "command": [ + "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", + "-u", + "skia/infra/bots/run_recipe.py", + "${ISOLATED_OUTDIR}", + "test", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"r8\\\",\\\"565\\\",\\\"pic-8888\\\",\\\"serialize-8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"r8\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"r8\\\",\\\"colorImage\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_batch_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"c_gms\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype_xfermodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_0.75_0\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_1_-0.25\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_match\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_iter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemasksubset\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_domain\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefilterstransformed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapfilters\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapshaders\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"convex_poly_clip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"extractalpha\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_checkerboard_32_32_g8\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_image_mandrill_64\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadows\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"simpleaaclip_aaclip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"composeshader_bitmap\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes_npot\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfaMac\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"parsedpaths\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadow_utils\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"graphitestart\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_images\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"all_bitmap_configs\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"makecolorspace\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"readpixels\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_rect_to_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_alpha_only\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"compositor_quads_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_qtr\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_effect_image\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ctmpatheffect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image_out_of_gamut\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"analytic_antialias_convex\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs\\\",\\\"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": [ + "Build-Debian10-Clang-x86_64-Debug", + "Housekeeper-PerCommit-BundleRecipes" + ], + "dimensions": [ + "cpu:x86-64-Haswell_GCE", + "machine_type:n1-standard-16", + "os:Debian-10.3", + "pool:Skia" + ], + "environment": { + "RECIPES_USE_PY3": "true", + "VPYTHON_LOG_TRACE": "1" + }, + "env_prefixes": { + "PATH": [ + "gsutil/gsutil", + "cipd_bin_packages/cpython3", + "cipd_bin_packages/cpython3/bin", + "cipd_bin_packages", + "cipd_bin_packages/bin" + ], + "VPYTHON_DEFAULT_SPEC": [ + "skia/.vpython" + ], + "VPYTHON_VIRTUALENV_ROOT": [ + "cache/vpython" + ] + }, + "execution_timeout_ns": 14400000000000, + "expiration_ns": 72000000000000, + "extra_tags": { + "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" + }, + "io_timeout_ns": 14400000000000, + "max_attempts": 2, + "outputs": [ + "test" + ], + "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" + }, + "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN": { + "caches": [ + { + "name": "vpython", + "path": "cache/vpython" + } + ], + "casSpec": "test", + "cipd_packages": [ + { + "name": "infra/3pp/tools/cpython3/linux-amd64", + "path": "cipd_bin_packages/cpython3", + "version": "version:2@3.8.10.chromium.19" + }, + { + "name": "infra/tools/luci-auth/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/kitchen/${platform}", + "path": ".", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython-native/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "skia/bots/clang_linux", + "path": "clang_linux", + "version": "version:30" }, { "name": "skia/bots/skimage", @@ -47308,11 +47470,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"r8\\\",\\\"565\\\",\\\"pic-8888\\\",\\\"serialize-8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"r8\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"r8\\\",\\\"colorImage\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_batch_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"c_gms\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype_xfermodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_0.75_0\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_1_-0.25\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_match\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_iter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemasksubset\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_domain\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefilterstransformed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapfilters\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapshaders\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"convex_poly_clip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"extractalpha\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_checkerboard_32_32_g8\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_image_mandrill_64\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadows\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"simpleaaclip_aaclip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"composeshader_bitmap\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes_npot\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfaMac\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"parsedpaths\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadow_utils\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"graphitestart\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_images\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"all_bitmap_configs\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"makecolorspace\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"readpixels\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_rect_to_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_alpha_only\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"compositor_quads_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_qtr\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_effect_image\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ctmpatheffect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image_out_of_gamut\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"analytic_antialias_convex\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs\\\",\\\"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-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs_ASAN\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"r8\\\",\\\"565\\\",\\\"pic-8888\\\",\\\"serialize-8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"r8\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"r8\\\",\\\"colorImage\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_batch_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"c_gms\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype_xfermodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_0.75_0\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_1_-0.25\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_match\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_iter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemasksubset\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_domain\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefilterstransformed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapfilters\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapshaders\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"convex_poly_clip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"extractalpha\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_checkerboard_32_32_g8\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_image_mandrill_64\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadows\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"simpleaaclip_aaclip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"composeshader_bitmap\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes_npot\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfaMac\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"parsedpaths\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadow_utils\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"graphitestart\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_images\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"all_bitmap_configs\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"makecolorspace\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"readpixels\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_rect_to_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_alpha_only\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"compositor_quads_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_qtr\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_effect_image\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ctmpatheffect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image_out_of_gamut\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"analytic_antialias_convex\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ - "Build-Debian10-Clang-x86_64-Debug", + "Build-Debian10-Clang-x86_64-Debug-ASAN", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -47327,7 +47489,6 @@ }, "env_prefixes": { "PATH": [ - "gsutil/gsutil", "cipd_bin_packages/cpython3", "cipd_bin_packages/cpython3/bin", "cipd_bin_packages", @@ -47346,13 +47507,12 @@ "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" }, "io_timeout_ns": 14400000000000, - "max_attempts": 2, + "max_attempts": 1, "outputs": [ "test" - ], - "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" + ] }, - "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN": { + "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN": { "caches": [ { "name": "vpython", @@ -47413,7 +47573,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"BonusConfigs_ASAN\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"r8\\\",\\\"565\\\",\\\"pic-8888\\\",\\\"serialize-8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"r8\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"r8\\\",\\\"colorImage\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_batch_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"strict_constraint_no_red_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_constraint_red_is_allowed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"c_gms\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"colortype_xfermodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_0.75_0\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds_1_-0.25\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_bounds\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_match\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"fontmgr_iter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemasksubset\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_domain\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_crop_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagemakewithfilter_ref\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"imagefilterstransformed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapfilters\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"bitmapshaders\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"convex_poly_clip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"extractalpha\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_checkerboard_32_32_g8\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"filterbitmap_image_mandrill_64\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadows\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"simpleaaclip_aaclip\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"composeshader_bitmap\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes_npot\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"scaled_tilemodes\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfaMac\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"parsedpaths\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ImageGeneratorExternal_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"shadow_utils\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"graphitestart\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_images\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"all_bitmap_configs\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"makecolorspace\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"readpixels\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_rect_to_rect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"draw_image_set_alpha_only\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"compositor_quads_shader\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv_formats_qtr\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_effect_image\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"ctmpatheffect\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image_out_of_gamut\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"analytic_antialias_convex\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"drawfilter\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-picture\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-raster\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"image-cacherator-from-ctable\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_bw\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip4_aa\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"p3\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up_large\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_alpha_type\\\",\\\"pic-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"serialize-8888\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"ColorSpaces_ASAN\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"f16\\\",\\\"rgba\\\",\\\"linear-f16\\\",\\\"linear-rgba\\\",\\\"narrow-f16\\\",\\\"narrow-rgba\\\",\\\"p3-f16\\\",\\\"p3-rgba\\\",\\\"rec2020-f16\\\",\\\"rec2020-rgba\\\",\\\"srgb2-f16\\\",\\\"srgb2-rgba\\\",\\\"narrow-f16norm\\\",\\\"linear-srgba\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--match\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"bug6783\\\",\\\"colorspace\\\",\\\"colorspace2\\\",\\\"composeCF\\\",\\\"crbug_224618\\\",\\\"drawlines_with_local_matrix\\\",\\\"gradients_interesting\\\",\\\"manypathatlases_2048\\\",\\\"paint_alpha_normals_rt\\\",\\\"runtimefunctions\\\",\\\"savelayer_f16\\\",\\\"spiral_rt\\\",\\\"srgb_colorfilter\\\",\\\"strokedlines\\\",\\\"sweep_tiling\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -47455,7 +47615,7 @@ "test" ] }, - "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN": { + "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations": { "caches": [ { "name": "vpython", @@ -47490,9 +47650,9 @@ "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, { - "name": "skia/bots/clang_linux", - "path": "clang_linux", - "version": "version:30" + "name": "skia/bots/gsutil", + "path": "gsutil", + "version": "version:0" }, { "name": "skia/bots/skimage", @@ -47516,11 +47676,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"ColorSpaces_ASAN\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"f16\\\",\\\"rgba\\\",\\\"linear-f16\\\",\\\"linear-rgba\\\",\\\"narrow-f16\\\",\\\"narrow-rgba\\\",\\\"p3-f16\\\",\\\"p3-rgba\\\",\\\"rec2020-f16\\\",\\\"rec2020-rgba\\\",\\\"srgb2-f16\\\",\\\"srgb2-rgba\\\",\\\"narrow-f16norm\\\",\\\"linear-srgba\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--match\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"bug6783\\\",\\\"colorspace\\\",\\\"colorspace2\\\",\\\"composeCF\\\",\\\"crbug_224618\\\",\\\"drawlines_with_local_matrix\\\",\\\"gradients_interesting\\\",\\\"manypathatlases_2048\\\",\\\"paint_alpha_normals_rt\\\",\\\"runtimefunctions\\\",\\\"savelayer_f16\\\",\\\"spiral_rt\\\",\\\"srgb_colorfilter\\\",\\\"strokedlines\\\",\\\"sweep_tiling\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ColorSpaces_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"Fontations\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-Fontations\\\",\\\"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": [ - "Build-Debian10-Clang-x86_64-Debug-ASAN", + "Build-Debian10-Clang-x86_64-Debug-Fontations", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -47535,6 +47695,7 @@ }, "env_prefixes": { "PATH": [ + "gsutil/gsutil", "cipd_bin_packages/cpython3", "cipd_bin_packages/cpython3/bin", "cipd_bin_packages", @@ -47553,10 +47714,11 @@ "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" }, "io_timeout_ns": 14400000000000, - "max_attempts": 1, + "max_attempts": 2, "outputs": [ "test" - ] + ], + "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts": { "caches": [ @@ -49603,7 +49765,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SwiftShader\\\",\\\"extra_config\\\",\\\"SwiftShader\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkdmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrThreadSafeCache16Verts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader\\\",\\\"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-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SwiftShader\\\",\\\"extra_config\\\",\\\"SwiftShader\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkdmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrThreadSafeCache16Verts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader\\\",\\\"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": [ @@ -49708,7 +49870,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Release-All-SwiftShader\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SwiftShader\\\",\\\"extra_config\\\",\\\"SwiftShader\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkdmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrThreadSafeCache16Verts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Release-All-SwiftShader\\\",\\\"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-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Release-All-SwiftShader\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"SwiftShader\\\",\\\"extra_config\\\",\\\"SwiftShader\\\",\\\"model\\\",\\\"GCE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkdmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrThreadSafeCache16Verts\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Release-All-SwiftShader\\\",\\\"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": [ @@ -49818,7 +49980,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-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-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-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": [ @@ -49927,7 +50089,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-DDL3_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"DDL3_ASAN\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-DDL3_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-DDL3_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"DDL3_ASAN\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-DDL3_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -50148,7 +50310,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"skbug_257\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"filltypespersp\\\",\\\"--match\\\",\\\"~^ClearOp$\\\",\\\"~^CopySurface$\\\",\\\"~^ImageNewShader_GPU$\\\",\\\"~^InitialTextureClear$\\\",\\\"~^PinnedImageTest$\\\",\\\"~^ReadPixels_Gpu$\\\",\\\"~^ReadPixels_Texture$\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^VkUploadPixelsTests$\\\",\\\"~^WritePixelsNonTexture_Gpu$\\\",\\\"~^WritePixelsNonTextureMSAA_Gpu$\\\",\\\"~^WritePixels_Gpu$\\\",\\\"~^WritePixelsMSAA_Gpu$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan\\\",\\\"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-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"skbug_257\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"filltypespersp\\\",\\\"--match\\\",\\\"~^ClearOp$\\\",\\\"~^CopySurface$\\\",\\\"~^ImageNewShader_GPU$\\\",\\\"~^InitialTextureClear$\\\",\\\"~^PinnedImageTest$\\\",\\\"~^ReadPixels_Gpu$\\\",\\\"~^ReadPixels_Texture$\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^VkUploadPixelsTests$\\\",\\\"~^WritePixelsNonTexture_Gpu$\\\",\\\"~^WritePixelsNonTextureMSAA_Gpu$\\\",\\\"~^WritePixels_Gpu$\\\",\\\"~^WritePixelsMSAA_Gpu$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -50257,7 +50419,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-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-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-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": [ @@ -50480,7 +50642,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"skbug_257\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"filltypespersp\\\",\\\"--match\\\",\\\"~^ClearOp$\\\",\\\"~^CopySurface$\\\",\\\"~^ImageNewShader_GPU$\\\",\\\"~^InitialTextureClear$\\\",\\\"~^PinnedImageTest$\\\",\\\"~^ReadPixels_Gpu$\\\",\\\"~^ReadPixels_Texture$\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^VkUploadPixelsTests$\\\",\\\"~^WritePixelsNonTexture_Gpu$\\\",\\\"~^WritePixelsNonTextureMSAA_Gpu$\\\",\\\"~^WritePixels_Gpu$\\\",\\\"~^WritePixelsMSAA_Gpu$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\\\",\\\"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-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD405\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC5PPYH\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--dontReduceOpsTaskSplitting\\\",\\\"true\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"skbug_257\\\",\\\"vk\\\",\\\"gm\\\",\\\"_\\\",\\\"filltypespersp\\\",\\\"--match\\\",\\\"~^ClearOp$\\\",\\\"~^CopySurface$\\\",\\\"~^ImageNewShader_GPU$\\\",\\\"~^InitialTextureClear$\\\",\\\"~^PinnedImageTest$\\\",\\\"~^ReadPixels_Gpu$\\\",\\\"~^ReadPixels_Texture$\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^VkUploadPixelsTests$\\\",\\\"~^WritePixelsNonTexture_Gpu$\\\",\\\"~^WritePixelsNonTextureMSAA_Gpu$\\\",\\\"~^WritePixels_Gpu$\\\",\\\"~^WritePixelsMSAA_Gpu$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -50589,7 +50751,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-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-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-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": [ @@ -50698,7 +50860,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-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-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelBayTrail\\\",\\\"model\\\",\\\"NUCDE3815TYKHE\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-NUCDE3815TYKHE-GPU-IntelBayTrail-x86_64-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": [ @@ -50807,7 +50969,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-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-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-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": [ @@ -50916,7 +51078,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-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-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD2000\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Debian10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian10-Clang-ShuttleA-GPU-IntelHD2000-x86_64-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": [ @@ -51401,7 +51563,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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": [ @@ -51515,7 +51677,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-ASAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"ASAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-ASAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-ASAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"ASAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-ASAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -51627,7 +51789,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-DDL3_ASAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"DDL3_ASAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-DDL3_ASAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-DDL3_ASAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"DDL3_ASAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-DDL3_ASAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -51739,7 +51901,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\\\",\\\"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-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -51853,7 +52015,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"DDL3_TSAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"DDL3_TSAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -51965,7 +52127,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"TSAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"TSAN_Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -52067,7 +52229,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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": [ @@ -52171,7 +52333,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -52273,7 +52435,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL1\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL1\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL1\\\",\\\"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-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL1\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL1\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL1\\\",\\\"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": [ @@ -52486,7 +52648,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL3_ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL3_ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -52588,7 +52750,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL3_TSAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"DDL3_TSAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-DDL3_TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -52690,7 +52852,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-FailFlushTimeCallbacks_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"FailFlushTimeCallbacks_ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"svg\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--failFlushTimeCallbacks\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-FailFlushTimeCallbacks_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-FailFlushTimeCallbacks_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"FailFlushTimeCallbacks_ASAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"svg\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--failFlushTimeCallbacks\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-FailFlushTimeCallbacks_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -52792,7 +52954,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-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-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"OptimizeForSize\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-OptimizeForSize-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": [ @@ -52896,7 +53058,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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": [ @@ -53000,7 +53162,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"TSAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"TSAN\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -53107,7 +53269,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\\\",\\\"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-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -53216,7 +53378,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\\\",\\\"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-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Debian11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Debian11-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -53320,7 +53482,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-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-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-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": [ @@ -53424,7 +53586,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-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-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-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": [ @@ -53533,7 +53695,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD615\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBook10.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^SRGBReadWritePixels$\\\",\\\"~^GrMeshTest$\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts\\\",\\\"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": [ @@ -53642,7 +53804,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -53746,7 +53908,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-PDF\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"PDF\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--rasterize_pdf\\\",\\\"--config\\\",\\\"pdf\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"hairmodes\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"longpathdash\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-PDF\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-PDF\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"PDF\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--rasterize_pdf\\\",\\\"--config\\\",\\\"pdf\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"hairmodes\\\",\\\"pdf\\\",\\\"gm\\\",\\\"_\\\",\\\"longpathdash\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-PDF\\\",\\\"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": [ @@ -53850,7 +54012,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-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-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-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": [ @@ -53949,7 +54111,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"ASAN\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"ASAN\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -54051,7 +54213,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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": [ @@ -54150,7 +54312,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"TSAN\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"TSAN\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -54257,7 +54419,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -54361,7 +54523,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-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-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-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": [ @@ -54466,7 +54628,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-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-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-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": [ @@ -54576,7 +54738,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.13-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.13-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -54685,7 +54847,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.14-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.14\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.14-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.14-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.14\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.14-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -54794,7 +54956,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.14-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.14\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.14-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.14-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.14\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.14-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -54898,7 +55060,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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": [ @@ -54997,7 +55159,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-ASAN_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"ASAN_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-ASAN_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\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-ASAN_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"ASAN_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-ASAN_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\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -55099,7 +55261,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL1_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL1_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL1_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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL1_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL1_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL1_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": [ @@ -55203,7 +55365,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL3_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL3_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"mtlddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL3_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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL3_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL3_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"mtlddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-DDL3_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": [ @@ -55307,7 +55469,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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": [ @@ -55416,7 +55578,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -55520,7 +55682,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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": [ @@ -55624,7 +55786,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL1_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL1_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL1_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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL1_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL1_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL1_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": [ @@ -55728,7 +55890,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL3_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL3_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"mtlddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL3_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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL3_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"DDL3_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"mtlddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-DDL3_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": [ @@ -55832,7 +55994,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-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": [ @@ -55931,7 +56093,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-TSAN_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"TSAN_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-TSAN_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\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-TSAN_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD6000\\\",\\\"extra_config\\\",\\\"TSAN_Metal\\\",\\\"model\\\",\\\"MacBookAir7.2\\\",\\\"os\\\",\\\"Mac10.15.1\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--match\\\",\\\"~^ProcessorCloneTest$\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.1-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Release-All-TSAN_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\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -56033,7 +56195,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite_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-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite_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": [ @@ -56137,7 +56299,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~SurfacePartialDraw_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~SurfacePartialDraw_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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": [ @@ -56345,7 +56507,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~SurfacePartialDraw_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~WritePixelsNonTextureMSAA_Gpu\\\",\\\"~SurfacePartialDraw_Gpu\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-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": [ @@ -56558,7 +56720,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX2\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacMini7.1-CPU-AVX2-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -56667,7 +56829,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-NativeFonts_i5\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"extra_config\\\",\\\"NativeFonts_i5\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-NativeFonts_i5\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-NativeFonts_i5\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris5100\\\",\\\"extra_config\\\",\\\"NativeFonts_i5\\\",\\\"model\\\",\\\"MacMini7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-NativeFonts_i5\\\",\\\"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": [ @@ -56777,7 +56939,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AVX\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"VMware7.1\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -56881,7 +57043,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-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-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-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": [ @@ -56990,7 +57152,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"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": [ @@ -57094,7 +57256,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-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-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-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": [ @@ -57392,7 +57554,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_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\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_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\",\"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": [ @@ -57600,7 +57762,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_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\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite_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\",\"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": [ @@ -57955,7 +58117,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All": { + "Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations": { "caches": [ { "name": "vpython", @@ -58016,223 +58178,15 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleIntel\\\",\\\"extra_config\\\",\\\"Fontations\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-Fontations\\\",\\\"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": [ - "Build-Mac-Clang-x86_64-Debug", + "Build-Mac-Clang-x86_64-Debug-Fontations", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:8086:8a53", - "os:Mac-12", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "gsutil/gsutil", - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 14400000000000, - "expiration_ns": 72000000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "io_timeout_ns": 14400000000000, - "max_attempts": 2, - "outputs": [ - "test" - ], - "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" - }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "test", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/mac-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/gsutil", - "path": "gsutil", - "version": "version:0" - }, - { - "name": "skia/bots/skimage", - "path": "skimage", - "version": "version:47" - }, - { - "name": "skia/bots/skp", - "path": "skp", - "version": "version:438" - }, - { - "name": "skia/bots/svg", - "path": "svg", - "version": "version:14" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "skia/infra/bots/run_recipe.py", - "${ISOLATED_OUTDIR}", - "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE\\\",\\\"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": [ - "Build-Mac-Clang-x86_64-Debug-ANGLE", - "Housekeeper-PerCommit-BundleRecipes" - ], - "dimensions": [ - "gpu:8086:8a53", - "os:Mac-12", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "gsutil/gsutil", - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 14400000000000, - "expiration_ns": 72000000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "io_timeout_ns": 14400000000000, - "max_attempts": 2, - "outputs": [ - "test" - ], - "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" - }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_Metal": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "test", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/mac-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/gsutil", - "path": "gsutil", - "version": "version:0" - }, - { - "name": "skia/bots/skimage", - "path": "skimage", - "version": "version:47" - }, - { - "name": "skia/bots/skp", - "path": "skp", - "version": "version:438" - }, - { - "name": "skia/bots/svg", - "path": "svg", - "version": "version:14" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "skia/infra/bots/run_recipe.py", - "${ISOLATED_OUTDIR}", - "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~^GrMeshTest$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_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": [ - "Build-Mac-Clang-x86_64-Debug-Graphite_Metal", - "Housekeeper-PerCommit-BundleRecipes" - ], - "dimensions": [ - "gpu:8086:8a53", + "cpu:x86-64", "os:Mac-12", "pool:Skia" ], @@ -58267,7 +58221,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Metal": { + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All": { "caches": [ { "name": "vpython", @@ -58328,11 +58282,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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": [ - "Build-Mac-Clang-x86_64-Debug-Metal", + "Build-Mac-Clang-x86_64-Debug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -58371,7 +58325,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All": { + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE": { "caches": [ { "name": "vpython", @@ -58432,11 +58386,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-ANGLE\\\",\\\"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": [ - "Build-Mac-Clang-x86_64-Release", + "Build-Mac-Clang-x86_64-Debug-ANGLE", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -58475,7 +58429,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All-Metal": { + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_Metal": { "caches": [ { "name": "vpython", @@ -58536,11 +58490,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Graphite_Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~^GrMeshTest$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite_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": [ - "Build-Mac-Clang-x86_64-Release-Metal", + "Build-Mac-Clang-x86_64-Debug-Graphite_Metal", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -58579,7 +58533,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN": { + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Metal": { "caches": [ { "name": "vpython", @@ -58613,6 +58567,11 @@ "path": "cipd_bin_packages", "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" }, + { + "name": "skia/bots/gsutil", + "path": "gsutil", + "version": "version:0" + }, { "name": "skia/bots/skimage", "path": "skimage", @@ -58624,9 +58583,108 @@ "version": "version:438" }, { - "name": "skia/bots/skparagraph", - "path": "skia/resources/extra_fonts", - "version": "version:4" + "name": "skia/bots/svg", + "path": "svg", + "version": "version:14" + } + ], + "command": [ + "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", + "-u", + "skia/infra/bots/run_recipe.py", + "${ISOLATED_OUTDIR}", + "test", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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": [ + "Build-Mac-Clang-x86_64-Debug-Metal", + "Housekeeper-PerCommit-BundleRecipes" + ], + "dimensions": [ + "gpu:8086:8a53", + "os:Mac-12", + "pool:Skia" + ], + "environment": { + "RECIPES_USE_PY3": "true", + "VPYTHON_LOG_TRACE": "1" + }, + "env_prefixes": { + "PATH": [ + "gsutil/gsutil", + "cipd_bin_packages/cpython3", + "cipd_bin_packages/cpython3/bin", + "cipd_bin_packages", + "cipd_bin_packages/bin" + ], + "VPYTHON_DEFAULT_SPEC": [ + "skia/.vpython" + ], + "VPYTHON_VIRTUALENV_ROOT": [ + "cache/vpython" + ] + }, + "execution_timeout_ns": 14400000000000, + "expiration_ns": 72000000000000, + "extra_tags": { + "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" + }, + "io_timeout_ns": 14400000000000, + "max_attempts": 2, + "outputs": [ + "test" + ], + "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" + }, + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All": { + "caches": [ + { + "name": "vpython", + "path": "cache/vpython" + } + ], + "casSpec": "test", + "cipd_packages": [ + { + "name": "infra/3pp/tools/cpython3/mac-amd64", + "path": "cipd_bin_packages/cpython3", + "version": "version:2@3.8.10.chromium.19" + }, + { + "name": "infra/tools/luci-auth/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/kitchen/${platform}", + "path": ".", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython-native/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "skia/bots/gsutil", + "path": "gsutil", + "version": "version:0" + }, + { + "name": "skia/bots/skimage", + "path": "skimage", + "version": "version:47" + }, + { + "name": "skia/bots/skp", + "path": "skp", + "version": "version:438" }, { "name": "skia/bots/svg", @@ -58640,15 +58698,15 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts_ASAN\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkPDF_JpegIdentification\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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": [ - "Build-Mac-Clang-arm64-Debug-ASAN", + "Build-Mac-Clang-x86_64-Release", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:arm64-64-Apple_M1", + "gpu:8086:8a53", "os:Mac-12", "pool:Skia" ], @@ -58658,6 +58716,7 @@ }, "env_prefixes": { "PATH": [ + "gsutil/gsutil", "cipd_bin_packages/cpython3", "cipd_bin_packages/cpython3/bin", "cipd_bin_packages", @@ -58676,12 +58735,13 @@ "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" }, "io_timeout_ns": 14400000000000, - "max_attempts": 1, + "max_attempts": 2, "outputs": [ "test" - ] + ], + "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE": { + "Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All-Metal": { "caches": [ { "name": "vpython", @@ -58742,15 +58802,15 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsToTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"--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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicNot_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Graphite\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceContextWritePixelsMipped\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SurfaceAsyncReadPixels\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-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": [ - "Build-Mac-Clang-arm64-Debug-ANGLE", + "Build-Mac-Clang-x86_64-Release-Metal", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:arm64-64-Apple_M1", + "gpu:8086:8a53", "os:Mac-12", "pool:Skia" ], @@ -58785,7 +58845,109 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal": { + "Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN": { + "caches": [ + { + "name": "vpython", + "path": "cache/vpython" + } + ], + "casSpec": "test", + "cipd_packages": [ + { + "name": "infra/3pp/tools/cpython3/mac-amd64", + "path": "cipd_bin_packages/cpython3", + "version": "version:2@3.8.10.chromium.19" + }, + { + "name": "infra/tools/luci-auth/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/kitchen/${platform}", + "path": ".", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython-native/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "infra/tools/luci/vpython/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" + }, + { + "name": "skia/bots/skimage", + "path": "skimage", + "version": "version:47" + }, + { + "name": "skia/bots/skp", + "path": "skp", + "version": "version:438" + }, + { + "name": "skia/bots/skparagraph", + "path": "skia/resources/extra_fonts", + "version": "version:4" + }, + { + "name": "skia/bots/svg", + "path": "svg", + "version": "version:14" + } + ], + "command": [ + "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", + "-u", + "skia/infra/bots/run_recipe.py", + "${ISOLATED_OUTDIR}", + "test", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts_ASAN\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkPDF_JpegIdentification\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts_ASAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "skia" + ], + "dependencies": [ + "Build-Mac-Clang-arm64-Debug-ASAN", + "Housekeeper-PerCommit-BundleRecipes" + ], + "dimensions": [ + "cpu:arm64-64-Apple_M1", + "os:Mac-12", + "pool:Skia" + ], + "environment": { + "RECIPES_USE_PY3": "true", + "VPYTHON_LOG_TRACE": "1" + }, + "env_prefixes": { + "PATH": [ + "cipd_bin_packages/cpython3", + "cipd_bin_packages/cpython3/bin", + "cipd_bin_packages", + "cipd_bin_packages/bin" + ], + "VPYTHON_DEFAULT_SPEC": [ + "skia/.vpython" + ], + "VPYTHON_VIRTUALENV_ROOT": [ + "cache/vpython" + ] + }, + "execution_timeout_ns": 14400000000000, + "expiration_ns": 72000000000000, + "extra_tags": { + "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" + }, + "io_timeout_ns": 14400000000000, + "max_attempts": 1, + "outputs": [ + "test" + ] + }, + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE": { "caches": [ { "name": "vpython", @@ -58846,11 +59008,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-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-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsToTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ANGLE\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Debug-Metal", + "Build-Mac-Clang-arm64-Debug-ANGLE", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -58889,7 +59051,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts": { + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal": { "caches": [ { "name": "vpython", @@ -58938,11 +59100,6 @@ "path": "skp", "version": "version:438" }, - { - "name": "skia/bots/skparagraph", - "path": "skia/resources/extra_fonts", - "version": "version:4" - }, { "name": "skia/bots/svg", "path": "svg", @@ -58955,11 +59112,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-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": [ - "Build-Mac-Clang-arm64-Debug", + "Build-Mac-Clang-arm64-Debug-Metal", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -58998,7 +59155,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug": { + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts": { "caches": [ { "name": "vpython", @@ -59047,6 +59204,11 @@ "path": "skp", "version": "version:438" }, + { + "name": "skia/bots/skparagraph", + "path": "skia/resources/extra_fonts", + "version": "version:4" + }, { "name": "skia/bots/svg", "path": "svg", @@ -59059,11 +59221,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Slug\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glslug\\\",\\\"glserializeslug\\\",\\\"glremoteslug\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"rtif_distort\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"textfilter_image\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"textfilter_color\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayerpreservelcdtext\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfa\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfb\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Debug-Slug", + "Build-Mac-Clang-arm64-Debug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59102,7 +59264,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE": { + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug": { "caches": [ { "name": "vpython", @@ -59163,11 +59325,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsToTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Slug\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glslug\\\",\\\"glserializeslug\\\",\\\"glremoteslug\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"rtif_distort\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"textfilter_image\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"textfilter_color\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayerpreservelcdtext\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfa\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering_pfb\\\",\\\"glremoteslug\\\",\\\"gm\\\",\\\"_\\\",\\\"typefacerendering\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Slug\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Release-ANGLE", + "Build-Mac-Clang-arm64-Debug-Slug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59206,7 +59368,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal": { + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE": { "caches": [ { "name": "vpython", @@ -59267,11 +59429,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-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-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_mtl_es2\\\",\\\"angle_mtl_es3\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"angle_mtl_es3\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_common_es3\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsToTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Release-Metal", + "Build-Mac-Clang-arm64-Release-ANGLE", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59310,7 +59472,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts": { + "Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal": { "caches": [ { "name": "vpython", @@ -59359,11 +59521,6 @@ "path": "skp", "version": "version:438" }, - { - "name": "skia/bots/skparagraph", - "path": "skia/resources/extra_fonts", - "version": "version:4" - }, { "name": "skia/bots/svg", "path": "svg", @@ -59376,16 +59533,16 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac12\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-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": [ - "Build-Mac-Clang-arm64-Debug", + "Build-Mac-Clang-arm64-Release-Metal", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ "cpu:arm64-64-Apple_M1", - "os:Mac-13", + "os:Mac-12", "pool:Skia" ], "environment": { @@ -59419,7 +59576,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello": { + "Test-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts": { "caches": [ { "name": "vpython", @@ -59468,6 +59625,11 @@ "path": "skp", "version": "version:438" }, + { + "name": "skia/bots/skparagraph", + "path": "skia/resources/extra_fonts", + "version": "version:4" + }, { "name": "skia/bots/svg", "path": "svg", @@ -59480,11 +59642,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Metal_Vello\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello\\\",\\\"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-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"CPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"8888\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-CPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Debug-Graphite_Metal_Vello", + "Build-Mac-Clang-arm64-Debug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59523,7 +59685,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal": { + "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello": { "caches": [ { "name": "vpython", @@ -59584,11 +59746,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-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-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite_Metal_Vello\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Graphite_Metal_Vello\\\",\\\"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": [ - "Build-Mac-Clang-arm64-Debug-Metal", + "Build-Mac-Clang-arm64-Debug-Graphite_Metal_Vello", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59627,7 +59789,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts": { + "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal": { "caches": [ { "name": "vpython", @@ -59676,11 +59838,6 @@ "path": "skp", "version": "version:438" }, - { - "name": "skia/bots/skparagraph", - "path": "skia/resources/extra_fonts", - "version": "version:4" - }, { "name": "skia/bots/svg", "path": "svg", @@ -59693,11 +59850,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"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-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-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": [ - "Build-Mac-Clang-arm64-Debug", + "Build-Mac-Clang-arm64-Debug-Metal", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59736,7 +59893,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1": { + "Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts": { "caches": [ { "name": "vpython", @@ -59746,7 +59903,7 @@ "casSpec": "test", "cipd_packages": [ { - "name": "infra/3pp/tools/cpython3/linux-amd64", + "name": "infra/3pp/tools/cpython3/mac-amd64", "path": "cipd_bin_packages/cpython3", "version": "version:2@3.8.10.chromium.19" }, @@ -59785,6 +59942,11 @@ "path": "skp", "version": "version:438" }, + { + "name": "skia/bots/skparagraph", + "path": "skia/resources/extra_fonts", + "version": "version:4" + }, { "name": "skia/bots/svg", "path": "svg", @@ -59797,16 +59959,16 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL1\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1\\\",\\\"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-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac13\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac13-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-NativeFonts\\\",\\\"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": [ - "Build-Debian10-Clang-x86_64-Debug", + "Build-Mac-Clang-arm64-Debug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1cb3-510.60.02", - "os:Ubuntu-18.04", + "cpu:arm64-64-Apple_M1", + "os:Mac-13", "pool:Skia" ], "environment": { @@ -59840,7 +60002,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan": { + "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1": { "caches": [ { "name": "vpython", @@ -59879,11 +60041,6 @@ "path": "gsutil", "version": "version:0" }, - { - "name": "skia/bots/linux_vulkan_sdk", - "path": "linux_vulkan_sdk", - "version": "version:6" - }, { "name": "skia/bots/skimage", "path": "skimage", @@ -59906,11 +60063,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL1_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL1\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1\\\",\\\"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": [ - "Build-Debian10-Clang-x86_64-Debug-Vulkan", + "Build-Debian10-Clang-x86_64-Debug", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -59949,7 +60106,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan": { + "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan": { "caches": [ { "name": "vpython", @@ -60015,7 +60172,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL3_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL1_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1_Vulkan\\\",\\\"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": [ @@ -60058,7 +60215,7 @@ ], "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": { + "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan": { "caches": [ { "name": "vpython", @@ -60097,6 +60254,11 @@ "path": "gsutil", "version": "version:0" }, + { + "name": "skia/bots/linux_vulkan_sdk", + "path": "linux_vulkan_sdk", + "version": "version:6" + }, { "name": "skia/bots/skimage", "path": "skimage", @@ -60119,11 +60281,11 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-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\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"dawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMatrixCompMultES2_GPU\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-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\",\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL3_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"vkddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan\\\",\\\"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": [ - "Build-Debian10-Clang-x86_64-Debug-Dawn", + "Build-Debian10-Clang-x86_64-Debug-Vulkan", "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ @@ -60228,7 +60390,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_drawImage_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_imageShader_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\\\",\\\"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": [ @@ -60327,7 +60489,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"PreAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"PreAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-PreAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -60434,7 +60596,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"vk1010102\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"vk1010102\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -60538,7 +60700,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-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": [ @@ -60642,7 +60804,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DDL3_TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL3_TSAN\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DDL3_TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DDL3_TSAN\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"DDL3_TSAN\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"DDL\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--skpViewportSize\\\",\\\"2048\\\",\\\"--gpuThreads\\\",\\\"0\\\",\\\"--config\\\",\\\"glddl\\\",\\\"--src\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-DDL3_TSAN\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -60749,7 +60911,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_drawImage_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_imageShader_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\\\",\\\"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": [ @@ -60848,7 +61010,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-PreAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"PreAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-PreAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-PreAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"PreAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-PreAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -60950,7 +61112,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--abandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--abandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -61053,7 +61215,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"~multipicturedraw_\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"~multipicturedraw_\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--preAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -61156,7 +61318,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Valgrind_SK_CPU_LIMIT_SSE41\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"gl1010102\\\",\\\"gltestpersistentcache\\\",\\\"gltestglslcache\\\",\\\"gltestprecompile\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"gl1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"atlastext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"dftext\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_b\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_h_f\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"glyph_pos_n_f\\\",\\\"gltestpersistentcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestglslcache\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"gltestprecompile\\\",\\\"gm\\\",\\\"_\\\",\\\"tessellation\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"InitialTextureClear\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--match\\\",\\\"~Threaded\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -61264,7 +61426,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"vk1010102\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\\\",\\\"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-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Ubuntu18\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"vkdmsaa\\\",\\\"vk1010102\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"vk1010102\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -61452,7 +61614,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-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-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\",\"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-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-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\",\"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": [ @@ -61549,7 +61711,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-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE\\\",\\\"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-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"TestSweepGradientZeroXGanesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -61743,7 +61905,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-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-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\",\"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-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-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\",\"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": [ @@ -61840,7 +62002,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-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\\\",\\\"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-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonR9M470X\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"AlphaR2\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"TestSweepGradientZeroXGanesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -62034,7 +62196,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\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-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\",\"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\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-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\",\"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": [ @@ -62131,7 +62293,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-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE\\\",\\\"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-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -62228,7 +62390,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-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glbetex\\\",\\\"glbert\\\",\\\"glreducedshaders\\\",\\\"glr8\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs\\\",\\\"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-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glbetex\\\",\\\"glbert\\\",\\\"glreducedshaders\\\",\\\"glr8\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-BonusConfigs\\\",\\\"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": [ @@ -62269,103 +62431,6 @@ "test" ] }, - "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "test", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/windows-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/skimage", - "path": "skimage", - "version": "version:47" - }, - { - "name": "skia/bots/skp", - "path": "skp", - "version": "version:438" - }, - { - "name": "skia/bots/svg", - "path": "svg", - "version": "version:14" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicMatrixCompMultES2_GPU\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_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": [ - "Build-Win-Clang-x86_64-Debug-Dawn", - "Housekeeper-PerCommit-BundleRecipes" - ], - "dimensions": [ - "gpu:10de:1cb3-30.0.15.1179", - "os:Windows-10-19043", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 14400000000000, - "expiration_ns": 72000000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "io_timeout_ns": 14400000000000, - "max_attempts": 2, - "outputs": [ - "test" - ] - }, "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess": { "caches": [ { @@ -62422,7 +62487,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-GpuTess\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"GpuTess\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--pr\\\",\\\"atlas\\\",\\\"tess\\\",\\\"--config\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess\\\",\\\"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-GpuTess\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"GpuTess\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--pr\\\",\\\"atlas\\\",\\\"tess\\\",\\\"--config\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess\\\",\\\"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": [ @@ -62519,7 +62584,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-ReleaseAndAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ReleaseAndAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--releaseAndAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ReleaseAndAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ReleaseAndAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ReleaseAndAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--releaseAndAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ReleaseAndAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -62713,7 +62778,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-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-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\",\"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-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-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\",\"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": [ @@ -62810,7 +62875,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-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE\\\",\\\"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-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -62907,7 +62972,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-Release-All-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glbetex\\\",\\\"glbert\\\",\\\"glreducedshaders\\\",\\\"glr8\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-BonusConfigs\\\",\\\"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-Release-All-BonusConfigs\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"BonusConfigs\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"glbetex\\\",\\\"glbert\\\",\\\"glreducedshaders\\\",\\\"glr8\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-BonusConfigs\\\",\\\"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": [ @@ -63004,7 +63069,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-Release-All-ReleaseAndAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ReleaseAndAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--releaseAndAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ReleaseAndAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", + "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ReleaseAndAbandonGpuContext\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"ReleaseAndAbandonGpuContext\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\",\\\"--releaseAndAbandonGpuContext\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ReleaseAndAbandonGpuContext\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}", "skia" ], "dependencies": [ @@ -63198,7 +63263,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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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\",\"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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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\",\"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": [ @@ -63295,7 +63360,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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\\\",\\\"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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -63392,7 +63457,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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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\",\"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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"perlinnoise_layered\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-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\",\"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": [ @@ -63489,7 +63554,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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\\\",\\\"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-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisXe\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC11TZi5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~ReimportImageTextureWithMipLevels\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -63669,7 +63734,7 @@ { "name": "skia/bots/dwritecore", "path": "dwritecore", - "version": "version:1" + "version": "version:3" }, { "name": "skia/bots/skimage", @@ -63795,7 +63860,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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-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\",\"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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-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\",\"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": [ @@ -63892,7 +63957,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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE\\\",\\\"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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -63989,7 +64054,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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-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\",\"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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-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\",\"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": [ @@ -64086,7 +64151,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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"~^ProcessorOptimizationValidationTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\\\",\\\"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-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris6100\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC5i7RYH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"~^ProcessorOptimizationValidationTest$\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -64183,7 +64248,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-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\",\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-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\",\"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": [ @@ -64280,7 +64345,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE\\\",\\\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -64377,7 +64442,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan\\\",\\\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -64474,7 +64539,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-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\",\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-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\",\"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": [ @@ -64571,7 +64636,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\\\",\\\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -64673,7 +64738,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-NativeFonts\\\",\\\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-NativeFonts\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"NativeFonts\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nativeFonts\\\",\\\"--paragraph_fonts\\\",\\\"extra_fonts\\\",\\\"--norun_paragraph_tests_needing_system_fonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-NativeFonts\\\",\\\"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": [ @@ -64770,7 +64835,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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\\\",\\\"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-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris540\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC6i5SYK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -64867,7 +64932,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-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\",\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-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\",\"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": [ @@ -64964,7 +65029,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -65061,7 +65126,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Direct3D\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Direct3D\\\",\\\"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": [ @@ -65158,7 +65223,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Vulkan\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -65255,7 +65320,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-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\",\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-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\",\"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": [ @@ -65352,7 +65417,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterCropRect_Gpu\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -65449,7 +65514,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Direct3D\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Direct3D\\\",\\\"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": [ @@ -65546,7 +65611,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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\\\",\\\"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-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIris655\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC8i5BEK\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -65643,7 +65708,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-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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\",\"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-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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\",\"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": [ @@ -65651,7 +65716,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -65740,7 +65805,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-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurcircles2\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-Vulkan\\\",\\\"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-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurcircles2\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -65748,7 +65813,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -65837,7 +65902,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-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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\",\"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-NUC9i7QN-GPU-RTX3060-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-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\",\"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": [ @@ -65845,7 +65910,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -65934,7 +65999,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-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurcircles2\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\\\",\\\"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-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RTX3060\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"NUC9i7QN\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurcircles2\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicMixFloatES3_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUC9i7QN-GPU-RTX3060-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -65942,7 +66007,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:2489-31.0.15.3667", + "gpu:10de:2489-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -66031,7 +66096,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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-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\",\"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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-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\",\"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": [ @@ -66128,7 +66193,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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE\\\",\\\"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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -66225,7 +66290,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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-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\",\"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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-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\",\"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": [ @@ -66322,7 +66387,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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\\\",\\\"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-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelHD4400\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"NUCD34010WYKH\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLIntrinsicFloor_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"FilterResult\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLVectorToMatrixCast_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTrivialArgumentsInlineDirectly_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLVectorScalarMath_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixFoldingES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixEquality_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLTemporaryIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLReturnsValueOnEveryPathES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLOutParamsAreDistinctFromGlobal_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"angle_d3d9_es2\\\",\\\"gm\\\",\\\"_\\\",\\\"lighting\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -66419,7 +66484,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-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\\\",\\\"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-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Debug-All-Vulkan\\\",\\\"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": [ @@ -66516,7 +66581,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-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\\\",\\\"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-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonVega6\\\",\\\"extra_config\\\",\\\"Vulkan\\\",\\\"model\\\",\\\"RUBYR5\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"vk\\\",\\\"vkmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ycbcrimage\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VkYCbcrSampler_DrawImageWithYcbcrSampler\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-RUBYR5-GPU-RadeonVega6-x86_64-Release-All-Vulkan\\\",\\\"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": [ @@ -66613,7 +66678,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-ShuttleA-GPU-GTX660-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-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\",\"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-ShuttleA-GPU-GTX660-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-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\",\"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": [ @@ -66710,7 +66775,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-ShuttleA-GPU-GTX660-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Debug-All-ANGLE\\\",\\\"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-ShuttleA-GPU-GTX660-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -66904,7 +66969,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-ShuttleA-GPU-GTX660-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-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\",\"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-ShuttleA-GPU-GTX660-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-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\",\"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": [ @@ -67001,7 +67066,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-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\\\",\\\"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-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX660\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -67195,7 +67260,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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-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\",\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-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\",\"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": [ @@ -67292,7 +67357,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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-ANGLE\\\",\\\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -67389,7 +67454,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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-Direct3D\\\",\\\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-Direct3D\\\",\\\"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": [ @@ -67583,7 +67648,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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-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\",\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-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\",\"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": [ @@ -67680,7 +67745,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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\\\",\\\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"angle_d3d9_es2\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -67777,7 +67842,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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D\\\",\\\"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-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD7770\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"ShuttleA\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicAll_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructIndexStore_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexLookup_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleIndexStore_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D\\\",\\\"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": [ @@ -67971,7 +68036,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-ShuttleC-GPU-GTX960-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-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\",\"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-ShuttleC-GPU-GTX960-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-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\",\"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": [ @@ -67979,7 +68044,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68068,7 +68133,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-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE\\\",\\\"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-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE\\\",\\\"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": [ @@ -68076,7 +68141,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68173,7 +68238,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68262,7 +68327,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-ShuttleC-GPU-GTX960-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-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\",\"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-ShuttleC-GPU-GTX960-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-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\",\"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": [ @@ -68270,7 +68335,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68359,7 +68424,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-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_GPU\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\\\",\\\"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-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"GTX960\\\",\\\"extra_config\\\",\\\"ANGLE\\\",\\\"model\\\",\\\"ShuttleC\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"angle_d3d11_es2\\\",\\\"angle_d3d11_es3\\\",\\\"angle_d3d11_es2_msaa4\\\",\\\"angle_d3d11_es2_dmsaa\\\",\\\"angle_d3d11_es3_msaa4\\\",\\\"angle_d3d11_es3_dmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwizzleAsLValueES3_Ganesh\\\",\\\"--match\\\",\\\"~BlurMaskBiggerThanDest\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Release-All-ANGLE\\\",\\\"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": [ @@ -68367,7 +68432,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68464,7 +68529,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "gpu:10de:1401-31.0.15.3667", + "gpu:10de:1401-31.0.15.3699", "os:Windows-10-19045", "pool:Skia" ], @@ -68553,7 +68618,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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-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\",\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-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\",\"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": [ @@ -68650,7 +68715,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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Direct3D\\\",\\\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Direct3D\\\",\\\"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": [ @@ -68747,7 +68812,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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_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": [ @@ -68844,7 +68909,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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\\\",\\\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_drawImage_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_imageShader_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Graphite_Vulkan\\\",\\\"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": [ @@ -69038,7 +69103,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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-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\",\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gl\\\",\\\"gldft\\\",\\\"glmsaa4\\\",\\\"gldmsaa\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-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\",\"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": [ @@ -69135,7 +69200,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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D\\\",\\\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Direct3D\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"d3d\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D\\\",\\\"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": [ @@ -69232,7 +69297,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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grdawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"tall_stretched_bitmaps\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BackendTextureTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthroughAndVarDecls_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLPreserveSideEffects_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLStructFieldNoFolding_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_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": [ @@ -69329,7 +69394,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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\\\",\\\"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-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"MSVC\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Graphite_Vulkan\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grvk\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"aaxfermodes\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"DeviceTestVertexTransparency\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphitePurgeNotUsedSinceResourcesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteTextureProxyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageMultipleImgUses\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GraphiteYUVAPromiseImageRecorderLoss\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_drawImage_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageOriginTest_imageShader_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Testing\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest_Graphite_Default\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MakeColorSpace_Test\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageProviderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ImageShaderTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MutableImagesTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"MultisampleRetainTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"NonVolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"PaintParamsKeyTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingOrderTest_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"RecordingSurfacesTestClear\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ShaderTestNestedBlendsGraphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkRuntimeEffectSimple_Graphite\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_Ganesh\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphiteYUVAPromiseImageTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"VolatileGraphitePromiseImageTest\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLCommaSideEffects\\\",\\\"--match\\\",\\\"~^verylarge_picture_image$\\\",\\\"~^verylargebitmap$\\\",\\\"~^path_huge_aa$\\\",\\\"~^fast_constraint_red_is_allowed$\\\",\\\"~^strict_constraint_batch_no_red_allowed$\\\",\\\"~^strict_constraint_no_red_allowed$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Vulkan\\\",\\\"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": [ @@ -70400,7 +70465,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-iPadPro-GPU-PowerVRGT7800-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-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-iPadPro-GPU-PowerVRGT7800-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-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": [ @@ -70594,7 +70659,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-iPadPro-GPU-PowerVRGT7800-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-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-iPadPro-GPU-PowerVRGT7800-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7800\\\",\\\"model\\\",\\\"iPadPro\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-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": [ @@ -70788,7 +70853,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-iPhone7-GPU-PowerVRGT7600-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-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-iPhone7-GPU-PowerVRGT7600-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-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": [ @@ -70982,7 +71047,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-iPhone7-GPU-PowerVRGT7600-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-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-iPhone7-GPU-PowerVRGT7600-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGT7600\\\",\\\"model\\\",\\\"iPhone7\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone7-GPU-PowerVRGT7600-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": [ @@ -71176,7 +71241,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-iPhone8-GPU-AppleA11-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone8-GPU-AppleA11-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-iPhone8-GPU-AppleA11-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone8-GPU-AppleA11-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": [ @@ -71370,7 +71435,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-iPhone8-GPU-AppleA11-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone8-GPU-AppleA11-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-iPhone8-GPU-AppleA11-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA11\\\",\\\"model\\\",\\\"iPhone8\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone8-GPU-AppleA11-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": [ @@ -71564,7 +71629,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-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-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-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-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": [ @@ -71758,7 +71823,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-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-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-Xcode11.4.1-iPhone11-GPU-AppleA13-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Xcode11.4.1\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleA13\\\",\\\"model\\\",\\\"iPhone11\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"glesmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"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\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"BigImageTest_Ganesh\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLLogicalAndShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLogicalOrShortCircuit_Ganesh\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_Ganesh\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Xcode11.4.1-iPhone11-GPU-AppleA13-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": [ @@ -84777,93 +84842,6 @@ "max_attempts": 2, "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" }, - "Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": { - "caches": [ - { - "name": "vpython", - "path": "cache/vpython" - } - ], - "casSpec": "run-recipe", - "cipd_packages": [ - { - "name": "infra/3pp/tools/cpython3/linux-amd64", - "path": "cipd_bin_packages/cpython3", - "version": "version:2@3.8.10.chromium.19" - }, - { - "name": "infra/tools/luci-auth/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/kitchen/${platform}", - "path": ".", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython-native/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "infra/tools/luci/vpython/${platform}", - "path": "cipd_bin_packages", - "version": "git_revision:4f585e471d9b3ba86b2ac0ec0cdefaa8fdb67024" - }, - { - "name": "skia/bots/gsutil", - "path": "gsutil", - "version": "version:0" - } - ], - "command": [ - "cipd_bin_packages/vpython3${EXECUTABLE_SUFFIX}", - "-u", - "skia/infra/bots/run_recipe.py", - "${ISOLATED_OUTDIR}", - "upload_dm_results", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn\",\"gs_bucket\":\"skia-infra-gm\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"output_ignored\",\"task_id\":\"<(TASK_ID)\"}", - "skia" - ], - "dependencies": [ - "Housekeeper-PerCommit-BundleRecipes", - "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn" - ], - "dimensions": [ - "cpu:x86-64-Haswell_GCE", - "gpu:none", - "machine_type:n1-highmem-2", - "os:Debian-10.3", - "pool:Skia" - ], - "environment": { - "RECIPES_USE_PY3": "true", - "VPYTHON_LOG_TRACE": "1" - }, - "env_prefixes": { - "PATH": [ - "cipd_bin_packages/cpython3", - "cipd_bin_packages/cpython3/bin", - "cipd_bin_packages", - "cipd_bin_packages/bin", - "gsutil/gsutil" - ], - "VPYTHON_DEFAULT_SPEC": [ - "skia/.vpython" - ], - "VPYTHON_VIRTUALENV_ROOT": [ - "cache/vpython" - ] - }, - "execution_timeout_ns": 3600000000000, - "extra_tags": { - "log_location": "logdog://logs.chromium.org/skia/${SWARMING_TASK_ID}/+/annotations" - }, - "io_timeout_ns": 3600000000000, - "max_attempts": 2, - "service_account": "skia-external-gm-uploader@skia-swarming-bots.iam.gserviceaccount.com" - }, "Upload-Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess": { "caches": [ { @@ -91669,6 +91647,8 @@ "skia/package.json", "skia/package-lock.json", "skia/DEPS", + "skia/infra/bots", + "skia/.bazelignore", "skia/.bazelrc", "skia/.bazelversion", "skia/BUILD.bazel", @@ -91963,6 +91943,12 @@ "BazelTest-cpu_tests-tests-cpu_only_release_rbe-linux_x64": { "experimental": true }, + "BazelTest-gm-cpu_gms-cpu_only_debug_rbe-linux_x64": { + "experimental": true + }, + "BazelTest-gm-hello_bazel_world_test-linux_rbe-linux_x64": { + "experimental": true + }, "Build-Debian10-Clang-arm-Debug-Android": {}, "Build-Debian10-Clang-arm-Release-Android_API26": {}, "Build-Debian10-Clang-arm64-Debug-Android": {}, @@ -92033,7 +92019,6 @@ ] }, "Build-Win-Clang-x86-Debug": {}, - "Build-Win-Clang-x86_64-Release-Dawn": {}, "Build-Win-Clang-x86_64-Release-Direct3D": {}, "Build-Win-Clang-x86_64-Release-Vulkan": {}, "Build-Win-MSVC-arm64-Release-ANGLE": {}, @@ -92123,7 +92108,6 @@ "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3_Vulkan": {}, "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan": {}, "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All": {}, - "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": {}, "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D": {}, "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Dawn": { "location_regexes": [ diff --git a/infra/jsfiddle/BUILD.bazel b/infra/jsfiddle/BUILD.bazel new file mode 100644 index 000000000000..2553dd3753e9 --- /dev/null +++ b/infra/jsfiddle/BUILD.bazel @@ -0,0 +1,28 @@ +load("//bazel:skia_app_container.bzl", "skia_app_container") + +# Layer the CanvasKit and PathKit components on top of the jsfiddle-base Docker +# Image to create the final Docker image. +skia_app_container( + name = "jsfiddle_container", + base_image = "@jsfiddle-base//image", + dirs = { + "/usr/local/share/jsfiddle/dist/": [ + [ + # This brings in all the CanvasKit build files. + "//modules/canvaskit:canvaskit", + "0644", + ], + [ + # This brings in all the PathKit build files. + "//modules/pathkit:pathkit", + "0644", + ], + [ + "//modules/canvaskit:version.js", + "0644", + ], + ], + }, + entrypoint = "/usr/local/bin/jsfiddle", + repository = "skia-public/jsfiddle-final", +) diff --git a/infra/jsfiddle/Makefile b/infra/jsfiddle/Makefile new file mode 100644 index 000000000000..e9adc090585a --- /dev/null +++ b/infra/jsfiddle/Makefile @@ -0,0 +1,12 @@ +BAZEL?=bazelisk + +.PHONY: build +build: + $(BAZEL) run //infra/jsfiddle:jsfiddle_container \ + --config=jsfiddle_container + +# Review section in README.md before running this target +.PHONY: push_jsfiddle_I_am_really_sure +push_jsfiddle_I_am_really_sure: + $(BAZEL) run //infra/jsfiddle:push_jsfiddle_container \ + --config=jsfiddle_container \ No newline at end of file diff --git a/infra/jsfiddle/README.md b/infra/jsfiddle/README.md new file mode 100644 index 000000000000..6f28993bca04 --- /dev/null +++ b/infra/jsfiddle/README.md @@ -0,0 +1,24 @@ +This directory contains the build rules to create the final Docker image for +the Skia jsfiddle hosted at jsfiddle.skia.org. + +This build rule inserts the necessary Skia artifact (CanvasKit and PathKit) into +an intermediate Docker image created in the Skia infrastructure repository at +https://skia.googlesource.com/buildbot/+/refs/heads/main/jsfiddle/BUILD.bazel. +This final docker image is then uploaded to GCR and deployed to skia.org. + +To manually build a local Docker image: + + make build + +This can then be run locally by: + + docker run -p 8080:8000 -it + +or debugged by: + + docker run -it --entrypoint /bin/sh + +This docker image is automatically built and pushed to GCR by Louhi. If there +is a need to manually push it this can be done as so: + + make push_jsfiddle_I_am_really_sure \ No newline at end of file diff --git a/infra/shaders/BUILD.bazel b/infra/shaders/BUILD.bazel new file mode 100644 index 000000000000..2abd0cfd330d --- /dev/null +++ b/infra/shaders/BUILD.bazel @@ -0,0 +1,23 @@ +load("//bazel:skia_app_container.bzl", "skia_app_container") + +# Layer the CanvasKit component on top of the shaders-base Docker +# Image to create the final Docker image. +skia_app_container( + name = "shaders_container", + base_image = "@shaders-base//image", + dirs = { + "/usr/local/share/shaders/dist/": [ + [ + # This brings in all the CanvasKit build files. + "//modules/canvaskit:canvaskit", + "0644", + ], + [ + "//modules/canvaskit:version.js", + "0644", + ], + ], + }, + entrypoint = "/usr/local/bin/shaders", + repository = "skia-public/shaders-final", +) diff --git a/infra/shaders/Makefile b/infra/shaders/Makefile new file mode 100644 index 000000000000..d17cd08866c9 --- /dev/null +++ b/infra/shaders/Makefile @@ -0,0 +1,12 @@ +BAZEL?=bazelisk + +.PHONY: build +build: + $(BAZEL) run //infra/shaders:shaders_container \ + --config=shaders_container + +# Review section in README.md before running this target +.PHONY: push_shaders_I_am_really_sure +push_shaders_I_am_really_sure: + $(BAZEL) run //infra/shaders:push_shaders_container \ + --config=shaders_container diff --git a/infra/shaders/README.md b/infra/shaders/README.md new file mode 100644 index 000000000000..2508fa60c5c6 --- /dev/null +++ b/infra/shaders/README.md @@ -0,0 +1,28 @@ +This directory contains the build rules to create the final Docker image for +the Skia shaders hosted at shaders.skia.org. + +This build rule inserts the necessary Skia artifact (CanvasKit) into +an intermediate Docker image created in the Skia infrastructure repository at +https://skia.googlesource.com/buildbot/+/refs/heads/main/shaders/BUILD.bazel. +This final docker image is then uploaded to GCR and deployed to skia.org. + +# Running locally + +To manually build a local Docker image: + + make build + +This can then be run locally by: + + docker run -p 8080:8000 -it + +or debugged by: + + docker run -it --entrypoint /bin/sh + +## Deployment + +This docker image is automatically built and pushed to GCR by Louhi. If there +is a need to manually push it this can be done as so: + + make push_shaders_I_am_really_sure diff --git a/infra/skottie/BUILD.bazel b/infra/skottie/BUILD.bazel new file mode 100644 index 000000000000..52271d7b460b --- /dev/null +++ b/infra/skottie/BUILD.bazel @@ -0,0 +1,23 @@ +load("//bazel:skia_app_container.bzl", "skia_app_container") + +# Layer the CanvasKit component on top of the skottie-base Docker +# Image to create the final Docker image. +skia_app_container( + name = "skottie_container", + base_image = "@skottie-base//image", + dirs = { + "/usr/local/share/skottie/": [ + [ + # This brings in all the CanvasKit build files. + "//modules/canvaskit:canvaskit", + "0644", + ], + [ + "//modules/canvaskit:version.js", + "0644", + ], + ], + }, + entrypoint = "/usr/local/bin/skottie", + repository = "skia-public/skottie-final", +) diff --git a/infra/skottie/Makefile b/infra/skottie/Makefile new file mode 100644 index 000000000000..7a1d787db63a --- /dev/null +++ b/infra/skottie/Makefile @@ -0,0 +1,12 @@ +BAZEL?=bazelisk + +.PHONY: build +build: + $(BAZEL) run //infra/skottie:skottie_container \ + --config=skottie_container + +# Review section in README.md before running this target +.PHONY: push_skottie_I_am_really_sure +push_skottie_I_am_really_sure: + $(BAZEL) run //infra/skottie:push_skottie_container \ + --config=skottie_container diff --git a/infra/skottie/README.md b/infra/skottie/README.md new file mode 100644 index 000000000000..e07f735007f8 --- /dev/null +++ b/infra/skottie/README.md @@ -0,0 +1,28 @@ +This directory contains the build rules to create the final Docker image for +the Skia Skottie hosted at skottie.skia.org. + +This build rule inserts the necessary Skia artifact (CanvasKit) into +an intermediate Docker image created in the Skia infrastructure repository at +https://skia.googlesource.com/buildbot/+/refs/heads/main/skottie/BUILD.bazel. +This final docker image is then uploaded to GCR and deployed to skia.org. + +# Running locally + +To manually build a local Docker image: + + make build + +This can then be run locally by: + + docker run -p 8080:8000 -it + +or debugged by: + + docker run -it --entrypoint /bin/sh + +## Deployment + +This docker image is automatically built and pushed to GCR by Louhi. If there +is a need to manually push it this can be done as so: + + make push_skottie_I_am_really_sure diff --git a/modules/bentleyottmann/BUILD.bazel b/modules/bentleyottmann/BUILD.bazel new file mode 100644 index 000000000000..2bfcbc78f168 --- /dev/null +++ b/modules/bentleyottmann/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_library") + +licenses(["notice"]) + +exports_files_legacy() + +skia_cc_library( + name = "bentleyottmann", + srcs = ["//modules/bentleyottmann/src:srcs"], + hdrs = ["//modules/bentleyottmann/include:hdrs"], + visibility = ["//:__subpackages__"], + deps = [ + "//:skia_internal", + ], +) diff --git a/modules/bentleyottmann/BUILD.gn b/modules/bentleyottmann/BUILD.gn new file mode 100644 index 000000000000..8a6725592f58 --- /dev/null +++ b/modules/bentleyottmann/BUILD.gn @@ -0,0 +1,34 @@ +# Copyright 2023 Google LLC. + +import("../../gn/skia.gni") +import("bentleyottmann.gni") + +declare_args() { + skia_enable_bentleyottmann = true +} + +if (skia_enable_bentleyottmann) { + config("public_config") { + include_dirs = [ "include" ] + } + + skia_component("bentleyottmann") { + import("bentleyottmann.gni") + public_configs = [ ":public_config" ] + public = bentleyottmann_public + sources = bentleyottmann_sources + deps = [ "../..:skia" ] + } + + if (skia_enable_tools) { + skia_source_set("tests") { + testonly = true + sources = bentleyottmann_tests + deps = [ + ":bentleyottmann", + "../..:skia", + "../..:test", + ] + } + } +} diff --git a/modules/bentleyottmann/bentleyottmann.gni b/modules/bentleyottmann/bentleyottmann.gni new file mode 100644 index 000000000000..36e519590130 --- /dev/null +++ b/modules/bentleyottmann/bentleyottmann.gni @@ -0,0 +1,34 @@ +# DO NOT EDIT: This is a generated file. +# See //bazel/exporter_tool/README.md for more information. +# +# The sources of truth are: +# //modules/bentleyottmann/include/BUILD.bazel +# //modules/bentleyottmann/src/BUILD.bazel +# //modules/bentleyottmann/tests/BUILD.bazel + +# To update this file, run make -C bazel generate_gni + +_modules = get_path_info("../../modules", "abspath") + +# Generated by Bazel rule //modules/bentleyottmann/include:hdrs +bentleyottmann_public = [ + "$_modules/bentleyottmann/include/BentleyOttmann1.h", + "$_modules/bentleyottmann/include/EventQueue.h", + "$_modules/bentleyottmann/include/Point.h", + "$_modules/bentleyottmann/include/Segment.h", +] + +# Generated by Bazel rule //modules/bentleyottmann/src:srcs +bentleyottmann_sources = [ + "$_modules/bentleyottmann/src/BentleyOttmann1.cpp", + "$_modules/bentleyottmann/src/EventQueue.cpp", + "$_modules/bentleyottmann/src/Point.cpp", + "$_modules/bentleyottmann/src/Segment.cpp", +] + +# Generated by Bazel rule //modules/bentleyottmann/tests:tests +bentleyottmann_tests = [ + "$_modules/bentleyottmann/tests/EventQueueTest.cpp", + "$_modules/bentleyottmann/tests/PointTest.cpp", + "$_modules/bentleyottmann/tests/SegmentTest.cpp", +] diff --git a/modules/bentleyottmann/include/BUILD.bazel b/modules/bentleyottmann/include/BUILD.bazel new file mode 100644 index 000000000000..ea6cec4f7a5c --- /dev/null +++ b/modules/bentleyottmann/include/BUILD.bazel @@ -0,0 +1,16 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_filegroup") + +licenses(["notice"]) + +exports_files_legacy() + +skia_filegroup( + name = "hdrs", + srcs = [ + "BentleyOttmann1.h", + "EventQueue.h", + "Point.h", + "Segment.h", + ], + visibility = ["//modules/bentleyottmann:__pkg__"], +) diff --git a/modules/bentleyottmann/include/BentleyOttmann1.h b/modules/bentleyottmann/include/BentleyOttmann1.h new file mode 100644 index 000000000000..991d179df691 --- /dev/null +++ b/modules/bentleyottmann/include/BentleyOttmann1.h @@ -0,0 +1,22 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef BentleyOttman1_DEFINED +#define BentleyOttman1_DEFINED + +#include "include/core/SkSpan.h" +#include "modules/bentleyottmann/include/Point.h" +#include "modules/bentleyottmann/include/Segment.h" + +#include + +namespace bentleyottmann { +// Takes in a list of segments, and returns intersection points found in the list of segments. +// A return value of nullopt means that the data are out of range. An empty vector means there +// are no self intersections. +// +// If nullopt is returned, you could divide all your points by 2, and try again. +std::optional> bentley_ottmann_1(SkSpan segments); +} // namespace bentleyottmann + +#endif // BentleyOttman1_DEFINED diff --git a/modules/bentleyottmann/include/EventQueue.h b/modules/bentleyottmann/include/EventQueue.h new file mode 100644 index 000000000000..854c9eeff393 --- /dev/null +++ b/modules/bentleyottmann/include/EventQueue.h @@ -0,0 +1,94 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef EventQueue_DEFINED +#define EventQueue_DEFINED + +#include "include/core/SkSpan.h" +#include "include/private/base/SkAssert.h" +#include "modules/bentleyottmann/include/Point.h" +#include "modules/bentleyottmann/include/Segment.h" + +#include +#include +#include +#include +#include +#include + +namespace bentleyottmann { + +struct BoundingBox { + Point topLeft = Point::Largest(); + Point bottomRight = Point::Smallest(); + + void addPoint(Point p) { + topLeft.x = std::min(p.x, topLeft.x); + topLeft.y = std::min(p.y, topLeft.y); + bottomRight.x = std::max(p.x, bottomRight.x); + bottomRight.y = std::max(p.y, bottomRight.y); + } +}; + +class EventQueue; +class SweepStatus; + +struct Lower { + // All Lowers are equal. + friend bool operator< (const Lower&, const Lower&) { + return false; + } +}; + +struct Upper { + Segment s; + + // Arbitrary comparison for queue uniqueness. + friend bool operator< (const Upper& u0, const Upper& u1) { + return std::tie(u0.s.p0, u0.s.p1) < std::tie(u1.s.p0, u1.s.p1); + } +}; + +struct Cross { + Segment s0; + Segment s1; + + // Arbitrary comparison for queue uniqueness. + friend bool operator< (const Cross& c0, const Cross& c1) { + return std::tie(c0.s0.p0, c0.s0.p1, c0.s1.p0, c0.s1.p1) < + std::tie(c1.s0.p0, c1.s0.p1, c1.s1.p0, c1.s1.p1); + } +}; + +using EventType = std::variant; + +struct Event { + Point where; + EventType type; + + friend bool operator< (const Event& e0, const Event& e1) { + return std::tie(e0.where, e0.type) < std::tie(e1.where, e1.type); + } +}; + +class EventQueue { +public: + // Queue ordered by Event where the point is the most important followed by type and then + // contents of the event. The ordering of the contents of the event is arbitrary but need to + // enforce uniqueness of the events in the queue. + using Queue = std::set; + + static std::optional Make(SkSpan segments); + + EventQueue(Queue&& queue); + + void add(const Event& e); + + bool hasMoreEvents() const; + Event nextEvent(); + +private: + Queue fQueue; +}; +} // namespace bentleyottmann +#endif // EventQueue_DEFINED diff --git a/modules/bentleyottmann/include/Point.h b/modules/bentleyottmann/include/Point.h new file mode 100644 index 000000000000..5e3ebce6d9af --- /dev/null +++ b/modules/bentleyottmann/include/Point.h @@ -0,0 +1,38 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef Point_DEFINED +#define Point_DEFINED + +#include + +namespace bentleyottmann { +struct Point { + int32_t x; + int32_t y; + + // Relation for ordering events. + friend bool operator<(const Point& p0, const Point& p1); + friend bool operator>(const Point& p0, const Point& p1); + friend bool operator>=(const Point& p0, const Point& p1); + friend bool operator<=(const Point& p0, const Point& p1); + + // Equality + friend bool operator==(const Point& p0, const Point& p1); + friend bool operator!=(const Point& p0, const Point& p1); + + // Extremes + static Point Smallest(); + static Point Largest(); + static bool DifferenceTooBig(Point p0, Point p1); + + // Terms + friend Point operator+(const Point& p0, const Point& p1) { + return {p0.x + p1.x, p0.y + p1.y}; + } + friend Point operator-(const Point& p0, const Point& p1) { + return {p0.x - p1.x, p0.y - p1.y}; + } +}; +} // namespace bentleyottmann +#endif // Point_DEFINED diff --git a/modules/bentleyottmann/include/Segment.h b/modules/bentleyottmann/include/Segment.h new file mode 100644 index 000000000000..a00640b186e9 --- /dev/null +++ b/modules/bentleyottmann/include/Segment.h @@ -0,0 +1,35 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef Segment_DEFINED +#define Segment_DEFINED + +#include "modules/bentleyottmann/include/Point.h" + +#include +#include + +namespace bentleyottmann { + +struct Segment { + const Point p0; + const Point p1; + + // Y is larger going down the y-axis. + // Get the higher point. It will be left most for horizontal segment. + Point upper() const; + + // Get the lower point. It will be the right most for horizontal segment. + Point lower() const; + + std::tuple bounds() const; +}; + +bool no_intersection_by_bounding_box(const Segment& s0, const Segment& s1); + +// Finds the intersection of s0 and s1. Returns nullopt if there is no intersection. +// Note this intersection assumes that line segments do not include their end points. +std::optional intersect(const Segment& s0, const Segment& s1); + +} // namespace bentleyottmann +#endif // Segment_DEFINED diff --git a/modules/bentleyottmann/src/BUILD.bazel b/modules/bentleyottmann/src/BUILD.bazel new file mode 100644 index 000000000000..66fd51d39e8b --- /dev/null +++ b/modules/bentleyottmann/src/BUILD.bazel @@ -0,0 +1,16 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_filegroup") + +licenses(["notice"]) + +exports_files_legacy() + +skia_filegroup( + name = "srcs", + srcs = [ + "BentleyOttmann1.cpp", + "EventQueue.cpp", + "Point.cpp", + "Segment.cpp", + ], + visibility = ["//modules/bentleyottmann:__pkg__"], +) diff --git a/modules/bentleyottmann/src/BentleyOttmann1.cpp b/modules/bentleyottmann/src/BentleyOttmann1.cpp new file mode 100644 index 000000000000..61497bce344c --- /dev/null +++ b/modules/bentleyottmann/src/BentleyOttmann1.cpp @@ -0,0 +1,30 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/BentleyOttmann1.h" + +#include "modules/bentleyottmann/include/EventQueue.h" + +#include +#include + +namespace bentleyottmann { + +class SweepLine { +public: + void handleEvent(const Event& event, EventQueue* eventQueue) {} +}; + +std::optional> bentley_ottmann_1(SkSpan segments) { + if (auto possibleEQ = EventQueue::Make(segments)) { + EventQueue eventQueue = std::move(possibleEQ.value()); + SweepLine sweepLine; + while(eventQueue.hasMoreEvents()) { + Event event = eventQueue.nextEvent(); + sweepLine.handleEvent(event, &eventQueue); + } + + } + return std::nullopt; +} +} // namespace bentleyottmann diff --git a/modules/bentleyottmann/src/EventQueue.cpp b/modules/bentleyottmann/src/EventQueue.cpp new file mode 100644 index 000000000000..92f41fa90f7c --- /dev/null +++ b/modules/bentleyottmann/src/EventQueue.cpp @@ -0,0 +1,62 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + + +#include "modules/bentleyottmann/include/EventQueue.h" + +namespace bentleyottmann { + +// -- EventQueue ----------------------------------------------------------------------------------- +std::optional EventQueue::Make(SkSpan segments) { + Queue queue; + + int32_t left = Point::Largest().x, + top = Point::Largest().y, + right = Point::Smallest().x, + bottom = Point::Smallest().y; + + for(const Segment& s : segments) { + auto [l, t, r, b] = s.bounds(); + left = std::min(l, left); + top = std::min(t, top); + right = std::max(r, right); + bottom = std::max(b, bottom); + + queue.insert(Event{s.upper(), Upper{s}}); + } + + // If min max difference is too large, fail. + if (Point::DifferenceTooBig(Point{left, top}, Point{right, bottom})) { + return std::nullopt; + } + + return EventQueue{std::move(queue)}; +} + +EventQueue::EventQueue(EventQueue::Queue&& queue) : fQueue{std::move(queue)} { } + +void EventQueue::add(const Event& event) { + // New events must be up stream from the current event. + SkASSERT(!fQueue.empty() && fQueue.begin()->where < event.where); + auto [_, success] = fQueue.insert(event); + SkASSERT_RELEASE(success); +} + +bool EventQueue::hasMoreEvents() const { + return !fQueue.empty(); +} + +Event EventQueue::nextEvent() { + SkASSERT(this->hasMoreEvents()); + + auto firstElement = fQueue.begin(); + + // Extract event at the beginning of the queue. + Event event = *firstElement; + + // Remove the beginning element from the queue. + fQueue.erase(firstElement); + + return event; +} +} // namespace bentleyottmann diff --git a/modules/bentleyottmann/src/Point.cpp b/modules/bentleyottmann/src/Point.cpp new file mode 100644 index 000000000000..c2525c4ca343 --- /dev/null +++ b/modules/bentleyottmann/src/Point.cpp @@ -0,0 +1,54 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/Point.h" + +#include +#include + +namespace bentleyottmann { + +// -- Point ---------------------------------------------------------------------------------------- +bool operator<(const Point& p0, const Point& p1) { + return std::tie(p0.y, p0.x) < std::tie(p1.y, p1.x); +} + +bool operator>(const Point& p0, const Point& p1) { + return p1 < p0; +} + +bool operator>=(const Point& p0, const Point& p1) { + return !(p0 < p1); +} + +bool operator<=(const Point& p0, const Point& p1) { + return !(p0 > p1); +} + +bool operator==(const Point& p0, const Point& p1) { + return std::tie(p0.y, p0.x) == std::tie(p1.y, p1.x); +} + +bool operator!=(const Point& p0, const Point& p1) { + return !(p0 == p1); +} + +Point Point::Smallest() { + const int32_t kMinCoordinate = std::numeric_limits::min(); + return {kMinCoordinate, kMinCoordinate}; +} + +Point Point::Largest() { + const int32_t kMaxCoordinate = std::numeric_limits::max(); + return {kMaxCoordinate, kMaxCoordinate}; +} + +bool Point::DifferenceTooBig(Point p0, Point p1) { + auto tooBig = [](int32_t a, int32_t b) { + return (b > 0 && a < std::numeric_limits::min() + b) || + (b < 0 && a > std::numeric_limits::max() + b); + }; + + return tooBig(p0.x, p1.x) || tooBig(p0.y, p1.y); +} +} // namespace bentleyottmann diff --git a/modules/bentleyottmann/src/Segment.cpp b/modules/bentleyottmann/src/Segment.cpp new file mode 100644 index 000000000000..3d4a9abe010b --- /dev/null +++ b/modules/bentleyottmann/src/Segment.cpp @@ -0,0 +1,140 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/Segment.h" + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkTo.h" + +#include +#include + +namespace bentleyottmann { + +// -- Segment -------------------------------------------------------------------------------------- +Point Segment::upper() const { + return std::min(p0, p1); +} + +Point Segment::lower() const { + return std::max(p0, p1); +} + +// Use auto [l, t, r, b] = s.bounds(); +std::tuple Segment::bounds() const { + auto [l, r] = std::minmax(p0.x, p1.x); + auto [t, b] = std::minmax(p0.y, p1.y); + return std::make_tuple(l, t, r, b); +} + +bool no_intersection_by_bounding_box(const Segment& s0, const Segment& s1) { + auto [left0, top0, right0, bottom0] = s0.bounds(); + auto [left1, top1, right1, bottom1] = s1.bounds(); + // If the sides of the box touch, then there is no new intersection. + return right0 <= left1 || right1 <= left0 || bottom0 <= top1 || bottom1 <= top0; +} + +// Derivation of Intersection +// The intersection point I = (X, Y) of the two segments (x0, y0) -> (x1, y1) +// and (x2, y2) -> (x3, y3). +// X = x0 + s(x1 - x0) = x2 + t(x3 - x2) +// Y = y0 + s(y1 - y0) = y2 + t(y3 - y2) +// +// Solve for s in terms of x. +// x0 + s(x1 - x0) = x2 + t(x3 - x2) +// s(x1 - x0) = x2 - x0 + t(x3 - x2) +// s = (x2 - x0 + t(x3 - x2)) / (x1 - x0) +// +// Back substitute s into the equation for Y. +// y0 + ((x2 - x0 + t(x3 - x2)) / (x1 - x0))(y1 - y0) = y2 + t(y3 - y2) +// (x2 - x0 + t(x3 - x2)) / (x1 - x0) = (y2 - y1 + t(y3 - y2)) / (y1 - y0) +// (y1 - y0)(x2 - x0 + t(x3 - x2)) = (x1 - x0)(y2 - y1 + t(y3 - y2)) +// (y1 - y0)(x2 - x0) + t(y1 - y0)(x3 - x2) = (x1 - x0)(y2 - y1) + t(x1 - x0)(y3 - y2) +// Collecting t's on one side, and constants on the other. +// t((y1 - y0)(x3 - x2) - (x1 - x0)(y3 - y2)) = (x1 - x0)(y2 - y1) - (y1 - y0)(x2 - x0) +// Assign names and vectors to extract the cross products. The vector (x0, y0) -> (x1, y1) is +// P0 -> P1, and is named Q = (x1 - x0, y1 - y0) = P1 - P0. The following vectors are defined in +// a similar way. +// * Q: P1 - P0 +// * R: P2 - P0 +// * S: P3 - P0 +// * T: P3 - P2 +// Extracting cross products from above. +// t((P3 - P2) x (P1 - P0)) = (P1 - P0) x (P2 - P0) +// t(T x Q) = Q x R +// t = (Q x R) / (T x Q) +// But, T x Q is not something we want to calculate. What must be calculated is Q x R and Q x S. +// If these two cross products have different signs, then there is an intersection, otherwise +// there is not. We can calculate T x Q in terms of Q x R and Q x S in the following way. +// T x Q = Q x R - Q x S +// = (P1 - P0) x (P2 - P0) - (P1 - P0) x (P3 - P0) +// = (P1 - P0) x ((P2 - P0) - (P3 - P0)) +// = (P1 - P0) x (P2 - P3) +// = Q x -T +// = -(Q x T) +// = T x Q. +// So, t is equal to +// t = (Q x R) / ((Q x R) - (Q x S)). +// This is then substituted into I = (x2 + t(x3 - x2), y2 + t(y3 - y2)). +// +// This method of calculating the intersection only uses 6 multiplies, and 1 division. It also +// determines if the two segments cross with no round-off error and is always correct using 4 +// multiplies. However, the actual crossing point is rounded to fit back into the int32_t. +std::optional intersect(const Segment& s0, const Segment& s1) { + + // Check if the bounds intersect. + if (no_intersection_by_bounding_box(s0, s1)) { + return std::nullopt; + } + + // Create the Q, R, and S vectors rooted at s0.p0. + Point O = s0.p0, + Q = s0.p1 - O, + R = s1.p0 - O, + S = s1.p1 - O; + + // 64-bit cross product. + auto cross = [](const Point& v0, const Point& v1) { + int64_t x0 = SkToS64(v0.x), + y0 = SkToS64(v0.y), + x1 = SkToS64(v1.x), + y1 = SkToS64(v1.y); + return x0 * y1 - y0 * x1; + }; + + // Calculate the two cross products. + int64_t QxR = cross(Q, R), + QxS = cross(Q, S); + + // If the endpoint is on Q, then there is no crossing. Only true intersections are returned. + // For the intersection calculation, line segments do not include their end-points. + if (QxR == 0 || QxS == 0) { + return std::nullopt; + } + + // The cross products have the same sign, so no intersection. There is no round-off error in + // QXR or QXS. This ensures that there is really an intersection. + if ((QxR ^ QxS) >= 0) { + return std::nullopt; + } + + // TODO: this calculation probably needs to use 32-bit x 64-bit -> 96-bit multiply and + // 96-bit / 64-bit -> 32-bit quotient and a 64-bit remainder. Fake it with doubles below. + // N / D constitute a value on [0, 1], where the intersection I is + // I = s0.p0 + (s0.p1 - s0.p0) * N/D. + double N = QxR, + D = QxR - QxS, + t = N / D; + + SkASSERT(0 <= t && t <= 1); + + // Calculate the intersection using doubles. + // TODO: This is just a placeholder approximation for calculating x and y should use big math + // above. + int32_t x = std::round(t * (s1.p1.x - s1.p0.x) + s1.p0.x), + y = std::round(t * (s1.p1.y - s1.p0.y) + s1.p0.y); + + return Point{x, y}; +} + +} // namespace bentleyottmann diff --git a/include/gpu/dawn/BUILD.bazel b/modules/bentleyottmann/tests/BUILD.bazel similarity index 53% rename from include/gpu/dawn/BUILD.bazel rename to modules/bentleyottmann/tests/BUILD.bazel index 184859f5f6dd..b18337715d9f 100644 --- a/include/gpu/dawn/BUILD.bazel +++ b/modules/bentleyottmann/tests/BUILD.bazel @@ -5,7 +5,10 @@ licenses(["notice"]) exports_files_legacy() skia_filegroup( - name = "public_hdrs", - srcs = ["GrDawnTypes.h"], - visibility = ["//include/gpu:__pkg__"], + name = "tests", + srcs = [ + "EventQueueTest.cpp", + "PointTest.cpp", + "SegmentTest.cpp", + ], ) diff --git a/modules/bentleyottmann/tests/EventQueueTest.cpp b/modules/bentleyottmann/tests/EventQueueTest.cpp new file mode 100644 index 000000000000..615d2b179f24 --- /dev/null +++ b/modules/bentleyottmann/tests/EventQueueTest.cpp @@ -0,0 +1,88 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/EventQueue.h" +#include "tests/Test.h" + +using namespace bentleyottmann; + +DEF_TEST(BO_EventQueueBasic, reporter) { + { + EventQueue::Queue q; + EventQueue eq{std::move(q)}; + REPORTER_ASSERT(reporter, !eq.hasMoreEvents()); + } + { + EventQueue::Queue q; + Point eventPoint = {100, 100}; + q.insert({eventPoint, Lower{} }); + EventQueue eq{std::move(q)}; + { + REPORTER_ASSERT(reporter, eq.hasMoreEvents()); + Event e = eq.nextEvent(); + REPORTER_ASSERT(reporter, e.where == eventPoint); + REPORTER_ASSERT(reporter, !eq.hasMoreEvents()); + } + } + { // Check that Lower events are de-duplicated. + EventQueue::Queue q; + Point eventPoint = {100, 100}; + q.insert({eventPoint, Lower{}}); + q.insert({eventPoint, Lower{}}); + EventQueue eq{std::move(q)}; + { + // There should be only one lower because of queue de-duplication + REPORTER_ASSERT(reporter, eq.hasMoreEvents()); + auto [p, _] = eq.nextEvent(); + REPORTER_ASSERT(reporter, p == eventPoint); + REPORTER_ASSERT(reporter, !eq.hasMoreEvents()); + } + } + { // Check that Lower distinct Lower events are distinct. + EventQueue::Queue q; + Point eventPoint1 = {100, 100}; + Point eventPoint2 = {100, 101}; + + q.insert({eventPoint1, Lower{}}); + q.insert({eventPoint2, Lower{}}); + EventQueue eq{std::move(q)}; + { + // There should be only one lower because of queue de-duplication + REPORTER_ASSERT(reporter, eq.hasMoreEvents()); + auto [p, _] = eq.nextEvent(); + REPORTER_ASSERT(reporter, p == eventPoint1); + } + { + // There should be only one lower because of queue de-duplication + REPORTER_ASSERT(reporter, eq.hasMoreEvents()); + auto [p, _] = eq.nextEvent(); + REPORTER_ASSERT(reporter, p == eventPoint2); + REPORTER_ASSERT(reporter, !eq.hasMoreEvents()); + } + } + { // Check that non-Lower events are separate. + EventQueue::Queue q; + Segment s0 {{0, 0}, {100, 100}}; + Segment s1 {{0, 0}, {-100, 100}}; + q.insert({Point{0, 0}, Upper{s0}}); + q.insert({Point{0, 0}, Upper{s1}}); + EventQueue eq{std::move(q)}; + { + REPORTER_ASSERT(reporter, eq.hasMoreEvents()); + Event e = eq.nextEvent(); + Point upperPt = Point{0, 0}; + REPORTER_ASSERT(reporter, e.where == upperPt); + REPORTER_ASSERT(reporter, e.type.index() == 2); + Upper upper = std::get(e.type); + REPORTER_ASSERT(reporter, !(upper < Upper{s1}) && !(Upper{s1} < upper)); + Event e2 = eq.nextEvent(); + REPORTER_ASSERT(reporter, e2.where == upperPt); + REPORTER_ASSERT(reporter, e2.type.index() == 2); + Upper upper2 = std::get(e2.type); + REPORTER_ASSERT(reporter, !(upper2 < Upper{s0}) && !(Upper{s0} < upper2)); + REPORTER_ASSERT(reporter, !eq.hasMoreEvents()); + } + + } +} + diff --git a/modules/bentleyottmann/tests/PointTest.cpp b/modules/bentleyottmann/tests/PointTest.cpp new file mode 100644 index 000000000000..d5461f76e05f --- /dev/null +++ b/modules/bentleyottmann/tests/PointTest.cpp @@ -0,0 +1,47 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/Point.h" +#include "tests/Test.h" + +using namespace bentleyottmann; + +DEF_TEST(BO_PointBasic, reporter) { + { + Point p0 = {0, 0}; + Point p1 = {0, 0}; + REPORTER_ASSERT(reporter, !(p0 < p1)); + REPORTER_ASSERT(reporter, !(p1 < p0)); + REPORTER_ASSERT(reporter, p0 == p1); + } + + { + Point p0 = {0, 0}; + Point p1 = {1, 1}; + REPORTER_ASSERT(reporter, p0 < p1); + REPORTER_ASSERT(reporter, !(p1 < p0)); + REPORTER_ASSERT(reporter, p0 != p1); + } + + { + // Same y different x. + Point p0 = {0, 0}; + Point p1 = {1, 0}; + REPORTER_ASSERT(reporter, p0 < p1); + REPORTER_ASSERT(reporter, !(p1 < p0)); + REPORTER_ASSERT(reporter, p0 != p1); + } + + { + REPORTER_ASSERT(reporter, !Point::DifferenceTooBig(Point::Smallest(), Point{0, 0})); + REPORTER_ASSERT(reporter, !Point::DifferenceTooBig(Point::Largest(), Point{0, 0})); + REPORTER_ASSERT(reporter, Point::DifferenceTooBig(Point{0, 0}, Point::Smallest())); + REPORTER_ASSERT(reporter, !Point::DifferenceTooBig(Point{0, 0}, Point::Largest())); + REPORTER_ASSERT(reporter, Point::DifferenceTooBig(Point::Smallest(), Point::Largest())); + REPORTER_ASSERT(reporter, Point::DifferenceTooBig(Point::Largest(), Point::Smallest())); + REPORTER_ASSERT(reporter, + !Point::DifferenceTooBig(Point::Smallest() + Point{1, 1}, Point{0, 0})); + REPORTER_ASSERT(reporter, + !Point::DifferenceTooBig(Point{0, 0}, Point::Smallest() + Point{1, 1})); + } +} diff --git a/modules/bentleyottmann/tests/SegmentTest.cpp b/modules/bentleyottmann/tests/SegmentTest.cpp new file mode 100644 index 000000000000..00942d3514c6 --- /dev/null +++ b/modules/bentleyottmann/tests/SegmentTest.cpp @@ -0,0 +1,162 @@ +// Copyright 2023 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#include "modules/bentleyottmann/include/Segment.h" +#include "tests/Test.h" + +using namespace bentleyottmann; + +DEF_TEST(BO_SegmentBasic, reporter) { + { + Segment s = {{0, 0}, {1, 1}}; + REPORTER_ASSERT(reporter, s.upper() == s.p0); + REPORTER_ASSERT(reporter, s.lower() == s.p1); + } + + { + Segment s = {{1, 0}, {0, 1}}; + REPORTER_ASSERT(reporter, s.upper() == s.p0); + REPORTER_ASSERT(reporter, s.lower() == s.p1); + } + + { + Segment s = {{1, 1}, {0, 0}}; + REPORTER_ASSERT(reporter, s.upper() == s.p1); + REPORTER_ASSERT(reporter, s.lower() == s.p0); + } + + { + Segment s = {{0, 1}, {1, 0}}; + REPORTER_ASSERT(reporter, s.upper() == s.p1); + REPORTER_ASSERT(reporter, s.lower() == s.p0); + } +} + +static Segment swap_ends(const Segment& s) { + return {s.p1, s.p0}; +} + +DEF_TEST(BO_no_intersection_bounding_box, reporter) { + Segment interesting[] = {{Point::Smallest(), Point::Smallest()+ Point{10, 5}}, + {Point::Largest(), Point::Largest() - Point{10, 5}}, + {{-10, -5}, {10, 5}}}; + + // Intersection + for (auto& s0 : interesting) { + auto [l, t, r, b] = s0.bounds(); + + // Points in the interior of interesting rectangles + for(Point p : {Point {l + 1, t + 1}, + Point {r - 1, t + 1}, + Point {r - 1, b - 1}, + Point {l + 1, b - 1}}) { + Segment s1 = {p, {0, 0}}; + REPORTER_ASSERT(reporter, !no_intersection_by_bounding_box(s0, s1)); + REPORTER_ASSERT(reporter, !no_intersection_by_bounding_box(s1, s0)); + REPORTER_ASSERT(reporter, + !no_intersection_by_bounding_box(swap_ends(s0), swap_ends(s1))); + REPORTER_ASSERT(reporter, + !no_intersection_by_bounding_box(swap_ends(s0), swap_ends(s1))); + } + } + + int32_t small = Point::Smallest().x, + big = Point::Largest().x; + + // No Intersection + for (auto& s0 : interesting) { + auto [l, t, r, b] = s0.bounds(); + + Segment outside[] = {{{r, t}, {big, b}}, + {{r, b}, {big, big}}, + {{l, b}, {r, big}}, + {{l, b}, {small, big}}, + {{l, t}, {small, b}}, + {{l, t}, {small, small}}, + {{l, t}, {r, small}}, + {{r, t}, {small, small}}}; + + for (auto& s1 : outside) { + REPORTER_ASSERT(reporter, no_intersection_by_bounding_box(s0, s1)); + REPORTER_ASSERT(reporter, no_intersection_by_bounding_box(s1, s0)); + REPORTER_ASSERT(reporter, + no_intersection_by_bounding_box(swap_ends(s0), swap_ends(s1))); + REPORTER_ASSERT(reporter, + no_intersection_by_bounding_box(swap_ends(s0), swap_ends(s1))); + } + } +} + +DEF_TEST(BO_intersectBasic, reporter) { + + auto checkIntersection = [reporter](Segment s0, Segment s1, Point expected) { + { + auto answer = intersect(s0, s1); + REPORTER_ASSERT(reporter, answer.has_value()); + REPORTER_ASSERT(reporter, answer.value() == expected); + } + { + auto answer = intersect(s1, s0); + REPORTER_ASSERT(reporter, answer.has_value()); + REPORTER_ASSERT(reporter, answer.value() == expected); + } + { + auto answer = intersect(swap_ends(s0), swap_ends(s1)); + REPORTER_ASSERT(reporter, answer.has_value()); + REPORTER_ASSERT(reporter, answer.value() == expected); + } + { + auto answer = intersect(swap_ends(s1), swap_ends(s0)); + REPORTER_ASSERT(reporter, answer.has_value()); + REPORTER_ASSERT(reporter, answer.value() == expected); + } + }; + + { + Segment s0 = {{-1, 0}, {1, 0}}, + s1 = {{ 0, 1}, {0, -1}}; + + checkIntersection(s0, s1, Point{0, 0}); + } + { + Segment s0 = {{-1, 0}, {5, 0}}, + s1 = {{ 0, 1}, {0, -1}}; + + checkIntersection(s0, s1, Point{0, 0}); + } + + { + Segment s0 = {{5, 0}, {-1, 0}}, + s1 = {{ 0, -1}, {0, 1}}; + + checkIntersection(s0, s1, Point{0, 0}); + } + + { + Segment s0 = {{-5, -5}, {5, 5}}, + s1 = {{-5, 5}, {5, -5}}; + + checkIntersection(s0, s1, Point{0, 0}); + } + + // Test very close segments (x0, 0) -> (x1, 1) & (x2, 0) -> (x3, 1) + for (int32_t x0 = -10; x0 <= 10; x0++) { + for (int32_t x1 = -10; x1 <= 10; x1++) { + for (int32_t x2 = -10; x2 <= 10; x2++) { + for (int32_t x3 = -10; x3 <= 10; x3++) { + Point P0 = {x0, 0}, + P1 = {x1, 1}, + P2 = {x2, 0}, + P3 = {x3, 1}; + auto actual = intersect({P0, P1}, {P2, P3}); + bool expected = (x0 < x2 && x3 < x1) || (x2 < x0 && x1 < x3); + REPORTER_ASSERT(reporter, actual.has_value() == expected); + if (actual) { + int32_t y = std::abs(x2 - x0) >= std::abs(x3 - x1); + REPORTER_ASSERT(reporter, actual.value().y == y); + } + } + } + } + } +} diff --git a/modules/canvaskit/BUILD.bazel b/modules/canvaskit/BUILD.bazel index b9ddc2f976b0..07bf1012c5e5 100644 --- a/modules/canvaskit/BUILD.bazel +++ b/modules/canvaskit/BUILD.bazel @@ -1,5 +1,5 @@ load("//bazel:macros.bzl", "bool_flag", "exports_files_legacy", "skia_filegroup", "wasm_cc_binary") -load("//bazel:karma_test.bzl", "karma_test") +load("//bazel/karma:karma_test.bzl", "karma_test") load("@skia_user_config//:copts.bzl", "DEFAULT_COPTS") licenses(["notice"]) @@ -36,7 +36,6 @@ DEBUG_OPTS = [ "-sGL_ASSERTIONS", "-O0", "-g3", - "--source-map-base=/build/", ] skia_filegroup( @@ -298,7 +297,12 @@ wasm_cc_binary( # Whatever is before the dot will be the name of the output js and wasm, aka "the stem". # https://github.com/emscripten-core/emsdk/blob/82ad00499a42abde16b363239d2bc83bf5d863ab/bazel/emscripten_toolchain/wasm_cc_binary.bzl#L91 cc_target = ":canvaskit.build", - visibility = ["//infra/debugger-app:__pkg__"], + visibility = [ + "//infra/debugger-app:__pkg__", + "//infra/jsfiddle:__pkg__", + "//infra/shaders:__pkg__", + "//infra/skottie:__pkg__", + ], ) bool_flag( diff --git a/modules/canvaskit/BUILD.gn b/modules/canvaskit/BUILD.gn index 592ff50ba5bc..d569d403a5d4 100644 --- a/modules/canvaskit/BUILD.gn +++ b/modules/canvaskit/BUILD.gn @@ -159,8 +159,6 @@ skia_wasm_lib("canvaskit") { "-sASSERTIONS=1", "-sGL_ASSERTIONS=1", "-g3", - "--source-map-base", - "/node_modules/canvaskit/bin/", "--pre-js", rebase_path("debug.js"), ] @@ -320,9 +318,7 @@ skia_wasm_lib("canvaskit") { ldflags += [ "--pre-js", rebase_path("postamble.js"), - "-sLLD_REPORT_UNDEFINED", "-sALLOW_MEMORY_GROWTH", - "-sUSE_PTHREADS=0", "-sDISABLE_EXCEPTION_CATCHING", "-sNODEJS_CATCH_EXIT=0", "-sDYNAMIC_EXECUTION=0", @@ -369,14 +365,6 @@ skia_wasm_lib("canvaskit") { "CK_ENABLE_WEBGL", ] } - if (skia_canvaskit_enable_webgpu) { - defines += [ - "SK_DAWN", - "CK_ENABLE_WEBGPU", - ] - } - } else { - defines += [ "SK_ENABLE_SKSL" ] } if (skia_canvaskit_enable_pathops) { diff --git a/modules/canvaskit/CHANGELOG.md b/modules/canvaskit/CHANGELOG.md index 1e1debb56cac..07a555c7dce6 100644 --- a/modules/canvaskit/CHANGELOG.md +++ b/modules/canvaskit/CHANGELOG.md @@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `Paint.setBlender` Sets the current blender. - `Blender.Mode` Create a blender that implements the specified BlendMode. - `RuntimeEffect.MakeForBlender` Compiles a RuntimeEffect from the given blender code. +- `ManagedAnimation` getters and setters for lottie slots exported by Essential Graphics in AE. + Color, scalar, vec2, and image slot types are supported. ### Fixed - `EmbindObject` has been updated to allow TypeScript to differentiate between opaque diff --git a/modules/canvaskit/README.md b/modules/canvaskit/README.md index c7f79576bad4..ba35c111c93a 100644 --- a/modules/canvaskit/README.md +++ b/modules/canvaskit/README.md @@ -50,6 +50,13 @@ any of the "extras", one might run: Such a stripped-down version is about half the size of the default release build. +If CanvasKit fails to build and you are getting compile errors that don't look like Skia code, +you may need to do a fresh install of the npm modules. You can do this by finding the .dts file +mentioned in the error message, deleting it, and rerunning `npm ci`. + +If you're using the correct modules plus the latest supported typescript and it still fails, +the module versions listed in package.json may need to be updated as well. + # Unit tests, performance tests, and coverage. To run unit tests and compute test coverage on a debug gpu build diff --git a/modules/canvaskit/WasmCommon.h b/modules/canvaskit/WasmCommon.h index 3618d87a8b1b..97823bbd2b5d 100644 --- a/modules/canvaskit/WasmCommon.h +++ b/modules/canvaskit/WasmCommon.h @@ -70,6 +70,8 @@ template TypedArray MakeTypedArray(int count, const T src[]) { return jarray; } +SkColor4f ptrToSkColor4f(WASMPointerF32); + /** * Gives read access to a JSArray * diff --git a/modules/canvaskit/canvaskit_bindings.cpp b/modules/canvaskit/canvaskit_bindings.cpp index b49ae0e6f1af..0becbe6dd952 100644 --- a/modules/canvaskit/canvaskit_bindings.cpp +++ b/modules/canvaskit/canvaskit_bindings.cpp @@ -126,6 +126,10 @@ #include "include/ports/SkFontMgr_data.h" #endif +#if GR_TEST_UTILS +#error "This define should not be set, as it brings in test-only things and bloats codesize." +#endif + struct OptionalMatrix : SkMatrix { OptionalMatrix(WASMPointerF32 mPtr) { if (mPtr) { diff --git a/modules/canvaskit/color.js b/modules/canvaskit/color.js index 9adfc9ca6fda..81c73c9330fb 100644 --- a/modules/canvaskit/color.js +++ b/modules/canvaskit/color.js @@ -1,6 +1,6 @@ -/* - * This file houses functions that deal with color. - */ +// +// This file houses functions that deal with color. +// // Constructs a Color with the same API as CSS's rgba(), that is // r,g,b are 0-255, and a is 0.0 to 1.0. diff --git a/modules/canvaskit/compile.sh b/modules/canvaskit/compile.sh index 443a7f8c4592..b83df9430700 100755 --- a/modules/canvaskit/compile.sh +++ b/modules/canvaskit/compile.sh @@ -87,12 +87,6 @@ if [[ $@ == *no_pathops* ]] ; then ENABLE_PATHOPS="false" fi -ENABLE_RT_SHADER="true" -if [[ $@ == *no_rt_shader* ]] ; then - echo "Omitting runtime shaders" - ENABLE_RT_SHADER="false" -fi - ENABLE_SKSL_TRACE="true" if [[ $@ == *no_sksl_trace* ]] ; then echo "Omitting SkSl trace" @@ -241,7 +235,6 @@ echo "Compiling" skia_use_wuffs=true \ skia_use_zlib=true \ skia_enable_ganesh=${ENABLE_GANESH} \ - skia_enable_sksl=${ENABLE_RT_SHADER} \ skia_build_for_debugger=${DEBUGGER_ENABLED} \ skia_enable_sksl_tracing=${ENABLE_SKSL_TRACE} \ \ @@ -252,6 +245,7 @@ echo "Compiling" skia_enable_skshaper=true \ skia_enable_skparagraph=true \ skia_enable_pdf=false \ + skia_canvaskit_enable_rt_shader=true \ skia_canvaskit_force_tracing=${FORCE_TRACING} \ skia_canvaskit_profile_build=${PROFILE_BUILD} \ skia_canvaskit_enable_skp_serialization=${SERIALIZE_SKP} \ @@ -259,7 +253,6 @@ echo "Compiling" skia_canvaskit_enable_skottie=${ENABLE_SKOTTIE} \ skia_canvaskit_include_viewer=${INCLUDE_VIEWER} \ skia_canvaskit_enable_pathops=${ENABLE_PATHOPS} \ - skia_canvaskit_enable_rt_shader=${ENABLE_RT_SHADER} \ skia_canvaskit_enable_matrix_helper=${ENABLE_MATRIX} \ skia_canvaskit_enable_canvas_bindings=${ENABLE_CANVAS} \ skia_canvaskit_enable_font=${ENABLE_FONT} \ diff --git a/modules/canvaskit/compile_gm.sh b/modules/canvaskit/compile_gm.sh index e8ccb4c53c32..20c67d4869c8 100755 --- a/modules/canvaskit/compile_gm.sh +++ b/modules/canvaskit/compile_gm.sh @@ -189,11 +189,12 @@ GLOBIGNORE+="tests/BackendAllocationTest.cpp:"\ # All the tests in these files crash. GLOBIGNORE+="tests/GrThreadSafeCacheTest.cpp" -# These are not tests +# Bazel-related ignores (test runners, incompatible GMs, etc.). GLOBIGNORE+="tests/BazelNoopRunner.cpp:"\ "tests/BazelTestRunner.cpp:"\ "gm/BazelGMRunner.cpp:"\ -"gm/BazelNoopRunner.cpp" +"gm/BazelNoopRunner.cpp:"\ +"gm/png_codec.cpp" # Emscripten prefers that the .a files go last in order, otherwise, it # may drop symbols that it incorrectly thinks aren't used. One day, @@ -220,7 +221,6 @@ EMCC_DEBUG=1 ${EMCXX} \ $BUILD_DIR/libsvg.a \ $BUILD_DIR/libskia.a \ $BUILTIN_FONT \ - -sLLD_REPORT_UNDEFINED \ -sALLOW_MEMORY_GROWTH=1 \ -sEXPORT_NAME="InitWasmGMTests" \ -sEXPORTED_FUNCTIONS=['_malloc','_free'] \ diff --git a/modules/canvaskit/externs.js b/modules/canvaskit/externs.js index 57b96f370058..a8ca94884db9 100644 --- a/modules/canvaskit/externs.js +++ b/modules/canvaskit/externs.js @@ -1,26 +1,26 @@ -/* - * This externs file prevents the Closure JS compiler from minifying away - * names of objects created by Emscripten. - * Basically, by defining empty objects and functions here, Closure will - * know not to rename them. This is needed because of our pre-js files, - * that is, the JS we hand-write to bundle into the output. That JS will be - * hit by the closure compiler and thus needs to know about what functions - * have special names and should not be minified. - * - * Emscripten does not support automatically generating an externs file, so we - * do it by hand. The general process is to write some JS code, and then put any - * calls to CanvasKit or related things in here. Running ./compile.sh and then - * looking at the minified results or running the Release trybot should - * verify nothing was missed. Optionally, looking directly at the minified - * pathkit.js can be useful when developing locally. - * - * Docs: - * https://github.com/cljsjs/packages/wiki/Creating-Externs - * https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System - * - * Example externs: - * https://github.com/google/closure-compiler/tree/master/externs - */ +// +// This externs file prevents the Closure JS compiler from minifying away +// names of objects created by Emscripten. +// Basically, by defining empty objects and functions here, Closure will +// know not to rename them. This is needed because of our pre-js files, +// that is, the JS we hand-write to bundle into the output. That JS will be +// hit by the closure compiler and thus needs to know about what functions +// have special names and should not be minified. +// +// Emscripten does not support automatically generating an externs file, so we +// do it by hand. The general process is to write some JS code, and then put any +// calls to CanvasKit or related things in here. Running ./compile.sh and then +// looking at the minified results or running the Release trybot should +// verify nothing was missed. Optionally, looking directly at the minified +// pathkit.js can be useful when developing locally. +// +// Docs: +// https://github.com/cljsjs/packages/wiki/Creating-Externs +// https://github.com/google/closure-compiler/wiki/Types-in-the-Closure-Type-System +// +// Example externs: +// https://github.com/google/closure-compiler/tree/master/externs +// var CanvasKit = { // public API (i.e. things we declare in the pre-js file or in the cpp bindings) @@ -136,6 +136,13 @@ var CanvasKit = { seek: function() {}, seekFrame: function() {}, setColor: function() {}, + setColorSlot: function() {}, + getColorSlot: function() {}, + setScalarSlot: function() {}, + getScalarSlot: function() {}, + setVec2Slot: function() {}, + getVec2Slot: function() {}, + setImageSlot: function() {}, setTransform: function() {}, size: function() {}, }, @@ -143,6 +150,10 @@ var CanvasKit = { _seek: function() {}, _seekFrame: function() {}, _setTransform: function() {}, + _setColorSlot: function() {}, + _getColorSlot: function() {}, + _setVec2Slot: function() {}, + _getVec2Slot: function() {}, _size: function() {}, }, diff --git a/modules/canvaskit/gm_bindings.cpp b/modules/canvaskit/gm_bindings.cpp index 4e425ff7c732..e27b070eb8d2 100644 --- a/modules/canvaskit/gm_bindings.cpp +++ b/modules/canvaskit/gm_bindings.cpp @@ -32,6 +32,7 @@ #include "tools/ResourceFactory.h" #include "tools/flags/CommandLineFlags.h" #include "tools/fonts/TestFontMgr.h" +#include "tools/gpu/ContextType.h" using namespace emscripten; @@ -45,8 +46,8 @@ static JSArray ListGMs() { JSArray gms = emscripten::val::array(); for (const skiagm::GMFactory& fact : skiagm::GMRegistry::Range()) { std::unique_ptr gm(fact()); - SkDebugf("gm %s\n", gm->getName()); - gms.call("push", std::string(gm->getName())); + SkDebugf("gm %s\n", gm->getName().c_str()); + gms.call("push", std::string(gm->getName().c_str())); } return gms; } @@ -54,7 +55,7 @@ static JSArray ListGMs() { static std::unique_ptr getGMWithName(std::string name) { for (const skiagm::GMFactory& fact : skiagm::GMRegistry::Range()) { std::unique_ptr gm(fact()); - if (gm->getName() == name) { + if (gm->getName().c_str() == name) { return gm; } } @@ -267,27 +268,24 @@ static JSObject RunTest(std::string name) { namespace skiatest { -using ContextType = sk_gpu_test::GrContextFactory::ContextType; +using ContextType = skgpu::ContextType; -// These are the supported GrContextTypeFilterFn. They are defined in Test.h and implemented here. -bool IsGLContextType(ContextType ct) { - return GrBackendApi::kOpenGL == sk_gpu_test::GrContextFactory::ContextTypeBackend(ct); +// These are the supported ContextTypeFilterFn. They are defined in Test.h and implemented here. +bool IsGLContextType(skgpu::ContextType ct) { + return skgpu::ganesh::ContextTypeBackend(ct) == GrBackendApi::kOpenGL; } -bool IsRenderingGLContextType(ContextType ct) { - return IsGLContextType(ct) && sk_gpu_test::GrContextFactory::IsRenderingContext(ct); -} -bool IsMockContextType(ContextType ct) { - return ct == ContextType::kMock_ContextType; +bool IsMockContextType(skgpu::ContextType ct) { + return ct == skgpu::ContextType::kMock; } // These are not supported -bool IsVulkanContextType(ContextType) {return false;} -bool IsMetalContextType(ContextType) {return false;} -bool IsDirect3DContextType(ContextType) {return false;} -bool IsDawnContextType(ContextType) {return false;} +bool IsVulkanContextType(ContextType) { return false; } +bool IsMetalContextType(ContextType) { return false; } +bool IsDirect3DContextType(ContextType) { return false; } +bool IsDawnContextType(ContextType) { return false; } -void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* filter, +void RunWithGaneshTestContexts(GrContextTestFn* testFn, ContextTypeFilterFn* filter, Reporter* reporter, const GrContextOptions& options) { - for (auto contextType : {ContextType::kGLES_ContextType, ContextType::kMock_ContextType}) { + for (auto contextType : {skgpu::ContextType::kGLES, skgpu::ContextType::kMock}) { if (filter && !(*filter)(contextType)) { continue; } diff --git a/modules/canvaskit/karma.bazel.js b/modules/canvaskit/karma.bazel.js index 04c55bd79850..881b4691f91c 100644 --- a/modules/canvaskit/karma.bazel.js +++ b/modules/canvaskit/karma.bazel.js @@ -41,6 +41,7 @@ module.exports = function(config) { // - browsers // - basePath // - singleRun + // - plugins BAZEL_APPLY_SETTINGS(cfg); config.set(cfg); diff --git a/modules/canvaskit/matrix.js b/modules/canvaskit/matrix.js index 1db9a528c8e1..91f4d1523c6e 100644 --- a/modules/canvaskit/matrix.js +++ b/modules/canvaskit/matrix.js @@ -1,11 +1,11 @@ -/* - * Add some helpers for matrices. This is ported from SkMatrix.cpp and others - * to save complexity and overhead of going back and forth between C++ and JS layers. - * I would have liked to use something like DOMMatrix, except it - * isn't widely supported (would need polyfills) and it doesn't - * have a mapPoints() function (which could maybe be tacked on here). - * If DOMMatrix catches on, it would be worth re-considering this usage. - */ +// +// Add some helpers for matrices. This is ported from SkMatrix.cpp and others +// to save complexity and overhead of going back and forth between C++ and JS layers. +// I would have liked to use something like DOMMatrix, except it +// isn't widely supported (would need polyfills) and it doesn't +// have a mapPoints() function (which could maybe be tacked on here). +// If DOMMatrix catches on, it would be worth re-considering this usage. +// CanvasKit.Matrix = {}; function sdot() { // to be called with an even number of scalar args diff --git a/modules/canvaskit/npm_build/package-lock.json b/modules/canvaskit/npm_build/package-lock.json index 0eda7ce3d492..a96184b88e47 100644 --- a/modules/canvaskit/npm_build/package-lock.json +++ b/modules/canvaskit/npm_build/package-lock.json @@ -33,12 +33,12 @@ "dev": true }, "node_modules/@definitelytyped/utils": { - "version": "0.0.121", - "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.121.tgz", - "integrity": "sha512-H2g09ZJcmCk0BAy86M/UcMP4pq0UGaKBGpjPjPe5btKgZDB6A1Tn1/TKd46cQ6grhFdsxJFE5cb8XWGTKkpA8w==", + "version": "0.0.163", + "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.163.tgz", + "integrity": "sha512-6MX5TxaQbG/j2RkCWbcbLvv+YNipKqY0eQJafDhwC/RprUocpg+uYVNlH8XzdKRWOGJ0pq7SZOsJD4C3A01ZXg==", "dev": true, "dependencies": { - "@definitelytyped/typescript-versions": "^0.0.121", + "@definitelytyped/typescript-versions": "^0.0.163", "@qiwi/npm-registry-client": "^8.9.1", "@types/node": "^14.14.35", "charm": "^1.0.2", @@ -48,6 +48,12 @@ "tar-stream": "^2.1.4" } }, + "node_modules/@definitelytyped/utils/node_modules/@definitelytyped/typescript-versions": { + "version": "0.0.163", + "resolved": "https://registry.npmjs.org/@definitelytyped/typescript-versions/-/typescript-versions-0.0.163.tgz", + "integrity": "sha512-+GWtJhC+7UaCUnJ+ZkA7bfGuPd6ZbJKEjbHqh76/gOXsqAUOMEa49ufsLlIPUbkEeQlnDNoTHCegE5X/Q+u+/A==", + "dev": true + }, "node_modules/@definitelytyped/utils/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -85,9 +91,9 @@ } }, "node_modules/@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", "dev": true }, "node_modules/@types/parsimmon": { @@ -158,9 +164,9 @@ } }, "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "optional": true, "dependencies": { @@ -233,9 +239,9 @@ } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, "node_modules/babel-code-frame": { @@ -636,9 +642,9 @@ } }, "node_modules/dts-critic/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1238,9 +1244,9 @@ "dev": true }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -1289,6 +1295,21 @@ "node": ">=10" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-package-arg": { "version": "8.1.5", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", @@ -1303,6 +1324,21 @@ "node": ">=10" } }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -1440,9 +1476,9 @@ "dev": true }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -1458,9 +1494,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -1586,18 +1622,12 @@ "dev": true }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "semver": "bin/semver" } }, "node_modules/set-blocking": { @@ -1623,9 +1653,9 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -1649,9 +1679,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, "node_modules/sprintf-js": { @@ -1767,20 +1797,20 @@ } }, "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, "node_modules/tar-stream": { @@ -1799,6 +1829,15 @@ "node": ">=6" } }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1872,15 +1911,6 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" } }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", @@ -2221,12 +2251,12 @@ "dev": true }, "@definitelytyped/utils": { - "version": "0.0.121", - "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.121.tgz", - "integrity": "sha512-H2g09ZJcmCk0BAy86M/UcMP4pq0UGaKBGpjPjPe5btKgZDB6A1Tn1/TKd46cQ6grhFdsxJFE5cb8XWGTKkpA8w==", + "version": "0.0.163", + "resolved": "https://registry.npmjs.org/@definitelytyped/utils/-/utils-0.0.163.tgz", + "integrity": "sha512-6MX5TxaQbG/j2RkCWbcbLvv+YNipKqY0eQJafDhwC/RprUocpg+uYVNlH8XzdKRWOGJ0pq7SZOsJD4C3A01ZXg==", "dev": true, "requires": { - "@definitelytyped/typescript-versions": "^0.0.121", + "@definitelytyped/typescript-versions": "^0.0.163", "@qiwi/npm-registry-client": "^8.9.1", "@types/node": "^14.14.35", "charm": "^1.0.2", @@ -2236,6 +2266,12 @@ "tar-stream": "^2.1.4" }, "dependencies": { + "@definitelytyped/typescript-versions": { + "version": "0.0.163", + "resolved": "https://registry.npmjs.org/@definitelytyped/typescript-versions/-/typescript-versions-0.0.163.tgz", + "integrity": "sha512-+GWtJhC+7UaCUnJ+ZkA7bfGuPd6ZbJKEjbHqh76/gOXsqAUOMEa49ufsLlIPUbkEeQlnDNoTHCegE5X/Q+u+/A==", + "dev": true + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -2270,9 +2306,9 @@ } }, "@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", "dev": true }, "@types/parsimmon": { @@ -2333,9 +2369,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "optional": true, "requires": { @@ -2404,9 +2440,9 @@ "dev": true }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, "babel-code-frame": { @@ -2723,9 +2759,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -3207,9 +3243,9 @@ "dev": true }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -3244,6 +3280,17 @@ "is-core-module": "^2.5.0", "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "npm-package-arg": { @@ -3255,6 +3302,17 @@ "hosted-git-info": "^4.0.1", "semver": "^7.3.4", "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "npmlog": { @@ -3367,9 +3425,9 @@ "dev": true }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "qs": { @@ -3379,9 +3437,9 @@ "dev": true }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -3468,13 +3526,10 @@ "dev": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true }, "set-blocking": { "version": "2.0.0", @@ -3496,9 +3551,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -3522,9 +3577,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, "sprintf-js": { @@ -3611,19 +3666,25 @@ "dev": true }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -3689,14 +3750,6 @@ "semver": "^5.3.0", "tslib": "^1.8.0", "tsutils": "^2.29.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "tsutils": { diff --git a/modules/canvaskit/npm_build/package.json b/modules/canvaskit/npm_build/package.json index a0b783634517..d1d0d51d15f5 100644 --- a/modules/canvaskit/npm_build/package.json +++ b/modules/canvaskit/npm_build/package.json @@ -17,10 +17,10 @@ "types": "./types/index.d.ts", "license": "BSD-3-Clause", "devDependencies": { - "dtslint": "4.2.1", - "typescript": "4.7.4", "@definitelytyped/header-parser": "0.0.121", - "@webgpu/types": "0.1.21" + "@webgpu/types": "0.1.21", + "dtslint": "4.2.1", + "typescript": "4.7.4" }, "exports": { ".": { diff --git a/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts b/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts index d16083979ff7..7ca5e5790c98 100644 --- a/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts +++ b/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts @@ -766,6 +766,15 @@ function skottieTests(CK: CanvasKit, canvas?: Canvas) { const j = mAnim.setOpacity('foo', 0.5); // $ExpectType boolean const k = mAnim.setText('foo', 'bar', 12); // $ExpectType boolean const l = mAnim.setTransform('foo', [1, 2], [3, 4], [5, 6], 90, 1, 0); // $ExpectType boolean + + const m = mAnim.setColorSlot('foo', CK.BLUE); // $ExpectType boolean + const n = mAnim.setScalarSlot('foo', 5); // $ExpectType boolean + const o = mAnim.setVec2Slot('foo', [1, 2]); // $ExpectType boolean + const p = mAnim.setImageSlot('foo', 'bar'); // $ExpectType boolean + + const q = mAnim.getColorSlot('foo'); // $ExpectType Float32Array | null + const r = mAnim.getScalarSlot('foo'); // $ExpectType number | null + const s = mAnim.getVec2Slot('foo'); // $ExpectType Float32Array | null } function shaderTests(CK: CanvasKit) { @@ -938,8 +947,8 @@ function surfaceTests(CK: CanvasKit, gl?: WebGLRenderingContext) { const surfaceNine = CK.MakeOnScreenGLSurface(grCtx!, 100, 400, // $ExpectType Surface CK.ColorSpace.ADOBE_RGB)!; - var sample = gl.getParameter(gl.SAMPLES); - var stencil = gl.getParameter(gl.STENCIL_BITS); + const sample = gl.getParameter(gl.SAMPLES); + const stencil = gl.getParameter(gl.STENCIL_BITS); const surfaceTen = CK.MakeOnScreenGLSurface(grCtx!, 100, 400, // $ExpectType Surface CK.ColorSpace.ADOBE_RGB, sample, stencil)!; diff --git a/modules/canvaskit/npm_build/types/index.d.ts b/modules/canvaskit/npm_build/types/index.d.ts index 600e1d6c4cd1..9f8524f96630 100644 --- a/modules/canvaskit/npm_build/types/index.d.ts +++ b/modules/canvaskit/npm_build/types/index.d.ts @@ -950,6 +950,20 @@ export interface ManagedSkottieAnimation extends SkottieAnimation { getOpacityProps(): OpacityProperty[]; getTextProps(): TextProperty[]; getTransformProps(): TransformProperty[]; + + // Slots in Lottie were exposed with bodymovin version 5.11.0 + // Properties tracked under the Essential Graphics window in AE will be "slotted". These slots + // can be observed and editted live like with the other get/set tools. The slot id passed in + // must match the name of the property in the Essential Graphics window. Property Groups support + // one-to-many relationships. + setColorSlot(key: string, color: InputColor): boolean; + setScalarSlot(key: string, scalar: number): boolean; + setVec2Slot(key: string, vec2: InputVector2): boolean; + setImageSlot(key: string, assetName: string): boolean; + + getColorSlot(key: string): Color | null; + getScalarSlot(key: string): number | null; + getVec2Slot(key: string): Vector2 | null; } /** @@ -2733,7 +2747,7 @@ export interface SkPicture extends EmbindObject<"SkPicture"> { /** * Returns the approximate byte size. Does not include large objects. */ - approximateBytesUsed() : number; + approximateBytesUsed(): number; /** * Returns the serialized format of this SkPicture. The format may change at anytime and @@ -3132,7 +3146,6 @@ export interface FontCollection extends EmbindObject<"FontCollection"> { setDefaultFontManager(fontManager: TypefaceFontProvider | null): void; } - export interface URange { start: number; end: number; diff --git a/modules/canvaskit/skottie.js b/modules/canvaskit/skottie.js index d0e01d5b622a..e90a0c972f1a 100644 --- a/modules/canvaskit/skottie.js +++ b/modules/canvaskit/skottie.js @@ -123,6 +123,34 @@ CanvasKit.MakeManagedAnimation = function(json, assets, prop_filter_prefix, soun return this._setColor(key, cPtr); }; + CanvasKit.ManagedAnimation.prototype.setColorSlot = function(key, color) { + var cPtr = copyColorToWasm(color); + return this._setColorSlot(key, cPtr); + }; + + CanvasKit.ManagedAnimation.prototype.getColorSlot = function(key) { + this._getColorSlot(key, _scratchColorPtr); + var fourFloats = copyColorFromWasm(_scratchColorPtr); + if (fourFloats[0] == -1) { + return null; + } + return fourFloats; + } + + CanvasKit.ManagedAnimation.prototype.setVec2Slot = function(key, vec) { + copy1dArray(vec, 'HEAPF32', _scratchThreeFloatsAPtr); + return this._setVec2Slot(key, _scratchThreeFloatsAPtr); + }; + + CanvasKit.ManagedAnimation.prototype.getVec2Slot = function(key) { + this._getVec2Slot(key, _scratchThreeFloatsAPtr); + var ta = _scratchThreeFloatsA['toTypedArray'](); + if (ta[2] === -1) { + return null; + } + return ta.slice(0, 2); + } + CanvasKit.ManagedAnimation.prototype.setTransform = function(key, anchor, position, scale, rotation, skew, skew_axis) { let transformData = [anchor[0], anchor[1], position[0], position[1], scale[0], scale[1], rotation, skew, skew_axis]; const tPtr = copy1dArray(transformData, 'HEAPF32', _scratch3x3MatrixPtr); diff --git a/modules/canvaskit/skottie_bindings.cpp b/modules/canvaskit/skottie_bindings.cpp index a33332253b62..20a77b40410f 100644 --- a/modules/canvaskit/skottie_bindings.cpp +++ b/modules/canvaskit/skottie_bindings.cpp @@ -153,16 +153,18 @@ class ManagedAnimation final : public SkRefCnt { static constexpr char kInterceptPrefix[] = "__"; auto pinterceptor = sk_make_sp(rp, kInterceptPrefix); - auto animation = skottie::Animation::Builder() - .setMarkerObserver(mgr->getMarkerObserver()) - .setPropertyObserver(mgr->getPropertyObserver()) - .setResourceProvider(std::move(rp)) - .setPrecompInterceptor(std::move(pinterceptor)) - .setLogger(JSLogger::Make(std::move(logger))) - .make(json.c_str(), json.size()); + skottie::Animation::Builder builder; + builder.setMarkerObserver(mgr->getMarkerObserver()) + .setPropertyObserver(mgr->getPropertyObserver()) + .setResourceProvider(rp) + .setPrecompInterceptor(std::move(pinterceptor)) + .setLogger(JSLogger::Make(std::move(logger))); + auto animation = builder.make(json.c_str(), json.size()); + auto slotManager = builder.getSlotManager(); return animation - ? sk_sp(new ManagedAnimation(std::move(animation), std::move(mgr))) + ? sk_sp(new ManagedAnimation(std::move(animation), std::move(mgr), + std::move(slotManager), std::move(rp))) : nullptr; } @@ -302,15 +304,69 @@ class ManagedAnimation final : public SkRefCnt { return markers; } + // Slot Manager API + void getColorSlot(const std::string& slotID, WASMPointerF32 outPtr) { + SkColor4f c4f; + if (auto c = fSlotMgr->getColorSlot(SkString(slotID))) { + c4f = SkColor4f::FromColor(*c); + } else { + c4f = {-1, -1, -1, -1}; + } + memcpy(reinterpret_cast(outPtr), &c4f, 4 * sizeof(float)); + } + + emscripten::val getScalarSlot(const std::string& slotID) { + if (auto s = fSlotMgr->getScalarSlot(SkString(slotID))) { + return emscripten::val(*s); + } + return emscripten::val::null(); + } + + void getVec2Slot(const std::string& slotID, WASMPointerF32 outPtr) { + // [x, y, sentinel] + SkV3 vec3; + if (auto v = fSlotMgr->getVec2Slot(SkString(slotID))) { + vec3 = {v->x, v->y, 1}; + } else { + vec3 = {0, 0, -1}; + } + memcpy(reinterpret_cast(outPtr), vec3.ptr(), 3 * sizeof(float)); + } + + bool setImageSlot(const std::string& slotID, const std::string& assetName) { + // look for resource in preloaded SkottieAssetProvider + return fSlotMgr->setImageSlot(SkString(slotID), fResourceProvider->loadImageAsset(nullptr, + assetName.data(), + nullptr)); + } + + bool setColorSlot(const std::string& slotID, SkColor c) { + return fSlotMgr->setColorSlot(SkString(slotID), c); + } + + bool setScalarSlot(const std::string& slotID, float s) { + return fSlotMgr->setScalarSlot(SkString(slotID), s); + } + + bool setVec2Slot(const std::string& slotID, SkV2 v) { + return fSlotMgr->setVec2Slot(SkString(slotID), v); + } + private: ManagedAnimation(sk_sp animation, - std::unique_ptr propMgr) + std::unique_ptr propMgr, + sk_sp slotMgr, + sk_sp rp) : fAnimation(std::move(animation)) , fPropMgr(std::move(propMgr)) + , fSlotMgr(std::move(slotMgr)) + , fResourceProvider(std::move(rp)) {} const sk_sp fAnimation; const std::unique_ptr fPropMgr; + const sk_sp fSlotMgr; + const sk_sp fResourceProvider; }; } // anonymous ns @@ -392,7 +448,21 @@ EMSCRIPTEN_BINDINGS(Skottie) { .function("setOpacity" , &ManagedAnimation::setOpacity) .function("getTextProps" , &ManagedAnimation::getTextProps) .function("setText" , &ManagedAnimation::setText) - .function("getTransformProps", &ManagedAnimation::getTransformProps); + .function("getTransformProps", &ManagedAnimation::getTransformProps) + .function("_getColorSlot" , &ManagedAnimation::getColorSlot) + .function("_setColorSlot" , optional_override([](ManagedAnimation& self, const std::string& key, WASMPointerF32 cPtr) { + SkColor4f color = ptrToSkColor4f(cPtr); + return self.setColorSlot(key, color.toSkColor()); + })) + .function("_getVec2Slot" , &ManagedAnimation::getVec2Slot) + .function("_setVec2Slot" , optional_override([](ManagedAnimation& self, const std::string& key, WASMPointerF32 vPtr) { + float* twoFloats = reinterpret_cast(vPtr); + SkV2 vec2 = {twoFloats[0], twoFloats[1]}; + return self.setVec2Slot(key, vec2); + })) + .function("getScalarSlot" , &ManagedAnimation::getScalarSlot) + .function("setScalarSlot" , &ManagedAnimation::setScalarSlot) + .function("setImageSlot" , &ManagedAnimation::setImageSlot); function("_MakeManagedAnimation", optional_override([](std::string json, size_t assetCount, diff --git a/modules/canvaskit/tests/assets/BUILD.bazel b/modules/canvaskit/tests/assets/BUILD.bazel index 327fb56277d2..99d91aa3612b 100644 --- a/modules/canvaskit/tests/assets/BUILD.bazel +++ b/modules/canvaskit/tests/assets/BUILD.bazel @@ -28,6 +28,7 @@ skia_filegroup( "mandrill_h1v1.jpg", "map-shield.json", "red_line.skp", + "skottie_basic_slots.json", "test.ttc", "test_glyphs-glyf_colr_1.ttf", ], diff --git a/modules/canvaskit/tests/assets/skottie_basic_slots.json b/modules/canvaskit/tests/assets/skottie_basic_slots.json new file mode 100644 index 000000000000..3d8f32215587 --- /dev/null +++ b/modules/canvaskit/tests/assets/skottie_basic_slots.json @@ -0,0 +1,1118 @@ +{ + "v": "5.12.2", + "fr": 60, + "ip": 0, + "op": 2100, + "w": 1024, + "h": 768, + "nm": "essential_properties_comp", + "ddd": 0, + "assets": [ + { + "id": "image_0", + "w": 1024, + "h": 1024, + "u": "images/", + "p": "img_0.jpg", + "e": 0, + "sid": "ImageSource" + }, + { + "id": "comp_0", + "nm": "comp", + "fr": 60, + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "shapes_comp", + "refId": "comp_1", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 256, + 192, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "w": 512, + "h": 384, + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 0, + "nm": "text_comp", + "refId": "comp_2", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "w": 1024, + "h": 768, + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 1, + "nm": "Turquoise Solid 1", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 256, + 192, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "sid": "ScaleGroup", + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "sw": 512, + "sh": 384, + "sc": "#00ffbe", + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 0, + "nm": "image_comp", + "refId": "comp_3", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 377, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 512, + 512, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "w": 1024, + "h": 1024, + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + } + ] + }, + { + "id": "comp_1", + "nm": "shapes_comp", + "fr": 60, + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "Shape Layer 1", + "sr": 1, + "ks": { + "o": { + "sid": "Opacity", + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 160, + 192, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { + "a": 0, + "k": 5, + "ix": 3 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 4 + }, + "r": { + "a": 0, + "k": 0, + "ix": 5 + }, + "ir": { + "a": 0, + "k": 30, + "ix": 6 + }, + "is": { + "a": 0, + "k": 0, + "ix": 8 + }, + "or": { + "a": 0, + "k": 80, + "ix": 7 + }, + "os": { + "a": 0, + "k": 0, + "ix": 9 + }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "st", + "c": { + "sid": "StrokeGroup", + "a": 0, + "k": [ + 0.1254902035, + 0.446274518967, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 9, + "ix": 5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 97, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 2 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 4 + }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "st", + "c": { + "sid": "StrokeGroup", + "a": 0, + "k": [ + 0.945159313725, + 0.27433944403, + 0.945159313725, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 10, + "ix": 5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "fl", + "c": { + "sid": "FillsGroup", + "a": 0, + "k": [ + 1, + 0.694117665291, + 0, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + -68, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 2100, + "st": 0, + "ct": 1, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "Shape Layer 2", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 426, + 192, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "shapes": [ + { + "d": 1, + "ty": "el", + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 2 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "st", + "c": { + "sid": "StrokeGroup", + "a": 0, + "k": [ + 0.065882354975, + 0.496470600367, + 0.21725487709, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 10, + "ix": 5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "fl", + "c": { + "sid": "FillsGroup", + "a": 0, + "k": [ + 0.429208942488, + 0.010746350943, + 0.682414215686, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + } + ], + "ip": 0, + "op": 2100, + "st": 0, + "ct": 1, + "bm": 0 + } + ] + }, + { + "id": "comp_2", + "nm": "text_comp", + "fr": 60, + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 5, + "nm": "text slots", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512.409, + 250, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "sid": "ScaleGroup", + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "t": { + "d": { + "k": [ + { + "s": { + "s": 39, + "f": "ArialMT", + "t": "text slots", + "ca": 0, + "j": 2, + "tr": 0, + "lh": 334, + "ls": 0, + "fc": [ + 0.822, + 0.685, + 0.294 + ] + }, + "t": 0 + } + ], + "sid": "TextSource" + }, + "p": {}, + "m": { + "g": 1, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 2 + } + }, + "a": [] + }, + "ip": 0, + "op": 2100, + "st": 0, + "ct": 1, + "bm": 0 + } + ] + }, + { + "id": "comp_3", + "nm": "image_comp", + "fr": 60, + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 1, + "nm": "Black Solid 1", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 70, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 512, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 512, + 512, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "sw": 1024, + "sh": 1024, + "sc": "#000000", + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 2, + "nm": "img1.png", + "cl": "png", + "refId": "image_0", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 512, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 512, + 512, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + } + ] + } + ], + "fonts": { + "list": [ + { + "origin": 0, + "fPath": "", + "fClass": "", + "fFamily": "Arial", + "fWeight": "", + "fStyle": "Regular", + "fName": "ArialMT", + "ascent": 71.5988159179688 + } + ] + }, + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "comp", + "refId": "comp_0", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 2, + "l": 2 + }, + "a": { + "a": 0, + "k": [ + 512, + 384, + 0 + ], + "ix": 1, + "l": 2 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6, + "l": 2 + } + }, + "ao": 0, + "w": 1024, + "h": 768, + "ip": 0, + "op": 2100, + "st": 0, + "bm": 0 + } + ], + "markers": [], + "slots": { + "FillsGroup": { + "p": { + "a": 0, + "k": [ + 0.429208942488, + 0.010746350943, + 0.682414215686, + 1 + ], + "ix": 1 + }, + "t": 1 + }, + "StrokeGroup": { + "p": { + "a": 0, + "k": [ + 0.065882354975, + 0.496470600367, + 0.21725487709, + 1 + ], + "ix": 1 + }, + "t": 1 + }, + "TextSource": { + "p": { + "k": [ + { + "s": { + "s": 39, + "f": "ArialMT", + "t": "text slots", + "ca": 0, + "j": 2, + "tr": 0, + "lh": 334, + "ls": 0, + "fc": [ + 0.822, + 0.685, + 0.294 + ] + }, + "t": 0 + } + ] + }, + "t": 99 + }, + "Opacity": { + "p": { + "a": 0, + "k": 100, + "ix": 5 + }, + "t": 4 + }, + "ScaleGroup": { + "p": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 1 + }, + "t": 3 + }, + "ImageSource": { + "t": 50, + "p": { + "id": "image_0", + "w": 1024, + "h": 1024, + "u": "images/", + "p": "img_0.png", + "e": 0 + } + } + }, + "props": {} + } diff --git a/modules/canvaskit/tests/skottie_test.js b/modules/canvaskit/tests/skottie_test.js index 225a177eea3d..ada3c4d12507 100644 --- a/modules/canvaskit/tests/skottie_test.js +++ b/modules/canvaskit/tests/skottie_test.js @@ -28,6 +28,8 @@ describe('Skottie behavior', () => { .then((response) => response.text()); const washPromise = fetch('/assets/map-shield.json') .then((response) => response.text()); + const slotPromise = fetch('/assets/skottie_basic_slots.json') + .then((response) => response.text()); gm('skottie_animgif', (canvas, promises) => { if (!CanvasKit.skottie || !CanvasKit.managed_skottie) { @@ -77,6 +79,39 @@ describe('Skottie behavior', () => { animation.delete(); }, washPromise); + gm('skottie_slots', (canvas, promises) => { + if (!CanvasKit.skottie || !CanvasKit.managed_skottie) { + console.warn('Skipping test because not compiled with skottie'); + return; + } + expect(promises[0]).not.toBe('NOT FOUND'); + const bounds = CanvasKit.LTRBRect(0, 0, 500, 500); + + const animation = CanvasKit.MakeManagedAnimation(promises[0], + {'flightAnim.gif': promises[1]}); + expect(animation).toBeTruthy(); + + expect(animation.getScalarSlot('Opacity')).toBe(100); + + expect(animation.setColorSlot('FillsGroup', CanvasKit.RED)).toBeTruthy(); + expect(animation.setScalarSlot('Opacity', 25)).toBeTruthy(); + expect(animation.setVec2Slot('ScaleGroup', [25, 50])).toBeTruthy(); + expect(animation.setImageSlot('ImageSource', 'flighAnim.gif')).toBeTruthy(); + + expectArrayCloseTo(animation.getColorSlot('FillsGroup'), CanvasKit.RED, 4); + expect(animation.getScalarSlot('Opacity')).toBe(25); + expectArrayCloseTo(animation.getVec2Slot('ScaleGroup'), [25, 50], 4); + + + expect(animation.getColorSlot('Bad ID')).toBeFalsy(); + expect(animation.getScalarSlot('Bad ID')).toBeFalsy(); + expect(animation.getVec2Slot('Bad ID')).toBeFalsy(); + + animation.seek(0.5); + animation.render(canvas, bounds); + animation.delete(); + }, slotPromise, imgPromise); + it('can load audio assets', (done) => { if (!CanvasKit.skottie || !CanvasKit.managed_skottie) { console.warn('Skipping test because not compiled with skottie'); diff --git a/modules/canvaskit/util.js b/modules/canvaskit/util.js index 69c3a60e9bab..4d077f1b398e 100644 --- a/modules/canvaskit/util.js +++ b/modules/canvaskit/util.js @@ -1,6 +1,6 @@ -/** - * This file houses miscellaneous helper functions and constants. - */ +// +// This file houses miscellaneous helper functions and constants. +// var nullptr = 0; // emscripten doesn't like to take null as uintptr_t diff --git a/modules/jetski/src/ImageFilter.cpp b/modules/jetski/src/ImageFilter.cpp index 7384a840a805..fdfc30731cee 100644 --- a/modules/jetski/src/ImageFilter.cpp +++ b/modules/jetski/src/ImageFilter.cpp @@ -30,11 +30,12 @@ static long ImageFilter_DistantLitDiffuse(JNIEnv* env, jobject, jfloat x, jfloat } static long ImageFilter_Blur(JNIEnv* env, jobject, jfloat sigmaX, jfloat sigmaY, - jint jTileMode, jlong native_input) { + jint jTileMode, jfloat l, jfloat t, jfloat r, + jfloat b, jlong native_input) { auto input = sk_ref_sp(reinterpret_cast(native_input)); auto filter = SkImageFilters::Blur(sigmaX, sigmaY, jetski::utils::TileMode(jTileMode), - std::move(input)); + std::move(input), SkRect::MakeLTRB(l,t,r,b)); return reinterpret_cast(filter.release()); } @@ -65,12 +66,12 @@ static long ImageFilter_Image(JNIEnv* env, jobject, jlong native_image) { int register_jetski_ImageFilter(JNIEnv* env) { static const JNINativeMethod methods[] = { - {"nRelease" , "(J)V" , reinterpret_cast(ImageFilter_Release)}, - {"nDistantLitDiffuse", "(FFFFFFFFJ)J", reinterpret_cast(ImageFilter_DistantLitDiffuse)}, - {"nBlur" , "(FFIJ)J" , reinterpret_cast(ImageFilter_Blur)}, - {"nDropShadow" , "(FFFFFFFJ)J" , reinterpret_cast(ImageFilter_DropShadow)}, - {"nBlend" , "(IJJ)J" , reinterpret_cast(ImageFilter_Blend)}, - {"nImage" , "(J)J" , reinterpret_cast(ImageFilter_Image)}, + {"nRelease" , "(J)V" , reinterpret_cast(ImageFilter_Release)}, + {"nDistantLitDiffuse", "(FFFFFFFFJ)J" , reinterpret_cast(ImageFilter_DistantLitDiffuse)}, + {"nBlur" , "(FFIFFFFJ)J" , reinterpret_cast(ImageFilter_Blur)}, + {"nDropShadow" , "(FFFFFFFJ)J" , reinterpret_cast(ImageFilter_DropShadow)}, + {"nBlend" , "(IJJ)J" , reinterpret_cast(ImageFilter_Blend)}, + {"nImage" , "(J)J" , reinterpret_cast(ImageFilter_Image)}, }; const auto clazz = env->FindClass("org/skia/jetski/ImageFilter"); diff --git a/modules/pathkit/BUILD.bazel b/modules/pathkit/BUILD.bazel index b6d7a7d16288..f15dcf807459 100644 --- a/modules/pathkit/BUILD.bazel +++ b/modules/pathkit/BUILD.bazel @@ -110,4 +110,7 @@ wasm_cc_binary( # Whatever is before the dot will be the name of the output js and wasm, aka "the stem". # https://github.com/emscripten-core/emsdk/blob/4a48a752e6a8bef6f222622f2b4926d5eb3bdeb3/bazel/emscripten_toolchain/wasm_cc_binary.bzl#L179 cc_target = ":pathkit.build", + visibility = [ + "//infra/jsfiddle:__pkg__", + ], ) diff --git a/modules/skottie/BUILD.bazel b/modules/skottie/BUILD.bazel index e89fff607a0e..326022073b69 100644 --- a/modules/skottie/BUILD.bazel +++ b/modules/skottie/BUILD.bazel @@ -30,6 +30,7 @@ skia_cc_library( visibility = ["//:__subpackages__"], deps = [ ":skottie", + "//tools/skui", ], ) @@ -48,7 +49,6 @@ cc_binary_with_flags( "png_decode_codec", "webp_decode_codec", ], - "enable_sksl": ["True"], "use_harfbuzz": ["True"], "use_icu": ["True"], }, diff --git a/modules/skottie/BUILD.gn b/modules/skottie/BUILD.gn index 124a6e67acf3..f0f1e86e7e35 100644 --- a/modules/skottie/BUILD.gn +++ b/modules/skottie/BUILD.gn @@ -41,7 +41,10 @@ if (skia_enable_skottie) { public_configs = [ ":utils_config" ] configs = [ "../../:skia_private" ] - sources = [ "utils/SkottieUtils.cpp" ] + sources = [ + "utils/SkottieUtils.cpp", + "utils/TextEditor.cpp", + ] deps = [ ":skottie", "../..:skia", diff --git a/modules/skottie/gm/ExternalProperties.cpp b/modules/skottie/gm/ExternalProperties.cpp index 95e07362dae3..264468c373a0 100644 --- a/modules/skottie/gm/ExternalProperties.cpp +++ b/modules/skottie/gm/ExternalProperties.cpp @@ -44,13 +44,9 @@ class FakeWebFontProvider final : public skresources::ResourceProvider { class SkottieExternalPropsGM : public skiagm::GM { public: protected: - SkString onShortName() override { - return SkString("skottie_external_props"); - } + SkString getName() const override { return SkString("skottie_external_props"); } - SkISize onISize() override { - return SkISize::Make(kSize, kSize); - } + SkISize getISize() override { return SkISize::Make(kSize, kSize); } void onOnceBeforeDraw() override { if (auto stream = GetResourceAsStream(kSkottieResource)) { diff --git a/modules/skottie/gm/SkottieGM.cpp b/modules/skottie/gm/SkottieGM.cpp index 7319275f1807..ab5129a0bd95 100644 --- a/modules/skottie/gm/SkottieGM.cpp +++ b/modules/skottie/gm/SkottieGM.cpp @@ -44,13 +44,9 @@ class FakeWebFontProvider final : public skresources::ResourceProvider { class SkottieWebFontGM : public skiagm::GM { public: protected: - SkString onShortName() override { - return SkString("skottie_webfont"); - } + SkString getName() const override { return SkString("skottie_webfont"); } - SkISize onISize() override { - return SkISize::Make(kSize, kSize); - } + SkISize getISize() override { return SkISize::Make(kSize, kSize); } void onOnceBeforeDraw() override { if (auto stream = GetResourceAsStream(kSkottieResource)) { @@ -99,13 +95,9 @@ class SkottieColorizeGM : public skiagm::GM { {} protected: - SkString onShortName() override { - return SkStringPrintf("skottie_colorize_%s", fName); - } + SkString getName() const override { return SkStringPrintf("skottie_colorize_%s", fName); } - SkISize onISize() override { - return SkISize::Make(kSize, kSize); - } + SkISize getISize() override { return SkISize::Make(kSize, kSize); } void onOnceBeforeDraw() override { if (auto stream = GetResourceAsStream(fResource)) { @@ -185,13 +177,9 @@ DEF_GM(return new SkottieColorizeGM("text" , "skottie/skottie-text-animator-5.js class SkottieMultiFrameGM : public skiagm::GM { public: protected: - SkString onShortName() override { - return SkString("skottie_multiframe"); - } + SkString getName() const override { return SkString("skottie_multiframe"); } - SkISize onISize() override { - return SkISize::Make(kSize, kSize); - } + SkISize getISize() override { return SkISize::Make(kSize, kSize); } void onOnceBeforeDraw() override { if (auto stream = GetResourceAsStream("skottie/skottie_sample_multiframe.json")) { diff --git a/modules/skottie/src/SkottieTool.cpp b/modules/skottie/src/SkottieTool.cpp index 957ef05283b7..8e30fa952abf 100644 --- a/modules/skottie/src/SkottieTool.cpp +++ b/modules/skottie/src/SkottieTool.cpp @@ -324,8 +324,7 @@ class GPUGenerator final : public FrameGenerator { GPUGenerator(FrameSink* sink, const SkMatrix& matrix) : FrameGenerator(sink) { - fCtx = fFactory.getContextInfo(sk_gpu_test::GrContextFactory::kGL_ContextType) - .directContext(); + fCtx = fFactory.getContextInfo(skgpu::ContextType::kGL).directContext(); fSurface = SkSurfaces::RenderTarget(fCtx, skgpu::Budgeted::kNo, SkImageInfo::MakeN32Premul(FLAGS_width, FLAGS_height), diff --git a/modules/skottie/src/effects/BlackAndWhiteEffect.cpp b/modules/skottie/src/effects/BlackAndWhiteEffect.cpp index 4719cd6901c4..3ff364e518bd 100644 --- a/modules/skottie/src/effects/BlackAndWhiteEffect.cpp +++ b/modules/skottie/src/effects/BlackAndWhiteEffect.cpp @@ -15,10 +15,7 @@ #include "modules/sksg/include/SkSGColorFilter.h" namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - -namespace { +namespace { // The B&W effect allows controlling individual luminance contribution of // primary and secondary colors. @@ -127,18 +124,11 @@ class BlackAndWhiteAdapter final : public DiscardableAdapterBase EffectBuilder::attachBlackAndWhiteEffect( const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, std::move(layer)); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/BrightnessContrastEffect.cpp b/modules/skottie/src/effects/BrightnessContrastEffect.cpp index b3bec49a6dd6..41fc2c77afaf 100644 --- a/modules/skottie/src/effects/BrightnessContrastEffect.cpp +++ b/modules/skottie/src/effects/BrightnessContrastEffect.cpp @@ -18,10 +18,7 @@ #include namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - -namespace { +namespace { // The contrast effect transfer function can be approximated with the following // 3rd degree polynomial: @@ -240,18 +237,11 @@ class BrightnessContrastAdapter final : public DiscardableAdapterBase EffectBuilder::attachBrightnessContrastEffect( const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, std::move(layer)); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/BulgeEffect.cpp b/modules/skottie/src/effects/BulgeEffect.cpp index bb0cb89fe7a0..6b2ee0b3bc97 100644 --- a/modules/skottie/src/effects/BulgeEffect.cpp +++ b/modules/skottie/src/effects/BulgeEffect.cpp @@ -19,9 +19,6 @@ #include "src/utils/SkJSON.h" namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - namespace { static constexpr char gBulgeDisplacementSkSL[] = @@ -203,16 +200,11 @@ class BulgeEffectAdapter final : public DiscardableAdapterBase EffectBuilder::attachBulgeEffect(const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL auto shaderNode = sk_make_sp(std::move(layer), fLayerSize); - return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, std::move(shaderNode)); -#else - return layer; -#endif + return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, + std::move(shaderNode)); } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/DisplacementMapEffect.cpp b/modules/skottie/src/effects/DisplacementMapEffect.cpp index 5d161a7a40c9..c9a6701cae67 100644 --- a/modules/skottie/src/effects/DisplacementMapEffect.cpp +++ b/modules/skottie/src/effects/DisplacementMapEffect.cpp @@ -23,10 +23,7 @@ #include namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - -namespace { +namespace { // AE's displacement map effect [1] is somewhat similar to SVG's feDisplacementMap [2]. Main // differences: @@ -387,11 +384,8 @@ class DisplacementMapAdapter final : public DiscardableAdapterBase EffectBuilder::attachDisplacementMapEffect( const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL auto [ displ, displ_size ] = DisplacementMapAdapter::GetDisplacementSource(jprops, this); auto displ_node = DisplacementNode::Make(layer, fLayerSize, std::move(displ), displ_size); @@ -403,10 +397,6 @@ sk_sp EffectBuilder::attachDisplacementMapEffect( return fBuilder->attachDiscardableAdapter(jprops, fBuilder, std::move(displ_node)); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/FractalNoiseEffect.cpp b/modules/skottie/src/effects/FractalNoiseEffect.cpp index 0d4ac71d3a5e..007fcfa69d45 100644 --- a/modules/skottie/src/effects/FractalNoiseEffect.cpp +++ b/modules/skottie/src/effects/FractalNoiseEffect.cpp @@ -18,9 +18,6 @@ #include namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - namespace { // An implementation of the ADBE Fractal Noise effect: @@ -528,19 +525,12 @@ class FractalNoiseAdapter final : public DiscardableAdapterBase EffectBuilder::attachFractalNoiseEffect( const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL auto fractal_noise = sk_make_sp(std::move(layer)); return fBuilder->attachDiscardableAdapter(jprops, fBuilder, std::move(fractal_noise)); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/GaussianBlurEffect.cpp b/modules/skottie/src/effects/GaussianBlurEffect.cpp index 6cbfdc883d4d..8b8ea5a203dd 100644 --- a/modules/skottie/src/effects/GaussianBlurEffect.cpp +++ b/modules/skottie/src/effects/GaussianBlurEffect.cpp @@ -6,6 +6,7 @@ */ #include "modules/skottie/src/effects/Effects.h" +#include "modules/sksg/include/SkSGRenderNode.h" #include "include/private/base/SkTPin.h" #include "modules/skottie/src/SkottieValue.h" @@ -62,14 +63,19 @@ class GaussianBlurEffectAdapter final : public AnimatablePropertyContainer { fBlur->setSigma({ sigma * kDimensionsMap[dim_index].x(), sigma * kDimensionsMap[dim_index].y() }); - static constexpr SkTileMode kRepeatEdgeMap[] = { - SkTileMode::kDecal, // 0 -> repeat edge pixels: off - SkTileMode::kClamp, // 1 -> repeat edge pixels: on - }; - - const auto repeat_index = SkTPin(static_cast(fRepeatEdge), - 0, std::size(kRepeatEdgeMap) - 1); - fBlur->setTileMode(kRepeatEdgeMap[repeat_index]); + // 0 -> repeat edge pixels: off + // 1 -> repeat edge pixels: on + const auto repeat_edge = static_cast(fRepeatEdge); + + // Repeat edge pixels implies two things: + // - the blur uses kClamp tiling + // - the output is cropped to content size + fBlur->setTileMode(repeat_edge + ? SkTileMode::kClamp + : SkTileMode::kDecal); + static_cast(fImageFilterEffect.get())->setCropping(repeat_edge + ? sksg::ImageFilterEffect::Cropping::kContent + : sksg::ImageFilterEffect::Cropping::kNone); } const sk_sp fBlur; diff --git a/modules/skottie/src/effects/HueSaturationEffect.cpp b/modules/skottie/src/effects/HueSaturationEffect.cpp index b9b35abbfa30..1bfd639f6d9e 100644 --- a/modules/skottie/src/effects/HueSaturationEffect.cpp +++ b/modules/skottie/src/effects/HueSaturationEffect.cpp @@ -15,10 +15,7 @@ #include "src/utils/SkJSON.h" namespace skottie::internal { - -namespace { - -#ifdef SK_ENABLE_SKSL +namespace { // AE Saturation semantics: // @@ -68,10 +65,6 @@ static sk_sp make_saturate(float chroma_scale) { return effect->makeColorFilter(SkData::MakeWithCopy(&chroma_scale, sizeof(chroma_scale))); } -#else -static sk_sp make_saturate(float) { return nullptr; } -#endif // SK_ENABLE_SKSL - class HueSaturationEffectAdapter final : public AnimatablePropertyContainer { public: static sk_sp Make(const skjson::ArrayValue& jprops, diff --git a/modules/skottie/src/effects/SkSLEffect.cpp b/modules/skottie/src/effects/SkSLEffect.cpp index fface5cedd8b..e5ca1d95922c 100644 --- a/modules/skottie/src/effects/SkSLEffect.cpp +++ b/modules/skottie/src/effects/SkSLEffect.cpp @@ -17,7 +17,7 @@ namespace skottie::internal { -#if defined(SK_ENABLE_SKSL) && defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) +#if defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) namespace { class SkSLShaderNode final : public sksg::CustomRenderNode { @@ -171,11 +171,11 @@ class SkSLColorFilterAdapter final : public DiscardableAdapterBase EffectBuilder::attachSkSLShader(const skjson::ArrayValue& jprops, sk_sp layer) const { -#if defined(SK_ENABLE_SKSL) && defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) +#if defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) auto shaderNode = sk_make_sp(std::move(layer)); return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, std::move(shaderNode)); @@ -186,7 +186,7 @@ sk_sp EffectBuilder::attachSkSLShader(const skjson::ArrayValue sk_sp EffectBuilder::attachSkSLColorFilter(const skjson::ArrayValue& jprops, sk_sp layer) const { -#if defined(SK_ENABLE_SKSL) && defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) +#if defined(SK_ENABLE_SKOTTIE_SKSLEFFECT) auto cfNode = sksg::ExternalColorFilter::Make(std::move(layer)); return fBuilder->attachDiscardableAdapter(jprops, *fBuilder, std::move(cfNode)); diff --git a/modules/skottie/src/effects/SphereEffect.cpp b/modules/skottie/src/effects/SphereEffect.cpp index 8dd22155067a..c3e639408930 100644 --- a/modules/skottie/src/effects/SphereEffect.cpp +++ b/modules/skottie/src/effects/SphereEffect.cpp @@ -21,10 +21,7 @@ #include namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - -namespace { +namespace { // This shader maps its child shader onto a sphere. To simplify things, we set it up such that: // @@ -418,18 +415,11 @@ class SphereAdapter final : public DiscardableAdapterBase EffectBuilder::attachSphereEffect( const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL auto sphere = sk_make_sp(std::move(layer), fLayerSize); return fBuilder->attachDiscardableAdapter(jprops, fBuilder, std::move(sphere)); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/effects/ThresholdEffect.cpp b/modules/skottie/src/effects/ThresholdEffect.cpp index d04eeb4b470e..9e95a00a0697 100644 --- a/modules/skottie/src/effects/ThresholdEffect.cpp +++ b/modules/skottie/src/effects/ThresholdEffect.cpp @@ -14,10 +14,7 @@ #include "modules/sksg/include/SkSGColorFilter.h" namespace skottie::internal { - -#ifdef SK_ENABLE_SKSL - -namespace { +namespace { // Convert to black & white, based on input luminance and a threshold uniform. static constexpr char gThresholdSkSL[] = @@ -71,18 +68,11 @@ class ThresholdAdapter final : public DiscardableAdapterBase EffectBuilder::attachThresholdEffect(const skjson::ArrayValue& jprops, sk_sp layer) const { -#ifdef SK_ENABLE_SKSL return fBuilder->attachDiscardableAdapter(jprops, std::move(layer), *fBuilder); -#else - // TODO(skia:12197) - return layer; -#endif } } // namespace skottie::internal diff --git a/modules/skottie/src/layers/FootageLayer.cpp b/modules/skottie/src/layers/FootageLayer.cpp index bb75bf23bf09..f9fb30f215d0 100644 --- a/modules/skottie/src/layers/FootageLayer.cpp +++ b/modules/skottie/src/layers/FootageLayer.cpp @@ -112,7 +112,7 @@ AnimationBuilder::loadFootageAsset(const skjson::ObjectValue& defaultJImage) con } auto asset = fResourceProvider->loadImageAsset(path->begin(), name->begin(), id->begin()); - if (!asset) { + if (!asset && !slotID) { this->log(Logger::Level::kError, nullptr, "Could not load image asset: %s/%s (id: '%s').", path->begin(), name->begin(), id->begin()); return nullptr; diff --git a/modules/skottie/utils/BUILD.bazel b/modules/skottie/utils/BUILD.bazel index d106540e4a8b..5f327ec0bdb1 100644 --- a/modules/skottie/utils/BUILD.bazel +++ b/modules/skottie/utils/BUILD.bazel @@ -8,6 +8,7 @@ skia_filegroup( name = "hdrs", srcs = [ "SkottieUtils.h", + "TextEditor.h", ], visibility = ["//modules/skottie:__pkg__"], ) @@ -16,6 +17,7 @@ skia_filegroup( name = "srcs", srcs = [ "SkottieUtils.cpp", + "TextEditor.cpp", ], visibility = ["//modules/skottie:__pkg__"], ) diff --git a/tools/viewer/SkottieTextEditor.cpp b/modules/skottie/utils/TextEditor.cpp similarity index 91% rename from tools/viewer/SkottieTextEditor.cpp rename to modules/skottie/utils/TextEditor.cpp index 41aca64c3d36..bb5e15e840bb 100644 --- a/tools/viewer/SkottieTextEditor.cpp +++ b/modules/skottie/utils/TextEditor.cpp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -#include "tools/viewer/SkottieTextEditor.h" +#include "modules/skottie/utils/TextEditor.h" #include "include/core/SkCanvas.h" #include "include/core/SkColor.h" @@ -15,6 +15,8 @@ #include "include/private/base/SkAssert.h" #include "src/base/SkUTF.h" +namespace skottie_utils { + namespace { SkPath make_cursor_path() { @@ -64,7 +66,7 @@ size_t prev_utf8(const SkString& str, size_t index) { } // namespace -SkottieTextEditor::SkottieTextEditor( +TextEditor::TextEditor( std::unique_ptr&& prop, std::vector>&& deps) : fTextProp(std::move(prop)) @@ -73,9 +75,9 @@ SkottieTextEditor::SkottieTextEditor( , fCursorBounds(fCursorPath.computeTightBounds()) {} -SkottieTextEditor::~SkottieTextEditor() = default; +TextEditor::~TextEditor() = default; -void SkottieTextEditor::toggleEnabled() { +void TextEditor::toggleEnabled() { fEnabled = !fEnabled; auto txt = fTextProp->get(); @@ -90,13 +92,13 @@ void SkottieTextEditor::toggleEnabled() { fTimeBase = std::chrono::steady_clock::now(); } -std::tuple SkottieTextEditor::currentSelection() const { +std::tuple TextEditor::currentSelection() const { // Selection can be inverted. return std::make_tuple(std::min(std::get<0>(fSelection), std::get<1>(fSelection)), std::max(std::get<0>(fSelection), std::get<1>(fSelection))); } -size_t SkottieTextEditor::closestGlyph(const SkPoint& pt) const { +size_t TextEditor::closestGlyph(const SkPoint& pt) const { float min_distance = std::numeric_limits::max(); size_t min_index = 0; @@ -111,7 +113,7 @@ size_t SkottieTextEditor::closestGlyph(const SkPoint& pt) const { return min_index; } -void SkottieTextEditor::drawCursor(SkCanvas* canvas, const TextInfo& tinfo) const { +void TextEditor::drawCursor(SkCanvas* canvas, const TextInfo& tinfo) const { constexpr double kCursorHz = 2; const auto now_ms = std::chrono::duration_cast( std::chrono::steady_clock::now() - fTimeBase).count(); @@ -168,7 +170,7 @@ void SkottieTextEditor::drawCursor(SkCanvas* canvas, const TextInfo& tinfo) cons canvas->drawPath(cpath, p); } -void SkottieTextEditor::updateDeps(const SkString& txt) { +void TextEditor::updateDeps(const SkString& txt) { for (const auto& dep : fDependentProps) { auto txt_prop = dep->get(); txt_prop.fText = txt; @@ -176,7 +178,7 @@ void SkottieTextEditor::updateDeps(const SkString& txt) { } } -void SkottieTextEditor::insertChar(SkUnichar c) { +void TextEditor::insertChar(SkUnichar c) { auto txt = fTextProp->get(); const auto initial_size = txt.fText.size(); @@ -187,7 +189,7 @@ void SkottieTextEditor::insertChar(SkUnichar c) { this->updateDeps(txt.fText); } -void SkottieTextEditor::deleteChars(size_t offset, size_t count) { +void TextEditor::deleteChars(size_t offset, size_t count) { auto txt = fTextProp->get(); txt.fText.remove(offset, count); @@ -197,7 +199,7 @@ void SkottieTextEditor::deleteChars(size_t offset, size_t count) { fCursorIndex = offset; } -bool SkottieTextEditor::deleteSelection() { +bool TextEditor::deleteSelection() { const auto [glyph_sel_start, glyph_sel_end] = this->currentSelection(); if (glyph_sel_start == glyph_sel_end) { return false; @@ -214,7 +216,7 @@ bool SkottieTextEditor::deleteSelection() { return true; } -void SkottieTextEditor::onDecorate(SkCanvas* canvas, const TextInfo& tinfo) { +void TextEditor::onDecorate(SkCanvas* canvas, const TextInfo& tinfo) { const auto [sel_start, sel_end] = this->currentSelection(); fGlyphData.clear(); @@ -245,7 +247,7 @@ void SkottieTextEditor::onDecorate(SkCanvas* canvas, const TextInfo& tinfo) { } } -bool SkottieTextEditor::onMouseInput(SkScalar x, SkScalar y, skui::InputState state, +bool TextEditor::onMouseInput(SkScalar x, SkScalar y, skui::InputState state, skui::ModifierKey) { if (!fEnabled || fGlyphData.empty()) { return false; @@ -276,7 +278,7 @@ bool SkottieTextEditor::onMouseInput(SkScalar x, SkScalar y, skui::InputState st return true; } -bool SkottieTextEditor::onCharInput(SkUnichar c) { +bool TextEditor::onCharInput(SkUnichar c) { if (!fEnabled || fGlyphData.empty()) { return false; } @@ -319,3 +321,5 @@ bool SkottieTextEditor::onCharInput(SkUnichar c) { return true; } + +} // namespace skottie_utils diff --git a/tools/viewer/SkottieTextEditor.h b/modules/skottie/utils/TextEditor.h similarity index 87% rename from tools/viewer/SkottieTextEditor.h rename to modules/skottie/utils/TextEditor.h index 81f5a2aaabe0..c293b45db6d8 100644 --- a/tools/viewer/SkottieTextEditor.h +++ b/modules/skottie/utils/TextEditor.h @@ -15,12 +15,14 @@ #include +namespace skottie_utils { + // A sample WYSIWYG text editor built using the GlyphDecorator API. -class SkottieTextEditor final : public skottie::GlyphDecorator { +class TextEditor final : public skottie::GlyphDecorator { public: - explicit SkottieTextEditor(std::unique_ptr&&, - std::vector>&&); - ~SkottieTextEditor() override; + TextEditor(std::unique_ptr&&, + std::vector>&&); + ~TextEditor() override; void toggleEnabled(); @@ -58,4 +60,6 @@ class SkottieTextEditor final : public skottie::GlyphDecorator { std::chrono::time_point fTimeBase; }; +} // namespace skottie_utils + #endif // SkottieTextEditor_DEFINED diff --git a/modules/skparagraph/gm/simple_gm.cpp b/modules/skparagraph/gm/simple_gm.cpp index ba482bd8f320..29daf7fe8ec9 100644 --- a/modules/skparagraph/gm/simple_gm.cpp +++ b/modules/skparagraph/gm/simple_gm.cpp @@ -76,7 +76,7 @@ class ParagraphGM : public skiagm::GM { this->buildParagraph(); } - SkString onShortName() override { + SkString getName() const override { SkString name; name.printf("paragraph%s_%s", fFlags & kTimeLayout ? "_layout" : "", @@ -87,7 +87,7 @@ class ParagraphGM : public skiagm::GM { return name; } - SkISize onISize() override { + SkISize getISize() override { if (fFlags & kShowVisitor) { return SkISize::Make(810, 420); } diff --git a/modules/skparagraph/slides/ParagraphSlide.cpp b/modules/skparagraph/slides/ParagraphSlide.cpp index 4ea6cbdd3a8e..cc64b50eebac 100644 --- a/modules/skparagraph/slides/ParagraphSlide.cpp +++ b/modules/skparagraph/slides/ParagraphSlide.cpp @@ -802,28 +802,28 @@ class ParagraphSlide6 : public ParagraphSlide_Base { ParagraphBuilderImpl builder(paraStyle, getFontCollection()); builder.pushStyle(style0); - builder.addText(logo11, strlen(logo1)); + builder.addText(logo11, strlen(logo11)); builder.pop(); builder.pushStyle(style1); - builder.addText(logo12, strlen(logo2)); + builder.addText(logo12, strlen(logo12)); builder.pop(); builder.addText(" ", 3); builder.pushStyle(style0); - builder.addText(logo13, strlen(logo3)); + builder.addText(logo13, strlen(logo13)); builder.pop(); builder.pushStyle(style1); - builder.addText(logo14, strlen(logo4)); + builder.addText(logo14, strlen(logo14)); builder.pop(); builder.addText(" ", 3); builder.pushStyle(style0); - builder.addText(logo15, strlen(logo5)); + builder.addText(logo15, strlen(logo15)); builder.pop(); builder.pushStyle(style1); - builder.addText(logo16, strlen(logo6)); + builder.addText(logo16, strlen(logo16)); builder.pop(); auto paragraph = builder.Build(); diff --git a/modules/skplaintexteditor/app/editor_application.cpp b/modules/skplaintexteditor/app/editor_application.cpp index 745d7ad5b8b2..882799349f83 100644 --- a/modules/skplaintexteditor/app/editor_application.cpp +++ b/modules/skplaintexteditor/app/editor_application.cpp @@ -373,8 +373,6 @@ static constexpr sk_app::Window::BackendType kBackendType = sk_app::Window::kVul static constexpr sk_app::Window::BackendType kBackendType = sk_app::Window::kMetal_BackendType; #elif SK_GL static constexpr sk_app::Window::BackendType kBackendType = sk_app::Window::kNativeGL_BackendType; -#elif SK_DAWN -static constexpr sk_app::Window::BackendType kBackendType = sk_app::Window::kDawn_BackendType; #else static constexpr sk_app::Window::BackendType kBackendType = sk_app::Window::kRaster_BackendType; #endif diff --git a/modules/sksg/include/SkSGRenderEffect.h b/modules/sksg/include/SkSGRenderEffect.h index 1ad21eadf870..c9f63427876e 100644 --- a/modules/sksg/include/SkSGRenderEffect.h +++ b/modules/sksg/include/SkSGRenderEffect.h @@ -9,6 +9,7 @@ #define SkSGRenderEffect_DEFINED #include "modules/sksg/include/SkSGEffectNode.h" +#include "modules/sksg/include/SkSGNode.h" #include "include/core/SkBlendMode.h" #include "include/core/SkColor.h" @@ -107,22 +108,18 @@ class ImageFilter : public Node { return fFilter; } -protected: - explicit ImageFilter(sk_sp input = nullptr); + SG_ATTRIBUTE(CropRect, SkImageFilters::CropRect, fCropRect) - using InputsT = std::vector>; - explicit ImageFilter(std::unique_ptr inputs); +protected: + ImageFilter(); SkRect onRevalidate(InvalidationController*, const SkMatrix&) final; virtual sk_sp onRevalidateFilter() = 0; - sk_sp refInput(size_t) const; - private: - const std::unique_ptr fInputs; - - sk_sp fFilter; + sk_sp fFilter; + SkImageFilters::CropRect fCropRect = skif::kNoCropRect; using INHERITED = Node; }; @@ -136,6 +133,13 @@ class ImageFilterEffect final : public EffectNode { static sk_sp Make(sk_sp child, sk_sp filter); + enum class Cropping { + kNone, // Doesn't use a crop rect. + kContent, // Uses the content bounding box as a crop rect. + }; + + SG_ATTRIBUTE(Cropping, Cropping, fCropping) + protected: void onRender(SkCanvas*, const RenderContext*) const override; const RenderNode* onNodeAt(const SkPoint&) const override; @@ -146,6 +150,7 @@ class ImageFilterEffect final : public EffectNode { ImageFilterEffect(sk_sp child, sk_sp filter); sk_sp fImageFilter; + Cropping fCropping = Cropping::kNone; using INHERITED = EffectNode; }; @@ -178,7 +183,7 @@ class DropShadowImageFilter final : public ImageFilter { public: ~DropShadowImageFilter() override; - static sk_sp Make(sk_sp input = nullptr); + static sk_sp Make(); enum class Mode { kShadowAndForeground, kShadowOnly }; @@ -191,7 +196,7 @@ class DropShadowImageFilter final : public ImageFilter { sk_sp onRevalidateFilter() override; private: - explicit DropShadowImageFilter(sk_sp input); + explicit DropShadowImageFilter(); SkVector fOffset = { 0, 0 }, fSigma = { 0, 0 }; @@ -208,7 +213,7 @@ class BlurImageFilter final : public ImageFilter { public: ~BlurImageFilter() override; - static sk_sp Make(sk_sp input = nullptr); + static sk_sp Make(); SG_ATTRIBUTE(Sigma , SkVector , fSigma ) SG_ATTRIBUTE(TileMode, SkTileMode, fTileMode) @@ -217,10 +222,10 @@ class BlurImageFilter final : public ImageFilter { sk_sp onRevalidateFilter() override; private: - explicit BlurImageFilter(sk_sp input); + explicit BlurImageFilter(); SkVector fSigma = { 0, 0 }; - SkTileMode fTileMode = SkTileMode::kClamp; + SkTileMode fTileMode = SkTileMode::kDecal; using INHERITED = ImageFilter; }; diff --git a/modules/sksg/src/SkSGRenderEffect.cpp b/modules/sksg/src/SkSGRenderEffect.cpp index 4944ddbcfccd..2a21b6757b36 100644 --- a/modules/sksg/src/SkSGRenderEffect.cpp +++ b/modules/sksg/src/SkSGRenderEffect.cpp @@ -11,6 +11,8 @@ #include "include/core/SkCanvas.h" #include "include/core/SkMaskFilter.h" #include "include/core/SkShader.h" +#include "include/core/SkTileMode.h" +#include "include/effects/SkImageFilters.h" #include "src/core/SkMaskFilterBase.h" namespace sksg { @@ -105,6 +107,12 @@ ImageFilterEffect::~ImageFilterEffect() { } SkRect ImageFilterEffect::onRevalidate(InvalidationController* ic, const SkMatrix& ctm) { + const auto content_bounds = this->INHERITED::onRevalidate(ic, ctm); + + fImageFilter->setCropRect(fCropping == Cropping::kContent + ? content_bounds + : skif::kNoCropRect); + // FIXME: image filter effects should replace the descendents' damage! fImageFilter->revalidate(ic, ctm); @@ -114,8 +122,6 @@ SkRect ImageFilterEffect::onRevalidate(InvalidationController* ic, const SkMatri // appears to be conservative (false negatives). // SkASSERT(!filter || filter->canComputeFastBounds()); - const auto content_bounds = this->INHERITED::onRevalidate(ic, ctm); - return filter ? filter->computeFastBounds(content_bounds) : content_bounds; } @@ -136,30 +142,9 @@ void ImageFilterEffect::onRender(SkCanvas* canvas, const RenderContext* ctx) con this->INHERITED::onRender(canvas, filter_ctx); } -ImageFilter::ImageFilter(sk_sp input) - : ImageFilter(input ? std::make_unique(1, std::move(input)) : nullptr) {} - -ImageFilter::ImageFilter(std::unique_ptr inputs) - : INHERITED(kBubbleDamage_Trait) - , fInputs(std::move(inputs)) { - if (fInputs) { - for (const auto& input : *fInputs) { - this->observeInval(input); - } - } -} - -ImageFilter::~ImageFilter() { - if (fInputs) { - for (const auto& input : *fInputs) { - this->unobserveInval(input); - } - } -} +ImageFilter::ImageFilter() : INHERITED(kBubbleDamage_Trait) {} -sk_sp ImageFilter::refInput(size_t i) const { - return (fInputs && i < fInputs->size()) ? (*fInputs)[i]->getFilter() : nullptr; -} +ImageFilter::~ImageFilter() = default; SkRect ImageFilter::onRevalidate(InvalidationController*, const SkMatrix&) { SkASSERT(this->hasInval()); @@ -171,36 +156,39 @@ SkRect ImageFilter::onRevalidate(InvalidationController*, const SkMatrix&) { ExternalImageFilter:: ExternalImageFilter() = default; ExternalImageFilter::~ExternalImageFilter() = default; -sk_sp DropShadowImageFilter::Make(sk_sp input) { - return sk_sp(new DropShadowImageFilter(std::move(input))); +sk_sp DropShadowImageFilter::Make() { + return sk_sp(new DropShadowImageFilter()); } -DropShadowImageFilter::DropShadowImageFilter(sk_sp input) - : INHERITED(std::move(input)) {} +DropShadowImageFilter::DropShadowImageFilter() + : INHERITED() {} DropShadowImageFilter::~DropShadowImageFilter() = default; sk_sp DropShadowImageFilter::onRevalidateFilter() { if (fMode == Mode::kShadowOnly) { return SkImageFilters::DropShadowOnly(fOffset.x(), fOffset.y(), fSigma.x(), fSigma.y(), - fColor, this->refInput(0)); + fColor, nullptr, this->getCropRect()); } else { return SkImageFilters::DropShadow(fOffset.x(), fOffset.y(), fSigma.x(), fSigma.y(), - fColor, this->refInput(0)); + fColor, nullptr, this->getCropRect()); } } -sk_sp BlurImageFilter::Make(sk_sp input) { - return sk_sp(new BlurImageFilter(std::move(input))); +sk_sp BlurImageFilter::Make() { + return sk_sp(new BlurImageFilter()); } -BlurImageFilter::BlurImageFilter(sk_sp input) - : INHERITED(std::move(input)) {} +BlurImageFilter::BlurImageFilter() + : INHERITED() {} BlurImageFilter::~BlurImageFilter() = default; sk_sp BlurImageFilter::onRevalidateFilter() { - return SkImageFilters::Blur(fSigma.x(), fSigma.y(), fTileMode, this->refInput(0)); + // Tile modes other than kDecal require an explicit crop rect. + SkASSERT(fTileMode == SkTileMode::kDecal || + this->getCropRect() != SkImageFilters::CropRect(skif::kNoCropRect)); + return SkImageFilters::Blur(fSigma.x(), fSigma.y(), fTileMode, nullptr, this->getCropRect()); } sk_sp BlenderEffect::Make(sk_sp child, sk_sp blender) { diff --git a/modules/skunicode/BUILD.bazel b/modules/skunicode/BUILD.bazel index 13650a807ef1..64e31c68c370 100644 --- a/modules/skunicode/BUILD.bazel +++ b/modules/skunicode/BUILD.bazel @@ -7,6 +7,7 @@ exports_files_legacy() skia_cc_library( name = "skunicode", srcs = [ + "//modules/skunicode/src:icu_bidi_srcs", "//modules/skunicode/src:icu_srcs", "//modules/skunicode/src:srcs", ], diff --git a/modules/skunicode/BUILD.gn b/modules/skunicode/BUILD.gn index 9611044497f9..d60aad92f21e 100644 --- a/modules/skunicode/BUILD.gn +++ b/modules/skunicode/BUILD.gn @@ -17,9 +17,11 @@ if (skia_use_icu || skia_use_client_icu || skia_use_libgrapheme) { defines = [ "SK_UNICODE_AVAILABLE" ] if (skia_use_icu) { defines += [ "SK_UNICODE_ICU_IMPLEMENTATION" ] - } else if (skia_use_client_icu) { + } + if (skia_use_client_icu) { defines += [ "SK_UNICODE_CLIENT_IMPLEMENTATION" ] - } else if (skia_use_libgrapheme) { + } + if (skia_use_libgrapheme) { defines += [ "SK_UNICODE_LIBGRAPHEME_IMPLEMENTATION" ] } if (is_component_build) { @@ -33,7 +35,7 @@ if (skia_use_icu || skia_use_client_icu || skia_use_libgrapheme) { public = skia_unicode_public deps = [ "../..:skia" ] defines = [ "SKUNICODE_IMPLEMENTATION=1" ] - sources = skia_unicode_sources + sources = skia_unicode_sources + skia_unicode_icu_bidi_sources defines += [ "SK_UNICODE_AVAILABLE" ] configs += [ "../../:skia_private" ] @@ -50,17 +52,21 @@ if (skia_use_icu || skia_use_client_icu || skia_use_libgrapheme) { deps += [ "//third_party/icu" ] } configs += [ "../../third_party/icu/config:no_cxx" ] - } else if (skia_use_client_icu) { + } + if (skia_use_client_icu) { sources += skia_unicode_client_icu_sources defines += [ "SK_UNICODE_CLIENT_IMPLEMENTATION" ] - deps += [ skia_icu_bidi_third_party_dir ] - } else if (skia_use_libgrapheme) { + if (!skia_use_icu) { + deps += [ skia_icu_bidi_third_party_dir ] + } + } + if (skia_use_libgrapheme) { sources += skia_unicode_libgrapheme_sources defines += [ "SK_UNICODE_LIBGRAPHEME_IMPLEMENTATION" ] - deps += [ - skia_icu_bidi_third_party_dir, - skia_libgrapheme_third_party_dir, - ] + deps += [ skia_libgrapheme_third_party_dir ] + if (!skia_use_icu) { + deps += [ skia_icu_bidi_third_party_dir ] + } } } diff --git a/modules/skunicode/skunicode.gni b/modules/skunicode/skunicode.gni index 43fa910f8b5a..c961249e73e1 100644 --- a/modules/skunicode/skunicode.gni +++ b/modules/skunicode/skunicode.gni @@ -24,6 +24,10 @@ skia_unicode_sources = [ skia_unicode_icu_sources = [ "$_modules/skunicode/src/SkUnicode_icu.cpp", "$_modules/skunicode/src/SkUnicode_icu.h", +] + +# Generated by Bazel rule //modules/skunicode/src:icu_bidi_srcs +skia_unicode_icu_bidi_sources = [ "$_modules/skunicode/src/SkUnicode_icu_bidi.cpp", "$_modules/skunicode/src/SkUnicode_icu_bidi.h", ] @@ -32,8 +36,6 @@ skia_unicode_icu_sources = [ skia_unicode_client_icu_sources = [ "$_modules/skunicode/src/SkUnicode_client.cpp", "$_modules/skunicode/src/SkUnicode_client.h", - "$_modules/skunicode/src/SkUnicode_icu_bidi.cpp", - "$_modules/skunicode/src/SkUnicode_icu_bidi.h", ] # Generated by Bazel rule //modules/skunicode/src:builtin_srcs @@ -45,11 +47,8 @@ skia_unicode_runtime_icu_sources = [ "$_modules/skunicode/src/SkUnicode_icu_runtime.cpp" ] # Generated by Bazel rule //modules/skunicode/src:libgrapheme_srcs -skia_unicode_libgrapheme_sources = [ - "$_modules/skunicode/src/SkUnicode_icu_bidi.cpp", - "$_modules/skunicode/src/SkUnicode_icu_bidi.h", - "$_modules/skunicode/src/SkUnicode_libgrapheme.cpp", -] +skia_unicode_libgrapheme_sources = + [ "$_modules/skunicode/src/SkUnicode_libgrapheme.cpp" ] # Generated by Bazel rule //modules/skunicode/tests:tests skia_unicode_tests = [ "$_modules/skunicode/tests/SkUnicodeTest.cpp" ] diff --git a/modules/skunicode/src/BUILD.bazel b/modules/skunicode/src/BUILD.bazel index b03b48602fb1..bf88259bae0d 100644 --- a/modules/skunicode/src/BUILD.bazel +++ b/modules/skunicode/src/BUILD.bazel @@ -27,17 +27,11 @@ skia_filegroup( visibility = ["//modules/skunicode:__pkg__"], ) -ICU_BIDI_SRCS = [ - "SkUnicode_icu_bidi.cpp", - "SkUnicode_icu_bidi.h", -] - skia_filegroup( name = "icu_bidi_srcs", srcs = [ - # Leave this group empty for transition. - # "SkUnicode_icu_bidi.cpp", - # "SkUnicode_icu_bidi.h", + "SkUnicode_icu_bidi.cpp", + "SkUnicode_icu_bidi.h", ], visibility = ["//modules/skunicode:__pkg__"], ) @@ -49,7 +43,7 @@ skia_filegroup( "SkUnicode_icu.h", ":builtin_srcs", # TODO(kjlubick, bungeman): add support for SkUnicode_icu_runtime.cpp - ] + ICU_BIDI_SRCS, + ], visibility = ["//modules/skunicode:__pkg__"], ) @@ -58,7 +52,7 @@ skia_filegroup( srcs = [ "SkUnicode_client.cpp", "SkUnicode_client.h", - ] + ICU_BIDI_SRCS, + ], visibility = ["//modules/skunicode:__pkg__"], ) @@ -66,6 +60,6 @@ skia_filegroup( name = "libgrapheme_srcs", srcs = [ "SkUnicode_libgrapheme.cpp", - ] + ICU_BIDI_SRCS, + ], visibility = ["//modules/skunicode:__pkg__"], ) diff --git a/modules/skunicode/src/SkUnicode.cpp b/modules/skunicode/src/SkUnicode.cpp index 84f8280674a9..d93b22b624af 100644 --- a/modules/skunicode/src/SkUnicode.cpp +++ b/modules/skunicode/src/SkUnicode.cpp @@ -12,14 +12,15 @@ using namespace skia_private; std::unique_ptr SkUnicode::Make() { + std::unique_ptr unicode; #ifdef SK_UNICODE_ICU_IMPLEMENTATION - std::unique_ptr unicode = SkUnicode::MakeIcuBasedUnicode(); + unicode = SkUnicode::MakeIcuBasedUnicode(); if (unicode) { return unicode; } #endif #ifdef SK_UNICODE_LIBGRAPHEME_IMPLEMENTATION - std::unique_ptr unicode = SkUnicode::MakeLibgraphemeBasedUnicode(); + unicode = SkUnicode::MakeLibgraphemeBasedUnicode(); if (unicode) { return unicode; } diff --git a/modules/skunicode/src/SkUnicode_client.cpp b/modules/skunicode/src/SkUnicode_client.cpp index f968e35e38f3..43c036870b75 100644 --- a/modules/skunicode/src/SkUnicode_client.cpp +++ b/modules/skunicode/src/SkUnicode_client.cpp @@ -34,41 +34,6 @@ using namespace skia_private; -#ifndef SK_UNICODE_ICU_IMPLEMENTATION - -const char* SkUnicode_IcuBidi::errorName(UErrorCode status) { - return u_errorName_skia(status); -} -void SkUnicode_IcuBidi::bidi_close(UBiDi* bidi) { - ubidi_close_skia(bidi); -} -UBiDiDirection SkUnicode_IcuBidi::bidi_getDirection(const UBiDi* bidi) { - return ubidi_getDirection_skia(bidi); -} -SkBidiIterator::Position SkUnicode_IcuBidi::bidi_getLength(const UBiDi* bidi) { - return ubidi_getLength_skia(bidi); -} -SkBidiIterator::Level SkUnicode_IcuBidi::bidi_getLevelAt(const UBiDi* bidi, int pos) { - return ubidi_getLevelAt_skia(bidi, pos); -} -UBiDi* SkUnicode_IcuBidi::bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode) { - return ubidi_openSized_skia(maxLength, maxRunCount, pErrorCode); -} -void SkUnicode_IcuBidi::bidi_setPara(UBiDi* bidi, - const UChar* text, - int32_t length, - UBiDiLevel paraLevel, - UBiDiLevel* embeddingLevels, - UErrorCode* status) { - return ubidi_setPara_skia(bidi, text, length, paraLevel, embeddingLevels, status); -} -void SkUnicode_IcuBidi::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], - int levelsCount, - int32_t logicalFromVisual[]) { - ubidi_reorderVisual_skia(runLevels, levelsCount, logicalFromVisual); -} -#endif - class SkUnicode_client : public SkUnicodeHardCodedCharProperties { public: struct Data { @@ -129,7 +94,7 @@ class SkUnicode_client : public SkUnicodeHardCodedCharProperties { int utf8Units, TextDirection dir, std::vector* results) override { - return SkUnicode::extractBidi(utf8, utf8Units, dir, results); + return SkUnicode_IcuBidi::ExtractBidi(utf8, utf8Units, dir, results); } bool computeCodeUnitFlags(char utf8[], @@ -252,12 +217,12 @@ class SkBreakIterator_client: public SkBreakIterator { }; std::unique_ptr SkUnicode_client::makeBidiIterator(const uint16_t text[], int count, SkBidiIterator::Direction dir) { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr SkUnicode_client::makeBidiIterator(const char text[], int count, SkBidiIterator::Direction dir) { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr SkUnicode_client::makeBreakIterator(const char locale[], BreakType breakType) { diff --git a/modules/skunicode/src/SkUnicode_icu.cpp b/modules/skunicode/src/SkUnicode_icu.cpp index 7ec448835796..b01a398cb7cc 100644 --- a/modules/skunicode/src/SkUnicode_icu.cpp +++ b/modules/skunicode/src/SkUnicode_icu.cpp @@ -31,7 +31,7 @@ using namespace skia_private; -static const SkICULib* ICULib() { +const SkICULib* SkGetICULib() { static const auto gICU = SkLoadICULib(); return gICU.get(); @@ -41,47 +41,14 @@ static const SkICULib* ICULib() { #define SKICU_FUNC(funcname) \ template \ auto sk_##funcname(Args&&... args) -> decltype(funcname(std::forward(args)...)) { \ - return ICULib()->f_##funcname(std::forward(args)...); \ + return SkGetICULib()->f_##funcname(std::forward(args)...); \ } \ SKICU_EMIT_FUNCS #undef SKICU_FUNC -const char* SkUnicode_IcuBidi::errorName(UErrorCode status) { - return sk_u_errorName(status); -} - -void SkUnicode_IcuBidi::bidi_close(UBiDi* bidi) { - sk_ubidi_close(bidi); -} -UBiDiDirection SkUnicode_IcuBidi::bidi_getDirection(const UBiDi* bidi) { - return sk_ubidi_getDirection(bidi); -} -SkBidiIterator::Position SkUnicode_IcuBidi::bidi_getLength(const UBiDi* bidi) { - return sk_ubidi_getLength(bidi); -} -SkBidiIterator::Level SkUnicode_IcuBidi::bidi_getLevelAt(const UBiDi* bidi, int pos) { - return sk_ubidi_getLevelAt(bidi, pos); -} -UBiDi* SkUnicode_IcuBidi::bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode) { - return sk_ubidi_openSized(maxLength, maxRunCount, pErrorCode); -} -void SkUnicode_IcuBidi::bidi_setPara(UBiDi* bidi, - const UChar* text, - int32_t length, - UBiDiLevel paraLevel, - UBiDiLevel* embeddingLevels, - UErrorCode* status) { - return sk_ubidi_setPara(bidi, text, length, paraLevel, embeddingLevels, status); -} -void SkUnicode_IcuBidi::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], - int levelsCount, - int32_t logicalFromVisual[]) { - sk_ubidi_reorderVisual(runLevels, levelsCount, logicalFromVisual); -} - static inline UBreakIterator* sk_ubrk_clone(const UBreakIterator* bi, UErrorCode* status) { - const auto* icu = ICULib(); + const auto* icu = SkGetICULib(); SkASSERT(icu->f_ubrk_clone_ || icu->f_ubrk_safeClone_); return icu->f_ubrk_clone_ ? icu->f_ubrk_clone_(bi, status) @@ -327,12 +294,12 @@ class SkUnicode_icu : public SkUnicode { ~SkUnicode_icu() override { } std::unique_ptr makeBidiIterator(const uint16_t text[], int count, SkBidiIterator::Direction dir) override { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr makeBidiIterator(const char text[], int count, SkBidiIterator::Direction dir) override { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr makeBreakIterator(const char locale[], BreakType breakType) override { @@ -375,7 +342,7 @@ class SkUnicode_icu : public SkUnicode { int utf8Units, TextDirection dir, std::vector* results) override { - return SkUnicode::extractBidi(utf8, utf8Units, dir, results); + return SkUnicode_IcuBidi::ExtractBidi(utf8, utf8Units, dir, results); } bool getWords(const char utf8[], int utf8Units, const char* locale, std::vector* results) override { @@ -504,7 +471,7 @@ std::unique_ptr SkUnicode::MakeIcuBasedUnicode() { } #endif - return ICULib() + return SkGetICULib() ? std::make_unique() : nullptr; } diff --git a/modules/skunicode/src/SkUnicode_icu.h b/modules/skunicode/src/SkUnicode_icu.h index aa340cdc8c95..1259bdcae182 100644 --- a/modules/skunicode/src/SkUnicode_icu.h +++ b/modules/skunicode/src/SkUnicode_icu.h @@ -63,4 +63,7 @@ struct SkICULib { // Platform/config specific ICU factory. std::unique_ptr SkLoadICULib(); +// Get cached already loaded ICU library. +const SkICULib* SkGetICULib(); + #endif // SkUnicode_icu_DEFINED diff --git a/modules/skunicode/src/SkUnicode_icu_bidi.cpp b/modules/skunicode/src/SkUnicode_icu_bidi.cpp index 876791745ced..8a006fecd042 100644 --- a/modules/skunicode/src/SkUnicode_icu_bidi.cpp +++ b/modules/skunicode/src/SkUnicode_icu_bidi.cpp @@ -17,6 +17,79 @@ #include #include +#ifdef SK_UNICODE_ICU_IMPLEMENTATION + +#include "modules/skunicode/src/SkUnicode_icu.h" + +const char* SkUnicode_IcuBidi::errorName(UErrorCode status) { + return SkGetICULib()->f_u_errorName(status); +} + +void SkUnicode_IcuBidi::bidi_close(UBiDi* bidi) { + SkGetICULib()->f_ubidi_close(bidi); +} +UBiDiDirection SkUnicode_IcuBidi::bidi_getDirection(const UBiDi* bidi) { + return SkGetICULib()->f_ubidi_getDirection(bidi); +} +SkBidiIterator::Position SkUnicode_IcuBidi::bidi_getLength(const UBiDi* bidi) { + return SkGetICULib()->f_ubidi_getLength(bidi); +} +SkBidiIterator::Level SkUnicode_IcuBidi::bidi_getLevelAt(const UBiDi* bidi, int pos) { + return SkGetICULib()->f_ubidi_getLevelAt(bidi, pos); +} +UBiDi* SkUnicode_IcuBidi::bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode) { + return SkGetICULib()->f_ubidi_openSized(maxLength, maxRunCount, pErrorCode); +} +void SkUnicode_IcuBidi::bidi_setPara(UBiDi* bidi, + const UChar* text, + int32_t length, + UBiDiLevel paraLevel, + UBiDiLevel* embeddingLevels, + UErrorCode* status) { + return SkGetICULib()->f_ubidi_setPara(bidi, text, length, paraLevel, embeddingLevels, status); +} +void SkUnicode_IcuBidi::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], + int levelsCount, + int32_t logicalFromVisual[]) { + SkGetICULib()->f_ubidi_reorderVisual(runLevels, levelsCount, logicalFromVisual); +} + +#else // SK_UNICODE_ICU_IMPLEMENTATION + +const char* SkUnicode_IcuBidi::errorName(UErrorCode status) { + return u_errorName_skia(status); +} +void SkUnicode_IcuBidi::bidi_close(UBiDi* bidi) { + ubidi_close_skia(bidi); +} +UBiDiDirection SkUnicode_IcuBidi::bidi_getDirection(const UBiDi* bidi) { + return ubidi_getDirection_skia(bidi); +} +SkBidiIterator::Position SkUnicode_IcuBidi::bidi_getLength(const UBiDi* bidi) { + return ubidi_getLength_skia(bidi); +} +SkBidiIterator::Level SkUnicode_IcuBidi::bidi_getLevelAt(const UBiDi* bidi, int pos) { + return ubidi_getLevelAt_skia(bidi, pos); +} +UBiDi* SkUnicode_IcuBidi::bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode) { + return ubidi_openSized_skia(maxLength, maxRunCount, pErrorCode); +} +void SkUnicode_IcuBidi::bidi_setPara(UBiDi* bidi, + const UChar* text, + int32_t length, + UBiDiLevel paraLevel, + UBiDiLevel* embeddingLevels, + UErrorCode* status) { + return ubidi_setPara_skia(bidi, text, length, paraLevel, embeddingLevels, status); +} +void SkUnicode_IcuBidi::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], + int levelsCount, + int32_t logicalFromVisual[]) { + ubidi_reorderVisual_skia(runLevels, levelsCount, logicalFromVisual); +} + +#endif // SK_UNICODE_ICU_IMPLEMENTATION + namespace { using SkUnicodeBidi = std::unique_ptr>; @@ -33,9 +106,9 @@ class SkBidiIterator_icu : public SkBidiIterator { }; } // namespace -std::unique_ptr SkUnicode::makeBidiIterator(const uint16_t utf16[], - int utf16Units, - SkBidiIterator::Direction dir) { +std::unique_ptr SkUnicode_IcuBidi::MakeIterator(const uint16_t utf16[], + int utf16Units, + SkBidiIterator::Direction dir) { UErrorCode status = U_ZERO_ERROR; SkUnicodeBidi bidi(SkUnicode_IcuBidi::bidi_openSized(utf16Units, 0, &status)); if (U_FAILURE(status)) { @@ -54,9 +127,9 @@ std::unique_ptr SkUnicode::makeBidiIterator(const uint16_t utf16 return std::unique_ptr(new SkBidiIterator_icu(std::move(bidi))); } -std::unique_ptr SkUnicode::makeBidiIterator(const char utf8[], - int utf8Units, - SkBidiIterator::Direction dir) { +std::unique_ptr SkUnicode_IcuBidi::MakeIterator(const char utf8[], + int utf8Units, + SkBidiIterator::Direction dir) { // Convert utf8 into utf16 since ubidi only accepts utf16 if (!SkTFitsIn(utf8Units)) { SkDEBUGF("Bidi error: text too long"); @@ -73,7 +146,7 @@ std::unique_ptr SkUnicode::makeBidiIterator(const char utf8[], SkDEBUGCODE(int dstLen =) SkUTF::UTF8ToUTF16(utf16.get(), utf16Units, utf8, utf8Units); SkASSERT(dstLen == utf16Units); - return makeBidiIterator(utf16.get(), utf16Units, dir); + return MakeIterator(utf16.get(), utf16Units, dir); } /** Replaces invalid utf-8 sequences with REPLACEMENT CHARACTER U+FFFD. */ @@ -82,10 +155,10 @@ static inline SkUnichar utf8_next(const char** ptr, const char* end) { return val < 0 ? 0xFFFD : val; } -bool SkUnicode::extractBidi(const char utf8[], - int utf8Units, - TextDirection dir, - std::vector* bidiRegions) { +bool SkUnicode_IcuBidi::ExtractBidi(const char utf8[], + int utf8Units, + SkUnicode::TextDirection dir, + std::vector* bidiRegions) { // Convert to UTF16 since for now bidi iterator only operates on utf16 auto utf16 = SkUnicode::convertUtf8ToUtf16(utf8, utf8Units); @@ -97,7 +170,7 @@ bool SkUnicode::extractBidi(const char utf8[], return false; } SkASSERT(bidi); - uint8_t bidiLevel = (dir == TextDirection::kLTR) ? UBIDI_LTR : UBIDI_RTL; + uint8_t bidiLevel = (dir == SkUnicode::TextDirection::kLTR) ? UBIDI_LTR : UBIDI_RTL; // The required lifetime of utf16 isn't well documented. // It appears it isn't used after ubidi_setPara except through ubidi_getText. SkUnicode_IcuBidi::bidi_setPara(bidi.get(), (const UChar*)utf16.c_str(), utf16.size(), bidiLevel, nullptr, @@ -110,11 +183,11 @@ bool SkUnicode::extractBidi(const char utf8[], // Iterate through bidi regions and the result positions into utf8 const char* start8 = utf8; const char* end8 = utf8 + utf8Units; - BidiLevel currentLevel = 0; + SkUnicode::BidiLevel currentLevel = 0; - Position pos8 = 0; - Position pos16 = 0; - Position end16 = SkUnicode_IcuBidi::bidi_getLength(bidi.get()); + SkUnicode::Position pos8 = 0; + SkUnicode::Position pos16 = 0; + SkUnicode::Position end16 = SkUnicode_IcuBidi::bidi_getLength(bidi.get()); if (end16 == 0) { return true; @@ -130,7 +203,7 @@ bool SkUnicode::extractBidi(const char utf8[], if (pos16 == 0) { currentLevel = level; } else if (level != currentLevel) { - Position end = start8 - utf8; + SkUnicode::Position end = start8 - utf8; bidiRegions->emplace_back(pos8, end, currentLevel); currentLevel = level; pos8 = end; @@ -138,7 +211,7 @@ bool SkUnicode::extractBidi(const char utf8[], SkUnichar u = utf8_next(&start8, end8); pos16 += SkUTF::ToUTF16(u); } - Position end = start8 - utf8; + SkUnicode::Position end = start8 - utf8; if (end != pos8) { bidiRegions->emplace_back(pos8, end, currentLevel); } diff --git a/modules/skunicode/src/SkUnicode_icu_bidi.h b/modules/skunicode/src/SkUnicode_icu_bidi.h index 80b8f871c3f3..e46b052b0190 100644 --- a/modules/skunicode/src/SkUnicode_icu_bidi.h +++ b/modules/skunicode/src/SkUnicode_icu_bidi.h @@ -12,9 +12,19 @@ #include #include #include +#include +#include class SkUnicode_IcuBidi { public: + static std::unique_ptr MakeIterator(const uint16_t utf16[], int utf16Units, + SkBidiIterator::Direction dir); + static std::unique_ptr MakeIterator(const char utf8[], + int utf8Units, + SkBidiIterator::Direction dir); + static bool ExtractBidi(const char utf8[], int utf8Units, SkUnicode::TextDirection dir, + std::vector* bidiRegions); + static const char* errorName(UErrorCode status); static void bidi_close(UBiDi* bidi); static UBiDiDirection bidi_getDirection(const UBiDi* bidi); diff --git a/modules/skunicode/src/SkUnicode_libgrapheme.cpp b/modules/skunicode/src/SkUnicode_libgrapheme.cpp index 027b9cbef61a..20e3ae9e2ca8 100644 --- a/modules/skunicode/src/SkUnicode_libgrapheme.cpp +++ b/modules/skunicode/src/SkUnicode_libgrapheme.cpp @@ -21,48 +21,8 @@ extern "C" { #include #include -#undef LEN -#define LEN(x) (sizeof(x) / sizeof(*(x))) - using namespace skia_private; -#ifndef SK_UNICODE_ICU_IMPLEMENTATION - -/* We "borrow" bidi implementatoin from ICU for now */ - -const char* SkUnicode_IcuBidi::errorName(UErrorCode status) { - return u_errorName_skia(status); -} -void SkUnicode_IcuBidi::bidi_close(UBiDi* bidi) { - ubidi_close_skia(bidi); -} -UBiDiDirection SkUnicode_IcuBidi::bidi_getDirection(const UBiDi* bidi) { - return ubidi_getDirection_skia(bidi); -} -SkBidiIterator::Position SkUnicode_IcuBidi::bidi_getLength(const UBiDi* bidi) { - return ubidi_getLength_skia(bidi); -} -SkBidiIterator::Level SkUnicode_IcuBidi::bidi_getLevelAt(const UBiDi* bidi, int pos) { - return ubidi_getLevelAt_skia(bidi, pos); -} -UBiDi* SkUnicode_IcuBidi::bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode) { - return ubidi_openSized_skia(maxLength, maxRunCount, pErrorCode); -} -void SkUnicode_IcuBidi::bidi_setPara(UBiDi* bidi, - const UChar* text, - int32_t length, - UBiDiLevel paraLevel, - UBiDiLevel* embeddingLevels, - UErrorCode* status) { - return ubidi_setPara_skia(bidi, text, length, paraLevel, embeddingLevels, status); -} -void SkUnicode_IcuBidi::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], - int levelsCount, - int32_t logicalFromVisual[]) { - ubidi_reorderVisual_skia(runLevels, levelsCount, logicalFromVisual); -} -#endif - class SkUnicode_libgrapheme : public SkUnicodeHardCodedCharProperties { public: SkUnicode_libgrapheme() { } @@ -86,7 +46,7 @@ class SkUnicode_libgrapheme : public SkUnicodeHardCodedCharProperties { int utf8Units, TextDirection dir, std::vector* results) override { - return SkUnicode::extractBidi(utf8, utf8Units, dir, results); + return SkUnicode_IcuBidi::ExtractBidi(utf8, utf8Units, dir, results); } bool computeCodeUnitFlags(char utf8[], @@ -249,12 +209,12 @@ class SkBreakIterator_libgrapheme: public SkBreakIterator { std::unique_ptr SkUnicode_libgrapheme::makeBidiIterator(const uint16_t text[], int count, SkBidiIterator::Direction dir) { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr SkUnicode_libgrapheme::makeBidiIterator(const char text[], int count, SkBidiIterator::Direction dir) { - return SkUnicode::makeBidiIterator(text, count, dir); + return SkUnicode_IcuBidi::MakeIterator(text, count, dir); } std::unique_ptr SkUnicode_libgrapheme::makeBreakIterator(const char locale[], BreakType breakType) { diff --git a/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java b/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java index 04c5c1af6c29..bbd08c6a9bab 100644 --- a/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java +++ b/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java @@ -45,14 +45,18 @@ public static ImageFilter distantLitDiffuse(float x, float y, float z, Color c, * @param sigmaX The Gaussian sigma value for blurring along the X axis. * @param sigmaY The Gaussian sigma value for blurring along the Y axis. * @param tileMode The tile mode applied at edges + * @param left Left, top, right, bottom are used to make the crop rect * @param input The input filter that is blurred, uses source bitmap if this is null. */ - public static ImageFilter blur(float sigmaX, float sigmaY, TileMode tileMode, @Nullable ImageFilter input) { + public static ImageFilter blur(float sigmaX, float sigmaY, TileMode tileMode, + float left, float top, float right, float bottom, + @Nullable ImageFilter input) { long nativeInput = 0; if (input != null) { nativeInput = input.getNativeInstance(); } - return new ImageFilter(nBlur(sigmaX, sigmaY, tileMode.nativeInt, nativeInput)); + return new ImageFilter(nBlur(sigmaX, sigmaY, tileMode.nativeInt, + left, top, right, bottom, nativeInput)); } /** @@ -112,7 +116,8 @@ private static native long nDistantLitDiffuse(float x, float y, float z, float r, float g, float b, float surfaceScale, float kd, long native_input); - private static native long nBlur(float sigmaX, float sigmaY, int tileMode, long native_input); + private static native long nBlur(float sigmaX, float sigmaY, int tileMode, + float l, float t, float r, float b, long native_input); private static native long nDropShadow(float dx, float dy, float sigmaX, float sigmaY, float r, float g, float b, long native_input); private static native long nBlend(int blendMode, long native_background, long native_foreground); diff --git a/platform_tools/android/apps/skqp/build.gradle b/platform_tools/android/apps/skqp/build.gradle index 991e671caff7..ef3aaa2d012e 100644 --- a/platform_tools/android/apps/skqp/build.gradle +++ b/platform_tools/android/apps/skqp/build.gradle @@ -25,5 +25,5 @@ android { sourceSets.main.jni.srcDirs = [] sourceSets.main.jniLibs.srcDir "src/main/libs" productFlavors { universal{}; arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan{}; } - setupSkiaLibraryBuild(project, applicationVariants, "libskqp_app") + setupSkiaLibraryBuild(project, applicationVariants, "libskqp_jni") } diff --git a/platform_tools/android/bin/android_build_universal_viewer b/platform_tools/android/bin/android_build_universal_viewer index f98eeb80881a..276af04c3df4 100755 --- a/platform_tools/android/bin/android_build_universal_viewer +++ b/platform_tools/android/bin/android_build_universal_viewer @@ -9,7 +9,7 @@ make_gn() { cat << EOF target_cpu = "$ARCH" is_debug = false - ndk = "$ANDROID_NDK" + ndk = "$ANDROID_NDK_HOME" ndk_api = 26 EOF } @@ -18,7 +18,7 @@ main() { APP="$1" LIB="$2" - ANDROID_NDK="$(cd "$ANDROID_NDK"; pwd)" + ANDROID_NDK_HOME="$(cd "$ANDROID_NDK_HOME"; pwd)" ANDROID_HOME="$(cd "$ANDROID_HOME"; pwd)" cd "$(dirname "$0")/../../.." @@ -58,10 +58,10 @@ main() { usage() { cat >&2 < /dev/null || usage command -v python > /dev/null || usage diff --git a/platform_tools/android/bin/android_gdb_native b/platform_tools/android/bin/android_gdb_native index 9d7fa1902c22..9b6383612c40 100755 --- a/platform_tools/android/bin/android_gdb_native +++ b/platform_tools/android/bin/android_gdb_native @@ -39,9 +39,9 @@ GDBSETUP=$GDB_TMP_DIR/gdb.setup # Launch gdb client HOST=`uname | tr '[A-Z]' '[a-z]'` if [ $HOST == "darwin" ]; then - GDB_HOST=$ANDROID_NDK_ROOT/prebuilt/darwin-x86_64/bin/gdb + GDB_HOST=$ANDROID_NDK_HOME/prebuilt/darwin-x86_64/bin/gdb elif [ $HOST == "linux" ]; then - GDB_HOST=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/gdb + GDB_HOST=$ANDROID_NDK_HOME/prebuilt/linux-x86_64/bin/gdb else echo "Could not automatically determine OS!" exit 1; diff --git a/platform_tools/android/bin/utils/android_setup.sh b/platform_tools/android/bin/utils/android_setup.sh index 4d6dba3b8cab..ec3821b85eb2 100755 --- a/platform_tools/android/bin/utils/android_setup.sh +++ b/platform_tools/android/bin/utils/android_setup.sh @@ -62,11 +62,11 @@ if [ -z "$ANDROID_SDK_ROOT" ]; then fi fi -if [ -z "$ANDROID_NDK_ROOT" ]; then +if [ -z "$ANDROID_NDK_HOME" ]; then if [ -d "${ANDROID_SDK_ROOT}/ndk-bundle" ]; then - exportVar ANDROID_NDK_ROOT ${ANDROID_SDK_ROOT}/ndk-bundle + exportVar ANDROID_NDK_HOME ${ANDROID_SDK_ROOT}/ndk-bundle else - echo "No ANDROID_NDK_ROOT set and can't auto detect it from location of SDK." + echo "No ANDROID_NDK_HOME set and can't auto detect it from location of SDK." exit 1 fi fi diff --git a/public.bzl b/public.bzl index bec7fc830f42..4d1c673b3e61 100644 --- a/public.bzl +++ b/public.bzl @@ -144,13 +144,13 @@ SKIA_PUBLIC_HDRS = [ "include/encode/SkWebpEncoder.h", "include/gpu/d3d/GrD3DBackendContext.h", "include/gpu/d3d/GrD3DTypes.h", - "include/gpu/dawn/GrDawnTypes.h", "include/gpu/ganesh/GrExternalTextureGenerator.h", "include/gpu/ganesh/SkImageGanesh.h", "include/gpu/ganesh/SkMeshGanesh.h", "include/gpu/ganesh/SkSurfaceGanesh.h", "include/gpu/ganesh/gl/GrGLBackendSurface.h", "include/gpu/ganesh/mtl/SkSurfaceMetal.h", + "include/gpu/ganesh/vk/GrVkBackendSurface.h", "include/gpu/gl/egl/GrGLMakeEGLInterface.h", "include/gpu/gl/glx/GrGLMakeGLXInterface.h", "include/gpu/gl/GrGLAssembleHelpers.h", @@ -161,7 +161,6 @@ SKIA_PUBLIC_HDRS = [ "include/gpu/GrBackendDrawableInfo.h", "include/gpu/GrBackendSemaphore.h", "include/gpu/GrBackendSurface.h", - "include/gpu/GrBackendSurfaceMutableState.h", "include/gpu/GrContextOptions.h", "include/gpu/GrContextThreadSafeProxy.h", "include/gpu/GrDirectContext.h", @@ -250,6 +249,7 @@ BASE_SRCS_ALL = [ "include/private/base/SkAPI.h", "include/private/base/SkAlign.h", "include/private/base/SkAlignedStorage.h", + "include/private/base/SkAnySubclass.h", "include/private/base/SkAssert.h", "include/private/base/SkAttributes.h", "include/private/base/SkCPUTypes.h", @@ -391,10 +391,13 @@ BASE_SRCS_ALL = [ "src/core/SkBlendModePriv.h", "src/core/SkBlenderBase.h", "src/core/SkBlitBWMaskTemplate.h", + "src/core/SkBlitMask.h", "src/core/SkBlitMask_opts.cpp", "src/core/SkBlitMask_opts_ssse3.cpp", "src/core/SkBlitRow.h", "src/core/SkBlitRow_D32.cpp", + "src/core/SkBlitRow_opts.cpp", + "src/core/SkBlitRow_opts_hsw.cpp", "src/core/SkBlitter.cpp", "src/core/SkBlitter.h", "src/core/SkBlitter_A8.cpp", @@ -414,7 +417,6 @@ BASE_SRCS_ALL = [ "src/core/SkCapabilities.cpp", "src/core/SkChecksum.cpp", "src/core/SkChecksum.h", - "src/core/SkChromeRemoteGlyphCache.cpp", "src/core/SkClipStack.cpp", "src/core/SkClipStack.h", "src/core/SkClipStackDevice.cpp", @@ -483,7 +485,6 @@ BASE_SRCS_ALL = [ "src/core/SkFontStream.cpp", "src/core/SkFontStream.h", "src/core/SkFont_serial.cpp", - "src/core/SkFuzzLogging.h", "src/core/SkGaussFilter.cpp", "src/core/SkGaussFilter.h", "src/core/SkGeometry.cpp", @@ -532,6 +533,10 @@ BASE_SRCS_ALL = [ "src/core/SkMatrixInvert.h", "src/core/SkMatrixPriv.h", "src/core/SkMatrixUtils.h", + "src/core/SkMemset.h", + "src/core/SkMemset_opts.cpp", + "src/core/SkMemset_opts_avx.cpp", + "src/core/SkMemset_opts_erms.cpp", "src/core/SkMesh.cpp", "src/core/SkMeshPriv.h", "src/core/SkMessageBus.h", @@ -545,7 +550,7 @@ BASE_SRCS_ALL = [ "src/core/SkOSFile.h", "src/core/SkOpts.cpp", "src/core/SkOpts.h", - "src/core/SkOpts_erms.cpp", + "src/core/SkOptsTargets.h", "src/core/SkOrderedReadBuffer.h", "src/core/SkOverdrawCanvas.cpp", "src/core/SkPaint.cpp", @@ -670,6 +675,9 @@ BASE_SRCS_ALL = [ "src/core/SkSurfacePriv.h", "src/core/SkSwizzle.cpp", "src/core/SkSwizzlePriv.h", + "src/core/SkSwizzler_opts.cpp", + "src/core/SkSwizzler_opts_hsw.cpp", + "src/core/SkSwizzler_opts_ssse3.cpp", "src/core/SkTDynamicHash.h", "src/core/SkTHash.h", "src/core/SkTMultiMap.h", @@ -774,6 +782,8 @@ BASE_SRCS_ALL = [ "src/gpu/Blend.h", "src/gpu/BlendFormula.cpp", "src/gpu/BlendFormula.h", + "src/gpu/BlurUtils.cpp", + "src/gpu/BlurUtils.h", "src/gpu/BufferWriter.h", "src/gpu/DitherUtils.cpp", "src/gpu/DitherUtils.h", @@ -1065,10 +1075,6 @@ BASE_SRCS_ALL = [ "src/gpu/ganesh/effects/GrDisableColorXP.h", "src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp", "src/gpu/ganesh/effects/GrDistanceFieldGeoProc.h", - "src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.cpp", - "src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h", - "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.cpp", - "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h", "src/gpu/ganesh/effects/GrMatrixEffect.cpp", "src/gpu/ganesh/effects/GrMatrixEffect.h", "src/gpu/ganesh/effects/GrModulateAtlasCoverageEffect.cpp", @@ -1291,11 +1297,11 @@ BASE_SRCS_ALL = [ "src/opts/SkBitmapProcState_opts.h", "src/opts/SkBlitMask_opts.h", "src/opts/SkBlitRow_opts.h", + "src/opts/SkMemset_opts.h", "src/opts/SkOpts_RestoreTarget.h", "src/opts/SkOpts_SetTarget.h", "src/opts/SkRasterPipeline_opts.h", "src/opts/SkSwizzler_opts.h", - "src/opts/SkUtils_opts.h", "src/pathops/SkAddIntersections.cpp", "src/pathops/SkAddIntersections.h", "src/pathops/SkDConicLineIntersection.cpp", @@ -1690,6 +1696,7 @@ BASE_SRCS_ALL = [ "src/text/gpu/SDFMaskFilter.h", "src/text/gpu/SDFTControl.cpp", "src/text/gpu/SDFTControl.h", + "src/text/gpu/SkChromeRemoteGlyphCache.cpp", "src/text/gpu/Slug.cpp", "src/text/gpu/SlugImpl.cpp", "src/text/gpu/SlugImpl.h", @@ -2131,6 +2138,8 @@ MTL_SRCS = [ ] VULKAN_SRCS = [ + "src/gpu/ganesh/vk/GrVkBackendSurface.cpp", + "src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h", "src/gpu/ganesh/vk/GrVkBuffer.cpp", "src/gpu/ganesh/vk/GrVkBuffer.h", "src/gpu/ganesh/vk/GrVkCaps.cpp", diff --git a/relnotes/path_715M.md b/relnotes/path_715M.md deleted file mode 100644 index 7be9a40f1fc5..000000000000 --- a/relnotes/path_715M.md +++ /dev/null @@ -1 +0,0 @@ -SkPath now enforces an upper limit of 715 million path verbs. diff --git a/resources/skottie/skottie-gaussian-blur.json b/resources/skottie/skottie-gaussian-blur.json new file mode 100644 index 000000000000..ef26b618de74 --- /dev/null +++ b/resources/skottie/skottie-gaussian-blur.json @@ -0,0 +1 @@ +{"v":"5.9.5","fr":30,"ip":0,"op":300,"w":500,"h":500,"nm":"Gaussian Blur","ddd":0,"assets":[{"id":"comp_0","nm":"precomp","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[200,200],"ix":2},"p":{"a":0,"k":[100,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0,1,0.250980407,1],"ix":4},"o":{"a":0,"k":75,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":300,"s":[360]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":50,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":162,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.250980407,0,1],"ix":4},"o":{"a":0,"k":75,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":300,"s":[720]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[175,175],"ix":2},"p":{"a":0,"k":[-90,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250980407,0,1,1],"ix":4},"o":{"a":0,"k":75,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":300,"s":[-360]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.5,"st":0,"ct":1,"bm":0}]}],"fonts":{"list":[{"origin":0,"fPath":"","fClass":"","fFamily":"Arial","fWeight":"","fStyle":"Regular","fName":"ArialMT","ascent":75.6476929411292}]},"layers":[{"ddd":0,"ind":1,"ty":5,"nm":"text repeat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[-720]}],"ix":10},"p":{"a":0,"k":[375,425,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":30,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"t":{"d":{"k":[{"s":{"s":80,"f":"ArialMT","t":"Blurry","ca":0,"j":2,"tr":0,"lh":96,"ls":0,"fc":[0,0,0]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":5,"nm":"text no repeat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[-720]}],"ix":10},"p":{"a":0,"k":[125,425,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":30,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]}],"t":{"d":{"k":[{"s":{"s":80,"f":"ArialMT","t":"Blurry","ca":0,"j":2,"tr":0,"lh":96,"ls":0,"fc":[0,0,0]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":1,"nm":"solid repeat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[1080]}],"ix":10},"p":{"a":0,"k":[375,91,0],"ix":2,"l":2},"a":{"a":0,"k":[150,150,0],"ix":1,"l":2},"s":{"a":0,"k":[50,50,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":20,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"sw":300,"sh":300,"sc":"#2c96b6","ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":1,"nm":"solid no repeat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[1080]}],"ix":10},"p":{"a":0,"k":[125,91,0],"ix":2,"l":2},"a":{"a":0,"k":[150,150,0],"ix":1,"l":2},"s":{"a":0,"k":[50,50,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":20,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]}],"sw":300,"sh":300,"sc":"#2c96b6","ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"precomp repeat","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[375,250,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[50,50,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":30,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"w":500,"h":500,"ip":0,"op":300.5,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"precomp no repeat","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[125,250,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[50,50,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":30,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]}],"w":500,"h":500,"ip":0,"op":300.5,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":1,"nm":"White Solid 10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2,"l":2},"a":{"a":0,"k":[256,256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"sw":512,"sh":512,"sc":"#ffffff","ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/resources/sksl/BUILD.bazel b/resources/sksl/BUILD.bazel index a62d516f5cd7..9b5c8e044af3 100644 --- a/resources/sksl/BUILD.bazel +++ b/resources/sksl/BUILD.bazel @@ -122,6 +122,7 @@ skia_filegroup( name = "sksl_wgsl_tests_sources", srcs = [ ":sksl_blend_tests", + ":sksl_folding_tests", ":sksl_shared_tests", ":sksl_wgsl_tests", ], @@ -244,6 +245,7 @@ skia_filegroup( "errors/CallNonFunction.rts", "errors/CanExitWithoutReturningValue.sksl", "errors/CommasAsConstantExpressions.rts", + "errors/CommasWithArrays.sksl", "errors/ComparisonDimensional.rts", "errors/ConstructorArgumentCount.rts", "errors/ConstructorTypeMismatch.rts", @@ -386,6 +388,9 @@ skia_filegroup( "errors/OverflowUintLiteral.sksl", "errors/OverloadedBuiltin.sksl", "errors/OverloadedMain.sksl", + "errors/PixelFormatMismatch.compute", + "errors/PixelFormatMissing.compute", + "errors/PixelFormatOverloads.compute", "errors/PrecisionQualifiersDisallowed.sksl", "errors/PrivateTypes.rts", "errors/PrivateVariables.rts", @@ -453,6 +458,7 @@ skia_filegroup( "errors/ReturnFromVoid.rts", "errors/ReturnMissingValue.rts", "errors/ReturnTypeMismatch.rts", + "errors/SamplerExternalOES.frag", "errors/SelfReferentialInitializerExpression.rts", "errors/SpuriousFloat.rts", "errors/StructMemberReservedName.rts", @@ -575,7 +581,6 @@ skia_filegroup( "inliner/ModifiedArrayParametersCannotBeInlined.sksl", "inliner/ModifiedStructParametersCannotBeInlined.sksl", "inliner/NoInline.sksl", - "inliner/OpaqueCallsCannotBeInlined.sksl", "inliner/Ossfuzz37994.sksl", "inliner/ShortCircuitEvaluationsCannotInlineRightHandSide.sksl", "inliner/StaticSwitch.sksl", @@ -742,6 +747,8 @@ skia_filegroup( "workarounds/RewriteMatrixComparisons.sksl", "workarounds/RewriteMatrixVectorMultiply.sksl", "workarounds/TernaryShortCircuit.sksl", + "workarounds/VoidInSequenceExpressions.sksl", + "workarounds/VoidInSequenceExpressionsWithVoidMain.sksl", ], ) @@ -920,6 +927,7 @@ skia_filegroup( "shared/MatrixSwizzleStore.sksl", "shared/MatrixToVectorCast.sksl", "shared/MultipleAssignments.sksl", + "shared/NestedComparisonIntrinsics.sksl", "shared/NoFragCoordsPos.vert", "shared/NoFragCoordsPosRT.vert", "shared/NormalizationVert.vert", @@ -1042,6 +1050,7 @@ skia_filegroup( "spirv/InterfaceBlockPushConstant.sksl", "spirv/LayoutMultipleOf4.sksl", "spirv/LayoutOutOfOrder.sksl", + "spirv/MixedSamplerTypes.sksl", "spirv/OpaqueTypeInArray.sksl", "spirv/Ossfuzz35916.sksl", "spirv/Ossfuzz37627.sksl", @@ -1049,8 +1058,7 @@ skia_filegroup( "spirv/Ossfuzz53202.sksl", "spirv/StructArrayMemberInDifferentLayouts.sksl", "spirv/UnusedInterfaceBlock.sksl", - "spirv/WGSLLayoutInVulkanSPIRV.sksl", - "spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.sksl", + "spirv/WrongCombinedSamplerLayoutForWebGPUSampler.sksl", "workarounds/RewriteMatrixVectorMultiply.sksl", ], ) @@ -1058,6 +1066,14 @@ skia_filegroup( skia_filegroup( name = "sksl_wgsl_tests", srcs = [ + "shared/Derivatives.sksl", + "shared/Optimizations.sksl", + "shared/Switch.sksl", + "shared/SwitchDefaultOnly.sksl", + "shared/SwitchWithFallthrough.sksl", + "shared/SwitchWithFallthroughAndVarDecls.sksl", + "shared/SwitchWithLoops.sksl", + "shared/SwitchWithLoopsES3.sksl", "spirv/CombinedSamplerTypeDawnCompatMode.sksl", "spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl", "wgsl/BuiltinFragmentStageIO.sksl", @@ -1068,6 +1084,7 @@ skia_filegroup( "wgsl/CastMat4x4ToMat3x4.sksl", "wgsl/CastMat4x4ToMat4x3.sksl", "wgsl/CastVec4ToMat2x2.sksl", + "wgsl/EntrypointIsWrittenLast.sksl", "wgsl/Equality.sksl", "wgsl/FunctionCallDependencies.sksl", "wgsl/GlobalUniforms.sksl", @@ -1081,6 +1098,7 @@ skia_filegroup( "wgsl/OutParams.sksl", "wgsl/Sample.sksl", "wgsl/TernaryThenShortCircuit.sksl", + "wgsl/UniformArrays.sksl", "wgsl/UniformMatrices.sksl", "wgsl/UserDefinedPipelineIO.sksl", "wgsl/VertexPositionOutputIsAlwaysDeclared.vert", diff --git a/resources/sksl/compute/DesaturateFunction.compute b/resources/sksl/compute/DesaturateFunction.compute index f45b37578171..a5908128cf08 100644 --- a/resources/sksl/compute/DesaturateFunction.compute +++ b/resources/sksl/compute/DesaturateFunction.compute @@ -1,16 +1,18 @@ layout(local_size_x = 16, local_size_y = 16) in; -layout(binding=0) readonly texture2D src; -layout(binding=1) writeonly texture2D dest; +layout(binding=0, rgba32f) readonly texture2D src; +layout(binding=1, rgba32f) writeonly texture2D dest; -noinline void desaturate(readonlyTexture2D src, writeonlyTexture2D dest) { +noinline void desaturate(layout(rgba32f) readonly texture2D src, + layout(rgba32f) writeonly texture2D dest) { half4 color = textureRead(src, sk_GlobalInvocationID.xy); color.rgb = half3(dot(color.rgb, half3(0.22, 0.67, 0.11))); textureWrite(dest, sk_GlobalInvocationID.xy, color); } void main() { - if (sk_GlobalInvocationID.x < textureWidth(src) && sk_GlobalInvocationID.y < textureHeight(src)) { + if (sk_GlobalInvocationID.x < textureWidth(src) && + sk_GlobalInvocationID.y < textureHeight(src)) { desaturate(src, dest); } } diff --git a/resources/sksl/compute/DesaturateReadWrite.compute b/resources/sksl/compute/DesaturateReadWrite.compute index 99af4a3401c3..80e9c9a0de29 100644 --- a/resources/sksl/compute/DesaturateReadWrite.compute +++ b/resources/sksl/compute/DesaturateReadWrite.compute @@ -1,6 +1,7 @@ layout(local_size_x = 16, local_size_y = 16) in; -layout(binding=0) texture2D tex; +layout(binding=0, rgba32f) readonly texture2D texIn; +layout(binding=1, rgba32f) writeonly texture2D texOut; half4 desaturate(half4 color) { color.rgb = half3(dot(color.rgb, half3(0.22, 0.67, 0.11))); @@ -8,7 +9,9 @@ half4 desaturate(half4 color) { } void main() { - if (sk_GlobalInvocationID.x < textureWidth(tex) && sk_GlobalInvocationID.y < textureHeight(tex)) { - textureWrite(tex, sk_GlobalInvocationID.xy, desaturate(textureRead(tex, sk_GlobalInvocationID.xy))); + if (sk_GlobalInvocationID.x < textureWidth(texIn) && + sk_GlobalInvocationID.y < textureHeight(texIn)) { + half4 gray = desaturate(textureRead(texIn, sk_GlobalInvocationID.xy)); + textureWrite(texOut, sk_GlobalInvocationID.xy, gray); } } diff --git a/resources/sksl/errors/CommasWithArrays.sksl b/resources/sksl/errors/CommasWithArrays.sksl new file mode 100644 index 000000000000..a14f1e66d370 --- /dev/null +++ b/resources/sksl/errors/CommasWithArrays.sksl @@ -0,0 +1,24 @@ +struct S { + int array[2]; +}; + +void fn() { + S myStruct; + int myArray[2]; + + myStruct, 123; + 123, myStruct; + myArray, 123; + 123, myArray; + myArray, myStruct; + myStruct, myArray; +} + +/*%%* +operator ',' can not operate on arrays (or structs containing arrays) +operator ',' can not operate on arrays (or structs containing arrays) +operator ',' can not operate on arrays (or structs containing arrays) +operator ',' can not operate on arrays (or structs containing arrays) +operator ',' can not operate on arrays (or structs containing arrays) +operator ',' can not operate on arrays (or structs containing arrays) +*%%*/ diff --git a/resources/sksl/errors/DuplicateBinding.sksl b/resources/sksl/errors/DuplicateBinding.sksl index 3b95ec834326..e6b6bb910571 100644 --- a/resources/sksl/errors/DuplicateBinding.sksl +++ b/resources/sksl/errors/DuplicateBinding.sksl @@ -11,7 +11,7 @@ layout(binding=1) uniform bufferFive { float q; }; // Should not generate any errors despite overlap with above. // TODO(skia:13664): Graphite currently generates programs with overlapping indices across interface // blocks and texture/sampler types. WGSL requires this to become an error. -layout(set=0, binding=0) uniform texture2D t; +layout(set=0, binding=0, rgba32f) readonly texture2D t; void main() { } diff --git a/resources/sksl/errors/InvalidBackendBindingFlagsMetal.sksl b/resources/sksl/errors/InvalidBackendBindingFlagsMetal.sksl index 04847c830e71..aecfe61f7da4 100644 --- a/resources/sksl/errors/InvalidBackendBindingFlagsMetal.sksl +++ b/resources/sksl/errors/InvalidBackendBindingFlagsMetal.sksl @@ -1,22 +1,25 @@ // Valid declarations: -layout(metal, binding=0) uniform ubo1 { float a; }; // valid -layout(metal, binding=0) buffer ssbo { float b; }; // valid -layout(metal, texture=0) uniform texture2D texture1; // valid -layout(metal, texture=0, sampler=0) uniform sampler2D sampler1; // valid +layout(metal, binding=0) uniform ubo1 { float a; }; // valid +layout(metal, binding=0) buffer ssbo { float b; }; // valid +layout(metal, texture=0) readonly texture2D rtexture1; // valid +layout(metal, texture=0) writeonly texture2D wtexture1; // valid +layout(metal, texture=0, sampler=0) sampler2D sampler1; // valid // TODO(skia:14023): This should require 'texture' once the metal backend supports it -layout(metal, binding=0) uniform texture2D texture2; // valid -// TODO(skia:14023): This should require 'texture' and 'sampler' once the metal backend supports it -layout(metal, binding=0) uniform sampler2D sampler2; // valid +layout(metal, binding=0) readonly texture2D rtexture2; // valid +layout(metal, binding=0) writeonly texture2D wtexture2; // valid +layout(metal, binding=0) sampler2D sampler2; // valid // Invalid declarations: -layout(metal, sampler=0) uniform texture2D texture3; // invalid -layout(metal, binding=0, texture=0, sampler=0) uniform sampler2D sampler3; // invalid -layout(metal, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid -layout(metal, set=0, binding=0) uniform ubo3 { float d; }; // invalid +layout(metal, sampler=0) readonly texture2D rtexture3; // invalid +layout(metal, sampler=0) writeonly texture2D wtexture3; // invalid +layout(metal, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid +layout(metal, texture=0, sampler=0) ubo2 { float c; }; // invalid +layout(metal, set=0, binding=0) ubo3 { float d; }; // invalid /*%%* layout qualifier 'sampler' is not permitted here +layout qualifier 'sampler' is not permitted here 'binding' modifier cannot coexist with 'texture'/'sampler' layout qualifier 'texture' is not permitted here layout qualifier 'sampler' is not permitted here diff --git a/resources/sksl/errors/InvalidBackendBindingFlagsSPIRV.sksl b/resources/sksl/errors/InvalidBackendBindingFlagsSPIRV.sksl index 96cd825180f9..856495069ef9 100644 --- a/resources/sksl/errors/InvalidBackendBindingFlagsSPIRV.sksl +++ b/resources/sksl/errors/InvalidBackendBindingFlagsSPIRV.sksl @@ -1,15 +1,18 @@ // Valid declarations: -layout(spirv, set=0, binding=0) uniform ubo { float a; }; // valid -layout(spirv, set=0, binding=0) buffer ssbo { float b; }; // valid -layout(spirv, set=0, binding=0) uniform texture2D texture1; // valid -layout(spirv, set=0, binding=0) uniform sampler2D sampler1; // valid +layout(vulkan, set=0, binding=0) uniform ubo { float a; }; // valid +layout(vulkan, set=0, binding=0) buffer ssbo { float b; }; // valid +layout(vulkan, set=0, binding=0) readonly texture2D rtexture1; // valid +layout(vulkan, set=0, binding=0) writeonly texture2D wtexture1; // valid +layout(vulkan, set=0, binding=0) sampler2D sampler1; // valid // Invalid declarations: -layout(spirv, texture=0) uniform texture2D texture2; // invalid -layout(spirv, texture=0, sampler=0) uniform sampler2D sampler2; // invalid +layout(vulkan, texture=0) readonly texture2D rtexture2; // invalid +layout(vulkan, texture=0) writeonly texture2D wtexture2; // invalid +layout(vulkan, texture=0, sampler=0) sampler2D sampler2; // invalid /*%%* layout qualifier 'texture' is not permitted here layout qualifier 'texture' is not permitted here +layout qualifier 'texture' is not permitted here layout qualifier 'sampler' is not permitted here *%%*/ diff --git a/resources/sksl/errors/InvalidBackendBindingFlagsWGSL.sksl b/resources/sksl/errors/InvalidBackendBindingFlagsWGSL.sksl index 24580caefc83..bf0cd6d63e57 100644 --- a/resources/sksl/errors/InvalidBackendBindingFlagsWGSL.sksl +++ b/resources/sksl/errors/InvalidBackendBindingFlagsWGSL.sksl @@ -1,21 +1,25 @@ // Valid declarations: -layout(wgsl, set=0, binding=0) uniform ubo1 { float a; }; // valid -layout(wgsl, set=0, binding=0) buffer ssbo { float b; }; // valid -layout(wgsl, set=0, texture=0) uniform texture2D texture1; // valid -layout(wgsl, set=0, texture=0, sampler=0) uniform sampler2D sampler1; // valid +layout(webgpu, set=0, binding=0) uniform ubo1 { float a; }; // valid +layout(webgpu, set=0, binding=0) buffer ssbo { float b; }; // valid +layout(webgpu, set=0, texture=0) readonly texture2D rtexture1; // valid +layout(webgpu, set=0, texture=0) writeonly texture2D wtexture1; // valid +layout(webgpu, set=0, texture=0, sampler=0) sampler2D sampler1; // valid // TODO(skia:14023): This should require 'texture' once the WGSL backend supports it -layout(wgsl, set=0, binding=0) uniform texture2D texture2; // valid +layout(webgpu, set=0, binding=0) readonly texture2D rtexture2; // valid +layout(webgpu, set=0, binding=0) writeonly texture2D wtexture2; // valid // TODO(skia:14023): This should require 'texture' and 'sampler' once the WGSL backend supports it -layout(wgsl, set=0, binding=0) uniform sampler2D sampler2; // valid +layout(webgpu, set=0, binding=0) sampler2D sampler2; // valid // Invalid declarations: -layout(wgsl, set=0, sampler=0) uniform texture2D texture3; // invalid -layout(wgsl, set=0, binding=0, texture=0, sampler=0) uniform sampler2D sampler3; // invalid -layout(wgsl, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid +layout(webgpu, set=0, sampler=0) readonly texture2D rtexture3; // invalid +layout(webgpu, set=0, sampler=0) writeonly texture2D wtexture3; // invalid +layout(webgpu, set=0, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid +layout(webgpu, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid /*%%* layout qualifier 'sampler' is not permitted here +layout qualifier 'sampler' is not permitted here 'binding' modifier cannot coexist with 'texture'/'sampler' layout qualifier 'texture' is not permitted here layout qualifier 'sampler' is not permitted here diff --git a/resources/sksl/errors/InvalidWorkgroupCompute.compute b/resources/sksl/errors/InvalidWorkgroupCompute.compute index 01f170b80b9e..ad552f0c75f8 100644 --- a/resources/sksl/errors/InvalidWorkgroupCompute.compute +++ b/resources/sksl/errors/InvalidWorkgroupCompute.compute @@ -8,7 +8,9 @@ layout(set=0, binding=2) buffer myOtherBuffer { workgroup float bar; }; -workgroup texture2D tex; +workgroup readonly texture2D rtex; + +workgroup writeonly texture2D wtex; workgroup void a() {} @@ -23,5 +25,6 @@ modifier 'workgroup' is not permitted on an interface block field 'workgroup' is not permitted here 'workgroup' is not permitted here 'workgroup' is not permitted here +'workgroup' is not permitted here expected expression, but found 'workgroup' *%%*/ diff --git a/resources/sksl/errors/LayoutInFunctions.sksl b/resources/sksl/errors/LayoutInFunctions.sksl index fdac31abd065..0e75922ea330 100644 --- a/resources/sksl/errors/LayoutInFunctions.sksl +++ b/resources/sksl/errors/LayoutInFunctions.sksl @@ -10,9 +10,13 @@ layout ( set = 1, builtin = 1, input_attachment_index = 1, - spirv, + vulkan, metal, - wgsl) + webgpu, + direct3d, + rgba8, + rgba32f, + r32f) void on_return() {} void on_param( @@ -28,12 +32,17 @@ layout ( set = 1, builtin = 1, input_attachment_index = 1, - spirv, + vulkan, metal, - wgsl) float x) {} + webgpu, + direct3d, + rgba8, + rgba32f, + r32f) float x) {} /*%%* only one backend qualifier can be used +only one pixel format qualifier can be used layout qualifier 'origin_upper_left' is not permitted here layout qualifier 'push_constant' is not permitted here layout qualifier 'blend_support_all_equations' is not permitted here @@ -45,10 +54,15 @@ layout qualifier 'index' is not permitted here layout qualifier 'set' is not permitted here layout qualifier 'builtin' is not permitted here layout qualifier 'input_attachment_index' is not permitted here -layout qualifier 'spirv' is not permitted here +layout qualifier 'vulkan' is not permitted here layout qualifier 'metal' is not permitted here -layout qualifier 'wgsl' is not permitted here +layout qualifier 'webgpu' is not permitted here +layout qualifier 'direct3d' is not permitted here +layout qualifier 'rgba8' is not permitted here +layout qualifier 'rgba32f' is not permitted here +layout qualifier 'r32f' is not permitted here only one backend qualifier can be used +only one pixel format qualifier can be used layout qualifier 'origin_upper_left' is not permitted here layout qualifier 'push_constant' is not permitted here layout qualifier 'blend_support_all_equations' is not permitted here @@ -60,7 +74,11 @@ layout qualifier 'index' is not permitted here layout qualifier 'set' is not permitted here layout qualifier 'builtin' is not permitted here layout qualifier 'input_attachment_index' is not permitted here -layout qualifier 'spirv' is not permitted here +layout qualifier 'vulkan' is not permitted here layout qualifier 'metal' is not permitted here -layout qualifier 'wgsl' is not permitted here +layout qualifier 'webgpu' is not permitted here +layout qualifier 'direct3d' is not permitted here +layout qualifier 'rgba8' is not permitted here +layout qualifier 'rgba32f' is not permitted here +layout qualifier 'r32f' is not permitted here *%%*/ diff --git a/resources/sksl/errors/LayoutRepeatedQualifiers.sksl b/resources/sksl/errors/LayoutRepeatedQualifiers.sksl index 0921d27b2a3f..8ce2c86bacdf 100644 --- a/resources/sksl/errors/LayoutRepeatedQualifiers.sksl +++ b/resources/sksl/errors/LayoutRepeatedQualifiers.sksl @@ -10,9 +10,13 @@ layout ( set = 1, builtin = 1, input_attachment_index = 1, - spirv, + vulkan, metal, - wgsl, + webgpu, + direct3d, + rgba8, + rgba32f, + r32f, origin_upper_left, push_constant, @@ -25,9 +29,13 @@ layout ( set = 2, builtin = 2, input_attachment_index = 2, - spirv, + vulkan, metal, - wgsl + webgpu, + direct3d, + rgba8, + rgba32f, + r32f ) float x; /*%%* @@ -42,13 +50,18 @@ layout qualifier 'index' appears more than once layout qualifier 'set' appears more than once layout qualifier 'builtin' appears more than once layout qualifier 'input_attachment_index' appears more than once -layout qualifier 'spirv' appears more than once +layout qualifier 'vulkan' appears more than once layout qualifier 'metal' appears more than once -layout qualifier 'wgsl' appears more than once +layout qualifier 'webgpu' appears more than once +layout qualifier 'direct3d' appears more than once +layout qualifier 'rgba8' appears more than once +layout qualifier 'rgba32f' appears more than once +layout qualifier 'r32f' appears more than once 'layout(color)' is only permitted in runtime effects 'layout(color)' is only permitted on 'uniform' variables 'layout(color)' is not permitted on variables of type 'float' only one backend qualifier can be used +only one pixel format qualifier can be used layout qualifier 'push_constant' is not permitted here layout qualifier 'set' is not permitted here *%%*/ diff --git a/resources/sksl/errors/MultipleBackendFlags.sksl b/resources/sksl/errors/MultipleBackendFlags.sksl index c834cfc2ac3f..7ed22b41aa58 100644 --- a/resources/sksl/errors/MultipleBackendFlags.sksl +++ b/resources/sksl/errors/MultipleBackendFlags.sksl @@ -1,5 +1,5 @@ -layout(metal, spirv, wgsl, binding = 0) uniform ubo { float f; }; // multiple backends -layout(texture=0, sampler=0) uniform sampler2D s; // invalid (requires backend) +layout(metal, vulkan, webgpu, direct3d, binding = 0) uniform ubo { float f; }; // multiple backends +layout(texture=0, sampler=0) sampler2D s; // missing backend /*%%* only one backend qualifier can be used diff --git a/resources/sksl/errors/OpaqueTypeInStruct.sksl b/resources/sksl/errors/OpaqueTypeInStruct.sksl index a21b99667af6..ec9303f9fe89 100644 --- a/resources/sksl/errors/OpaqueTypeInStruct.sksl +++ b/resources/sksl/errors/OpaqueTypeInStruct.sksl @@ -4,4 +4,5 @@ void main() {} /*%%* opaque type 'sampler' is not permitted in a struct +variables of type 'sampler' may not be uniform *%%*/ diff --git a/resources/sksl/errors/PixelFormatMismatch.compute b/resources/sksl/errors/PixelFormatMismatch.compute new file mode 100644 index 000000000000..ecbd96464550 --- /dev/null +++ b/resources/sksl/errors/PixelFormatMismatch.compute @@ -0,0 +1,32 @@ +layout(local_size_x = 1) in; + +layout(set = 0, binding = 1, rgba32f) writeonly texture2D rgba32fTex; +layout(set = 0, binding = 2, r32f) writeonly texture2D r32fTex; +layout(set = 0, binding = 3, rgba8) writeonly texture2D rgba8Tex; + +void takes_rgba32f(layout(rgba32f) writeonly texture2D tex) {} +void takes_r32f (layout(r32f) writeonly texture2D tex) {} +void takes_rgba8 (layout(rgba8) writeonly texture2D tex) {} + +void test() { + takes_rgba32f(rgba32fTex); + takes_rgba32f(r32fTex); + takes_rgba32f(rgba8Tex); + + takes_r32f(rgba32fTex); + takes_r32f(r32fTex); + takes_r32f(rgba8Tex); + + takes_rgba8(rgba32fTex); + takes_rgba8(r32fTex); + takes_rgba8(rgba8Tex); +} + +/*%%* +expected argument of type 'layout (rgba32f) writeonlyTexture2D' +expected argument of type 'layout (rgba32f) writeonlyTexture2D' +expected argument of type 'layout (r32f) writeonlyTexture2D' +expected argument of type 'layout (r32f) writeonlyTexture2D' +expected argument of type 'layout (rgba8) writeonlyTexture2D' +expected argument of type 'layout (rgba8) writeonlyTexture2D' +*%%*/ diff --git a/resources/sksl/errors/PixelFormatMissing.compute b/resources/sksl/errors/PixelFormatMissing.compute new file mode 100644 index 000000000000..9dcdc30eee29 --- /dev/null +++ b/resources/sksl/errors/PixelFormatMissing.compute @@ -0,0 +1,11 @@ +layout(set = 0, binding = 1, rgba32f) writeonly texture2D rgba32fTex; +layout(set = 0, binding = 2, r32f) writeonly texture2D r32fTex; +layout(set = 0, binding = 3, rgba8) writeonly texture2D rgba8Tex; + +void takes_any_pixel_format(readonly texture2D tex) {} +void takes_any_pixel_format(writeonly texture2D tex) {} + +/*%%* +storage texture parameters must specify a pixel format layout-qualifier +storage texture parameters must specify a pixel format layout-qualifier +*%%*/ diff --git a/resources/sksl/errors/PixelFormatOverloads.compute b/resources/sksl/errors/PixelFormatOverloads.compute new file mode 100644 index 000000000000..18ce643597aa --- /dev/null +++ b/resources/sksl/errors/PixelFormatOverloads.compute @@ -0,0 +1,10 @@ +layout(local_size_x = 1) in; + +void overloaded_function(layout(rgba32f) writeonly texture2D tex) {} +void overloaded_function(layout(r32f) writeonly texture2D tex) {} +void overloaded_function(layout(rgba8) writeonly texture2D tex) {} + +/*%%* +modifiers on parameter 1 differ between declaration and definition +modifiers on parameter 1 differ between declaration and definition +*%%*/ diff --git a/resources/sksl/errors/ReadonlyWriteonly.compute b/resources/sksl/errors/ReadonlyWriteonly.compute index 2ad3a71fbb11..1c988f39d268 100644 --- a/resources/sksl/errors/ReadonlyWriteonly.compute +++ b/resources/sksl/errors/ReadonlyWriteonly.compute @@ -1,16 +1,17 @@ -layout(binding=0) readonly texture2D src; -layout(binding=1) writeonly texture2D dest; -layout(binding=2) texture2D multipurpose; +layout(binding=0, rgba32f) readonly texture2D src; +layout(binding=1, rgba32f) writeonly texture2D dest; +//layout(binding=2, rgba32f) texture2D multipurpose; -void needs_all_access(texture2D t) {} +// If we add support for read-write textures in SkSL, uncomment `needs_all_access`. +//void needs_all_access(texture2D t) {} -void overload(readonly texture2D t) {} -void overload(writeonly texture2D t, int) {} +void overload(layout(rgba32f) readonly texture2D t) {} +void overload(layout(rgba32f) writeonly texture2D t, int) {} void main() { - needs_all_access(src); // BAD - needs_all_access(dest); // BAD - needs_all_access(multipurpose); // OK + //needs_all_access(src); // BAD + //needs_all_access(dest); // BAD + //needs_all_access(multipurpose); // OK textureRead(dest, sk_GlobalInvocationID.xy); // BAD textureWrite(src, sk_GlobalInvocationID.xy, half4(1)); // BAD @@ -21,36 +22,33 @@ void main() { overload(dest, 1); // OK: overload(writeonly texture2D t, int) exists } -void function_param_honors_all_access(texture2D t) { - needs_all_access(t); // OK - textureWidth(t); // OK - textureRead(t, sk_GlobalInvocationID.xy); // OK - textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // OK -} +// If we add support for read-write textures in SkSL, uncomment `function_param_honors_all_access`. +//void function_param_honors_all_access(texture2D t) { +// //needs_all_access(t); // OK +// textureWidth(t); // OK +// textureRead(t, sk_GlobalInvocationID.xy); // OK +// textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // OK +//} -void function_param_honors_readonly(readonly texture2D t) { - needs_all_access(t); // BAD +void function_param_honors_readonly(layout(rgba32f) readonly texture2D t) { + //needs_all_access(t); // BAD textureWidth(t); // OK textureRead(t, sk_GlobalInvocationID.xy); // OK textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // BAD } -void function_param_honors_writeonly(writeonly texture2D t) { - needs_all_access(t); // BAD +void function_param_honors_writeonly(layout(rgba32f) writeonly texture2D t) { + //needs_all_access(t); // BAD textureWidth(t); // OK textureRead(t, sk_GlobalInvocationID.xy); // BAD textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // OK } /*%%* -expected 'texture2D', but found 'readonlyTexture2D' -expected 'texture2D', but found 'writeonlyTexture2D' no match for textureRead(writeonlyTexture2D, uint2) no match for textureWrite(readonlyTexture2D, uint2, half4) no match for overload(readonlyTexture2D, int) no match for overload(writeonlyTexture2D) -expected 'texture2D', but found 'readonlyTexture2D' no match for textureWrite(readonlyTexture2D, uint2, half4) -expected 'texture2D', but found 'writeonlyTexture2D' no match for textureRead(writeonlyTexture2D, uint2) *%%*/ diff --git a/resources/sksl/errors/SamplerExternalOES.frag b/resources/sksl/errors/SamplerExternalOES.frag new file mode 100644 index 000000000000..fe993301bb7f --- /dev/null +++ b/resources/sksl/errors/SamplerExternalOES.frag @@ -0,0 +1,3 @@ +/*#pragma settings NoExternalTextureSupport*/ + +samplerExternalOES e; diff --git a/resources/sksl/glsl/IncompleteShortIntPrecision.sksl b/resources/sksl/glsl/IncompleteShortIntPrecision.sksl index 9e93df15c71e..3b8ffb4df2b5 100644 --- a/resources/sksl/glsl/IncompleteShortIntPrecision.sksl +++ b/resources/sksl/glsl/IncompleteShortIntPrecision.sksl @@ -1,6 +1,6 @@ /*#pragma settings IncompleteShortIntPrecision*/ -uniform sampler2D tex; +sampler2D tex; in float2 texcoord; in short2 offset; diff --git a/resources/sksl/glsl/ShortIntPrecision.sksl b/resources/sksl/glsl/ShortIntPrecision.sksl index 530c8a50e964..5846b1f44cb0 100644 --- a/resources/sksl/glsl/ShortIntPrecision.sksl +++ b/resources/sksl/glsl/ShortIntPrecision.sksl @@ -1,6 +1,6 @@ /*#pragma settings UsesPrecisionModifiers*/ -uniform sampler2D tex; +sampler2D tex; in float2 texcoord; in short2 offset; diff --git a/resources/sksl/glsl/TextureSharpenVersion110.sksl b/resources/sksl/glsl/TextureSharpenVersion110.sksl index 6f29ecb0b880..082905c23de7 100644 --- a/resources/sksl/glsl/TextureSharpenVersion110.sksl +++ b/resources/sksl/glsl/TextureSharpenVersion110.sksl @@ -1,6 +1,6 @@ /*#pragma settings Version110 Sharpen*/ -uniform sampler2D s; +sampler2D s; void main() { float4 a = sample(s, float2(0)); diff --git a/resources/sksl/glsl/TextureVersion110.sksl b/resources/sksl/glsl/TextureVersion110.sksl index d44cf52fd305..1fc965c2debe 100644 --- a/resources/sksl/glsl/TextureVersion110.sksl +++ b/resources/sksl/glsl/TextureVersion110.sksl @@ -1,6 +1,6 @@ /*#pragma settings Version110*/ -uniform sampler2D s; +sampler2D s; void main() { float4 a = sample(s, float2(0)); diff --git a/resources/sksl/inliner/OpaqueCallsCannotBeInlined.sksl b/resources/sksl/inliner/OpaqueCallsCannotBeInlined.sksl deleted file mode 100644 index 0b7f8dae02a3..000000000000 --- a/resources/sksl/inliner/OpaqueCallsCannotBeInlined.sksl +++ /dev/null @@ -1,19 +0,0 @@ -layout(binding=0) uniform sampler uSampler; -layout(binding=1) uniform texture2D uTexture; - -half4 simpleSample(float2 p, sampler2D s) { - // This call is allowed to inline because no scratch variables are needed; each argument is - // only used once. - return sample(s, p); -} - -half4 squaredSample(float2 p, sampler2D s) { - // This call is not allowed to inline because `s` is used twice, so it would require a scratch - // argument, but we cannot create opaque variables. (skia:13824) - return sample(s, p) * sample(s, p); -} - -half4 main(float2 p) { - return simpleSample(p, makeSampler2D(uTexture, uSampler)) * - squaredSample(p, makeSampler2D(uTexture, uSampler)); -} diff --git a/resources/sksl/intrinsics/Sample.sksl b/resources/sksl/intrinsics/Sample.sksl index 26dbcf55980d..574d15eea44f 100644 --- a/resources/sksl/intrinsics/Sample.sksl +++ b/resources/sksl/intrinsics/Sample.sksl @@ -1,4 +1,4 @@ -layout(binding=0) uniform sampler2D t; +layout(binding=0) sampler2D t; void main() { half4 c = sample(t, half2(0)); diff --git a/resources/sksl/intrinsics/SampleGrad.sksl b/resources/sksl/intrinsics/SampleGrad.sksl index bbcacefeda6b..48344be163cd 100644 --- a/resources/sksl/intrinsics/SampleGrad.sksl +++ b/resources/sksl/intrinsics/SampleGrad.sksl @@ -1,4 +1,4 @@ -layout(binding=0) uniform sampler2D t; +layout(binding=0) sampler2D t; half4 main(float2 coords) { return sampleGrad(t, coords, dFdx(coords), dFdy(coords)); diff --git a/resources/sksl/intrinsics/SampleLod.sksl b/resources/sksl/intrinsics/SampleLod.sksl index 6634f7144ee5..11705010b089 100644 --- a/resources/sksl/intrinsics/SampleLod.sksl +++ b/resources/sksl/intrinsics/SampleLod.sksl @@ -1,4 +1,4 @@ -layout(binding=0) uniform sampler2D t; +layout(binding=0) sampler2D t; void main() { half4 c = sampleLod(t, half2(0), 0); diff --git a/resources/sksl/metal/LayoutMtlSampler.sksl b/resources/sksl/metal/LayoutMtlSampler.sksl index 069c5888b336..38038afc53de 100644 --- a/resources/sksl/metal/LayoutMtlSampler.sksl +++ b/resources/sksl/metal/LayoutMtlSampler.sksl @@ -1,4 +1,4 @@ -layout(metal, texture=5, sampler=7) uniform sampler2D mtlSampler; +layout(metal, texture=5, sampler=7) sampler2D mtlSampler; void main() { sk_FragColor = sample(mtlSampler, float2(0)); diff --git a/resources/sksl/metal/SamplerGlobals.sksl b/resources/sksl/metal/SamplerGlobals.sksl index 560efc1061c0..7d8a828c5aea 100644 --- a/resources/sksl/metal/SamplerGlobals.sksl +++ b/resources/sksl/metal/SamplerGlobals.sksl @@ -1,5 +1,5 @@ -layout(binding=1) uniform sampler2D texA; -layout(binding=0) uniform sampler2D texB; +layout(binding=1) sampler2D texA; +layout(binding=0) sampler2D texB; void main() { sk_FragColor = sample(texA, half2(0)) * sample(texB, half2(0)); diff --git a/resources/sksl/realistic/GaussianBlur.sksl b/resources/sksl/realistic/GaussianBlur.sksl index b163c9a2ff08..26d8000ba43e 100644 --- a/resources/sksl/realistic/GaussianBlur.sksl +++ b/resources/sksl/realistic/GaussianBlur.sksl @@ -1,4 +1,4 @@ -layout(binding=0) uniform sampler2D uTextureSampler_0_Stage1; +layout(binding=0) sampler2D uTextureSampler_0_Stage1; layout (binding=0) uniform uniformBuffer { layout(offset=0) float4 sk_RTAdjust; diff --git a/resources/sksl/runtime/Commutative.rts b/resources/sksl/runtime/Commutative.rts index ad04d2634602..e7bbfeacaaf5 100644 --- a/resources/sksl/runtime/Commutative.rts +++ b/resources/sksl/runtime/Commutative.rts @@ -1,7 +1,6 @@ -// We use bitwise ops below, which SkVM supports but ES2 technically does not. #version 300 -/*#pragma settings DebugTrace NoTraceVarInDebugTrace*/ +/*#pragma settings DebugTrace*/ uniform half4 colorGreen, colorRed; uniform float2x2 testMatrix2x2; diff --git a/resources/sksl/runtime/LoopInt.rts b/resources/sksl/runtime/LoopInt.rts index 945c4b402f00..1da00e8babf7 100644 --- a/resources/sksl/runtime/LoopInt.rts +++ b/resources/sksl/runtime/LoopInt.rts @@ -37,8 +37,13 @@ bool loop_operator_le() { // These loops are inside-out and execute zero times. for (int i = 3; i <= 1; ++i) { return false; } for (int i = 3; i <= 1; --i) { return false; } + for (int i = 1; i <= 0; ++i) { return false; } - int4 result = int4(9); + // This loop is not inside-out and should execute exactly one time. + int4 result = int4(8); + for (int i = 0; i <= 0; ++i) { result += int4(1); } + + // This loop executes three times. for (int i = 1; i <= 3; ++i) { result = int4(result.yzw, i); } @@ -49,8 +54,13 @@ bool loop_operator_lt() { // These loops are inside-out and execute zero times. for (int i = 4; i < 1; ++i) { return false; } for (int i = 4; i < 1; --i) { return false; } + for (int i = 1; i < 1; ++i) { return false; } - int4 result = int4(9); + // This loop is not inside-out and should execute exactly one time. + int4 result = int4(8); + for (int i = 0; i < 1; ++i) { result += int4(1); } + + // This loop executes three times. for (int i = 1; i < 4; ++i) { result = int4(result.yzw, i); } @@ -61,8 +71,13 @@ bool loop_operator_ge() { // These loops are inside-out and execute zero times. for (int i = 1; i >= 3; ++i) { return false; } for (int i = 1; i >= 3; --i) { return false; } + for (int i = 0; i >= 1; --i) { return false; } - int4 result = int4(9); + // This loop is not inside-out and should execute exactly one time. + int4 result = int4(8); + for (int i = 0; i >= 0; --i) { result += int4(1); } + + // This loop executes three times. for (int i = 3; i >= 1; --i) { result = int4(result.yzw, i); } @@ -73,8 +88,12 @@ bool loop_operator_gt() { // These loops are inside-out and execute zero times. for (int i = 0; i > 3; ++i) { return false; } for (int i = 0; i > 3; --i) { return false; } + for (int i = 1; i > 1; --i) { return false; } + + // This loop is not inside-out and should execute exactly one time. + int4 result = int4(8); + for (int i = 1; i > 0; --i) { result += int4(1); } - int4 result = int4(9); for (int i = 3; i > 0; --i) { result = int4(result.yzw, i); } @@ -85,7 +104,10 @@ bool loop_operator_ne() { // This loop executes zero times. for (int i = 1; i != 1; ++i) { return false; } - int4 result = int4(9); + // This loop should execute exactly one time. + int4 result = int4(8); + for (int i = 1; i != 2; ++i) { result += int4(1); } + for (int i = 1; i != 4; ++i) { result = int4(result.yzw, i); } @@ -96,6 +118,7 @@ bool loop_operator_eq() { // This loop executes zero times. for (int i = 1; i == 2; ++i) { return false; } + // This loop should execute exactly one time. int4 result = int4(9); for (int i = 1; i == 1; ++i) { result = int4(result.yzw, i); diff --git a/resources/sksl/shared/ComplexDelete.sksl b/resources/sksl/shared/ComplexDelete.sksl index 8defd633900b..7f1e84736c3a 100644 --- a/resources/sksl/shared/ComplexDelete.sksl +++ b/resources/sksl/shared/ComplexDelete.sksl @@ -1,5 +1,5 @@ uniform float4x4 colorXform; -layout(binding=0) uniform sampler2D s; +layout(binding=0) sampler2D s; void main() { float4 tmpColor; diff --git a/resources/sksl/shared/FunctionParametersOfTextureAndSamplerType.sksl b/resources/sksl/shared/FunctionParametersOfTextureAndSamplerType.sksl index 0d056a1ce36e..9ad5706b8d84 100644 --- a/resources/sksl/shared/FunctionParametersOfTextureAndSamplerType.sksl +++ b/resources/sksl/shared/FunctionParametersOfTextureAndSamplerType.sksl @@ -1,13 +1,13 @@ -layout(set = 0, binding = 1) uniform texture2D aTexture; -layout(set = 0, binding = 2) uniform sampler2D aSampledTexture; +layout(set = 0, binding = 1, rgba8) readonly texture2D aTexture; +layout(set = 0, binding = 2) sampler2D aSampledTexture; layout(location = 1) in float2 c; -noinline half4 helpers_helper(sampler2D s, texture2D t) { +noinline half4 helpers_helper(sampler2D s, layout(rgba8) readonly texture2D t) { return sample(s, c); } -noinline half4 helper(texture2D t, sampler2D s) { +noinline half4 helper(layout(rgba8) readonly texture2D t, sampler2D s) { return helpers_helper(s, t); } diff --git a/resources/sksl/shared/InterfaceBlockNamedArray.sksl b/resources/sksl/shared/InterfaceBlockNamedArray.sksl index c5c8449d56ea..69f13435390f 100644 --- a/resources/sksl/shared/InterfaceBlockNamedArray.sksl +++ b/resources/sksl/shared/InterfaceBlockNamedArray.sksl @@ -1,7 +1,10 @@ layout(binding=123) uniform testBlock { - float x; + layout (offset=0) float s; + layout (offset=16) float2x2 m; + layout (offset=48) float a[2]; + layout (offset=80) float2x2 am[2]; } test[2]; void main() { - sk_FragColor = half4(half(test[1].x)); + sk_FragColor = half4(test[0].s, test[1].m[1][0], test[0].a[1], test[1].am[1][0][1]); } diff --git a/resources/sksl/shared/NestedComparisonIntrinsics.sksl b/resources/sksl/shared/NestedComparisonIntrinsics.sksl new file mode 100644 index 000000000000..a8dd6d8b67c8 --- /dev/null +++ b/resources/sksl/shared/NestedComparisonIntrinsics.sksl @@ -0,0 +1,10 @@ +uniform half4 colorRed, colorGreen; + +half4 main(float2 coords) { + // The inner comparisons against colors should evaluate to true in every component. + // The outer comparison should evaluate to `true == true`, so is true in each channel. + bool4 result = equal(lessThan(colorRed, half4(2.0)), + greaterThan(half4(3.0), colorGreen)); + + return all(result) ? colorGreen : colorRed; +} diff --git a/resources/sksl/shared/RectangleTexture.sksl b/resources/sksl/shared/RectangleTexture.sksl index b8b8c08b59de..0f8637f6c64a 100644 --- a/resources/sksl/shared/RectangleTexture.sksl +++ b/resources/sksl/shared/RectangleTexture.sksl @@ -1,5 +1,5 @@ -layout(binding=0) uniform sampler2D test2D; -layout(binding=1) uniform sampler2D test2DRect; +layout(binding=0) sampler2D test2D; +layout(binding=1) sampler2D test2DRect; void main() { sk_FragColor = sample(test2D, float2(0.5)); diff --git a/resources/sksl/shared/Texture2D.sksl b/resources/sksl/shared/Texture2D.sksl index de090c90d2f9..c34d54afdd5a 100644 --- a/resources/sksl/shared/Texture2D.sksl +++ b/resources/sksl/shared/Texture2D.sksl @@ -1,4 +1,4 @@ -layout(binding=0) uniform sampler2D tex; +layout(binding=0) sampler2D tex; void main() { float4 a = sample(tex, float2(0)); diff --git a/resources/sksl/shared/TextureSharpen.sksl b/resources/sksl/shared/TextureSharpen.sksl index 4202bb921a3b..c6a006957785 100644 --- a/resources/sksl/shared/TextureSharpen.sksl +++ b/resources/sksl/shared/TextureSharpen.sksl @@ -1,6 +1,6 @@ /*#pragma settings Sharpen*/ -layout(binding=0) uniform sampler2D s; +layout(binding=0) sampler2D s; void main() { float4 a = sample(s, float2(0)); diff --git a/resources/sksl/spirv/ArrayStrideInDifferentLayouts.sksl b/resources/sksl/spirv/ArrayStrideInDifferentLayouts.sksl index 75e0161c2242..5bc06e49e86c 100644 --- a/resources/sksl/spirv/ArrayStrideInDifferentLayouts.sksl +++ b/resources/sksl/spirv/ArrayStrideInDifferentLayouts.sksl @@ -1,4 +1,4 @@ -layout(push_constant) uniform testPushConstants { +layout(vulkan, push_constant) uniform testPushConstants { float[2] pushConstantArray; }; diff --git a/resources/sksl/spirv/CombinedSamplerTypeDawnCompatMode.sksl b/resources/sksl/spirv/CombinedSamplerTypeDawnCompatMode.sksl index 9ab27cf5c4c7..d68f478cf072 100644 --- a/resources/sksl/spirv/CombinedSamplerTypeDawnCompatMode.sksl +++ b/resources/sksl/spirv/CombinedSamplerTypeDawnCompatMode.sksl @@ -1,6 +1,5 @@ -/*#pragma settings SPIRVDawnCompatMode*/ -layout(wgsl, set=1, texture=2, sampler=3) uniform sampler2D aSampler; -layout(wgsl, set=1, texture=4, sampler=5) uniform sampler2D anotherSampler; +layout(webgpu, set=1, texture=2, sampler=3) sampler2D aSampler; +layout(webgpu, set=1, texture=4, sampler=5) sampler2D anotherSampler; noinline half4 helpers_helper(sampler2D s) { return sample(s, float2(1)); diff --git a/resources/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl b/resources/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl index e00ca3b777ac..c87b416b412f 100644 --- a/resources/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl +++ b/resources/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.sksl @@ -1,14 +1,13 @@ -/*#pragma settings SPIRVDawnCompatMode*/ -layout(set = 0, binding = 1) uniform texture2D aTexture; -layout(wgsl, set = 0, texture = 2, sampler = 3) uniform sampler2D aSampledTexture; +layout(set = 0, binding = 1, r32f) readonly texture2D aTexture; +layout(webgpu, set = 0, texture = 2, sampler = 3) sampler2D aSampledTexture; layout(location = 1) in float2 c; -noinline half4 helpers_helper(sampler2D s, texture2D t) { +noinline half4 helpers_helper(sampler2D s, layout(r32f) readonly texture2D t) { return sample(s, c); } -noinline half4 helper(texture2D t, sampler2D s) { +noinline half4 helper(layout(r32f) readonly texture2D t, sampler2D s) { return helpers_helper(s, t); } diff --git a/resources/sksl/spirv/InterfaceBlockPushConstant.sksl b/resources/sksl/spirv/InterfaceBlockPushConstant.sksl index 87239633023c..46d2af1fd210 100644 --- a/resources/sksl/spirv/InterfaceBlockPushConstant.sksl +++ b/resources/sksl/spirv/InterfaceBlockPushConstant.sksl @@ -1,4 +1,4 @@ -layout(push_constant) uniform testBlock { +layout (vulkan, push_constant) uniform testBlock { layout(offset=16) half2x2 m1; layout(offset=32) half2x2 m2; }; diff --git a/resources/sksl/spirv/MixedSamplerTypes.sksl b/resources/sksl/spirv/MixedSamplerTypes.sksl new file mode 100644 index 000000000000..4ad0246c8429 --- /dev/null +++ b/resources/sksl/spirv/MixedSamplerTypes.sksl @@ -0,0 +1,9 @@ +layout(webgpu, set=1, texture=2, sampler=3) sampler2D wgpuSampler; +layout(direct3d, set=1, texture=4, sampler=5) sampler2D d3dSampler; +layout(vulkan, set=1, binding=6) sampler2D vkSampler; + +void main() { + sk_FragColor = sample(wgpuSampler, float2(0)); + sk_FragColor = sample(d3dSampler, float2(0)); + sk_FragColor = sample(vkSampler, float2(0)); +} diff --git a/resources/sksl/spirv/StructArrayMemberInDifferentLayouts.sksl b/resources/sksl/spirv/StructArrayMemberInDifferentLayouts.sksl index 6a47525092b4..2356371787b3 100644 --- a/resources/sksl/spirv/StructArrayMemberInDifferentLayouts.sksl +++ b/resources/sksl/spirv/StructArrayMemberInDifferentLayouts.sksl @@ -3,7 +3,7 @@ struct S { float[2] a; }; -layout(push_constant) uniform testPushConstants { +layout(vulkan, push_constant) uniform testPushConstants { float[2] pushConstantArray; }; diff --git a/resources/sksl/spirv/WGSLLayoutInVulkanSPIRV.sksl b/resources/sksl/spirv/WGSLLayoutInVulkanSPIRV.sksl deleted file mode 100644 index f74cfae4582b..000000000000 --- a/resources/sksl/spirv/WGSLLayoutInVulkanSPIRV.sksl +++ /dev/null @@ -1,9 +0,0 @@ -layout(wgsl, set=1, texture=2, sampler=3) uniform sampler2D aSampler; - -void main() { - sk_FragColor = sample(aSampler, float2(0)); -} - -/*%%* -incompatible backend flag in SPIR-V codegen -*%%*/ diff --git a/resources/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.sksl b/resources/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.sksl new file mode 100644 index 000000000000..2690860c01b5 --- /dev/null +++ b/resources/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.sksl @@ -0,0 +1,9 @@ +layout(webgpu, set=0, binding=0) sampler2D aSampler; + +void main() { + sk_FragColor = sample(aSampler, float2(0)); +} + +/*%%* +selected backend requires separate texture and sampler indices +*%%*/ diff --git a/resources/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.sksl b/resources/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.sksl deleted file mode 100644 index 5784aec8045c..000000000000 --- a/resources/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.sksl +++ /dev/null @@ -1,10 +0,0 @@ -/*#pragma settings SPIRVDawnCompatMode*/ -layout(set=0, binding=0) uniform sampler2D aSampler; - -void main() { - sk_FragColor = sample(aSampler, float2(0)); -} - -/*%%* -SPIR-V dawn compatibility mode requires an explicit texture and sampler index -*%%*/ diff --git a/resources/sksl/wgsl/EntrypointIsWrittenLast.sksl b/resources/sksl/wgsl/EntrypointIsWrittenLast.sksl new file mode 100644 index 000000000000..05451b185adf --- /dev/null +++ b/resources/sksl/wgsl/EntrypointIsWrittenLast.sksl @@ -0,0 +1,31 @@ +// This is a copy of FunctionPrototype.sksl, but with `noinline` applied to all functions. + +layout (binding=0) uniform Uniforms { + layout (offset=0) half4 colorGreen; +}; + +noinline float this_function_is_prototyped_at_the_start_and_never_defined(); +noinline half4 this_function_is_defined_before_use(half4 x); +noinline half4 this_function_is_defined_after_use(half4 x); +noinline half4 this_function_is_defined_near_the_end(half4 x); +half4 main(float2 coords); // prototyping main is allowed (although not particularly useful) + +noinline half4 this_function_is_defined_before_use(half4 x) { + return -this_function_is_defined_near_the_end(x); +} + +noinline bool this_function_is_prototyped_in_the_middle_and_never_defined(float4x4 a); + +half4 main(float2 coords) { + return this_function_is_defined_after_use(colorGreen); +} + +noinline half4 this_function_is_defined_after_use(half4 x) { + return this_function_is_defined_before_use(-x); +} + +noinline half4 this_function_is_defined_near_the_end(half4 x) { + return x; +} + +noinline int3 this_function_is_prototyped_at_the_very_end_and_never_defined(half2x2 x, bool2 y); diff --git a/resources/sksl/wgsl/Sample.sksl b/resources/sksl/wgsl/Sample.sksl index 3d0e99a248b2..de1383680ee7 100644 --- a/resources/sksl/wgsl/Sample.sksl +++ b/resources/sksl/wgsl/Sample.sksl @@ -1,4 +1,4 @@ -layout(wgsl, set=1, texture=2, sampler=3) uniform sampler2D tex; +layout(webgpu, set=1, texture=2, sampler=3) sampler2D tex; void main() { diff --git a/resources/sksl/wgsl/UniformArrays.sksl b/resources/sksl/wgsl/UniformArrays.sksl new file mode 100644 index 000000000000..7edbb1104ec3 --- /dev/null +++ b/resources/sksl/wgsl/UniformArrays.sksl @@ -0,0 +1,59 @@ +// Our buffers are in std140 layout, so the generated code will need to compensate. + +layout(set=0, binding=1) uniform UniformBuffer { + float uf[3]; + float2 uf2[3]; + float3 uf3[3]; + float4 uf4[3]; + half uh[3]; + half2 uh2[3]; + half3 uh3[3]; + half4 uh4[3]; + int ui[3]; + int2 ui2[3]; + int3 ui3[3]; + int4 ui4[3]; +}; + +layout(set=0, binding=2) buffer StorageBuffer { + float sf[4]; + float2 sf2[4]; + float3 sf3[4]; + float4 sf4[4]; + half sh[4]; + half2 sh2[4]; + half3 sh3[4]; + half4 sh4[4]; + int si[4]; + int2 si2[4]; + int3 si3[4]; + int4 si4[4]; +}; + +half4 main() { + float value = float(uf [1] ) + + float(uf2[1].x) + + float(uf3[1].x) + + float(uf4[1].x) + + float(uh [1] ) + + float(uh2[1].x) + + float(uh3[1].x) + + float(uh4[1].x) + + float(ui [1] ) + + float(ui2[1].x) + + float(ui3[1].x) + + float(ui4[1].x) + + float(sf [1] ) + + float(sf2[1].x) + + float(sf3[1].x) + + float(sf4[1].x) + + float(sh [1] ) + + float(sh2[1].x) + + float(sh3[1].x) + + float(sh4[1].x) + + float(si [1] ) + + float(si2[1].x) + + float(si3[1].x) + + float(si4[1].x); + return half4(value); +} diff --git a/resources/sksl/wgsl/UniformMatrices.sksl b/resources/sksl/wgsl/UniformMatrices.sksl index e66f7642f6b3..dde498479e4f 100644 --- a/resources/sksl/wgsl/UniformMatrices.sksl +++ b/resources/sksl/wgsl/UniformMatrices.sksl @@ -10,6 +10,15 @@ layout(set=0, binding=1) uniform UniformBuffer { float4x2 u42; float4x3 u43; float4x4 u44; + float2x2 au22[3]; + float2x3 au23[3]; + float2x4 au24[3]; + float3x2 au32[3]; + float3x3 au33[3]; + float3x4 au34[3]; + float4x2 au42[3]; + float4x3 au43[3]; + float4x4 au44[3]; }; layout(set=0, binding=2) buffer StorageBuffer { @@ -22,8 +31,53 @@ layout(set=0, binding=2) buffer StorageBuffer { float4x2 s42; float4x3 s43; float4x4 s44; + float2x2 as22[3]; + float2x3 as23[3]; + float2x4 as24[3]; + float3x2 as32[3]; + float3x3 as33[3]; + float3x4 as34[3]; + float4x2 as42[3]; + float4x3 as43[3]; + float4x4 as44[3]; }; half4 main() { - return half4(0); + float value = u22[0][0] + + u23[0][0] + + u24[0][0] + + u32[0][0] + + u33[0][0] + + u34[0][0] + + u42[0][0] + + u43[0][0] + + au44[0][0][0] + + au22[0][0][0] + + au23[0][0][0] + + au24[0][0][0] + + au32[0][0][0] + + au33[0][0][0] + + au34[0][0][0] + + au42[0][0][0] + + au43[0][0][0] + + au44[0][0][0] + + s22[0][0] + + s23[0][0] + + s24[0][0] + + s32[0][0] + + s33[0][0] + + s34[0][0] + + s42[0][0] + + s43[0][0] + + as44[0][0][0] + + as22[0][0][0] + + as23[0][0][0] + + as24[0][0][0] + + as32[0][0][0] + + as33[0][0][0] + + as34[0][0][0] + + as42[0][0][0] + + as43[0][0][0] + + as44[0][0][0]; + return half4(value); } diff --git a/resources/sksl/workarounds/VoidInSequenceExpressions.sksl b/resources/sksl/workarounds/VoidInSequenceExpressions.sksl new file mode 100644 index 000000000000..b8bca7325053 --- /dev/null +++ b/resources/sksl/workarounds/VoidInSequenceExpressions.sksl @@ -0,0 +1,17 @@ +/*#pragma settings CannotUseVoidInSequenceExpressions*/ + +uniform half4 colorGreen; + +void setGreen(inout half4 c) { + c.g = 1.0; +} + +void setAlpha(inout half4 c) { + c.a = 1.0; + return; +} + +half4 main(float2) { + half4 color = half4(0); + return setGreen(color), setAlpha(color), color; +} diff --git a/resources/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.sksl b/resources/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.sksl new file mode 100644 index 000000000000..e9c67ddcf58b --- /dev/null +++ b/resources/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.sksl @@ -0,0 +1,18 @@ +/*#pragma settings CannotUseVoidInSequenceExpressions*/ + +uniform half4 colorGreen; + +void setGreen(inout half4 c) { + c.g = 1.0; +} + +void setAlpha(inout half4 c) { + c.a = 1.0; + return; +} + +void main() { + half4 color = half4(0); + sk_FragColor = (setGreen(color), setAlpha(color), color); + return; +} diff --git a/serve-bazel-test-undeclared-outputs.sh b/serve-bazel-test-undeclared-outputs.sh new file mode 100755 index 000000000000..4b227bc222ca --- /dev/null +++ b/serve-bazel-test-undeclared-outputs.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright 2023 Google LLC +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Helper script to serve Bazel undeclared test outputs over HTTP. + +if [ $# -ne 1 ] +then + echo "Usage: $0 " + echo + echo "This is a helper script to serve Bazel undeclared test outputs over HTTP. See the" + echo "TEST_UNDECLARED_OUTPUTS_DIR environment variable as described in" + echo "https://bazel.build/reference/test-encyclopedia#initial-conditions." + echo + echo "A typical use case is to view the PNG files produced by a GM executed with \"bazel test\"." + echo "However, this script works with any Bazel target that produces undeclared outputs." + echo + echo "Suppose //path/to:some_test is a Bazel target that produces undeclared test outputs. Its" + echo "undeclared test outputs are typically found inside a ZIP file named" + echo "bazel-testlogs/path/to/some_test/test.outputs/outputs.zip (relative to the repository's" + echo "root directory)." + echo + echo "Example session:" + echo + echo " $ bazel test //path/to:some_test" + echo " $ $0 bazel-testlogs/path/to/some_test/test.outputs/outputs.zip" + echo " Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ..." + echo + exit 1 +fi + +# Create a temporary directory where we will extract the ZIP file, and delete it on exit. +TMP_DIR="$(mktemp -d)" +trap "rm -rf $TMP_DIR" EXIT + +set -x -e + +unzip -d $TMP_DIR $1 +cd $TMP_DIR && python3 -m http.server diff --git a/site/docs/dev/tools/android_gdb.md b/site/docs/dev/tools/android_gdb.md index 634e11c8c517..49d61ac9013e 100644 --- a/site/docs/dev/tools/android_gdb.md +++ b/site/docs/dev/tools/android_gdb.md @@ -34,7 +34,7 @@ in the extension browser and install it, the thing you want comes from https://github.com/WebFreak001/code-debug if you’re unsure. In your VS Code project’s `launch.json`, add an entry that looks like the following. You'll need to -replace with the path to your NDK bundle (ie $ANDROID_NDK_ROOT): +replace with the path to your NDK bundle (ie $ANDROID_NDK_HOME): ~~~ { diff --git a/site/docs/user/build.md b/site/docs/user/build.md index 7b780b8a5719..23da7c8513a7 100644 --- a/site/docs/user/build.md +++ b/site/docs/user/build.md @@ -266,6 +266,14 @@ bin/gn gen out/AppleSilicon --args='target_cpu="arm64"' Googlers should see [go/skia-corp-xcode](http://go/skia-corp-xcode) for instructions on setting up Xcode on a corp machine. +### Python + +The version of Python supplied by Apple is a few versions out of date, +and it is known to interact poorly with our build system. We recommend +installing the latest official version of Python from +https://www.python.org/downloads/. Then run +"Applications/Python 3.11/Install Certificates.command". + ## iOS Run GN to generate your build files. Set `target_os="ios"` to build for iOS. diff --git a/site/docs/user/download.md b/site/docs/user/download.md index 1694bda39188..63826726f5a5 100644 --- a/site/docs/user/download.md +++ b/site/docs/user/download.md @@ -29,6 +29,9 @@ regenerate parts of the BUILD.bazel files. Instead of installing Bazel manually, you install [Bazelisk](https://github.com/bazelbuild/bazelisk#installation), which will fetch the appropriate version of [Bazel](https://bazel.build/) for you (as specified by //.bazelversion). +### Install `ninja` +Ninja can be supplied using `gclient` or with `bin/fetch-ninja`. + ## Clone the Skia repository Skia can either be cloned using `git` or the `fetch` tool that is diff --git a/site/docs/user/sample/viewer.md b/site/docs/user/sample/viewer.md index 6af441b5e9cc..12ad4ba166f2 100644 --- a/site/docs/user/sample/viewer.md +++ b/site/docs/user/sample/viewer.md @@ -72,14 +72,46 @@ with the following script: where `` is the ninja out directory (e.g., `out/arm64`) that you created. Upon completion of the script the APK -can be found at `/viewer.apk` +can be found at `/viewer.apk`. Install it with `adb install`. + +### How to Use the App + +Most app functions (except touch gestures and arrow buttons) are placed in the **left drawer**. +Click on the upper-left hamburger button to open that drawer. + +#### Switch Slides + +In the upper-right corner, there are two arrows: next slide, previous slide. + +In the left drawer, you can directly select a slide from a list (spinner). Above that spinner, +there’s a text filter that applies to the slide list. There are hundreds of slides so if you +know the slide name, use that filter to quickly locate and show it. + +#### Zoom / Translate + +We support touch gestures on the slide so you can drag and pinch to zoom. + +#### Change Backend + +In the left drawer, you can select the backend from a list of OpenGL, Vulkan, and Raster. + +#### Softkey / Stats + +In the left drawer, there’s a list of softkeys. They correspond to the keyboard commands +of a desktop Viewer app. For example, you can toggle color mode or stats window. These can +be filtered like the slides. + +For animation slides, we also show FPS (actually, it’s Seconds Per Frame) --- frame +refresh rate in milliseconds. + +#### Loading resources / skps + +TODO (https://issues.skia.org/295805469): This used to be possible with the instructions +below, but they no longer work on recent versions of Android. To load resources in the Android Viewer place them in `/data/local/tmp/resources`; to load SKPs place them in `/data/local/tmp/skps`. -Swiping left and right will switch slides, pinch-zoom will zoom in and out, and -display options are available in the UI. - iOS --- diff --git a/src/BUILD.bazel b/src/BUILD.bazel index 3a7eea3cc623..6281a553cf41 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -34,6 +34,7 @@ skia_filegroup( "//src/ports:srcs", "//src/sfnt:srcs", "//src/shaders:srcs", + "//src/sksl:srcs", "//src/text:srcs", "//src/utils:srcs", "//src/xml:srcs", @@ -45,9 +46,6 @@ skia_filegroup( "//conditions:default": [ "//src/text:no_slug_srcs", ], - }) + select({ - "//src/sksl:needs_sksl": ["//src/sksl:srcs"], - "//conditions:default": [], }) + select({ "//src/svg:enable_svg_canvas_true": [ "//src/svg:srcs", @@ -94,6 +92,7 @@ skia_filegroup( "//src/ports:private_hdrs", "//src/sfnt:private_hdrs", "//src/shaders:private_hdrs", + "//src/sksl:private_hdrs", "//src/sksl/tracing:skopts_hdrs", "//src/text:private_hdrs", "//src/utils:private_hdrs", @@ -104,9 +103,6 @@ skia_filegroup( "//src/text/gpu:private_hdrs", ], "//conditions:default": [], - }) + select({ - "//src/sksl:needs_sksl": ["//src/sksl:private_hdrs"], - "//conditions:default": [], }) + select({ "//src/svg:enable_svg_canvas_true": [ "//src/svg:private_hdrs", @@ -134,15 +130,11 @@ skia_cc_deps( "//src/encode:deps", "//src/opts:deps", "//src/ports:deps", + "//src/sksl:deps", "//src/xml:deps", ] + select({ "//src/gpu:has_ganesh_backend": ["//src/gpu:deps"], "//conditions:default": [], - }) + select({ - "//src/sksl:needs_sksl": ["//src/sksl:deps"], - "//conditions:default": [], - }) + select({ - "//conditions:default": [], }) + select({ "//src/pdf:enable_pdf_backend_true": ["//src/pdf:deps"], "//conditions:default": [], @@ -183,6 +175,7 @@ skia_cc_library( name = "base", srcs = [ "//src/base:srcs", + "//src/ports:buffet_base_srcs", ] + select({ "//bazel/common_config_settings:compile_generated_cpp_files_for_headers_true": [ "//include/private/base:generated_base_header_cpps", diff --git a/src/c/gr_context.cpp b/src/c/gr_context.cpp index 8fdd1954a553..559b0c1f1c6f 100644 --- a/src/c/gr_context.cpp +++ b/src/c/gr_context.cpp @@ -9,6 +9,8 @@ #include "include/core/SkImage.h" #include "include/core/SkSurface.h" +#include "include/gpu/ganesh/gl/GrGLBackendSurface.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/c/gr_context.h" @@ -216,11 +218,11 @@ bool gr_vk_extensions_has_extension(gr_vk_extensions_t* extensions, const char* // GrBackendTexture gr_backendtexture_t* gr_backendtexture_new_gl(int width, int height, bool mipmapped, const gr_gl_textureinfo_t* glInfo) { - return SK_ONLY_GPU(ToGrBackendTexture(new GrBackendTexture(width, height, (GrMipMapped)mipmapped, *AsGrGLTextureInfo(glInfo))), nullptr); + return SK_ONLY_GPU(ToGrBackendTexture(new GrBackendTexture(GrBackendTextures::MakeGL(width, height, (GrMipMapped)mipmapped, *AsGrGLTextureInfo(glInfo)))), nullptr); } gr_backendtexture_t* gr_backendtexture_new_vulkan(int width, int height, const gr_vk_imageinfo_t* vkInfo) { - return SK_ONLY_VULKAN(ToGrBackendTexture(new GrBackendTexture(width, height, *AsGrVkImageInfo(vkInfo))), nullptr); + return SK_ONLY_VULKAN(ToGrBackendTexture(new GrBackendTexture(GrBackendTextures::MakeVk(width, height, *AsGrVkImageInfo(vkInfo)))), nullptr); } gr_backendtexture_t* gr_backendtexture_new_metal(int width, int height, bool mipmapped, const gr_mtl_textureinfo_t* mtlInfo) { @@ -252,22 +254,22 @@ gr_backend_t gr_backendtexture_get_backend(const gr_backendtexture_t* texture) { } bool gr_backendtexture_get_gl_textureinfo(const gr_backendtexture_t* texture, gr_gl_textureinfo_t* glInfo) { - return SK_ONLY_GPU(AsGrBackendTexture(texture)->getGLTextureInfo(AsGrGLTextureInfo(glInfo)), false); + return SK_ONLY_GPU(GrBackendTextures::GetGLTextureInfo(*AsGrBackendTexture(texture), AsGrGLTextureInfo(glInfo)), false); } // GrBackendRenderTarget gr_backendrendertarget_t* gr_backendrendertarget_new_gl(int width, int height, int samples, int stencils, const gr_gl_framebufferinfo_t* glInfo) { - return SK_ONLY_GPU(ToGrBackendRenderTarget(new GrBackendRenderTarget(width, height, samples, stencils, *AsGrGLFramebufferInfo(glInfo))), nullptr); + return SK_ONLY_GPU(ToGrBackendRenderTarget(new GrBackendRenderTarget(GrBackendRenderTargets::MakeGL(width, height, samples, stencils, *AsGrGLFramebufferInfo(glInfo)))), nullptr); } -gr_backendrendertarget_t* gr_backendrendertarget_new_vulkan(int width, int height, int samples, const gr_vk_imageinfo_t* vkImageInfo) { - return SK_ONLY_VULKAN(ToGrBackendRenderTarget(new GrBackendRenderTarget(width, height, samples, *AsGrVkImageInfo(vkImageInfo))), nullptr); +gr_backendrendertarget_t* gr_backendrendertarget_new_vulkan(int width, int height, const gr_vk_imageinfo_t* vkImageInfo) { + return SK_ONLY_VULKAN(ToGrBackendRenderTarget(new GrBackendRenderTarget(GrBackendRenderTargets::MakeVk(width, height, *AsGrVkImageInfo(vkImageInfo)))), nullptr); } -gr_backendrendertarget_t* gr_backendrendertarget_new_metal(int width, int height, int samples, const gr_mtl_textureinfo_t* mtlInfo) { - return SK_ONLY_METAL(ToGrBackendRenderTarget(new GrBackendRenderTarget(width, height, samples, AsGrMtlTextureInfo(mtlInfo))), nullptr); +gr_backendrendertarget_t* gr_backendrendertarget_new_metal(int width, int height, const gr_mtl_textureinfo_t* mtlInfo) { + return SK_ONLY_METAL(ToGrBackendRenderTarget(new GrBackendRenderTarget(width, height, AsGrMtlTextureInfo(mtlInfo))), nullptr); } void gr_backendrendertarget_delete(gr_backendrendertarget_t* rendertarget) { @@ -299,5 +301,5 @@ gr_backend_t gr_backendrendertarget_get_backend(const gr_backendrendertarget_t* } bool gr_backendrendertarget_get_gl_framebufferinfo(const gr_backendrendertarget_t* rendertarget, gr_gl_framebufferinfo_t* glInfo) { - return SK_ONLY_GPU(AsGrBackendRenderTarget(rendertarget)->getGLFramebufferInfo(AsGrGLFramebufferInfo(glInfo)), false); + return SK_ONLY_GPU(GrBackendRenderTargets::GetGLFramebufferInfo(*AsGrBackendRenderTarget(rendertarget), AsGrGLFramebufferInfo(glInfo)), false); } diff --git a/src/c/sk_enums.cpp b/src/c/sk_enums.cpp index b66e70431e0c..86da700adfc5 100644 --- a/src/c/sk_enums.cpp +++ b/src/c/sk_enums.cpp @@ -401,11 +401,11 @@ static_assert ((int)GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin == (int)TOP_L static_assert ((int)GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin == (int)BOTTOM_LEFT_GR_SURFACE_ORIGIN, ASSERT_MSG(GrSurfaceOrigin, gr_surfaceorigin_t)); // gr_backend_t -static_assert ((int)GrBackendApi::kMetal == (int)METAL_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); -static_assert ((int)GrBackendApi::kDawn == (int)DAWN_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); -static_assert ((int)GrBackendApi::kOpenGL == (int)OPENGL_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); -static_assert ((int)GrBackendApi::kVulkan == (int)VULKAN_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); -static_assert ((int)GrBackendApi::kDirect3D == (int)DIRECT3D_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); +static_assert ((int)GrBackendApi::kMetal == (int)METAL_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); +static_assert ((int)GrBackendApi::kOpenGL == (int)OPENGL_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); +static_assert ((int)GrBackendApi::kVulkan == (int)VULKAN_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); +static_assert ((int)GrBackendApi::kDirect3D == (int)DIRECT3D_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); +static_assert ((int)GrBackendApi::kUnsupported == (int)UNSUPPORTED_GR_BACKEND, ASSERT_MSG(GrBackendApi, gr_backend_t)); #endif diff --git a/src/codec/SkJpegxlCodec.cpp b/src/codec/SkJpegxlCodec.cpp index a29ccc0df466..185bc2ba0b82 100644 --- a/src/codec/SkJpegxlCodec.cpp +++ b/src/codec/SkJpegxlCodec.cpp @@ -21,8 +21,8 @@ #include "include/private/base/SkTo.h" #include "modules/skcms/skcms.h" #include "src/codec/SkFrameHolder.h" -#include "src/core/SkOpts.h" #include "src/core/SkStreamPriv.h" +#include "src/core/SkSwizzlePriv.h" #include "jxl/codestream_header.h" #include "jxl/decode.h" diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp index 1953be4ec0ce..6a2b554d8031 100644 --- a/src/codec/SkPngCodec.cpp +++ b/src/codec/SkPngCodec.cpp @@ -26,7 +26,8 @@ #include "src/codec/SkColorPalette.h" #include "src/codec/SkPngPriv.h" #include "src/codec/SkSwizzler.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" +#include "src/core/SkSwizzlePriv.h" #include #include diff --git a/src/codec/SkSampler.cpp b/src/codec/SkSampler.cpp index 3a6832c183f3..c8e879689dba 100644 --- a/src/codec/SkSampler.cpp +++ b/src/codec/SkSampler.cpp @@ -12,7 +12,7 @@ #include "include/core/SkImageInfo.h" #include "include/private/base/SkTemplates.h" #include "src/codec/SkCodecPriv.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include #include diff --git a/src/codec/SkSwizzler.cpp b/src/codec/SkSwizzler.cpp index d5a1ddbc89d9..2111bfa3f749 100644 --- a/src/codec/SkSwizzler.cpp +++ b/src/codec/SkSwizzler.cpp @@ -20,7 +20,7 @@ #include "include/private/base/SkTemplates.h" #include "src/base/SkHalf.h" #include "src/codec/SkCodecPriv.h" -#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK #include "include/android/SkAndroidFrameworkUtils.h" diff --git a/src/codec/SkSwizzler.h b/src/codec/SkSwizzler.h index e048bee3c8ca..f6356a984a84 100644 --- a/src/codec/SkSwizzler.h +++ b/src/codec/SkSwizzler.h @@ -227,4 +227,5 @@ class SkSwizzler : public SkSampler { int onSetSampleX(int) override; }; + #endif // SkSwizzler_DEFINED diff --git a/src/core/BUILD.bazel b/src/core/BUILD.bazel index a1f6466fbcec..f072f5cadd94 100644 --- a/src/core/BUILD.bazel +++ b/src/core/BUILD.bazel @@ -64,6 +64,8 @@ CORE_FILES = [ "SkBlitMask_opts_ssse3.cpp", "SkBlitRow.h", "SkBlitRow_D32.cpp", + "SkBlitRow_opts.cpp", + "SkBlitRow_opts_hsw.cpp", "SkBlitter.cpp", "SkBlitter.h", "SkBlitter_A8.cpp", @@ -81,7 +83,6 @@ CORE_FILES = [ "SkCanvasPriv.h", "SkCanvas_Raster.cpp", "SkCapabilities.cpp", - "SkChromeRemoteGlyphCache.cpp", "SkClipStack.cpp", "SkClipStack.h", "SkClipStackDevice.cpp", @@ -146,7 +147,6 @@ CORE_FILES = [ "SkFontStream.cpp", "SkFontStream.h", "SkFont_serial.cpp", - "SkFuzzLogging.h", "SkGaussFilter.cpp", "SkGaussFilter.h", "SkGeometry.cpp", @@ -193,6 +193,12 @@ CORE_FILES = [ "SkMatrix.cpp", "SkMatrixPriv.h", "SkMatrixUtils.h", + "SkMemset.h", + "SkMemset_opts.cpp", + "SkMemset_opts_avx.cpp", + "SkMemset_opts_erms.cpp", + "SkMesh.cpp", + "SkMeshPriv.h", "SkMessageBus.h", "SkMipmap.cpp", "SkMipmap.h", @@ -203,8 +209,8 @@ CORE_FILES = [ "SkNextID.h", "SkOSFile.h", "SkOpts.cpp", + "SkOptsTargets.h", "SkOpts.h", - "SkOpts_erms.cpp", "SkOverdrawCanvas.cpp", "SkPaint.cpp", "SkPaintDefaults.h", @@ -268,6 +274,12 @@ CORE_FILES = [ "SkRegion_path.cpp", "SkResourceCache.cpp", "SkResourceCache.h", + "SkRuntimeBlender.cpp", + "SkRuntimeBlender.h", + "SkRuntimeEffect.cpp", + "SkRuntimeEffectPriv.h", + "SkSLTypeShared.cpp", + "SkSLTypeShared.h", "SkSafeRange.h", "SkSamplingPriv.h", "SkScalar.cpp", @@ -304,6 +316,9 @@ CORE_FILES = [ "SkSurfacePriv.h", "SkSwizzle.cpp", "SkSwizzlePriv.h", + "SkSwizzler_opts.cpp", + "SkSwizzler_opts_hsw.cpp", + "SkSwizzler_opts_ssse3.cpp", "SkTDynamicHash.h", "SkTHash.h", "SkTMultiMap.h", @@ -348,23 +363,6 @@ split_srcs_and_hdrs( files = CORE_FILES, ) -# These files are only needed if SkSL is enabled (GPU backend or SkRP). -SKSL_FILES = [ - "SkMesh.cpp", - "SkMeshPriv.h", - "SkRuntimeBlender.cpp", - "SkRuntimeBlender.h", - "SkRuntimeEffect.cpp", - "SkRuntimeEffectPriv.h", - "SkSLTypeShared.cpp", - "SkSLTypeShared.h", -] - -split_srcs_and_hdrs( - name = "sksl", - files = SKSL_FILES, -) - skia_filegroup( name = "legacy_draw_looper", srcs = [ @@ -404,12 +402,7 @@ skia_filegroup( ":core_skslc_srcs", ":core_srcs", ":skpicture_srcs", - ] + select({ - "//src/sksl:needs_sksl": [ - ":sksl_srcs", - ], - "//conditions:default": [], - }), + ], visibility = ["//src:__pkg__"], ) @@ -419,12 +412,7 @@ skia_filegroup( ":core_hdrs", ":core_skslc_hdrs", ":skpicture_hdrs", - ] + select({ - "//src/sksl:needs_sksl": [ - ":sksl_hdrs", - ], - "//conditions:default": [], - }), + ], visibility = ["//src:__pkg__"], ) @@ -438,11 +426,13 @@ skia_filegroup( "SkMatrixInvert.h", "SkMatrixUtils.h", "SkPathPriv.h", + "SkPathEnums.h", "SkPointPriv.h", "SkRRectPriv.h", "SkRectPriv.h", "SkSamplingPriv.h", "SkStreamPriv.h", + "SkSwizzlePriv.h", ], visibility = ["//src:__pkg__"], ) @@ -468,6 +458,7 @@ skia_filegroup( "SkLineClipper.cpp", "SkM44.cpp", "SkMatrix.cpp", + "SkMatrixInvert.cpp", "SkPath.cpp", "SkPathBuilder.cpp", "SkPathRef.cpp", diff --git a/src/core/SkAlphaRuns.cpp b/src/core/SkAlphaRuns.cpp index aab02754bdd4..083c7f389b16 100644 --- a/src/core/SkAlphaRuns.cpp +++ b/src/core/SkAlphaRuns.cpp @@ -6,7 +6,7 @@ */ #include "src/core/SkAlphaRuns.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" void SkAlphaRuns::reset(int width) { SkASSERT(width > 0); diff --git a/src/core/SkBitmapDevice.h b/src/core/SkBitmapDevice.h index be7d0f5085ef..cb0bab930388 100644 --- a/src/core/SkBitmapDevice.h +++ b/src/core/SkBitmapDevice.h @@ -25,6 +25,7 @@ class SkBlender; class SkImage; class SkImageFilterCache; class SkMatrix; +class SkMesh; class SkPaint; class SkPath; class SkPixmap; @@ -41,9 +42,7 @@ namespace sktext { class GlyphRunList; } struct SkImageInfo; struct SkPoint; struct SkRSXform; -#ifdef SK_ENABLE_SKSL -class SkMesh; -#endif + /////////////////////////////////////////////////////////////////////////////// class SkBitmapDevice : public SkBaseDevice { public: diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index 00a31ff5d352..37cf4c2efa28 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -14,8 +14,8 @@ #include "include/core/SkTileMode.h" #include "include/private/base/SkMacros.h" #include "include/private/base/SkTPin.h" +#include "src/core/SkMemset.h" #include "src/core/SkMipmapAccessor.h" -#include "src/core/SkOpts.h" #include #include diff --git a/src/core/SkBitmapProcState_matrixProcs.cpp b/src/core/SkBitmapProcState_matrixProcs.cpp index 92932f3381a0..b6f0a7740a0e 100644 --- a/src/core/SkBitmapProcState_matrixProcs.cpp +++ b/src/core/SkBitmapProcState_matrixProcs.cpp @@ -16,7 +16,7 @@ #include "include/private/base/SkTPin.h" #include "include/private/base/SkTo.h" #include "src/core/SkBitmapProcState.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include #include diff --git a/src/core/SkBitmapProcState_opts.cpp b/src/core/SkBitmapProcState_opts.cpp index ffa7f86ccbd9..27580001050e 100644 --- a/src/core/SkBitmapProcState_opts.cpp +++ b/src/core/SkBitmapProcState_opts.cpp @@ -8,7 +8,7 @@ #include "include/private/base/SkFeatures.h" #include "src/core/SkBitmapProcState.h" #include "src/core/SkCpu.h" -#include "src/core/SkOpts.h" +#include "src/core/SkOptsTargets.h" #define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT #include "src/opts/SkOpts_SetTarget.h" diff --git a/src/core/SkBitmapProcState_opts_hsw.cpp b/src/core/SkBitmapProcState_opts_hsw.cpp index 684f4c58e6be..26ee75e718cb 100644 --- a/src/core/SkBitmapProcState_opts_hsw.cpp +++ b/src/core/SkBitmapProcState_opts_hsw.cpp @@ -6,7 +6,7 @@ */ #include "include/private/base/SkFeatures.h" -#include "src/core/SkOpts.h" +#include "src/core/SkOptsTargets.h" #if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) diff --git a/src/core/SkBitmapProcState_opts_ssse3.cpp b/src/core/SkBitmapProcState_opts_ssse3.cpp index 8aa6108fa526..34184031015c 100644 --- a/src/core/SkBitmapProcState_opts_ssse3.cpp +++ b/src/core/SkBitmapProcState_opts_ssse3.cpp @@ -6,7 +6,7 @@ */ #include "include/private/base/SkFeatures.h" -#include "src/core/SkOpts.h" +#include "src/core/SkOptsTargets.h" #if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) diff --git a/src/core/SkBlitMask_opts.cpp b/src/core/SkBlitMask_opts.cpp index 2a9d75d8a0df..42307c40526c 100644 --- a/src/core/SkBlitMask_opts.cpp +++ b/src/core/SkBlitMask_opts.cpp @@ -8,7 +8,7 @@ #include "include/private/base/SkFeatures.h" #include "src/core/SkBlitMask.h" #include "src/core/SkCpu.h" -#include "src/core/SkOpts.h" +#include "src/core/SkOptsTargets.h" #define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT #include "src/opts/SkOpts_SetTarget.h" diff --git a/src/core/SkBlitMask_opts_ssse3.cpp b/src/core/SkBlitMask_opts_ssse3.cpp index a133252e2602..8b7d256fa67c 100644 --- a/src/core/SkBlitMask_opts_ssse3.cpp +++ b/src/core/SkBlitMask_opts_ssse3.cpp @@ -7,7 +7,7 @@ #include "include/private/base/SkFeatures.h" #include "src/core/SkBlitMask.h" -#include "src/core/SkOpts.h" +#include "src/core/SkOptsTargets.h" #if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) diff --git a/src/core/SkBlitRow.h b/src/core/SkBlitRow.h index 6fbd44f924b2..ce4d7c8199a8 100644 --- a/src/core/SkBlitRow.h +++ b/src/core/SkBlitRow.h @@ -34,4 +34,12 @@ class SkBlitRow { static void Color32(SkPMColor dst[], int count, SkPMColor color); }; +namespace SkOpts { + extern void (*blit_row_color32)(SkPMColor* dst, int count, SkPMColor color); + extern void (*blit_row_s32a_opaque)(SkPMColor* dst, const SkPMColor* src, + int count, U8CPU alpha); + + void Init_BlitRow(); +} // namespace SkOpts + #endif diff --git a/src/core/SkBlitRow_D32.cpp b/src/core/SkBlitRow_D32.cpp index 131018d93842..4e9dfecc3b4d 100644 --- a/src/core/SkBlitRow_D32.cpp +++ b/src/core/SkBlitRow_D32.cpp @@ -11,7 +11,7 @@ #include "include/private/SkColorData.h" #include "include/private/base/SkCPUTypes.h" #include "src/core/SkBlitRow.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include #include diff --git a/src/core/SkBlitRow_opts.cpp b/src/core/SkBlitRow_opts.cpp new file mode 100644 index 000000000000..e49b625df160 --- /dev/null +++ b/src/core/SkBlitRow_opts.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkBlitRow.h" +#include "src/core/SkCpu.h" +#include "src/core/SkOptsTargets.h" + +#define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkBlitRow_opts.h" // IWYU pragma: keep + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + DEFINE_DEFAULT(blit_row_color32); + DEFINE_DEFAULT(blit_row_s32a_opaque); + + void Init_BlitRow_hsw(); + + static bool init() { + #if defined(SK_ENABLE_OPTIMIZE_SIZE) + // All Init_foo functions are omitted when optimizing for size + #elif defined(SK_CPU_X86) + #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_AVX2 + if (SkCpu::Supports(SkCpu::HSW)) { Init_BlitRow_hsw(); } + #endif + #endif + return true; + } + + void Init_BlitRow() { + [[maybe_unused]] static bool gInitialized = init(); + } +} // namespace SkOpts diff --git a/src/core/SkBlitRow_opts_hsw.cpp b/src/core/SkBlitRow_opts_hsw.cpp new file mode 100644 index 000000000000..e110b8c3faba --- /dev/null +++ b/src/core/SkBlitRow_opts_hsw.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkBlitRow.h" +#include "src/core/SkOptsTargets.h" + +#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) + +// The order of these includes is important: +// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget +// 2) Include the code to compile, typically in a _opts.h file. +// 3) Include SkOpts_RestoreTarget to switch back to the default CPU architecture + +#define SK_OPTS_TARGET SK_OPTS_TARGET_HSW +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkBlitRow_opts.h" + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + void Init_BlitRow_hsw() { + blit_row_color32 = hsw::blit_row_color32; + blit_row_s32a_opaque = hsw::blit_row_s32a_opaque; + } +} // namespace SkOpts + +#endif // SK_CPU_X86 && !SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index 4a8474568ae5..5dd978e40879 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -29,7 +29,7 @@ #include "src/core/SkCoreBlitters.h" #include "src/core/SkMask.h" #include "src/core/SkMaskFilterBase.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/core/SkPaintPriv.h" #include "src/core/SkRegionPriv.h" #include "src/shaders/SkShaderBase.h" diff --git a/src/core/SkBlitter_ARGB32.cpp b/src/core/SkBlitter_ARGB32.cpp index 3b3790b49219..10d8d66e7873 100644 --- a/src/core/SkBlitter_ARGB32.cpp +++ b/src/core/SkBlitter_ARGB32.cpp @@ -23,7 +23,7 @@ #include "src/core/SkBlitRow.h" #include "src/core/SkCoreBlitters.h" #include "src/core/SkMask.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/shaders/SkShaderBase.h" #include diff --git a/src/core/SkCanvasPriv.cpp b/src/core/SkCanvasPriv.cpp index dedab800c8fe..bf93e0146753 100644 --- a/src/core/SkCanvasPriv.cpp +++ b/src/core/SkCanvasPriv.cpp @@ -137,7 +137,7 @@ bool SkCanvasPriv::ImageToColorFilter(SkPaint* paint) { return true; } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) #include "src/gpu/graphite/Device.h" skgpu::graphite::TextureProxy* SkCanvasPriv::TopDeviceGraphiteTargetProxy(SkCanvas* canvas) { @@ -147,7 +147,7 @@ skgpu::graphite::TextureProxy* SkCanvasPriv::TopDeviceGraphiteTargetProxy(SkCanv return nullptr; } -#endif // GRAPHITE_TEST_UTILS +#endif // defined(GRAPHITE_TEST_UTILS) AutoLayerForImageFilter::AutoLayerForImageFilter(SkCanvas* canvas, diff --git a/src/core/SkCanvasPriv.h b/src/core/SkCanvasPriv.h index 7aa25241a497..c043bec3f449 100644 --- a/src/core/SkCanvasPriv.h +++ b/src/core/SkCanvasPriv.h @@ -23,7 +23,7 @@ class SkReadBuffer; struct SkRect; class SkWriteBuffer; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) namespace skgpu::graphite { class TextureProxy; } @@ -66,7 +66,7 @@ class SkCanvasPriv { return canvas->topDevice(); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) static skgpu::graphite::TextureProxy* TopDeviceGraphiteTargetProxy(SkCanvas*); #endif diff --git a/src/core/SkCapabilities.cpp b/src/core/SkCapabilities.cpp index 50e7e58715d4..b5d9e19e6209 100644 --- a/src/core/SkCapabilities.cpp +++ b/src/core/SkCapabilities.cpp @@ -7,24 +7,18 @@ #include "include/core/SkCapabilities.h" -#ifdef SK_ENABLE_SKSL #include "src/sksl/SkSLUtil.h" -#endif sk_sp SkCapabilities::RasterBackend() { - static SkCapabilities* sCaps = [](){ + static SkCapabilities* sCaps = []() { SkCapabilities* caps = new SkCapabilities; -#ifdef SK_ENABLE_SKSL caps->fSkSLVersion = SkSL::Version::k100; -#endif return caps; }(); return sk_ref_sp(sCaps); } -#ifdef SK_ENABLE_SKSL void SkCapabilities::initSkCaps(const SkSL::ShaderCaps* shaderCaps) { this->fSkSLVersion = shaderCaps->supportedSkSLVerion(); } -#endif diff --git a/src/core/SkConvertPixels.cpp b/src/core/SkConvertPixels.cpp index 1ffdc1d37c1d..14f94ae434d3 100644 --- a/src/core/SkConvertPixels.cpp +++ b/src/core/SkConvertPixels.cpp @@ -16,9 +16,9 @@ #include "src/base/SkRectMemcpy.h" #include "src/core/SkColorSpaceXformSteps.h" #include "src/core/SkImageInfoPriv.h" -#include "src/core/SkOpts.h" #include "src/core/SkRasterPipeline.h" #include "src/core/SkRasterPipelineOpContexts.h" +#include "src/core/SkSwizzlePriv.h" #include #include diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp index 5ebdffe2a7e6..a052ac1adcf3 100644 --- a/src/core/SkDevice.cpp +++ b/src/core/SkDevice.cpp @@ -24,7 +24,7 @@ #include "src/core/SkImagePriv.h" #include "src/core/SkLatticeIter.h" #include "src/core/SkMatrixPriv.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/core/SkPathPriv.h" #include "src/core/SkRasterClip.h" #include "src/core/SkRectPriv.h" diff --git a/src/core/SkFontMgr.cpp b/src/core/SkFontMgr.cpp index 7db5e18eb46d..9b8ced980a3c 100644 --- a/src/core/SkFontMgr.cpp +++ b/src/core/SkFontMgr.cpp @@ -8,6 +8,7 @@ #include "include/core/SkFontMgr.h" #include "include/core/SkStream.h" #include "include/core/SkTypes.h" +#include "include/private/base/SkOnce.h" #include "src/core/SkFontDescriptor.h" class SkFontStyle; @@ -148,20 +149,23 @@ sk_sp SkFontMgr::legacyMakeTypeface(const char familyName[], SkFontS } sk_sp SkFontMgr::RefEmpty() { - static SkFontMgr* singleton = sk_make_sp().release(); - return sk_ref_sp(singleton); + static sk_sp singleton(new SkEmptyFontMgr); + return singleton; } // A global function pointer that's not declared, but can be overriden at startup by test tools. sk_sp (*gSkFontMgr_DefaultFactory)() = nullptr; sk_sp SkFontMgr::RefDefault() { - static SkFontMgr* singleton = []() -> SkFontMgr* { + static SkOnce once; + static sk_sp singleton; + + once([]{ sk_sp fm = gSkFontMgr_DefaultFactory ? gSkFontMgr_DefaultFactory() : SkFontMgr::Factory(); - return fm ? fm.release() : RefEmpty().release(); - }(); - return sk_ref_sp(singleton); + singleton = fm ? std::move(fm) : RefEmpty(); + }); + return singleton; } /** diff --git a/src/core/SkFuzzLogging.h b/src/core/SkFuzzLogging.h deleted file mode 100644 index 9f942f35dee6..000000000000 --- a/src/core/SkFuzzLogging.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkFuzzLogging_DEFINED -#define SkFuzzLogging_DEFINED - -// Utilities for Skia's fuzzer - -// When SK_FUZZ_LOGGING is defined SkDebugfs relevant to image filter fuzzing -// will be enabled. This allows the filter fuzzing code to include fuzzer -// failures based on the output logs. -// Define this flag in your SkUserConfig.h or in your Make/Build system. -#ifdef SK_FUZZ_LOGGING - #define SkFUZZF(args) SkDebugf("SkFUZZ: "); SkDebugf args -#else - #define SkFUZZF(args) -#endif - -#endif diff --git a/src/core/SkGraphics.cpp b/src/core/SkGraphics.cpp index 2decae76f66d..6f8c0aa054ad 100644 --- a/src/core/SkGraphics.cpp +++ b/src/core/SkGraphics.cpp @@ -7,37 +7,27 @@ #include "include/core/SkGraphics.h" -#include "include/core/SkCanvas.h" -#include "include/core/SkMatrix.h" -#include "include/core/SkOpenTypeSVGDecoder.h" -#include "include/core/SkPath.h" -#include "include/core/SkPathEffect.h" -#include "include/core/SkRefCnt.h" -#include "include/core/SkShader.h" -#include "include/core/SkStream.h" -#include "include/core/SkTime.h" -#include "include/private/base/SkMath.h" -#include "src/base/SkTSearch.h" #include "src/core/SkBitmapProcState.h" #include "src/core/SkBlitMask.h" -#include "src/core/SkBlitter.h" +#include "src/core/SkBlitRow.h" #include "src/core/SkCpu.h" -#include "src/core/SkGeometry.h" #include "src/core/SkImageFilter_Base.h" +#include "src/core/SkMemset.h" #include "src/core/SkOpts.h" #include "src/core/SkResourceCache.h" -#include "src/core/SkScalerContext.h" #include "src/core/SkStrikeCache.h" +#include "src/core/SkSwizzlePriv.h" #include "src/core/SkTypefaceCache.h" -#include - void SkGraphics::Init() { // SkGraphics::Init() must be thread-safe and idempotent. SkCpu::CacheRuntimeFeatures(); SkOpts::Init(); SkOpts::Init_BitmapProcState(); SkOpts::Init_BlitMask(); + SkOpts::Init_BlitRow(); + SkOpts::Init_Memset(); + SkOpts::Init_Swizzler(); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index a7dc4e2828f6..b25215fbbf9f 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -8,10 +8,20 @@ #include "include/core/SkImageFilter.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColorFilter.h" +#include "include/core/SkImage.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPoint.h" #include "include/core/SkRect.h" +#include "include/core/SkSize.h" +#include "include/core/SkSurfaceProps.h" +#include "include/private/base/SkAssert.h" #include "include/private/base/SkSafe32.h" -#include "src/core/SkFuzzLogging.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkTemplates.h" #include "src/core/SkImageFilterCache.h" +#include "src/core/SkImageFilterTypes.h" #include "src/core/SkImageFilter_Base.h" #include "src/core/SkLocalMatrixImageFilter.h" #include "src/core/SkReadBuffer.h" @@ -20,8 +30,13 @@ #include "src/core/SkSpecialSurface.h" #include "src/core/SkValidationUtils.h" #include "src/core/SkWriteBuffer.h" +#include "src/effects/colorfilters/SkColorFilterBase.h" +#include #include +#include +#include +#include /////////////////////////////////////////////////////////////////////////////////////////////////// // SkImageFilter - A number of the public APIs on SkImageFilter downcast to SkImageFilter_Base @@ -245,7 +260,9 @@ skif::FilterResult SkImageFilter_Base::filterImage(const skif::Context& context) result = this->onFilterImage(context); if (context.gpuBacked()) { - SkASSERT(!result.image() || result.image()->isGaneshBacked()); + SkASSERT(!result.image() || + result.image()->isGaneshBacked() || + result.image()->isGraphiteBacked()); } if (context.cache()) { @@ -255,6 +272,70 @@ skif::FilterResult SkImageFilter_Base::filterImage(const skif::Context& context) return result; } +sk_sp SkImageFilter_Base::makeImageWithFilter(const skif::Functors& functors, + sk_sp src, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) const { + if (!outSubset || !offset || !src->bounds().contains(subset)) { + return nullptr; + } + + sk_sp cache( + SkImageFilterCache::Create(SkImageFilterCache::kDefaultTransientSize)); + + static const SkSurfaceProps kDefaultSurfaceProps; + + auto srcSpecialImage = functors.fMakeImageFunctor(subset, src, kDefaultSurfaceProps); + if (!srcSpecialImage) { + return nullptr; + } + + // The filters operate in the local space of the src image, where (0,0) corresponds to the + // subset's top left corner. But the clip bounds and any crop rects on the filters are in the + // original coordinate system, so configure the CTM to correct crop rects and explicitly adjust + // the clip bounds (since it is assumed to already be in image space). + // TODO: Once all image filters support it, we can just use the subset's top left corner as + // the source FilterResult's origin. + skif::ContextInfo ctxInfo = { + skif::Mapping(SkMatrix::Translate(-subset.x(), -subset.y())), + skif::LayerSpace(clipBounds.makeOffset(-subset.topLeft())), + // TODO: Pass subset.topLeft() as the origin of the source FilterResult + /* fSource= */skif::FilterResult{std::move(srcSpecialImage)}, + src->imageInfo().colorType(), + src->imageInfo().colorSpace(), + kDefaultSurfaceProps, + cache.get()}; + const skif::Context context(ctxInfo, functors); + + sk_sp result = this->filterImage(context).imageAndOffset(context, offset); + if (!result) { + return nullptr; + } + + // The output image and offset are relative to the subset rectangle, so the offset needs to + // be shifted to put it in the correct spot with respect to the original coordinate system + offset->fX += subset.x(); + offset->fY += subset.y(); + + // Final clip against the exact clipBounds (the clip provided in the context gets adjusted + // to account for pixel-moving filters so doesn't always exactly match when finished). The + // clipBounds are translated into the clippedDstRect coordinate space, including the + // result->subset() ensures that the result's image pixel origin does not affect results. + SkIRect dstRect = result->subset(); + SkIRect clippedDstRect = dstRect; + if (!clippedDstRect.intersect(clipBounds.makeOffset(result->subset().topLeft() - *offset))) { + return nullptr; + } + + // Adjust the geometric offset if the top-left corner moved as well + offset->fX += (clippedDstRect.x() - dstRect.x()); + offset->fY += (clippedDstRect.y() - dstRect.y()); + *outSubset = clippedDstRect; + return result->asImage(); +} + skif::LayerSpace SkImageFilter_Base::getInputBounds( const skif::Mapping& mapping, const skif::DeviceSpace& desiredOutput, const skif::ParameterSpace* knownContentBounds) const { diff --git a/src/core/SkImageFilterTypes.cpp b/src/core/SkImageFilterTypes.cpp index a406ccd5b57d..2f3bbc73bf8e 100644 --- a/src/core/SkImageFilterTypes.cpp +++ b/src/core/SkImageFilterTypes.cpp @@ -17,18 +17,15 @@ #include "include/core/SkPaint.h" #include "include/core/SkPicture.h" // IWYU pragma: keep #include "include/core/SkShader.h" +#include "include/effects/SkRuntimeEffect.h" #include "include/private/base/SkFloatingPoint.h" #include "src/core/SkImageFilter_Base.h" #include "src/core/SkMatrixPriv.h" #include "src/core/SkRectPriv.h" +#include "src/core/SkRuntimeEffectPriv.h" #include "src/core/SkSpecialSurface.h" #include "src/effects/colorfilters/SkColorFilterBase.h" -#ifdef SK_ENABLE_SKSL -#include "include/effects/SkRuntimeEffect.h" -#include "src/core/SkRuntimeEffectPriv.h" -#endif - #include namespace skif { @@ -186,8 +183,6 @@ std::optional> periodic_axis_transform( } } -#ifdef SK_ENABLE_SKSL - // Returns true if decal tiling an image with 'imageBounds' subject to 'transform', limited to // the un-transformed 'sampleBounds' would exhibit significantly different visual quality from // drawing the image with clamp tiling and limited geometrically to 'imageBounds'. @@ -287,8 +282,6 @@ sk_sp apply_decal( return decalShader; } -#endif - // AutoSurface manages an SkSpecialSurface and canvas state to draw to a layer-space bounding box, // and then snap it into a FilterResult. It provides operators to be used directly as a canvas, // assuming surface creation succeeded. Usage: @@ -350,30 +343,39 @@ class AutoSurface { /////////////////////////////////////////////////////////////////////////////////////////////////// -Context Context::MakeRaster(const ContextInfo& info) { - // TODO (skbug:14286): Remove this forcing to 8888. Many legacy image filters only support - // N32 on CPU, but once they are implemented in terms of draws and SkSL they will support - // all color types, like the GPU backends. - ContextInfo n32 = info; - n32.fColorType = kN32_SkColorType; - auto makeSurfaceCallback = [](const SkImageInfo& imageInfo, - const SkSurfaceProps* props) { +Functors MakeRasterFunctors() { + auto makeSurfaceFunctor = [](const SkImageInfo& imageInfo, + const SkSurfaceProps* props) { return SkSpecialSurfaces::MakeRaster(imageInfo, *props); }; - auto makeImageCallback = [](const SkIRect& subset, - sk_sp image, - const SkSurfaceProps& props) { + auto makeImageFunctor = [](const SkIRect& subset, + sk_sp image, + const SkSurfaceProps& props) { return SkSpecialImages::MakeFromRaster(subset, image, props); }; - auto makeCachedBitmapCallback = [](const SkBitmap& data) { + auto makeCachedBitmapFunctor = [](const SkBitmap& data) { return SkImages::RasterFromBitmap(data); }; - return Context(n32, nullptr, makeSurfaceCallback, makeImageCallback, makeCachedBitmapCallback); + + // TODO: For now pass null for the blur image functor so that SkBlurImageFilter uses its N32 + // implementation. + return Functors(makeSurfaceFunctor, makeImageFunctor, makeCachedBitmapFunctor, + /*blurImageFunctor=*/ nullptr); +} + +Context Context::MakeRaster(const ContextInfo& info) { + // TODO (skbug:14286): Remove this forcing to 8888. Many legacy image filters only support + // N32 on CPU, but once they are implemented in terms of draws and SkSL they will support + // all color types, like the GPU backends. + ContextInfo n32 = info; + n32.fColorType = kN32_SkColorType; + + return Context(n32, MakeRasterFunctors()); } sk_sp Context::makeSurface(const SkISize& size, const SkSurfaceProps* props) const { - SkASSERT(fMakeSurfaceDelegate); + SkASSERT(fFunctors.fMakeSurfaceFunctor); if (!props) { props = &fInfo.fSurfaceProps; } @@ -382,17 +384,17 @@ sk_sp Context::makeSurface(const SkISize& size, fInfo.fColorType, kPremul_SkAlphaType, sk_ref_sp(fInfo.fColorSpace)); - return fMakeSurfaceDelegate(imageInfo, props); + return fFunctors.fMakeSurfaceFunctor(imageInfo, props); } sk_sp Context::makeImage(const SkIRect& subset, sk_sp image) const { - SkASSERT(fMakeImageDelegate); - return fMakeImageDelegate(subset, image, fInfo.fSurfaceProps); + SkASSERT(fFunctors.fMakeImageFunctor); + return fFunctors.fMakeImageFunctor(subset, image, fInfo.fSurfaceProps); } sk_sp Context::getCachedBitmap(const SkBitmap& data) const { - SkASSERT(fMakeCachedBitmapDelegate); - return fMakeCachedBitmapDelegate(data); + SkASSERT(fFunctors.fMakeCachedBitmapFunctor); + return fFunctors.fMakeCachedBitmapFunctor(data); } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -638,6 +640,10 @@ sk_sp FilterResult::imageAndOffset(const Context& ctx, SkIPoint* return image; } +std::pair, LayerSpace>FilterResult::imageAndOffset( + const Context& ctx) const { + return this->resolve(ctx, fLayerBounds); +} bool FilterResult::modifiesPixelsBeyondImage(const LayerSpace& dstBounds) const { // If there is no transparency-affecting color filter and it's just decal tiling, it doesn't @@ -1050,13 +1056,10 @@ void FilterResult::draw(SkCanvas* canvas, const LayerSpace& dstBounds) } if (this->modifiesPixelsBeyondImage(dstBounds)) { -#ifdef SK_ENABLE_SKSL if (fTileMode == SkTileMode::kDecal) { // apply_decal consumes the transform, so we don't modify the canvas paint.setShader(apply_decal(fTransform, fImage, fLayerBounds, sampling)); - } else -#endif - { + } else { // For clamp/repeat/mirror, tiling at the layer resolution vs. resolving the image to // the layer resolution and then tiling produces much more compatible results than // decal would, so just always use a simple shader. If we don't have SkSL to let us use @@ -1117,12 +1120,9 @@ sk_sp FilterResult::asShader(const Context& ctx, } else { // Since we didn't need to resolve, we know the content being sampled isn't cropped by // fLayerBounds. fTransform and fColorFilter are handled in the shader directly. -#ifdef SK_ENABLE_SKSL if (fTileMode == SkTileMode::kDecal) { shader = apply_decal(fTransform, fImage, sampleBounds, sampling); - } else -#endif - { + } else { shader = fImage->asShader(fTileMode, sampling, SkMatrix(fTransform)); } @@ -1137,10 +1137,7 @@ sk_sp FilterResult::asShader(const Context& ctx, FilterResult FilterResult::MakeFromPicture(const Context& ctx, sk_sp pic, ParameterSpace cullRect) { - if (!pic) { - return {}; - } - + SkASSERT(pic); LayerSpace dstBounds = ctx.mapping().paramToLayer(cullRect).roundOut(); if (!dstBounds.intersect(ctx.desiredOutput())) { return {}; @@ -1163,10 +1160,7 @@ FilterResult FilterResult::MakeFromPicture(const Context& ctx, FilterResult FilterResult::MakeFromShader(const Context& ctx, sk_sp shader, bool dither) { - if (!shader) { - return {}; - } - + SkASSERT(shader); AutoSurface surface{ctx, ctx.desiredOutput(), /*renderInParameterSpace=*/true}; if (surface) { SkPaint paint; @@ -1182,10 +1176,7 @@ FilterResult FilterResult::MakeFromImage(const Context& ctx, const SkRect& srcRect, const ParameterSpace& dstRect, const SkSamplingOptions& sampling) { - if (!image) { - return {}; - } - + SkASSERT(image); // Check for direct conversion to an SkSpecialImage and then FilterResult. Eventually this // whole function should be replaceable with: // FilterResult(fImage, fSrcRect, fDstRect).applyTransform(mapping.layerMatrix(), fSampling); @@ -1291,9 +1282,10 @@ FilterResult FilterResult::Builder::drawShader(sk_sp shader, } FilterResult FilterResult::Builder::merge() { - if (fInputs.empty()) { - return {}; - } else if (fInputs.size() == 1) { + // merge() could return an empty image on 0 added inputs, but this should have been caught + // earlier and routed to SkImageFilters::Empty() instead. + SkASSERT(!fInputs.empty()); + if (fInputs.size() == 1) { SkASSERT(!fInputs[0].fSampleBounds.has_value() && fInputs[0].fSampling == kDefaultSampling && fInputs[0].fFlags == ShaderFlags::kNone); @@ -1319,4 +1311,59 @@ FilterResult FilterResult::Builder::merge() { return surface.snap(); } +FilterResult FilterResult::Builder::blur(const LayerSpace& sigma) { + SkASSERT(fInputs.size() == 1); + + // TODO: The blur functor is only supported for GPU contexts; SkBlurImageFilter should have + // detected this. + SkASSERT(fContext.fFunctors.fBlurImageFunctor); + + // TODO: De-duplicate this logic between SkBlurImageFilter, here, and skgpu::BlurUtils. + skif::LayerSpace radii = + LayerSpace({3.f*sigma.width(), 3.f*sigma.height()}).ceil(); + auto maxOutput = fInputs[0].fImage.layerBounds(); + maxOutput.outset(radii); + + // TODO: If the input image is periodic, the output that's calculated can be the original image + // size and then have the layer bounds and tilemode of the output image apply the tile again. + // Similarly, a clamped blur can be restricted to a radius-outset buffer of the image bounds + // (vs. layer bounds) and rendered with clamp tiling. + const auto outputBounds = this->outputBounds(maxOutput); + if (outputBounds.isEmpty()) { + return {}; + } + + // These are the source pixels that will be read from the input image, which can be calculated + // internally because the blur's access pattern is well defined (vs. needing it to be provided + // in Builder::add()). + auto sampleBounds = outputBounds; + sampleBounds.outset(radii); + + // TODO: If the blur implementation requires downsampling, we should incorporate any deferred + // transform and colorfilter to the first rescale step instead of generating a full resolution + // simple image first. + // TODO: The presence of a non-decal tilemode should not force resolving to a simple image; it + // should be incorporated into the image that's sampled by the blur effect (modulo biasing edge + // pixels somehow for very large clamp blurs). + auto [image, origin] = fInputs[0].fImage.resolve(fContext, sampleBounds); + if (!image) { + return {}; + } + + // TODO: Can blur() take advantage of AutoSurface? Right now the GPU functions are responsible + // for creating their own target surfaces. + auto srcRelativeOutput = outputBounds; + srcRelativeOutput.offset(-origin); + image = fContext.fFunctors.fBlurImageFunctor(SkSize(sigma), + image, + SkIRect::MakeSize(image->dimensions()), + SkIRect(srcRelativeOutput), + fContext.refColorSpace(), + fContext.surfaceProps()); + + // TODO: Allow the blur functor to provide an upscaling transform that is applied to the + // FilterResult so that a render pass can possibly be elided if this is the final operation. + return {image, outputBounds.topLeft()}; +} + } // end namespace skif diff --git a/src/core/SkImageFilterTypes.h b/src/core/SkImageFilterTypes.h index 6899835768bf..af05b719da47 100644 --- a/src/core/SkImageFilterTypes.h +++ b/src/core/SkImageFilterTypes.h @@ -33,6 +33,7 @@ #include class FilterResultImageResolver; // for testing +class SkImageFilter_Base; class GrRecordingContext; class SkBitmap; class SkCanvas; @@ -697,13 +698,13 @@ class FilterResult { // Renders the 'pic', clipped by 'cullRect', into an optimally sized surface (depending on // picture bounds and 'ctx's desired output). The picture is transformed by the context's - // layer matrix. Treats null pictures as fully transparent. + // layer matrix. 'pic' must not be null. static FilterResult MakeFromPicture(const Context& ctx, sk_sp pic, ParameterSpace cullRect); - // Renders 'shader' into a surface that fills the context's desired output bounds. Treats null - // shaders as fully transparent. + // Renders 'shader' into a surface that fills the context's desired output bounds, 'shader' must + // not be null. // TODO: Update 'dither' to SkImageFilters::Dither, but that cannot be forward declared at the // moment because SkImageFilters is a class and not a namespace. static FilterResult MakeFromShader(const Context& ctx, @@ -712,7 +713,7 @@ class FilterResult { // Converts image to a FilterResult. If 'srcRect' is pixel-aligned it does so without rendering. // Otherwise it draws the src->dst sampling of 'image' into an optimally sized surface based - // on the context's desired output. + // on the context's desired output. 'image' must not be null. static FilterResult MakeFromImage(const Context& ctx, sk_sp image, const SkRect& srcRect, @@ -769,6 +770,12 @@ class FilterResult { // (which comes later as SkDevice, SkCanvas, etc. need to be modified, and coordinate space // tagging needs to be added). sk_sp imageAndOffset(const Context& ctx, SkIPoint* offset) const; + // TODO (michaelludwig) - This is a more type-safe version of the above imageAndOffset() and + // may need to remain to support SkBlurImageFilter calling out to the SkBlurEngine. An alternate + // option would be for FilterResult::Builder to have a blur() function that internally can + // resolve the input and pass to the skif::Context's blur engine. Then imageAndOffset() can go + // away entirely. + std::pair, LayerSpace> imageAndOffset(const Context& ctx) const; class Builder; @@ -864,7 +871,7 @@ class FilterResult::Builder { // eval() to control how 'input' is converted to an SkShader. 'inputSampling' specifies the // sampling options to use on the input's image when sampled by the final shader created in eval // - // 'sampleBounds', 'inputFlags' and 'inputSampling' must not be used with merge(). + // 'sampleBounds', 'inputFlags' and 'inputSampling' must not be used with merge() or blur(). Builder& add(const FilterResult& input, std::optional> sampleBounds = {}, SkEnumBitMask inputFlags = ShaderFlags::kNone, @@ -876,6 +883,12 @@ class FilterResult::Builder { // Combine all added inputs by merging them with src-over blending into a single output. FilterResult merge(); + // Blur the single input with a Gaussian blur. The exact blur implementation is chosen based on + // the skif::Context's backend. The sample bounds of the input and the final output bounds are + // automatically derived from the sigma, input layer bounds, and desired output bounds of the + // Builder's Context. + FilterResult blur(const LayerSpace& sigma); + // Combine all added inputs by transforming them into equivalent SkShaders and invoking the // shader factory that binds them together into a single shader that fills the output surface. // @@ -953,6 +966,56 @@ struct ContextInfo { SkImageFilterCache* fCache; }; +struct Functors { + using MakeSurfaceFunctor = std::function(const SkImageInfo& info, + const SkSurfaceProps* props)>; + + // For input images to be processed by image filters + using MakeImageFunctor = std::function(const SkIRect& subset, + sk_sp image, + const SkSurfaceProps& props)>; + // For internal data to be accessed by filter implementations + using MakeCachedBitmapFunctor = std::function(const SkBitmap& data)>; + // For backend-optimized blurring implementations (TODO: Possibly replaced by a SkBlurEngine). + // The srcRect and dstRect are relative to (0,0) of 'input's logical image (which may have its + // own offset to backing data). The returned image should have a width and height equal to the + // dstRect's dimensions and its (0,0) pixel is assumed to be located at dstRect.topLeft(). + using BlurImageFunctor = std::function(SkSize sigma, + sk_sp input, + SkIRect srcRect, + SkIRect dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps)>; + + Functors(MakeSurfaceFunctor makeSurfaceFunctor, + MakeImageFunctor makeImageFunctor, + MakeCachedBitmapFunctor makeCachedBitmapFunctor, + BlurImageFunctor blurImageFunctor, + GrRecordingContext* ganeshContext = nullptr) + : fMakeSurfaceFunctor(makeSurfaceFunctor) + , fMakeImageFunctor(makeImageFunctor) + , fMakeCachedBitmapFunctor(makeCachedBitmapFunctor) + , fBlurImageFunctor(blurImageFunctor) + , fGaneshContext(ganeshContext) { + SkASSERT(fMakeSurfaceFunctor); + SkASSERT(fMakeImageFunctor); + SkASSERT(fMakeCachedBitmapFunctor); + // The blur functor is currently not implemented yet for CPU blurs so it can be null + } + + // TODO: Reorganize these into a virtual class that can have an implementation per backend. + // std::function<> is very heavyweight in terms of codesize. The context can be a pointer to + // the backend impl, the fixed context info that won't change, and the context info that + // must change frequently during evaluation. + MakeSurfaceFunctor fMakeSurfaceFunctor; + MakeImageFunctor fMakeImageFunctor; + MakeCachedBitmapFunctor fMakeCachedBitmapFunctor; + BlurImageFunctor fBlurImageFunctor; + + // TODO: Can be removed once legacy blur code is deleted + GrRecordingContext* fGaneshContext; +}; + class Context { static constexpr GrSurfaceOrigin kUnusedOrigin = (GrSurfaceOrigin) 0; public: @@ -999,10 +1062,14 @@ class Context { // DEPRECATED: Use source() instead to get both the image and its origin. const SkSpecialImage* sourceImage() const { return fInfo.fSource.image(); } - // True if image filtering should occur on the GPU if possible. - bool gpuBacked() const { return SkToBool(fGaneshContext); } - // The recording context to use when computing the filter with the GPU. - GrRecordingContext* getContext() const { return fGaneshContext; } + // True if image filtering must occur on the GPU if possible. + bool gpuBacked() const { + // TODO: Once CPU blurs are moved to a blur functor, we'll need a different signal. + // On the otherhand, if CPU blurs become more consistent with handling of identity sigmas, + // then SkBlurImageFilter may not need to check this at all. + return SkToBool(fFunctors.fBlurImageFunctor); + } + GrRecordingContext* getContext() const { return fFunctors.fGaneshContext; } // Create a surface of the given size, that matches the context's color type and color space // as closely as possible, and uses the same backend of the device that produced the source @@ -1018,72 +1085,43 @@ class Context { Context withNewMapping(const Mapping& mapping) const { ContextInfo info = fInfo; info.fMapping = mapping; - return Context(info, *this); + return Context(info, fFunctors); } // Create a new context that matches this context, but with an overridden desired output rect. Context withNewDesiredOutput(const LayerSpace& desiredOutput) const { ContextInfo info = fInfo; info.fDesiredOutput = desiredOutput; - return Context(info, *this); + return Context(info, fFunctors); } // Create a new context that matches this context, but with an overridden color space. Context withNewColorSpace(SkColorSpace* cs) const { ContextInfo info = fInfo; info.fColorSpace = cs; - return Context(info, *this); + return Context(info, fFunctors); } // Create a new context that matches this context, but with an overridden source. Context withNewSource(const FilterResult& source) const { ContextInfo info = fInfo; info.fSource = source; - return Context(info, *this); + return Context(info, fFunctors); } private: - using MakeSurfaceDelegate = std::function(const SkImageInfo& info, - const SkSurfaceProps* props)>; - - // For input images to be processed by image filters - using MakeImageDelegate = std::function( - const SkIRect& subset, sk_sp image, const SkSurfaceProps& props)>; - // For internal data to be accessed by filter implementations - using MakeCachedBitmapDelegate = std::function(const SkBitmap& data)>; - - Context(const ContextInfo& info, - GrRecordingContext* ganeshContext, - MakeSurfaceDelegate msd, - MakeImageDelegate mid, - MakeCachedBitmapDelegate mbd) + Context(const ContextInfo& info, const Functors& functors) : fInfo(info) - , fGaneshContext(ganeshContext) - , fMakeSurfaceDelegate(msd) - , fMakeImageDelegate(mid) - , fMakeCachedBitmapDelegate(mbd) { - SkASSERT(fMakeSurfaceDelegate); - SkASSERT(fMakeImageDelegate); - SkASSERT(fMakeCachedBitmapDelegate); - } - Context(const ContextInfo& info, const Context& ctx) - : Context(info, - ctx.fGaneshContext, - ctx.fMakeSurfaceDelegate, - ctx.fMakeImageDelegate, - ctx.fMakeCachedBitmapDelegate) {} + , fFunctors(functors) {} ContextInfo fInfo; - - // This will be null for CPU image filtering. - GrRecordingContext* fGaneshContext; - MakeSurfaceDelegate fMakeSurfaceDelegate; - MakeImageDelegate fMakeImageDelegate; - MakeCachedBitmapDelegate fMakeCachedBitmapDelegate; + Functors fFunctors; friend Context MakeGaneshContext(GrRecordingContext* context, GrSurfaceOrigin origin, const ContextInfo& info); friend Context MakeGraphiteContext(skgpu::graphite::Recorder* recorder, const ContextInfo& info); + friend class ::SkImageFilter_Base; // for private ctor + friend class FilterResult::Builder; // for fBlurImageFunctor }; } // end namespace skif diff --git a/src/core/SkImageFilter_Base.h b/src/core/SkImageFilter_Base.h index 3aff21e65de1..0db2bb9506d0 100644 --- a/src/core/SkImageFilter_Base.h +++ b/src/core/SkImageFilter_Base.h @@ -35,6 +35,18 @@ class SkImageFilter_Base : public SkImageFilter { */ skif::FilterResult filterImage(const skif::Context& context) const; + /** + * Create a filtered version of the 'src' image using this filter. This is basically a wrapper + * around filterImage that prepares the skif::Context to filter the 'src' image directly, + * for implementing the SkImages::MakeWithFilter API calls. + */ + sk_sp makeImageWithFilter(const skif::Functors& functors, + sk_sp src, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) const; + /** * Calculate the smallest-possible required layer bounds that would provide sufficient * information to correctly compute the image filter for every pixel in the desired output @@ -469,9 +481,7 @@ void SkRegisterMatrixTransformImageFilterFlattenable(); void SkRegisterMergeImageFilterFlattenable(); void SkRegisterMorphologyImageFilterFlattenables(); void SkRegisterPictureImageFilterFlattenable(); -#ifdef SK_ENABLE_SKSL void SkRegisterRuntimeImageFilterFlattenable(); -#endif void SkRegisterShaderImageFilterFlattenable(); // TODO(michaelludwig): These filters no longer have dedicated implementations, so their diff --git a/src/core/SkMemset.h b/src/core/SkMemset.h new file mode 100644 index 000000000000..229fd06d2de9 --- /dev/null +++ b/src/core/SkMemset.h @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMemset_DEFINED +#define SkMemset_DEFINED + +#include +#include + +namespace SkOpts { + extern void (*memset16)(uint16_t[], uint16_t, int); + extern void (*memset32)(uint32_t[], uint32_t, int); + extern void (*memset64)(uint64_t[], uint64_t, int); + + extern void (*rect_memset16)(uint16_t[], uint16_t, int, size_t, int); + extern void (*rect_memset32)(uint32_t[], uint32_t, int, size_t, int); + extern void (*rect_memset64)(uint64_t[], uint64_t, int, size_t, int); + + void Init_Memset(); +} // namespace SkOpts + +#endif // SkMemset_DEFINED diff --git a/src/core/SkMemset_opts.cpp b/src/core/SkMemset_opts.cpp new file mode 100644 index 000000000000..3170ab832a60 --- /dev/null +++ b/src/core/SkMemset_opts.cpp @@ -0,0 +1,47 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkCpu.h" +#include "src/core/SkMemset.h" + +#define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkMemset_opts.h" // IWYU pragma: keep + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + DEFINE_DEFAULT(memset16); + DEFINE_DEFAULT(memset32); + DEFINE_DEFAULT(memset64); + + DEFINE_DEFAULT(rect_memset16); + DEFINE_DEFAULT(rect_memset32); + DEFINE_DEFAULT(rect_memset64); + + void Init_Memset_avx(); + void Init_Memset_erms(); + + static bool init() { + #if defined(SK_ENABLE_OPTIMIZE_SIZE) + // All Init_foo functions are omitted when optimizing for size + #elif defined(SK_CPU_X86) + #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_AVX + if (SkCpu::Supports(SkCpu::AVX)) { Init_Memset_avx(); } + #endif + + if (SkCpu::Supports(SkCpu::ERMS)) { Init_Memset_erms(); } + #endif + return true; + } + + void Init_Memset() { + [[maybe_unused]] static bool gInitialized = init(); + } +} // namespace SkOpts diff --git a/src/core/SkMemset_opts_avx.cpp b/src/core/SkMemset_opts_avx.cpp new file mode 100644 index 000000000000..9a4d1f890a79 --- /dev/null +++ b/src/core/SkMemset_opts_avx.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkMemset.h" +#include "src/core/SkOptsTargets.h" + +#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) + +// The order of these includes is important: +// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget +// 2) Include the code to compile, typically in a _opts.h file. +// 3) Include SkOpts_RestoreTarget to switch back to the default CPU architecture + +#define SK_OPTS_TARGET SK_OPTS_TARGET_AVX +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkMemset_opts.h" + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + void Init_Memset_avx() { + memset16 = avx::memset16; + memset32 = avx::memset32; + memset64 = avx::memset64; + + rect_memset16 = avx::rect_memset16; + rect_memset32 = avx::rect_memset32; + rect_memset64 = avx::rect_memset64; + } +} // namespace SkOpts + +#endif // SK_CPU_X86 && !SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/core/SkMemset_opts_erms.cpp b/src/core/SkMemset_opts_erms.cpp new file mode 100644 index 000000000000..763b312468a0 --- /dev/null +++ b/src/core/SkMemset_opts_erms.cpp @@ -0,0 +1,118 @@ +/* + * Copyright 2020 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/base/SkMSAN.h" +#include "src/core/SkMemset.h" + +// memset16 and memset32 could work on 32-bit x86 too, but for simplicity just use this on x64 +#if (defined(__x86_64__) || defined(_M_X64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE) + +static const char* note = "MSAN can't see that rep sto initializes memory."; + +#if defined(_MSC_VER) +#include +static inline void repsto(uint16_t* dst, uint16_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + __stosw(dst, v, n); +} +static inline void repsto(uint32_t* dst, uint32_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + static_assert(sizeof(uint32_t) == sizeof(unsigned long)); + __stosd(reinterpret_cast(dst), v, n); +} +static inline void repsto(uint64_t* dst, uint64_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + __stosq(dst, v, n); +} +#else +static inline void repsto(uint16_t* dst, uint16_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + asm volatile("rep stosw" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); +} +static inline void repsto(uint32_t* dst, uint32_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + asm volatile("rep stosl" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); +} +static inline void repsto(uint64_t* dst, uint64_t v, size_t n) { + sk_msan_mark_initialized(dst, dst + n, note); + asm volatile("rep stosq" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); +} +#endif + +// ERMS is ideal for large copies but has a relatively high setup cost, +// so we use the previous best routine for small inputs. FSRM would make this moot. +static void (*g_memset16_prev)(uint16_t*, uint16_t, int); +static void (*g_memset32_prev)(uint32_t*, uint32_t, int); +static void (*g_memset64_prev)(uint64_t*, uint64_t, int); +static void (*g_rect_memset16_prev)(uint16_t*, uint16_t, int, size_t, int); +static void (*g_rect_memset32_prev)(uint32_t*, uint32_t, int, size_t, int); +static void (*g_rect_memset64_prev)(uint64_t*, uint64_t, int, size_t, int); + +// Empirically determined with `nanobench -m memset`. +static bool small(size_t bytes) { return bytes < 1024; } + +namespace erms { + +static inline void memset16(uint16_t* dst, uint16_t v, int n) { + return small(sizeof(v) * n) ? g_memset16_prev(dst, v, n) : repsto(dst, v, n); +} +static inline void memset32(uint32_t* dst, uint32_t v, int n) { + return small(sizeof(v) * n) ? g_memset32_prev(dst, v, n) : repsto(dst, v, n); +} +static inline void memset64(uint64_t* dst, uint64_t v, int n) { + return small(sizeof(v) * n) ? g_memset64_prev(dst, v, n) : repsto(dst, v, n); +} + +static inline void rect_memset16(uint16_t* dst, uint16_t v, int n, size_t rowBytes, int height) { + if (small(sizeof(v) * n)) { + return g_rect_memset16_prev(dst, v, n, rowBytes, height); + } + for (int stride = rowBytes / sizeof(v); height-- > 0; dst += stride) { + repsto(dst, v, n); + } +} +static inline void rect_memset32(uint32_t* dst, uint32_t v, int n, size_t rowBytes, int height) { + if (small(sizeof(v) * n)) { + return g_rect_memset32_prev(dst, v, n, rowBytes, height); + } + for (int stride = rowBytes / sizeof(v); height-- > 0; dst += stride) { + repsto(dst, v, n); + } +} +static inline void rect_memset64(uint64_t* dst, uint64_t v, int n, size_t rowBytes, int height) { + if (small(sizeof(v) * n)) { + return g_rect_memset64_prev(dst, v, n, rowBytes, height); + } + for (int stride = rowBytes / sizeof(v); height-- > 0; dst += stride) { + repsto(dst, v, n); + } +} + +} // namespace erms + +#endif // X86_64 && !SK_ENABLE_OPTIMIZE_SIZE + +namespace SkOpts { + void Init_Memset_erms() { + #if (defined(__x86_64__) || defined(_M_X64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE) + g_memset16_prev = memset16; + g_memset32_prev = memset32; + g_memset64_prev = memset64; + g_rect_memset16_prev = rect_memset16; + g_rect_memset32_prev = rect_memset32; + g_rect_memset64_prev = rect_memset64; + + memset16 = erms::memset16; + memset32 = erms::memset32; + memset64 = erms::memset64; + rect_memset16 = erms::rect_memset16; + rect_memset32 = erms::rect_memset32; + rect_memset64 = erms::rect_memset64; + #endif // X86_64 && !SK_ENABLE_OPTIMIZE_SIZE + } +} // namespace SkOpts diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp index 08b4de7f4d8c..5efa581590cc 100644 --- a/src/core/SkOpts.cpp +++ b/src/core/SkOpts.cpp @@ -5,18 +5,14 @@ * found in the LICENSE file. */ -#include "include/private/base/SkOnce.h" -#include "src/base/SkHalf.h" +#include "include/private/base/SkFeatures.h" #include "src/core/SkCpu.h" #include "src/core/SkOpts.h" #define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT #include "src/opts/SkOpts_SetTarget.h" -#include "src/opts/SkBlitRow_opts.h" #include "src/opts/SkRasterPipeline_opts.h" -#include "src/opts/SkSwizzler_opts.h" -#include "src/opts/SkUtils_opts.h" #include "src/opts/SkOpts_RestoreTarget.h" @@ -25,30 +21,6 @@ namespace SkOpts { // If our global compile options are set high enough, these defaults might even be // CPU-specialized, e.g. a typical x86-64 machine might start with SSE2 defaults. // They'll still get a chance to be replaced with even better ones, e.g. using SSE4.1. - DEFINE_DEFAULT(blit_row_color32); - DEFINE_DEFAULT(blit_row_s32a_opaque); - - DEFINE_DEFAULT(RGBA_to_BGRA); - DEFINE_DEFAULT(RGBA_to_rgbA); - DEFINE_DEFAULT(RGBA_to_bgrA); - DEFINE_DEFAULT(RGB_to_RGB1); - DEFINE_DEFAULT(RGB_to_BGR1); - DEFINE_DEFAULT(gray_to_RGB1); - DEFINE_DEFAULT(grayA_to_RGBA); - DEFINE_DEFAULT(grayA_to_rgbA); - DEFINE_DEFAULT(inverted_CMYK_to_RGB1); - DEFINE_DEFAULT(inverted_CMYK_to_BGR1); - - DEFINE_DEFAULT(memset16); - DEFINE_DEFAULT(memset32); - DEFINE_DEFAULT(memset64); - - DEFINE_DEFAULT(rect_memset16); - DEFINE_DEFAULT(rect_memset32); - DEFINE_DEFAULT(rect_memset64); - -#undef DEFINE_DEFAULT - size_t raster_pipeline_lowp_stride = SK_OPTS_NS::raster_pipeline_lowp_stride(); size_t raster_pipeline_highp_stride = SK_OPTS_NS::raster_pipeline_highp_stride(); @@ -67,33 +39,20 @@ namespace SkOpts { #undef M // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp. - void Init_ssse3(); - void Init_avx(); void Init_hsw(); - void Init_erms(); - static void init() { + static bool init() { #if defined(SK_ENABLE_OPTIMIZE_SIZE) // All Init_foo functions are omitted when optimizing for size #elif defined(SK_CPU_X86) - #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 - if (SkCpu::Supports(SkCpu::SSSE3)) { Init_ssse3(); } - #endif - - #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_AVX - if (SkCpu::Supports(SkCpu::AVX)) { Init_avx(); } - #endif - #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_AVX2 if (SkCpu::Supports(SkCpu::HSW)) { Init_hsw(); } #endif - - if (SkCpu::Supports(SkCpu::ERMS)) { Init_erms(); } #endif + return true; } void Init() { - static SkOnce once; - once(init); + [[maybe_unused]] static bool gInitialized = init(); } } // namespace SkOpts diff --git a/src/core/SkOpts.h b/src/core/SkOpts.h index a22781a6f690..760e4e419ef8 100644 --- a/src/core/SkOpts.h +++ b/src/core/SkOpts.h @@ -8,8 +8,8 @@ #ifndef SkOpts_DEFINED #define SkOpts_DEFINED -#include "include/core/SkColor.h" #include "include/core/SkTypes.h" +#include "src/core/SkOptsTargets.h" #include "src/core/SkRasterPipelineOpList.h" /** @@ -57,14 +57,6 @@ */ struct SkRasterPipelineStage; -namespace SkSL { -class TraceHook; -} - -#define SK_OPTS_TARGET_DEFAULT 0x00 -#define SK_OPTS_TARGET_SSSE3 0x01 -#define SK_OPTS_TARGET_AVX 0x02 -#define SK_OPTS_TARGET_HSW 0x04 namespace SkOpts { // Call to replace pointers to portable functions with pointers to CPU-specific functions. @@ -72,33 +64,6 @@ namespace SkOpts { // Called by SkGraphics::Init(). void Init(); - // Declare function pointers here... - extern void (*blit_row_color32)(SkPMColor*, int, SkPMColor); - extern void (*blit_row_s32a_opaque)(SkPMColor*, const SkPMColor*, int, U8CPU); - - // Swizzle input into some sort of 8888 pixel, {premul,unpremul} x {rgba,bgra}. - typedef void (*Swizzle_8888_u32)(uint32_t*, const uint32_t*, int); - extern Swizzle_8888_u32 RGBA_to_BGRA, // i.e. just swap RB - RGBA_to_rgbA, // i.e. just premultiply - RGBA_to_bgrA, // i.e. swap RB and premultiply - inverted_CMYK_to_RGB1, // i.e. convert color space - inverted_CMYK_to_BGR1; // i.e. convert color space - - typedef void (*Swizzle_8888_u8)(uint32_t*, const uint8_t*, int); - extern Swizzle_8888_u8 RGB_to_RGB1, // i.e. insert an opaque alpha - RGB_to_BGR1, // i.e. swap RB and insert an opaque alpha - gray_to_RGB1, // i.e. expand to color channels + an opaque alpha - grayA_to_RGBA, // i.e. expand to color channels - grayA_to_rgbA; // i.e. expand to color channels and premultiply - - extern void (*memset16)(uint16_t[], uint16_t, int); - extern void (*memset32)(uint32_t[], uint32_t, int); - extern void (*memset64)(uint64_t[], uint64_t, int); - - extern void (*rect_memset16)(uint16_t[], uint16_t, int, size_t, int); - extern void (*rect_memset32)(uint32_t[], uint32_t, int, size_t, int); - extern void (*rect_memset64)(uint64_t[], uint64_t, int, size_t, int); - // We can't necessarily express the type of SkRasterPipeline stage functions here, // so we just use this void(*)(void) as a stand-in. using StageFn = void(*)(void); diff --git a/src/core/SkOptsTargets.h b/src/core/SkOptsTargets.h new file mode 100644 index 000000000000..11b25184f831 --- /dev/null +++ b/src/core/SkOptsTargets.h @@ -0,0 +1,16 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOptsTargets_DEFINED +#define SkOptsTargets_DEFINED + +#define SK_OPTS_TARGET_DEFAULT 0x00 +#define SK_OPTS_TARGET_SSSE3 0x01 +#define SK_OPTS_TARGET_AVX 0x02 +#define SK_OPTS_TARGET_HSW 0x04 + +#endif diff --git a/src/core/SkOpts_erms.cpp b/src/core/SkOpts_erms.cpp deleted file mode 100644 index 4e1e096d7d9f..000000000000 --- a/src/core/SkOpts_erms.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2020 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/base/SkMSAN.h" -#include "src/core/SkOpts.h" - -#if defined(__x86_64__) || defined(_M_X64) // memset16 and memset32 could work on 32-bit x86 too. - - static const char* note = "MSAN can't see that rep sto initializes memory."; - - #if defined(_MSC_VER) - #include - static inline void repsto(uint16_t* dst, uint16_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - __stosw(dst, v, n); - } - static inline void repsto(uint32_t* dst, uint32_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - static_assert(sizeof(uint32_t) == sizeof(unsigned long)); - __stosd(reinterpret_cast(dst), v, n); - } - static inline void repsto(uint64_t* dst, uint64_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - __stosq(dst, v, n); - } - #else - static inline void repsto(uint16_t* dst, uint16_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - asm volatile("rep stosw" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); - } - static inline void repsto(uint32_t* dst, uint32_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - asm volatile("rep stosl" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); - } - static inline void repsto(uint64_t* dst, uint64_t v, size_t n) { - sk_msan_mark_initialized(dst,dst+n,note); - asm volatile("rep stosq" : "+D"(dst), "+c"(n) : "a"(v) : "memory"); - } - #endif - - // ERMS is ideal for large copies but has a relatively high setup cost, - // so we use the previous best routine for small inputs. FSRM would make this moot. - static void (*g_memset16_prev)(uint16_t*, uint16_t, int); - static void (*g_memset32_prev)(uint32_t*, uint32_t, int); - static void (*g_memset64_prev)(uint64_t*, uint64_t, int); - static void (*g_rect_memset16_prev)(uint16_t*, uint16_t, int, size_t, int); - static void (*g_rect_memset32_prev)(uint32_t*, uint32_t, int, size_t, int); - static void (*g_rect_memset64_prev)(uint64_t*, uint64_t, int, size_t, int); - - // Empirically determined with `nanobench -m memset`. - static bool small(size_t bytes) { return bytes < 1024; } - - #define SK_OPTS_NS erms - namespace SK_OPTS_NS { - static inline void memset16(uint16_t* dst, uint16_t v, int n) { - return small(sizeof(v)*n) ? g_memset16_prev(dst, v, n) - : repsto(dst, v, n); - } - static inline void memset32(uint32_t* dst, uint32_t v, int n) { - return small(sizeof(v)*n) ? g_memset32_prev(dst, v, n) - : repsto(dst, v, n); - } - static inline void memset64(uint64_t* dst, uint64_t v, int n) { - return small(sizeof(v)*n) ? g_memset64_prev(dst, v, n) - : repsto(dst, v, n); - } - - static inline void rect_memset16(uint16_t* dst, uint16_t v, int n, - size_t rowBytes, int height) { - if (small(sizeof(v)*n)) { - return g_rect_memset16_prev(dst,v,n, rowBytes,height); - } - for (int stride = rowBytes/sizeof(v); height --> 0; dst += stride) { - repsto(dst, v, n); - } - } - static inline void rect_memset32(uint32_t* dst, uint32_t v, int n, - size_t rowBytes, int height) { - if (small(sizeof(v)*n)) { - return g_rect_memset32_prev(dst,v,n, rowBytes,height); - } - for (int stride = rowBytes/sizeof(v); height --> 0; dst += stride) { - repsto(dst, v, n); - } - } - static inline void rect_memset64(uint64_t* dst, uint64_t v, int n, - size_t rowBytes, int height) { - if (small(sizeof(v)*n)) { - return g_rect_memset64_prev(dst,v,n, rowBytes,height); - } - for (int stride = rowBytes/sizeof(v); height --> 0; dst += stride) { - repsto(dst, v, n); - } - } - } // namespace SK_OPTS_NS - - namespace SkOpts { - void Init_erms() { - g_memset16_prev = memset16; - g_memset32_prev = memset32; - g_memset64_prev = memset64; - g_rect_memset16_prev = rect_memset16; - g_rect_memset32_prev = rect_memset32; - g_rect_memset64_prev = rect_memset64; - - memset16 = SK_OPTS_NS::memset16; - memset32 = SK_OPTS_NS::memset32; - memset64 = SK_OPTS_NS::memset64; - rect_memset16 = SK_OPTS_NS::rect_memset16; - rect_memset32 = SK_OPTS_NS::rect_memset32; - rect_memset64 = SK_OPTS_NS::rect_memset64; - } - } -#else - namespace SkOpts { - void Init_erms() {} - } -#endif diff --git a/src/core/SkPixmap.cpp b/src/core/SkPixmap.cpp index 658bdfce5502..6fa68374c324 100644 --- a/src/core/SkPixmap.cpp +++ b/src/core/SkPixmap.cpp @@ -21,7 +21,7 @@ #include "src/core/SkMask.h" #include "src/core/SkReadPixelsRec.h" #include "src/core/SkSwizzlePriv.h" -#include "src/opts/SkUtils_opts.h" +#include "src/opts/SkMemset_opts.h" #include #include diff --git a/src/core/SkRasterPipelineBlitter.cpp b/src/core/SkRasterPipelineBlitter.cpp index 13d2f7a7aefe..f244e5581883 100644 --- a/src/core/SkRasterPipelineBlitter.cpp +++ b/src/core/SkRasterPipelineBlitter.cpp @@ -19,7 +19,7 @@ #include "src/core/SkColorSpaceXformSteps.h" #include "src/core/SkEffectPriv.h" #include "src/core/SkMask.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/core/SkRasterPipeline.h" #include "src/effects/colorfilters/SkColorFilterBase.h" #include "src/shaders/SkShaderBase.h" diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp index ca971fb5927e..86270703c96a 100644 --- a/src/core/SkRecordDraw.cpp +++ b/src/core/SkRecordDraw.cpp @@ -12,6 +12,7 @@ #include "include/core/SkBlender.h" #include "include/core/SkImage.h" #include "include/core/SkMatrix.h" +#include "include/core/SkMesh.h" #include "include/core/SkPaint.h" #include "include/core/SkRRect.h" #include "include/core/SkRect.h" @@ -35,10 +36,6 @@ #include "src/effects/colorfilters/SkColorFilterBase.h" #include "src/utils/SkPatchUtils.h" -#if defined(SK_ENABLE_SKSL) -#include "include/core/SkMesh.h" -#endif - #include #include #include @@ -158,12 +155,7 @@ DRAW(DrawSlug, drawSlug(r.slug.get())) DRAW(DrawAtlas, drawAtlas(r.atlas.get(), r.xforms, r.texs, r.colors, r.count, r.mode, r.sampling, r.cull, r.paint)) DRAW(DrawVertices, drawVertices(r.vertices, r.bmode, r.paint)) -#ifdef SK_ENABLE_SKSL DRAW(DrawMesh, drawMesh(r.mesh, r.blender, r.paint)) -#else -// Turn draw into a nop. -template <> void Draw::draw(const DrawMesh&) {} -#endif DRAW(DrawShadowRec, private_draw_shadow_rec(r.path, r.rec)) DRAW(DrawAnnotation, drawAnnotation(r.rect, r.key.c_str(), r.value.get())) @@ -461,11 +453,7 @@ class FillBounds : SkNoncopyable { return this->adjustAndMap(op.vertices->bounds(), &op.paint); } Bounds bounds(const DrawMesh& op) const { -#ifdef SK_ENABLE_SKSL return this->adjustAndMap(op.mesh.bounds(), &op.paint); -#else - return SkRect::MakeEmpty(); -#endif } Bounds bounds(const DrawAtlas& op) const { if (op.cull) { diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp index c2559f04babf..b7b08da6297e 100644 --- a/src/core/SkRecorder.cpp +++ b/src/core/SkRecorder.cpp @@ -23,7 +23,6 @@ #include "include/core/SkSurface.h" #include "include/core/SkTextBlob.h" #include "include/core/SkVertices.h" -#include "include/private/base/SkAssert.h" #include "include/private/base/SkFloatingPoint.h" #include "include/private/base/SkTemplates.h" #include "include/private/base/SkTo.h" @@ -276,11 +275,9 @@ void SkRecorder::onDrawVerticesObject(const SkVertices* vertices, SkBlendMode bm bmode); } -#ifdef SK_ENABLE_SKSL void SkRecorder::onDrawMesh(const SkMesh& mesh, sk_sp blender, const SkPaint& paint) { this->append(paint, mesh, std::move(blender)); } -#endif void SkRecorder::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkBlendMode bmode, diff --git a/src/core/SkRecorder.h b/src/core/SkRecorder.h index 48d6e6228346..b11c2a2714e5 100644 --- a/src/core/SkRecorder.h +++ b/src/core/SkRecorder.h @@ -14,6 +14,7 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkSamplingOptions.h" #include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" #include "include/private/base/SkNoncopyable.h" #include "include/private/base/SkTDArray.h" #include "include/utils/SkNoDrawCanvas.h" @@ -133,9 +134,9 @@ class SkRecorder final : public SkCanvasVirtualEnforcer { SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*) override; void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; -#ifdef SK_ENABLE_SKSL + void onDrawMesh(const SkMesh&, sk_sp, const SkPaint&) override; -#endif + void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override; void onClipRect(const SkRect& rect, SkClipOp, ClipEdgeStyle) override; diff --git a/src/core/SkRecords.h b/src/core/SkRecords.h index e8a58396f788..840f12734161 100644 --- a/src/core/SkRecords.h +++ b/src/core/SkRecords.h @@ -16,6 +16,7 @@ #include "include/core/SkImageFilter.h" #include "include/core/SkM44.h" #include "include/core/SkMatrix.h" +#include "include/core/SkMesh.h" #include "include/core/SkPaint.h" #include "include/core/SkPath.h" #include "include/core/SkPicture.h" @@ -33,10 +34,6 @@ #include "include/private/chromium/Slug.h" #include "src/core/SkDrawShadowInfo.h" -#if defined(SK_ENABLE_SKSL) -#include "include/core/SkMesh.h" -#endif - #include enum class SkBlendMode; @@ -335,14 +332,10 @@ RECORD(DrawVertices, kDraw_Tag|kHasPaint_Tag|kMultiDraw_Tag, SkPaint paint; sk_sp vertices; SkBlendMode bmode) -#ifdef SK_ENABLE_SKSL RECORD(DrawMesh, kDraw_Tag|kHasPaint_Tag|kMultiDraw_Tag, SkPaint paint; SkMesh mesh; sk_sp blender) -#else -RECORD(DrawMesh, 0) -#endif RECORD(DrawShadowRec, kDraw_Tag, PreCachedPath path; SkDrawShadowRec rec) diff --git a/src/core/SkRegion.cpp b/src/core/SkRegion.cpp index 77a3b4539a6f..2e35bfe48f5f 100644 --- a/src/core/SkRegion.cpp +++ b/src/core/SkRegion.cpp @@ -8,13 +8,18 @@ #include "include/core/SkRegion.h" #include "include/private/base/SkMacros.h" +#include "include/private/base/SkMalloc.h" +#include "include/private/base/SkMath.h" #include "include/private/base/SkTemplates.h" #include "include/private/base/SkTo.h" +#include "src/base/SkBuffer.h" #include "src/base/SkSafeMath.h" #include "src/core/SkRegionPriv.h" #include -#include +#include +#include +#include using namespace skia_private; @@ -1141,8 +1146,6 @@ bool SkRegion::op(const SkRegion& rgna, const SkRegion& rgnb, Op op) { /////////////////////////////////////////////////////////////////////////////// -#include "src/base/SkBuffer.h" - size_t SkRegion::writeToMemory(void* storage) const { if (nullptr == storage) { size_t size = sizeof(int32_t); // -1 (empty), 0 (rect), runCount diff --git a/src/core/SkRegion_path.cpp b/src/core/SkRegion_path.cpp index 4c14b3e8119e..85978ff8c0c9 100644 --- a/src/core/SkRegion_path.cpp +++ b/src/core/SkRegion_path.cpp @@ -5,8 +5,19 @@ * found in the LICENSE file. */ +#include "include/core/SkColor.h" +#include "include/core/SkMatrix.h" #include "include/core/SkPath.h" +#include "include/core/SkRect.h" +#include "include/core/SkRegion.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMalloc.h" +#include "include/private/base/SkMath.h" +#include "include/private/base/SkPoint_impl.h" #include "include/private/base/SkTDArray.h" +#include "include/private/base/SkTFitsIn.h" #include "include/private/base/SkTo.h" #include "src/base/SkSafeMath.h" #include "src/base/SkTSort.h" @@ -14,6 +25,11 @@ #include "src/core/SkRegionPriv.h" #include "src/core/SkScan.h" +#include +#include +#include +#include + // The rgnbuilder caller *seems* to pass short counts, possible often seens early failure, so // we may not want to promote this to a "std" routine just yet. static bool sk_memeq32(const int32_t* SK_RESTRICT a, const int32_t* SK_RESTRICT b, int count) { diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp index 96c90b7be0f4..cbd39270afc2 100644 --- a/src/core/SkResourceCache.cpp +++ b/src/core/SkResourceCache.cpp @@ -7,17 +7,28 @@ #include "src/core/SkResourceCache.h" +#include "include/core/SkGraphics.h" +#include "include/core/SkString.h" #include "include/core/SkTraceMemoryDump.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkAlign.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMalloc.h" +#include "include/private/base/SkMath.h" #include "include/private/base/SkMutex.h" +#include "include/private/base/SkTArray.h" #include "include/private/base/SkTo.h" -#include "include/private/chromium/SkDiscardableMemory.h" +#include "src/core/SkCachedData.h" #include "src/core/SkChecksum.h" #include "src/core/SkImageFilter_Base.h" #include "src/core/SkMessageBus.h" -#include "src/core/SkMipmap.h" +#include "src/core/SkTHash.h" + +#if defined(SK_USE_DISCARDABLE_SCALEDIMAGECACHE) +#include "include/private/chromium/SkDiscardableMemory.h" +#endif -#include -#include +#include using namespace skia_private; @@ -63,8 +74,6 @@ void SkResourceCache::Key::init(void* nameSpace, uint64_t sharedID, size_t dataS (fCount32 - kUnhashedLocal32s) << 2); } -#include "src/core/SkTHash.h" - namespace { struct HashTraits { static uint32_t Hash(const SkResourceCache::Key& key) { return key.hash(); } @@ -552,9 +561,6 @@ void SkResourceCache::PostPurgeSharedID(uint64_t sharedID) { /////////////////////////////////////////////////////////////////////////////// -#include "include/core/SkGraphics.h" -#include "include/core/SkImageFilter.h" - size_t SkGraphics::GetResourceCacheTotalBytesUsed() { return SkResourceCache::GetTotalBytesUsed(); } diff --git a/src/core/SkResourceCache.h b/src/core/SkResourceCache.h index 3477b295b3c2..c04adcbdb52a 100644 --- a/src/core/SkResourceCache.h +++ b/src/core/SkResourceCache.h @@ -8,10 +8,11 @@ #ifndef SkResourceCache_DEFINED #define SkResourceCache_DEFINED -#include "include/core/SkBitmap.h" -#include "include/private/base/SkTDArray.h" #include "src/core/SkMessageBus.h" +#include +#include + class SkCachedData; class SkDiscardableMemory; class SkTraceMemoryDump; diff --git a/src/core/SkSwizzle.cpp b/src/core/SkSwizzle.cpp index 301b0184f19e..1d308c5d7bea 100644 --- a/src/core/SkSwizzle.cpp +++ b/src/core/SkSwizzle.cpp @@ -7,7 +7,7 @@ #include "include/core/SkSwizzle.h" -#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" void SkSwapRB(uint32_t* dest, const uint32_t* src, int count) { SkOpts::RGBA_to_BGRA(dest, src, count); diff --git a/src/core/SkSwizzlePriv.h b/src/core/SkSwizzlePriv.h index 665d59ef3788..929a07ae2ecd 100644 --- a/src/core/SkSwizzlePriv.h +++ b/src/core/SkSwizzlePriv.h @@ -10,6 +10,25 @@ #include +namespace SkOpts { + // Swizzle input into some sort of 8888 pixel, {premul,unpremul} x {rgba,bgra}. + using Swizzle_8888_u32 = void (*)(uint32_t*, const uint32_t*, int); + extern Swizzle_8888_u32 RGBA_to_BGRA, // i.e. just swap RB + RGBA_to_rgbA, // i.e. just premultiply + RGBA_to_bgrA, // i.e. swap RB and premultiply + inverted_CMYK_to_RGB1, // i.e. convert color space + inverted_CMYK_to_BGR1; // i.e. convert color space + + using Swizzle_8888_u8 = void (*)(uint32_t*, const uint8_t*, int); + extern Swizzle_8888_u8 RGB_to_RGB1, // i.e. insert an opaque alpha + RGB_to_BGR1, // i.e. swap RB and insert an opaque alpha + gray_to_RGB1, // i.e. expand to color channels + an opaque alpha + grayA_to_RGBA, // i.e. expand to color channels + grayA_to_rgbA; // i.e. expand to color channels and premultiply + + void Init_Swizzler(); +} // namespace SkOpts + static inline skvx::float4 swizzle_rb(const skvx::float4& x) { return skvx::shuffle<2, 1, 0, 3>(x); } diff --git a/src/core/SkSwizzler_opts.cpp b/src/core/SkSwizzler_opts.cpp new file mode 100644 index 000000000000..f3f61d9be0ff --- /dev/null +++ b/src/core/SkSwizzler_opts.cpp @@ -0,0 +1,53 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkCpu.h" +#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" + +#define SK_OPTS_TARGET SK_OPTS_TARGET_DEFAULT +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkSwizzler_opts.h" // IWYU pragma: keep + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + DEFINE_DEFAULT(RGBA_to_BGRA); + DEFINE_DEFAULT(RGBA_to_rgbA); + DEFINE_DEFAULT(RGBA_to_bgrA); + DEFINE_DEFAULT(RGB_to_RGB1); + DEFINE_DEFAULT(RGB_to_BGR1); + DEFINE_DEFAULT(gray_to_RGB1); + DEFINE_DEFAULT(grayA_to_RGBA); + DEFINE_DEFAULT(grayA_to_rgbA); + DEFINE_DEFAULT(inverted_CMYK_to_RGB1); + DEFINE_DEFAULT(inverted_CMYK_to_BGR1); + + void Init_Swizzler_ssse3(); + void Init_Swizzler_hsw(); + + static bool init() { + #if defined(SK_ENABLE_OPTIMIZE_SIZE) + // All Init_foo functions are omitted when optimizing for size + #elif defined(SK_CPU_X86) + #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 + if (SkCpu::Supports(SkCpu::SSSE3)) { Init_Swizzler_ssse3(); } + #endif + + #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_AVX2 + if (SkCpu::Supports(SkCpu::HSW)) { Init_Swizzler_hsw(); } + #endif + #endif + return true; + } + + void Init_Swizzler() { + [[maybe_unused]] static bool gInitialized = init(); + } +} // namespace SkOpts diff --git a/src/core/SkSwizzler_opts_hsw.cpp b/src/core/SkSwizzler_opts_hsw.cpp new file mode 100644 index 000000000000..43ba1fe1c806 --- /dev/null +++ b/src/core/SkSwizzler_opts_hsw.cpp @@ -0,0 +1,40 @@ + +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/private/base/SkFeatures.h" +#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" + +#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) + +// The order of these includes is important: +// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget +// 2) Include the code to compile, typically in a _opts.h file. +// 3) Include SkOpts_RestoreTarget to switch back to the default CPU architecture + +#define SK_OPTS_TARGET SK_OPTS_TARGET_HSW +#include "src/opts/SkOpts_SetTarget.h" + +#include "src/opts/SkSwizzler_opts.h" + +#include "src/opts/SkOpts_RestoreTarget.h" + +namespace SkOpts { + void Init_Swizzler_hsw() { + RGBA_to_BGRA = hsw::RGBA_to_BGRA; + RGBA_to_rgbA = hsw::RGBA_to_rgbA; + RGBA_to_bgrA = hsw::RGBA_to_bgrA; + gray_to_RGB1 = hsw::gray_to_RGB1; + grayA_to_RGBA = hsw::grayA_to_RGBA; + grayA_to_rgbA = hsw::grayA_to_rgbA; + inverted_CMYK_to_RGB1 = hsw::inverted_CMYK_to_RGB1; + inverted_CMYK_to_BGR1 = hsw::inverted_CMYK_to_BGR1; + } +} // namespace SkOpts + +#endif // SK_CPU_X86 && !SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/opts/SkOpts_ssse3.cpp b/src/core/SkSwizzler_opts_ssse3.cpp similarity index 53% rename from src/opts/SkOpts_ssse3.cpp rename to src/core/SkSwizzler_opts_ssse3.cpp index a7499711b8ea..9ee7a889de9c 100644 --- a/src/opts/SkOpts_ssse3.cpp +++ b/src/core/SkSwizzler_opts_ssse3.cpp @@ -1,19 +1,31 @@ + /* - * Copyright 2015 Google Inc. + * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include "include/private/base/SkFeatures.h" #include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" + +#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE) -#if !defined(SK_ENABLE_OPTIMIZE_SIZE) +// The order of these includes is important: +// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget +// 2) Include the code to compile, typically in a _opts.h file. +// 3) Include SkOpts_RestoreTarget to switch back to the default CPU architecture + +#define SK_OPTS_TARGET SK_OPTS_TARGET_SSSE3 +#include "src/opts/SkOpts_SetTarget.h" -#define SK_OPTS_NS ssse3 #include "src/opts/SkSwizzler_opts.h" +#include "src/opts/SkOpts_RestoreTarget.h" + namespace SkOpts { - void Init_ssse3() { + void Init_Swizzler_ssse3() { RGBA_to_BGRA = ssse3::RGBA_to_BGRA; RGBA_to_rgbA = ssse3::RGBA_to_rgbA; RGBA_to_bgrA = ssse3::RGBA_to_bgrA; @@ -27,4 +39,4 @@ namespace SkOpts { } } // namespace SkOpts -#endif // SK_ENABLE_OPTIMIZE_SIZE +#endif // SK_CPU_X86 && !SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/core/SkTHash.h b/src/core/SkTHash.h index d1555c1b931c..b6cbbb5cae6b 100644 --- a/src/core/SkTHash.h +++ b/src/core/SkTHash.h @@ -14,6 +14,7 @@ #include #include #include +#include #include namespace skia_private { @@ -488,15 +489,24 @@ class THashMap { } // Call fn on every key/value pair in the table. You may mutate the value but not the key. - template // f(K, V*) or f(const K&, V*) + template >* = nullptr> void foreach(Fn&& fn) { - fTable.foreach([&fn](Pair* p){ fn(p->first, &p->second); }); + fTable.foreach([&fn](Pair* p) { fn(p->first, &p->second); }); } // Call fn on every key/value pair in the table. You may not mutate anything. - template // f(K, V), f(const K&, V), f(K, const V&) or f(const K&, const V&). + template >* = nullptr> void foreach(Fn&& fn) const { - fTable.foreach([&fn](const Pair& p){ fn(p.first, p.second); }); + fTable.foreach([&fn](const Pair& p) { fn(p.first, p.second); }); + } + + // Call fn on every key/value pair in the table. You may not mutate anything. + template >* = nullptr> + void foreach(Fn&& fn) const { + fTable.foreach([&fn](const Pair& p) { fn(p); }); } // Dereferencing an iterator gives back a key-value pair, suitable for structured binding. diff --git a/src/core/SkTime.cpp b/src/core/SkTime.cpp index 91c85f5bc188..7b848dbcec83 100644 --- a/src/core/SkTime.cpp +++ b/src/core/SkTime.cpp @@ -11,8 +11,12 @@ #include "include/core/SkTypes.h" #include "include/private/base/SkTemplates.h" #include "include/private/base/SkTo.h" + +#if defined(SK_BUILD_FOR_WIN) #include "src/base/SkLeanWindows.h" +#endif +#include #include #include @@ -31,7 +35,7 @@ void SkTime::DateTime::toISO8601(SkString* dst) const { } } -#ifdef SK_BUILD_FOR_WIN +#if defined(SK_BUILD_FOR_WIN) void SkTime::GetDateTime(DateTime* dt) { if (dt) { @@ -50,7 +54,6 @@ void SkTime::GetDateTime(DateTime* dt) { #else // SK_BUILD_FOR_WIN -#include void SkTime::GetDateTime(DateTime* dt) { if (dt) { time_t m_time; diff --git a/src/core/SkTypeface.cpp b/src/core/SkTypeface.cpp index 2bc401337af2..c00d6bae58b4 100644 --- a/src/core/SkTypeface.cpp +++ b/src/core/SkTypeface.cpp @@ -4,22 +4,29 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include "include/core/SkTypeface.h" +#include "include/core/SkData.h" +#include "include/core/SkFont.h" #include "include/core/SkFontMetrics.h" #include "include/core/SkFontMgr.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkScalar.h" #include "include/core/SkStream.h" -#include "include/core/SkTypeface.h" -#include "include/private/base/SkMutex.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMalloc.h" #include "include/private/base/SkOnce.h" +#include "include/private/base/SkTemplates.h" #include "include/utils/SkCustomTypeface.h" +#include "src/base/SkBitmaskEnum.h" #include "src/base/SkEndian.h" #include "src/base/SkNoDestructor.h" #include "src/base/SkUTF.h" #include "src/core/SkAdvancedTypefaceMetrics.h" +#include "src/core/SkDescriptor.h" #include "src/core/SkFontDescriptor.h" #include "src/core/SkFontPriv.h" #include "src/core/SkScalerContext.h" -#include "src/core/SkSurfacePriv.h" #include "src/core/SkTypefaceCache.h" #include "src/sfnt/SkOTTable_OS_2.h" @@ -40,6 +47,11 @@ #include "src/ports/SkTypeface_fontations_priv.h" #endif +#include +#include +#include +#include + using namespace skia_private; SkTypeface::SkTypeface(const SkFontStyle& style, bool isFixedPitch) @@ -548,9 +560,6 @@ std::unique_ptr SkTypeface::onOpenExistingStream(int* ttcIndex) c /////////////////////////////////////////////////////////////////////////////// -#include "include/core/SkPaint.h" -#include "src/core/SkDescriptor.h" - SkRect SkTypeface::getBounds() const { fBoundsOnce([this] { if (!this->onComputeBounds(&fBounds)) { diff --git a/src/core/SkVertices.cpp b/src/core/SkVertices.cpp index 47ceaf919f36..b9ba0bf52ab8 100644 --- a/src/core/SkVertices.cpp +++ b/src/core/SkVertices.cpp @@ -11,7 +11,6 @@ #include "include/private/base/SkTo.h" #include "src/base/SkSafeMath.h" #include "src/core/SkCanvasPriv.h" -#include "src/core/SkOpts.h" #include "src/core/SkReadBuffer.h" #include "src/core/SkSafeRange.h" #include "src/core/SkVerticesPriv.h" diff --git a/src/effects/SkBlenders.cpp b/src/effects/SkBlenders.cpp index 0217b0318f29..a80de12153c2 100644 --- a/src/effects/SkBlenders.cpp +++ b/src/effects/SkBlenders.cpp @@ -10,7 +10,6 @@ #include "include/core/SkTypes.h" #include "include/effects/SkBlenders.h" -#ifdef SK_ENABLE_SKSL #include "include/core/SkBlendMode.h" #include "include/core/SkData.h" #include "include/core/SkScalar.h" @@ -67,10 +66,3 @@ sk_sp SkBlenders::Arithmetic(float k1, float k2, float k3, float k4, }; return gArithmeticEffect->makeBlender(SkData::MakeWithCopy(array, sizeof(array))); } -#else // SK_ENABLE_SKSL -sk_sp SkBlenders::Arithmetic(float k1, float k2, float k3, float k4, - bool enforcePremul) { - // TODO(skia:12197) - return nullptr; -} -#endif diff --git a/src/effects/SkHighContrastFilter.cpp b/src/effects/SkHighContrastFilter.cpp index 7431650a2bea..6ed169125249 100644 --- a/src/effects/SkHighContrastFilter.cpp +++ b/src/effects/SkHighContrastFilter.cpp @@ -7,15 +7,13 @@ #include "include/effects/SkHighContrastFilter.h" -#include "include/core/SkColorFilter.h" -#include "include/core/SkRefCnt.h" -#include "include/core/SkTypes.h" - -#ifdef SK_ENABLE_SKSL #include "include/core/SkAlphaType.h" +#include "include/core/SkColorFilter.h" #include "include/core/SkColorSpace.h" #include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" #include "include/core/SkString.h" +#include "include/core/SkTypes.h" #include "include/effects/SkRuntimeEffect.h" #include "include/private/base/SkTPin.h" #include "modules/skcms/skcms.h" @@ -95,10 +93,3 @@ sk_sp SkHighContrastFilter::Make(const SkHighContrastConfig& conf effect->makeColorFilter(SkData::MakeWithCopy(&uniforms,sizeof(uniforms))), &linear, nullptr/*use dst gamut*/, &unpremul); } -#else // SK_ENABLE_SKSL -sk_sp SkHighContrastFilter::Make(const SkHighContrastConfig& config) { - // TODO(skia:12197) - return nullptr; -} -#endif - diff --git a/src/effects/colorfilters/BUILD.bazel b/src/effects/colorfilters/BUILD.bazel index 5ac2eb47bd52..ad3d83cf3ad1 100644 --- a/src/effects/colorfilters/BUILD.bazel +++ b/src/effects/colorfilters/BUILD.bazel @@ -17,6 +17,7 @@ COLORFILTER_FILES = [ "SkGaussianColorFilter.h", "SkMatrixColorFilter.cpp", "SkMatrixColorFilter.h", + "SkRuntimeColorFilter.cpp", "SkRuntimeColorFilter.h", "SkTableColorFilter.cpp", "SkTableColorFilter.h", @@ -29,22 +30,9 @@ split_srcs_and_hdrs( files = COLORFILTER_FILES, ) -skia_filegroup( - name = "sksl_srcs", - srcs = ["SkRuntimeColorFilter.cpp"], -) - -skia_filegroup( - name = "no_sksl_srcs", - srcs = ["SkRuntimeColorFilter_none.cpp"], -) - skia_filegroup( name = "srcs", - srcs = [":colorfilter_srcs"] + select({ - "//src/sksl:needs_sksl": [":sksl_srcs"], - "//conditions:default": [":no_sksl_srcs"], - }), + srcs = [":colorfilter_srcs"], visibility = ["//src/effects:__pkg__"], ) diff --git a/src/effects/colorfilters/SkRuntimeColorFilter.cpp b/src/effects/colorfilters/SkRuntimeColorFilter.cpp index 4f0cee05c72d..ad5de3dd1d2e 100644 --- a/src/effects/colorfilters/SkRuntimeColorFilter.cpp +++ b/src/effects/colorfilters/SkRuntimeColorFilter.cpp @@ -33,10 +33,6 @@ #include #include -#if !defined(SK_ENABLE_SKSL) -#error This only be compiled if SKSL is enabled. See _none.cpp for the non-SKSL version. -#endif - SkRuntimeColorFilter::SkRuntimeColorFilter(sk_sp effect, sk_sp uniforms, SkSpan children) diff --git a/src/effects/colorfilters/SkRuntimeColorFilter_none.cpp b/src/effects/colorfilters/SkRuntimeColorFilter_none.cpp deleted file mode 100644 index f0f1032389f9..000000000000 --- a/src/effects/colorfilters/SkRuntimeColorFilter_none.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2023 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "include/core/SkColor.h" -#include "include/core/SkColorFilter.h" -#include "include/core/SkRefCnt.h" -#include "include/effects/SkLumaColorFilter.h" -#include "include/effects/SkOverdrawColorFilter.h" - -#if defined(SK_ENABLE_SKSL) -#error This should not be compiled if SKSL is enabled -#endif - -sk_sp SkColorFilters::Lerp(float weight, sk_sp cf0, - sk_sp cf1) { - // TODO(skia:12197) - return nullptr; -} - -sk_sp SkLumaColorFilter::Make() { - // TODO(skia:12197) - return nullptr; -} - -sk_sp SkOverdrawColorFilter::MakeWithSkColors(const SkColor colors[kNumColors]) { - // TODO(skia:12197) - return nullptr; -} diff --git a/src/effects/imagefilters/SkBlendImageFilter.cpp b/src/effects/imagefilters/SkBlendImageFilter.cpp index 0339ff979906..8dfdc71690e9 100644 --- a/src/effects/imagefilters/SkBlendImageFilter.cpp +++ b/src/effects/imagefilters/SkBlendImageFilter.cpp @@ -119,8 +119,9 @@ sk_sp make_blend(sk_sp blender, return cropped(std::move(foreground)); } else if (bm == SkBlendMode::kDst) { return cropped(std::move(background)); + } else if (bm == SkBlendMode::kClear) { + return SkImageFilters::Empty(); } - // TODO(b/283548627): Route kClear to a dedicated Empty image filter. } sk_sp inputs[2] = { std::move(background), std::move(foreground) }; @@ -353,9 +354,7 @@ skif::LayerSpace SkBlendImageFilter::onGetOutputLayerBounds( bool transparentOutsideFG = false; bool transparentOutsideBG = false; if (auto bm = as_BB(fBlender)->asBlendMode()) { - if (*bm == SkBlendMode::kClear) { - return skif::LayerSpace::Empty(); - } + SkASSERT(*bm != SkBlendMode::kClear); // Should have been caught at creation time SkBlendModeCoeff src, dst; if (SkBlendMode_AsCoeff(*bm, &src, &dst)) { // If dst's coefficient is 0 then nothing can produce non-transparent content outside @@ -371,7 +370,7 @@ skif::LayerSpace SkBlendImageFilter::onGetOutputLayerBounds( } else if (fArithmeticCoefficients.has_value()) { [[maybe_unused]] static constexpr SkV4 kClearCoeff = {0.f, 0.f, 0.f, 0.f}; const SkV4& k = *fArithmeticCoefficients; - SkASSERT(k != kClearCoeff); // Should have been converted to a clear blender + SkASSERT(k != kClearCoeff); // Should have been converted to an empty filter if (k[3] != 0.f) { // The arithmetic equation produces non-transparent black everywhere @@ -416,9 +415,7 @@ SkRect SkBlendImageFilter::computeFastBounds(const SkRect& bounds) const { bool transparentOutsideFG = false; bool transparentOutsideBG = false; if (auto bm = as_BB(fBlender)->asBlendMode()) { - if (*bm == SkBlendMode::kClear) { - return SkRect::MakeEmpty(); - } + SkASSERT(*bm != SkBlendMode::kClear); // Should have been caught at creation time SkBlendModeCoeff src, dst; if (SkBlendMode_AsCoeff(*bm, &src, &dst)) { // If dst's coefficient is 0 then nothing can produce non-transparent content outside @@ -430,7 +427,7 @@ SkRect SkBlendImageFilter::computeFastBounds(const SkRect& bounds) const { } else if (fArithmeticCoefficients.has_value()) { [[maybe_unused]] static constexpr SkV4 kClearCoeff = {0.f, 0.f, 0.f, 0.f}; const SkV4& k = *fArithmeticCoefficients; - SkASSERT(k != kClearCoeff); // Should have been converted to a clear blender + SkASSERT(k != kClearCoeff); // Should have been converted to an empty image filter if (k[3] != 0.f) { // The arithmetic equation produces non-transparent black everywhere diff --git a/src/effects/imagefilters/SkBlurImageFilter.cpp b/src/effects/imagefilters/SkBlurImageFilter.cpp index 960652a5828d..1f5ea13588ac 100644 --- a/src/effects/imagefilters/SkBlurImageFilter.cpp +++ b/src/effects/imagefilters/SkBlurImageFilter.cpp @@ -5,6 +5,10 @@ * found in the LICENSE file. */ +#include "include/effects/SkImageFilters.h" + +#if defined(SK_USE_LEGACY_BLUR_IMAGEFILTER) + #include "include/core/SkBitmap.h" #include "include/core/SkColorType.h" #include "include/core/SkFlattenable.h" @@ -18,7 +22,6 @@ #include "include/core/SkSize.h" #include "include/core/SkTileMode.h" #include "include/core/SkTypes.h" -#include "include/effects/SkImageFilters.h" #include "include/private/base/SkFloatingPoint.h" #include "include/private/base/SkMalloc.h" #include "src/base/SkArenaAlloc.h" @@ -44,6 +47,10 @@ #include "src/gpu/ganesh/image/SkSpecialImage_Ganesh.h" #endif // defined(SK_GANESH) +#if defined(SK_GANESH) || defined(SK_GRAPHITE) +#include "src/gpu/BlurUtils.h" +#endif + #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 #include #define SK_PREFETCH(ptr) _mm_prefetch(reinterpret_cast(ptr), _MM_HINT_T0) @@ -992,8 +999,8 @@ sk_sp SkBlurImageFilter::gpuFilter(const skif::Context& ctx, SkIRect dstBounds, SkIPoint inputOffset, SkIPoint* offset) const { - if (GrBlurUtils::IsEffectivelyZeroSigma(sigma.x()) && - GrBlurUtils::IsEffectivelyZeroSigma(sigma.y())) { + if (skgpu::BlurIsEffectivelyIdentity(sigma.x()) && + skgpu::BlurIsEffectivelyIdentity(sigma.y())) { offset->fX = inputBounds.x() + inputOffset.fX; offset->fY = inputBounds.y() + inputOffset.fY; return input->makeSubset(inputBounds); @@ -1044,3 +1051,1027 @@ SkIRect SkBlurImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix SkVector sigma = map_sigma(fSigma, ctm); return src.makeOutset(SkScalarCeilToInt(sigma.x() * 3), SkScalarCeilToInt(sigma.y() * 3)); } + +#else + +#include "include/core/SkBitmap.h" +#include "include/core/SkColor.h" +#include "include/core/SkColorType.h" +#include "include/core/SkFlattenable.h" +#include "include/core/SkImageFilter.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkTileMode.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkMalloc.h" +#include "src/base/SkArenaAlloc.h" +#include "src/base/SkVx.h" +#include "src/core/SkImageFilterTypes.h" +#include "src/core/SkImageFilter_Base.h" +#include "src/core/SkReadBuffer.h" +#include "src/core/SkSpecialImage.h" +#include "src/core/SkWriteBuffer.h" +#include "src/effects/imagefilters/SkCropImageFilter.h" + +#include +#include +#include +#include +#include + +struct SkIPoint; + +#if defined(SK_GANESH) || defined(SK_GRAPHITE) +#include "src/gpu/BlurUtils.h" +#endif + +#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 + #include + #define SK_PREFETCH(ptr) _mm_prefetch(reinterpret_cast(ptr), _MM_HINT_T0) +#elif defined(__GNUC__) + #define SK_PREFETCH(ptr) __builtin_prefetch(ptr) +#else + #define SK_PREFETCH(ptr) +#endif + +namespace { + +class SkBlurImageFilter final : public SkImageFilter_Base { +public: + SkBlurImageFilter(SkSize sigma, sk_sp input) + : SkImageFilter_Base(&input, 1, /*cropRect=*/nullptr) + , fSigma{sigma} {} + + SkBlurImageFilter(SkSize sigma, SkTileMode legacyTileMode, sk_sp input) + : SkImageFilter_Base(&input, 1, /*cropRect=*/nullptr) + , fSigma(sigma) + , fLegacyTileMode(legacyTileMode) {} + + SkRect computeFastBounds(const SkRect&) const override; + +protected: + void flatten(SkWriteBuffer&) const override; + +private: + friend void ::SkRegisterBlurImageFilterFlattenable(); + SK_FLATTENABLE_HOOKS(SkBlurImageFilter) + + skif::FilterResult onFilterImage(const skif::Context& context) const override; + + skif::LayerSpace onGetInputLayerBounds( + const skif::Mapping& mapping, + const skif::LayerSpace& desiredOutput, + const skif::LayerSpace& contentBounds) const override; + + skif::LayerSpace onGetOutputLayerBounds( + const skif::Mapping& mapping, + const skif::LayerSpace& contentBounds) const override; + + skif::LayerSpace mapSigma(const skif::Mapping& mapping, bool gpuBacked) const; + + skif::LayerSpace kernelBounds(const skif::Mapping& mapping, + skif::LayerSpace bounds, + bool gpuBacked) const { + skif::LayerSpace sigma = this->mapSigma(mapping, gpuBacked); + bounds.outset(skif::LayerSpace({3 * sigma.width(), 3 * sigma.height()}).ceil()); + return bounds; + } + + skif::ParameterSpace fSigma; + // kDecal means no legacy tiling, it will be handled by SkCropImageFilter instead. Legacy + // tiling occurs when there's no provided crop rect, and should be deleted once clients create + // their filters with defined tiling geometry. + SkTileMode fLegacyTileMode = SkTileMode::kDecal; +}; + +} // end namespace + +sk_sp SkImageFilters::Blur( + SkScalar sigmaX, SkScalar sigmaY, SkTileMode tileMode, sk_sp input, + const CropRect& cropRect) { + if (!SkScalarsAreFinite(sigmaX, sigmaY) || sigmaX < 0.f || sigmaY < 0.f) { + // Non-finite or negative sigmas are error conditions. We allow 0 sigma for X and/or Y + // for 1D blurs; onFilterImage() will detect when no visible blurring would occur based on + // the Context mapping. + return nullptr; + } + + // Temporarily allow tiling with no crop rect + if (tileMode != SkTileMode::kDecal && !cropRect) { + return sk_make_sp(SkSize{sigmaX, sigmaY}, tileMode, std::move(input)); + } + + // The 'tileMode' behavior is not well-defined if there is no crop. We only apply it if + // there is a provided 'cropRect'. + sk_sp filter = std::move(input); + if (tileMode != SkTileMode::kDecal && cropRect) { + // Historically the input image was restricted to the cropRect when tiling was not + // kDecal, so that the kernel evaluated the tiled edge conditions, while a kDecal crop + // only affected the output. + filter = SkMakeCropImageFilter(*cropRect, tileMode, std::move(filter)); + } + + filter = sk_make_sp(SkSize{sigmaX, sigmaY}, std::move(filter)); + if (cropRect) { + // But regardless of the tileMode, the output is always decal cropped + filter = SkMakeCropImageFilter(*cropRect, SkTileMode::kDecal, std::move(filter)); + } + return filter; +} + +void SkRegisterBlurImageFilterFlattenable() { + SK_REGISTER_FLATTENABLE(SkBlurImageFilter); + SkFlattenable::Register("SkBlurImageFilterImpl", SkBlurImageFilter::CreateProc); +} + +sk_sp SkBlurImageFilter::CreateProc(SkReadBuffer& buffer) { + SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); + SkScalar sigmaX = buffer.readScalar(); + SkScalar sigmaY = buffer.readScalar(); + SkTileMode tileMode = buffer.read32LE(SkTileMode::kLastTileMode); + + // NOTE: For new SKPs, 'tileMode' holds the "legacy" tile mode; any originally specified tile + // mode with valid tiling geometry is handled in the SkCropImageFilters that wrap the blur. + // In a new SKP, when 'tileMode' is not kDecal, common.cropRect() will be null and the blur + // will automatically emulate the legacy tiling. + // + // In old SKPs, the 'tileMode' and common.cropRect() may not be null. ::Blur() automatically + // detects when this is a legacy or valid tiling and constructs the DAG appropriately. + return SkImageFilters::Blur( + sigmaX, sigmaY, tileMode, common.getInput(0), common.cropRect()); +} + +void SkBlurImageFilter::flatten(SkWriteBuffer& buffer) const { + this->SkImageFilter_Base::flatten(buffer); + + buffer.writeScalar(SkSize(fSigma).fWidth); + buffer.writeScalar(SkSize(fSigma).fHeight); + buffer.writeInt(static_cast(fLegacyTileMode)); +} + +/////////////////////////////////////////////////////////////////////////////// + +namespace { + +// TODO: Move these functions into a CPU, 8888-only blur engine implementation; ideally share logic +// with the similar techniques in SkMaskBlurFilter on 4x A8 data. + +// TODO(b/294575803): Provide a more accurate CPU implementation at s<2, at which point the notion +// of an identity sigma can be consolidated between the different functions. +// This is defined by the SVG spec: +// https://drafts.fxtf.org/filter-effects/#feGaussianBlurElement +int calculate_window(double sigma) { + auto possibleWindow = static_cast(floor(sigma * 3 * sqrt(2 * SK_DoublePI) / 4 + 0.5)); + return std::max(1, possibleWindow); +} + +// This rather arbitrary-looking value results in a maximum box blur kernel size +// of 1000 pixels on the raster path, which matches the WebKit and Firefox +// implementations. Since the GPU path does not compute a box blur, putting +// the limit on sigma ensures consistent behaviour between the GPU and +// raster paths. +static constexpr SkScalar kMaxSigma = 532.f; + +class Pass { +public: + explicit Pass(int border) : fBorder(border) {} + virtual ~Pass() = default; + + void blur(int srcLeft, int srcRight, int dstRight, + const uint32_t* src, int srcStride, + uint32_t* dst, int dstStride) { + this->startBlur(); + + auto srcStart = srcLeft - fBorder, + srcEnd = srcRight - fBorder, + dstEnd = dstRight, + srcIdx = srcStart, + dstIdx = 0; + + const uint32_t* srcCursor = src; + uint32_t* dstCursor = dst; + + if (dstIdx < srcIdx) { + // The destination pixels are not effected by the src pixels, + // change to zero as per the spec. + // https://drafts.fxtf.org/filter-effects/#FilterPrimitivesOverviewIntro + while (dstIdx < srcIdx) { + *dstCursor = 0; + dstCursor += dstStride; + SK_PREFETCH(dstCursor); + dstIdx++; + } + } else if (srcIdx < dstIdx) { + // The edge of the source is before the edge of the destination. Calculate the sums for + // the pixels before the start of the destination. + if (int commonEnd = std::min(dstIdx, srcEnd); srcIdx < commonEnd) { + // Preload the blur with values from src before dst is entered. + int n = commonEnd - srcIdx; + this->blurSegment(n, srcCursor, srcStride, nullptr, 0); + srcIdx += n; + srcCursor += n * srcStride; + } + if (srcIdx < dstIdx) { + // The weird case where src is out of pixels before dst is even started. + int n = dstIdx - srcIdx; + this->blurSegment(n, nullptr, 0, nullptr, 0); + srcIdx += n; + } + } + + // Both srcIdx and dstIdx are in sync now, and can run in a 1:1 fashion. This is the + // normal mode of operation. + SkASSERT(srcIdx == dstIdx); + if (int commonEnd = std::min(dstEnd, srcEnd); dstIdx < commonEnd) { + int n = commonEnd - dstIdx; + this->blurSegment(n, srcCursor, srcStride, dstCursor, dstStride); + srcCursor += n * srcStride; + dstCursor += n * dstStride; + dstIdx += n; + srcIdx += n; + } + + // Drain the remaining blur values into dst assuming 0's for the leading edge. + if (dstIdx < dstEnd) { + int n = dstEnd - dstIdx; + this->blurSegment(n, nullptr, 0, dstCursor, dstStride); + } + } + +protected: + virtual void startBlur() = 0; + virtual void blurSegment( + int n, const uint32_t* src, int srcStride, uint32_t* dst, int dstStride) = 0; + +private: + const int fBorder; +}; + +class PassMaker { +public: + explicit PassMaker(int window) : fWindow{window} {} + virtual ~PassMaker() = default; + virtual Pass* makePass(void* buffer, SkArenaAlloc* alloc) const = 0; + virtual size_t bufferSizeBytes() const = 0; + int window() const {return fWindow;} + +private: + const int fWindow; +}; + +// Implement a scanline processor that uses a three-box filter to approximate a Gaussian blur. +// The GaussPass is limit to processing sigmas < 135. +class GaussPass final : public Pass { +public: + // NB 136 is the largest sigma that will not cause a buffer full of 255 mask values to overflow + // using the Gauss filter. It also limits the size of buffers used hold intermediate values. + // Explanation of maximums: + // sum0 = window * 255 + // sum1 = window * sum0 -> window * window * 255 + // sum2 = window * sum1 -> window * window * window * 255 -> window^3 * 255 + // + // The value window^3 * 255 must fit in a uint32_t. So, + // window^3 < 2^32. window = 255. + // + // window = floor(sigma * 3 * sqrt(2 * kPi) / 4 + 0.5) + // For window <= 255, the largest value for sigma is 136. + static PassMaker* MakeMaker(double sigma, SkArenaAlloc* alloc) { + SkASSERT(0 <= sigma); + int window = calculate_window(sigma); + if (255 <= window) { + return nullptr; + } + + class Maker : public PassMaker { + public: + explicit Maker(int window) : PassMaker{window} {} + Pass* makePass(void* buffer, SkArenaAlloc* alloc) const override { + return GaussPass::Make(this->window(), buffer, alloc); + } + + size_t bufferSizeBytes() const override { + int window = this->window(); + size_t onePassSize = window - 1; + // If the window is odd, then there is an obvious middle element. For even sizes + // 2 passes are shifted, and the last pass has an extra element. Like this: + // S + // aaaAaa + // bbBbbb + // cccCccc + // D + size_t bufferCount = (window & 1) == 1 ? 3 * onePassSize : 3 * onePassSize + 1; + return bufferCount * sizeof(skvx::Vec<4, uint32_t>); + } + }; + + return alloc->make(window); + } + + static GaussPass* Make(int window, void* buffers, SkArenaAlloc* alloc) { + // We don't need to store the trailing edge pixel in the buffer; + int passSize = window - 1; + skvx::Vec<4, uint32_t>* buffer0 = static_cast*>(buffers); + skvx::Vec<4, uint32_t>* buffer1 = buffer0 + passSize; + skvx::Vec<4, uint32_t>* buffer2 = buffer1 + passSize; + // If the window is odd just one buffer is needed, but if it's even, then there is one + // more element on that pass. + skvx::Vec<4, uint32_t>* buffersEnd = buffer2 + ((window & 1) ? passSize : passSize + 1); + + // Calculating the border is tricky. The border is the distance in pixels between the first + // dst pixel and the first src pixel (or the last src pixel and the last dst pixel). + // I will go through the odd case which is simpler, and then through the even case. Given a + // stack of filters seven wide for the odd case of three passes. + // + // S + // aaaAaaa + // bbbBbbb + // cccCccc + // D + // + // The furthest changed pixel is when the filters are in the following configuration. + // + // S + // aaaAaaa + // bbbBbbb + // cccCccc + // D + // + // The A pixel is calculated using the value S, the B uses A, and the C uses B, and + // finally D is C. So, with a window size of seven the border is nine. In the odd case, the + // border is 3*((window - 1)/2). + // + // For even cases the filter stack is more complicated. The spec specifies two passes + // of even filters and a final pass of odd filters. A stack for a width of six looks like + // this. + // + // S + // aaaAaa + // bbBbbb + // cccCccc + // D + // + // The furthest pixel looks like this. + // + // S + // aaaAaa + // bbBbbb + // cccCccc + // D + // + // For a window of six, the border value is eight. In the even case the border is 3 * + // (window/2) - 1. + int border = (window & 1) == 1 ? 3 * ((window - 1) / 2) : 3 * (window / 2) - 1; + + // If the window is odd then the divisor is just window ^ 3 otherwise, + // it is window * window * (window + 1) = window ^ 3 + window ^ 2; + int window2 = window * window; + int window3 = window2 * window; + int divisor = (window & 1) == 1 ? window3 : window3 + window2; + return alloc->make(buffer0, buffer1, buffer2, buffersEnd, border, divisor); + } + + GaussPass(skvx::Vec<4, uint32_t>* buffer0, + skvx::Vec<4, uint32_t>* buffer1, + skvx::Vec<4, uint32_t>* buffer2, + skvx::Vec<4, uint32_t>* buffersEnd, + int border, + int divisor) + : Pass{border} + , fBuffer0{buffer0} + , fBuffer1{buffer1} + , fBuffer2{buffer2} + , fBuffersEnd{buffersEnd} + , fDivider(divisor) {} + +private: + void startBlur() override { + skvx::Vec<4, uint32_t> zero = {0u, 0u, 0u, 0u}; + zero.store(fSum0); + zero.store(fSum1); + auto half = fDivider.half(); + skvx::Vec<4, uint32_t>{half, half, half, half}.store(fSum2); + sk_bzero(fBuffer0, (fBuffersEnd - fBuffer0) * sizeof(skvx::Vec<4, uint32_t>)); + + fBuffer0Cursor = fBuffer0; + fBuffer1Cursor = fBuffer1; + fBuffer2Cursor = fBuffer2; + } + + // GaussPass implements the common three pass box filter approximation of Gaussian blur, + // but combines all three passes into a single pass. This approach is facilitated by three + // circular buffers the width of the window which track values for trailing edges of each of + // the three passes. This allows the algorithm to use more precision in the calculation + // because the values are not rounded each pass. And this implementation also avoids a trap + // that's easy to fall into resulting in blending in too many zeroes near the edge. + // + // In general, a window sum has the form: + // sum_n+1 = sum_n + leading_edge - trailing_edge. + // If instead we do the subtraction at the end of the previous iteration, we can just + // calculate the sums instead of having to do the subtractions too. + // + // In previous iteration: + // sum_n+1 = sum_n - trailing_edge. + // + // In this iteration: + // sum_n+1 = sum_n + leading_edge. + // + // Now we can stack all three sums and do them at once. Sum0 gets its leading edge from the + // actual data. Sum1's leading edge is just Sum0, and Sum2's leading edge is Sum1. So, doing the + // three passes at the same time has the form: + // + // sum0_n+1 = sum0_n + leading edge + // sum1_n+1 = sum1_n + sum0_n+1 + // sum2_n+1 = sum2_n + sum1_n+1 + // + // sum2_n+1 / window^3 is the new value of the destination pixel. + // + // Reduce the sums by the trailing edges which were stored in the circular buffers for the + // next go around. This is the case for odd sized windows, even windows the the third + // circular buffer is one larger then the first two circular buffers. + // + // sum2_n+2 = sum2_n+1 - buffer2[i]; + // buffer2[i] = sum1; + // sum1_n+2 = sum1_n+1 - buffer1[i]; + // buffer1[i] = sum0; + // sum0_n+2 = sum0_n+1 - buffer0[i]; + // buffer0[i] = leading edge + void blurSegment( + int n, const uint32_t* src, int srcStride, uint32_t* dst, int dstStride) override { + skvx::Vec<4, uint32_t>* buffer0Cursor = fBuffer0Cursor; + skvx::Vec<4, uint32_t>* buffer1Cursor = fBuffer1Cursor; + skvx::Vec<4, uint32_t>* buffer2Cursor = fBuffer2Cursor; + skvx::Vec<4, uint32_t> sum0 = skvx::Vec<4, uint32_t>::Load(fSum0); + skvx::Vec<4, uint32_t> sum1 = skvx::Vec<4, uint32_t>::Load(fSum1); + skvx::Vec<4, uint32_t> sum2 = skvx::Vec<4, uint32_t>::Load(fSum2); + + // Given an expanded input pixel, move the window ahead using the leadingEdge value. + auto processValue = [&](const skvx::Vec<4, uint32_t>& leadingEdge) { + sum0 += leadingEdge; + sum1 += sum0; + sum2 += sum1; + + skvx::Vec<4, uint32_t> blurred = fDivider.divide(sum2); + + sum2 -= *buffer2Cursor; + *buffer2Cursor = sum1; + buffer2Cursor = (buffer2Cursor + 1) < fBuffersEnd ? buffer2Cursor + 1 : fBuffer2; + sum1 -= *buffer1Cursor; + *buffer1Cursor = sum0; + buffer1Cursor = (buffer1Cursor + 1) < fBuffer2 ? buffer1Cursor + 1 : fBuffer1; + sum0 -= *buffer0Cursor; + *buffer0Cursor = leadingEdge; + buffer0Cursor = (buffer0Cursor + 1) < fBuffer1 ? buffer0Cursor + 1 : fBuffer0; + + return skvx::cast(blurred); + }; + + auto loadEdge = [&](const uint32_t* srcCursor) { + return skvx::cast(skvx::Vec<4, uint8_t>::Load(srcCursor)); + }; + + if (!src && !dst) { + while (n --> 0) { + (void)processValue(0); + } + } else if (src && !dst) { + while (n --> 0) { + (void)processValue(loadEdge(src)); + src += srcStride; + } + } else if (!src && dst) { + while (n --> 0) { + processValue(0u).store(dst); + dst += dstStride; + } + } else if (src && dst) { + while (n --> 0) { + processValue(loadEdge(src)).store(dst); + src += srcStride; + dst += dstStride; + } + } + + // Store the state + fBuffer0Cursor = buffer0Cursor; + fBuffer1Cursor = buffer1Cursor; + fBuffer2Cursor = buffer2Cursor; + + sum0.store(fSum0); + sum1.store(fSum1); + sum2.store(fSum2); + } + + skvx::Vec<4, uint32_t>* const fBuffer0; + skvx::Vec<4, uint32_t>* const fBuffer1; + skvx::Vec<4, uint32_t>* const fBuffer2; + skvx::Vec<4, uint32_t>* const fBuffersEnd; + const skvx::ScaledDividerU32 fDivider; + + // blur state + char fSum0[sizeof(skvx::Vec<4, uint32_t>)]; + char fSum1[sizeof(skvx::Vec<4, uint32_t>)]; + char fSum2[sizeof(skvx::Vec<4, uint32_t>)]; + skvx::Vec<4, uint32_t>* fBuffer0Cursor; + skvx::Vec<4, uint32_t>* fBuffer1Cursor; + skvx::Vec<4, uint32_t>* fBuffer2Cursor; +}; + +// Implement a scanline processor that uses a two-box filter to approximate a Tent filter. +// The TentPass is limit to processing sigmas < 2183. +class TentPass final : public Pass { +public: + // NB 2183 is the largest sigma that will not cause a buffer full of 255 mask values to overflow + // using the Tent filter. It also limits the size of buffers used hold intermediate values. + // Explanation of maximums: + // sum0 = window * 255 + // sum1 = window * sum0 -> window * window * 255 + // + // The value window^2 * 255 must fit in a uint32_t. So, + // window^2 < 2^32. window = 4104. + // + // window = floor(sigma * 3 * sqrt(2 * kPi) / 4 + 0.5) + // For window <= 4104, the largest value for sigma is 2183. + static PassMaker* MakeMaker(double sigma, SkArenaAlloc* alloc) { + SkASSERT(0 <= sigma); + int gaussianWindow = calculate_window(sigma); + // This is a naive method of using the window size for the Gaussian blur to calculate the + // window size for the Tent blur. This seems to work well in practice. + // + // We can use a single pixel to generate the effective blur area given a window size. For + // the Gaussian blur this is 3 * window size. For the Tent filter this is 2 * window size. + int tentWindow = 3 * gaussianWindow / 2; + if (tentWindow >= 4104) { + return nullptr; + } + + class Maker : public PassMaker { + public: + explicit Maker(int window) : PassMaker{window} {} + Pass* makePass(void* buffer, SkArenaAlloc* alloc) const override { + return TentPass::Make(this->window(), buffer, alloc); + } + + size_t bufferSizeBytes() const override { + size_t onePassSize = this->window() - 1; + // If the window is odd, then there is an obvious middle element. For even sizes 2 + // passes are shifted, and the last pass has an extra element. Like this: + // S + // aaaAaa + // bbBbbb + // D + size_t bufferCount = 2 * onePassSize; + return bufferCount * sizeof(skvx::Vec<4, uint32_t>); + } + }; + + return alloc->make(tentWindow); + } + + static TentPass* Make(int window, void* buffers, SkArenaAlloc* alloc) { + if (window > 4104) { + return nullptr; + } + + // We don't need to store the trailing edge pixel in the buffer; + int passSize = window - 1; + skvx::Vec<4, uint32_t>* buffer0 = static_cast*>(buffers); + skvx::Vec<4, uint32_t>* buffer1 = buffer0 + passSize; + skvx::Vec<4, uint32_t>* buffersEnd = buffer1 + passSize; + + // Calculating the border is tricky. The border is the distance in pixels between the first + // dst pixel and the first src pixel (or the last src pixel and the last dst pixel). + // I will go through the odd case which is simpler, and then through the even case. Given a + // stack of filters seven wide for the odd case of three passes. + // + // S + // aaaAaaa + // bbbBbbb + // D + // + // The furthest changed pixel is when the filters are in the following configuration. + // + // S + // aaaAaaa + // bbbBbbb + // D + // + // The A pixel is calculated using the value S, the B uses A, and the D uses B. + // So, with a window size of seven the border is nine. In the odd case, the border is + // window - 1. + // + // For even cases the filter stack is more complicated. It uses two passes + // of even filters offset from each other. A stack for a width of six looks like + // this. + // + // S + // aaaAaa + // bbBbbb + // D + // + // The furthest pixel looks like this. + // + // S + // aaaAaa + // bbBbbb + // D + // + // For a window of six, the border value is 5. In the even case the border is + // window - 1. + int border = window - 1; + + int divisor = window * window; + return alloc->make(buffer0, buffer1, buffersEnd, border, divisor); + } + + TentPass(skvx::Vec<4, uint32_t>* buffer0, + skvx::Vec<4, uint32_t>* buffer1, + skvx::Vec<4, uint32_t>* buffersEnd, + int border, + int divisor) + : Pass{border} + , fBuffer0{buffer0} + , fBuffer1{buffer1} + , fBuffersEnd{buffersEnd} + , fDivider(divisor) {} + +private: + void startBlur() override { + skvx::Vec<4, uint32_t>{0u, 0u, 0u, 0u}.store(fSum0); + auto half = fDivider.half(); + skvx::Vec<4, uint32_t>{half, half, half, half}.store(fSum1); + sk_bzero(fBuffer0, (fBuffersEnd - fBuffer0) * sizeof(skvx::Vec<4, uint32_t>)); + + fBuffer0Cursor = fBuffer0; + fBuffer1Cursor = fBuffer1; + } + + // TentPass implements the common two pass box filter approximation of Tent filter, + // but combines all both passes into a single pass. This approach is facilitated by two + // circular buffers the width of the window which track values for trailing edges of each of + // both passes. This allows the algorithm to use more precision in the calculation + // because the values are not rounded each pass. And this implementation also avoids a trap + // that's easy to fall into resulting in blending in too many zeroes near the edge. + // + // In general, a window sum has the form: + // sum_n+1 = sum_n + leading_edge - trailing_edge. + // If instead we do the subtraction at the end of the previous iteration, we can just + // calculate the sums instead of having to do the subtractions too. + // + // In previous iteration: + // sum_n+1 = sum_n - trailing_edge. + // + // In this iteration: + // sum_n+1 = sum_n + leading_edge. + // + // Now we can stack all three sums and do them at once. Sum0 gets its leading edge from the + // actual data. Sum1's leading edge is just Sum0, and Sum2's leading edge is Sum1. So, doing the + // three passes at the same time has the form: + // + // sum0_n+1 = sum0_n + leading edge + // sum1_n+1 = sum1_n + sum0_n+1 + // + // sum1_n+1 / window^2 is the new value of the destination pixel. + // + // Reduce the sums by the trailing edges which were stored in the circular buffers for the + // next go around. + // + // sum1_n+2 = sum1_n+1 - buffer1[i]; + // buffer1[i] = sum0; + // sum0_n+2 = sum0_n+1 - buffer0[i]; + // buffer0[i] = leading edge + void blurSegment( + int n, const uint32_t* src, int srcStride, uint32_t* dst, int dstStride) override { + skvx::Vec<4, uint32_t>* buffer0Cursor = fBuffer0Cursor; + skvx::Vec<4, uint32_t>* buffer1Cursor = fBuffer1Cursor; + skvx::Vec<4, uint32_t> sum0 = skvx::Vec<4, uint32_t>::Load(fSum0); + skvx::Vec<4, uint32_t> sum1 = skvx::Vec<4, uint32_t>::Load(fSum1); + + // Given an expanded input pixel, move the window ahead using the leadingEdge value. + auto processValue = [&](const skvx::Vec<4, uint32_t>& leadingEdge) { + sum0 += leadingEdge; + sum1 += sum0; + + skvx::Vec<4, uint32_t> blurred = fDivider.divide(sum1); + + sum1 -= *buffer1Cursor; + *buffer1Cursor = sum0; + buffer1Cursor = (buffer1Cursor + 1) < fBuffersEnd ? buffer1Cursor + 1 : fBuffer1; + sum0 -= *buffer0Cursor; + *buffer0Cursor = leadingEdge; + buffer0Cursor = (buffer0Cursor + 1) < fBuffer1 ? buffer0Cursor + 1 : fBuffer0; + + return skvx::cast(blurred); + }; + + auto loadEdge = [&](const uint32_t* srcCursor) { + return skvx::cast(skvx::Vec<4, uint8_t>::Load(srcCursor)); + }; + + if (!src && !dst) { + while (n --> 0) { + (void)processValue(0); + } + } else if (src && !dst) { + while (n --> 0) { + (void)processValue(loadEdge(src)); + src += srcStride; + } + } else if (!src && dst) { + while (n --> 0) { + processValue(0u).store(dst); + dst += dstStride; + } + } else if (src && dst) { + while (n --> 0) { + processValue(loadEdge(src)).store(dst); + src += srcStride; + dst += dstStride; + } + } + + // Store the state + fBuffer0Cursor = buffer0Cursor; + fBuffer1Cursor = buffer1Cursor; + sum0.store(fSum0); + sum1.store(fSum1); + } + + skvx::Vec<4, uint32_t>* const fBuffer0; + skvx::Vec<4, uint32_t>* const fBuffer1; + skvx::Vec<4, uint32_t>* const fBuffersEnd; + const skvx::ScaledDividerU32 fDivider; + + // blur state + char fSum0[sizeof(skvx::Vec<4, uint32_t>)]; + char fSum1[sizeof(skvx::Vec<4, uint32_t>)]; + skvx::Vec<4, uint32_t>* fBuffer0Cursor; + skvx::Vec<4, uint32_t>* fBuffer1Cursor; +}; + +// TODO: Implement CPU backend for different fTileMode. This is still worth doing inline with the +// blur; at the moment the tiling is applied via the CropImageFilter and carried as metadata on +// the FilterResult. This is forcefully applied in onFilterImage() to get a simple SkSpecialImage to +// pass to cpu_blur or gpu_blur, which evaluates the tile mode into a kernel-outset buffer that is +// then processed by these functions. If the tilemode is the only thing being applied, it would be +// ideal to tile from the input image directly instead of inserting a new temporary image. For CPU +// blurs this temporary image now creates the appearance of correctness; for GPU blurs that could +// tile already it may create a regression. +sk_sp cpu_blur(const skif::Context& ctx, + skif::LayerSpace sigma, + const sk_sp& input, + skif::LayerSpace srcBounds, + skif::LayerSpace dstBounds) { + // map_sigma limits sigma to 532 to match 1000px box filter limit of WebKit and Firefox. + // Since this does not exceed the limits of the TentPass (2183), there won't be overflow when + // computing a kernel over a pixel window filled with 255. + static_assert(kMaxSigma <= 2183.0f); + + // The input image should fill the srcBounds + SkASSERT(input->width() == srcBounds.width() && input->height() == srcBounds.height()); + + SkSTArenaAlloc<1024> alloc; + auto makeMaker = [&](double sigma) -> PassMaker* { + SkASSERT(0 <= sigma && sigma <= 2183); // should be guaranteed after map_sigma + if (PassMaker* maker = GaussPass::MakeMaker(sigma, &alloc)) { + return maker; + } + if (PassMaker* maker = TentPass::MakeMaker(sigma, &alloc)) { + return maker; + } + SK_ABORT("Sigma is out of range."); + }; + + PassMaker* makerX = makeMaker(sigma.width()); + PassMaker* makerY = makeMaker(sigma.height()); + // A no-op blur should have been caught earlier in onFilterImage(). + SkASSERT(makerX->window() > 1 || makerY->window() > 1); + + SkBitmap src; + if (!input->getROPixels(&src)) { + return nullptr; + } + if (src.colorType() != kN32_SkColorType) { + return nullptr; + } + + auto originalDstBounds = dstBounds; + if (makerX->window() > 1) { + // Inflate the dst by the window required for the Y pass so that the X pass can prepare it. + // The Y pass will be offset to only write to the original rows in dstBounds, but its window + // will access these extra rows calculated by the X pass. The SpecialImage factory will + // then subset the bitmap so it appears to match 'originalDstBounds' tightly. We make one + // slightly larger image to hold this extra data instead of two separate images sized + // exactly to each pass because the CPU blur can write in place. + const auto yPadding = skif::LayerSpace({0.f, 3 * sigma.height()}).ceil(); + dstBounds.outset(yPadding); + } + + SkBitmap dst; + const skif::LayerSpace dstOrigin = dstBounds.topLeft(); + if (!dst.tryAllocPixels(src.info().makeWH(dstBounds.width(), dstBounds.height()))) { + return nullptr; + } + dst.eraseColor(SK_ColorTRANSPARENT); + + auto buffer = alloc.makeBytesAlignedTo(std::max(makerX->bufferSizeBytes(), + makerY->bufferSizeBytes()), + alignof(skvx::Vec<4, uint32_t>)); + + // Basic Plan: The three cases to handle + // * Horizontal and Vertical - blur horizontally while copying values from the source to + // the destination. Then, do an in-place vertical blur. + // * Horizontal only - blur horizontally copying values from the source to the destination. + // * Vertical only - blur vertically copying values from the source to the destination. + + // Initialize these assuming the Y-only case + int loopStart = std::max(srcBounds.left(), dstBounds.left()); + int loopEnd = std::min(srcBounds.right(), dstBounds.right()); + int dstYOffset = 0; + + if (makerX->window() > 1) { + // First an X-only blur from src into dst, including the extra rows that will become input + // for the second Y pass, which will then be performed in place. + loopStart = std::max(srcBounds.top(), dstBounds.top()); + loopEnd = std::min(srcBounds.bottom(), dstBounds.bottom()); + + auto srcAddr = src.getAddr32(0, loopStart - srcBounds.top()); + auto dstAddr = dst.getAddr32(0, loopStart - dstBounds.top()); + + // Iterate over each row to calculate 1D blur along X. + Pass* pass = makerX->makePass(buffer, &alloc); + for (int y = loopStart; y < loopEnd; ++y) { + pass->blur(srcBounds.left() - dstBounds.left(), + srcBounds.right() - dstBounds.left(), + dstBounds.width(), + srcAddr, 1, + dstAddr, 1); + srcAddr += src.rowBytesAsPixels(); + dstAddr += dst.rowBytesAsPixels(); + } + + // Set up the Y pass to blur from the full dst into the non-outset portion of dst + src = dst; + loopStart = originalDstBounds.left(); + loopEnd = originalDstBounds.right(); + // The new 'dst' is equal to dst.extractSubset(originalDstBounds.offset(-dstOrigin)), but + // by construction only the Y offset has an interesting value so this is a little more + // efficient. + dstYOffset = originalDstBounds.top() - dstBounds.top(); + + srcBounds = dstBounds; + dstBounds = originalDstBounds; + } + + // Iterate over each column to calculate 1D blur along Y. This is either blurring from src into + // dst for a 1D blur; or it's blurring from dst into dst for the second pass of a 2D blur. + if (makerY->window() > 1) { + auto srcAddr = src.getAddr32(loopStart - srcBounds.left(), 0); + auto dstAddr = dst.getAddr32(loopStart - dstBounds.left(), dstYOffset); + + Pass* pass = makerY->makePass(buffer, &alloc); + for (int x = loopStart; x < loopEnd; ++x) { + pass->blur(srcBounds.top() - dstBounds.top(), + srcBounds.bottom() - dstBounds.top(), + dstBounds.height(), + srcAddr, src.rowBytesAsPixels(), + dstAddr, dst.rowBytesAsPixels()); + srcAddr += 1; + dstAddr += 1; + } + } + + originalDstBounds.offset(-dstOrigin); // Make relative to dst's pixels + return SkSpecialImages::MakeFromRaster(SkIRect(originalDstBounds), + dst, + ctx.surfaceProps()); +} + +} // namespace + +skif::FilterResult SkBlurImageFilter::onFilterImage(const skif::Context& ctx) const { + skif::Context inputCtx = ctx.withNewDesiredOutput( + this->kernelBounds(ctx.mapping(), ctx.desiredOutput(), ctx.gpuBacked())); + + skif::FilterResult childOutput = this->getChildOutput(0, inputCtx); + skif::LayerSpace sigma = this->mapSigma(ctx.mapping(), ctx.gpuBacked()); + if (sigma.width() == 0.f && sigma.height() == 0.f) { + // No actual blur, so just return the input unmodified + return childOutput; + } + + SkASSERT(sigma.width() >= 0.f && sigma.width() <= kMaxSigma && + sigma.height() >= 0.f && sigma.height() <= kMaxSigma); + + // TODO: This is equivalent to what Builder::blur() calculates under the hood, but is calculated + // *before* we apply any legacy tile mode since the legacy tiling did not actually cause the + // output to extend fully. + skif::LayerSpace maxOutput = + this->kernelBounds(ctx.mapping(), childOutput.layerBounds(), ctx.gpuBacked()); + if (!maxOutput.intersect(ctx.desiredOutput())) { + return {}; + } + + if (fLegacyTileMode != SkTileMode::kDecal) { + // Legacy tiling applied to the input image when there was no explicit crop rect. Use the + // child's output image's layer bounds as the crop rectangle to adjust the edge tile mode + // without restricting the image. + childOutput = childOutput.applyCrop(inputCtx, + childOutput.layerBounds(), + fLegacyTileMode); + } + + // TODO(b/40039877): Once the CPU blur functions can handle tile modes and color types beyond + // N32, there won't be any need to branch on how to apply the blur to the filter result. + if (ctx.gpuBacked()) { + // For non-legacy tiling, 'maxOutput' is equal to the desired output. For decal's it matches + // what Builder::blur() calculates internally. For legacy tiling, however, it's dependent on + // the original child output's bounds ignoring the tile mode's effect. + skif::Context croppedOutput = ctx.withNewDesiredOutput(maxOutput); + skif::FilterResult::Builder builder{croppedOutput}; + builder.add(childOutput); + return builder.blur(sigma); + } + + // The CPU blur does not yet support tile modes so explicitly resolve it to a special image that + // has the tiling rendered into the pixels. + + auto [resolvedChildOutput, origin] = childOutput.imageAndOffset(inputCtx); + if (!resolvedChildOutput) { + return {}; + } + skif::LayerSpace srcBounds{SkIRect::MakeXYWH(origin.x(), + origin.y(), + resolvedChildOutput->width(), + resolvedChildOutput->height())}; + + return skif::FilterResult{cpu_blur(ctx, sigma, std::move(resolvedChildOutput), + srcBounds, maxOutput), + maxOutput.topLeft()}; +} + +skif::LayerSpace SkBlurImageFilter::mapSigma(const skif::Mapping& mapping, + bool gpuBacked) const { + skif::LayerSpace sigma = mapping.paramToLayer(fSigma); + // Clamp to the maximum sigma + sigma = skif::LayerSpace({std::min(sigma.width(), kMaxSigma), + std::min(sigma.height(), kMaxSigma)}); + + // TODO(b/294575803) - The CPU and GPU implementations have different requirements for + // "identity", with the GPU able to handle smaller sigmas. calculate_window() returns <= 1 once + // sigma is below ~0.8. Ideally we should work out the sigma threshold such that the max + // contribution from adjacent pixels is less than 0.5/255 and use that for both backends. + // NOTE: For convenience with builds, and the flux that is about to occur with the blur utils, + // this GPU logic is just copied from GrBlurUtils + + // Disable bluring on axes that are not finite, or that are small enough that the blur is + // effectively an identity. + if (!SkScalarIsFinite(sigma.width()) || (!gpuBacked && calculate_window(sigma.width()) <= 1) +#if defined(SK_GANESH) || defined(SK_GRAPHITE) + || (gpuBacked && skgpu::BlurIsEffectivelyIdentity(sigma.width())) +#endif + ) { + sigma = skif::LayerSpace({0.f, sigma.height()}); + } + + if (!SkScalarIsFinite(sigma.height()) || (!gpuBacked && calculate_window(sigma.height()) <= 1) +#if defined(SK_GANESH) || defined(SK_GRAPHITE) + || (gpuBacked && skgpu::BlurIsEffectivelyIdentity(sigma.height())) +#endif + ) { + sigma = skif::LayerSpace({sigma.width(), 0.f}); + } + + return sigma; +} + +skif::LayerSpace SkBlurImageFilter::onGetInputLayerBounds( + const skif::Mapping& mapping, + const skif::LayerSpace& desiredOutput, + const skif::LayerSpace& contentBounds) const { + // Use gpuBacked=true since that has a more sensitive kernel, ensuring any layer input bounds + // will be sufficient for both GPU and CPU evaluations. + skif::LayerSpace requiredInput = + this->kernelBounds(mapping, desiredOutput, /*gpuBacked=*/true); + return this->getChildInputLayerBounds(0, mapping, requiredInput, contentBounds); +} + +skif::LayerSpace SkBlurImageFilter::onGetOutputLayerBounds( + const skif::Mapping& mapping, + const skif::LayerSpace& contentBounds) const { + // Use gpuBacked=true since it will ensure output bounds are conservative; CPU-based blurs may + // produce 1px inset from this for very small sigmas. + return this->kernelBounds(mapping, this->getChildOutputLayerBounds(0, mapping, contentBounds), + /*gpuBacked=*/true); +} + +SkRect SkBlurImageFilter::computeFastBounds(const SkRect& src) const { + SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src; + bounds.outset(SkSize(fSigma).width() * 3, SkSize(fSigma).height() * 3); + return bounds; +} + +#endif // SK_USE_LEGACY_BLUR_IMAGEFILTER diff --git a/src/effects/imagefilters/SkCropImageFilter.cpp b/src/effects/imagefilters/SkCropImageFilter.cpp index dcdf5bb8336c..0e4ffed8b780 100644 --- a/src/effects/imagefilters/SkCropImageFilter.cpp +++ b/src/effects/imagefilters/SkCropImageFilter.cpp @@ -99,6 +99,12 @@ sk_sp SkMakeCropImageFilter(const SkRect& rect, return sk_sp(new SkCropImageFilter(rect, tileMode, std::move(input))); } +// While a number of filter factories could handle "empty" cases (e.g. a null SkShader or SkPicture) +// just use a crop with an empty rect because its implementation gracefully handles empty rects. +sk_sp SkImageFilters::Empty() { + return SkMakeCropImageFilter(SkRect::MakeEmpty(), SkTileMode::kDecal, nullptr); +} + sk_sp SkImageFilters::Tile(const SkRect& src, const SkRect& dst, sk_sp input) { diff --git a/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp b/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp index 5e1f185e315d..cf8ce59558de 100644 --- a/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp +++ b/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp @@ -6,9 +6,6 @@ */ #include "include/effects/SkImageFilters.h" -#include "src/effects/imagefilters/SkCropImageFilter.h" - -#ifdef SK_ENABLE_SKSL #include "include/core/SkColor.h" #include "include/core/SkFlattenable.h" @@ -29,6 +26,7 @@ #include "src/core/SkReadBuffer.h" #include "src/core/SkRuntimeEffectPriv.h" #include "src/core/SkWriteBuffer.h" +#include "src/effects/imagefilters/SkCropImageFilter.h" #include @@ -302,16 +300,3 @@ SkRect SkDisplacementMapImageFilter::computeFastBounds(const SkRect& src) const float maxDisplacement = 0.5f * SkScalarAbs(fScale); return colorBounds.makeOutset(maxDisplacement, maxDisplacement); } - -#else - -// The displacement map effect requires SkSL, just return the color input, possibly cropped -sk_sp SkImageFilters::DisplacementMap( - SkColorChannel xChannelSelector, SkColorChannel yChannelSelector, SkScalar scale, - sk_sp displacement, sk_sp color, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(color)) : color; -} - -void SkRegisterDisplacementMapImageFilterFlattenable() {} - -#endif diff --git a/src/effects/imagefilters/SkImageImageFilter.cpp b/src/effects/imagefilters/SkImageImageFilter.cpp index 328eee2664e3..4758e0e85519 100644 --- a/src/effects/imagefilters/SkImageImageFilter.cpp +++ b/src/effects/imagefilters/SkImageImageFilter.cpp @@ -37,9 +37,8 @@ class SkImageImageFilter final : public SkImageFilter_Base { , fSrcRect(srcRect) , fDstRect(dstRect) , fSampling(sampling) { - // The dst rect should be empty if the image is null and non-empty for an actual image - SkASSERT((!fImage && dstRect.isEmpty()) || - (fImage && !dstRect.isEmpty())); + // The dst rect should be non-empty + SkASSERT(fImage && !dstRect.isEmpty()); } SkRect computeFastBounds(const SkRect&) const override { return SkRect(fDstRect); } @@ -78,14 +77,9 @@ sk_sp SkImageFilters::Image(sk_sp image, const SkRect& srcRect, const SkRect& dstRect, const SkSamplingOptions& sampling) { - auto emptyFilter = []() { - return sk_sp(new SkImageImageFilter( - nullptr, SkRect::MakeEmpty(), SkRect::MakeEmpty(), {})); - }; - if (srcRect.isEmpty() || dstRect.isEmpty() || !image) { // There is no content to draw, so the filter should produce transparent black - return emptyFilter(); + return SkImageFilters::Empty(); } else { SkRect imageBounds = SkRect::Make(image->dimensions()); if (imageBounds.contains(srcRect)) { @@ -96,7 +90,7 @@ sk_sp SkImageFilters::Image(sk_sp image, SkMatrix srcToDst = SkMatrix::RectToRect(srcRect, dstRect); if (!imageBounds.intersect(srcRect)) { // No overlap, so draw empty - return emptyFilter(); + return SkImageFilters::Empty(); } // Adjust dstRect to match the updated src (which is stored in imageBounds) @@ -156,11 +150,6 @@ skif::LayerSpace SkImageImageFilter::onGetInputLayerBounds( skif::LayerSpace SkImageImageFilter::onGetOutputLayerBounds( const skif::Mapping& mapping, const skif::LayerSpace&) const { - if (fImage) { - // The output is the transformed bounds of the image. - return mapping.paramToLayer(fDstRect).roundOut(); - } else { - // An empty picture is fully transparent - return skif::LayerSpace::Empty(); - } + // The output is the transformed bounds of the image. + return mapping.paramToLayer(fDstRect).roundOut(); } diff --git a/src/effects/imagefilters/SkLightingImageFilter.cpp b/src/effects/imagefilters/SkLightingImageFilter.cpp index aa16f2a4fb76..87414a37bbe8 100644 --- a/src/effects/imagefilters/SkLightingImageFilter.cpp +++ b/src/effects/imagefilters/SkLightingImageFilter.cpp @@ -8,8 +8,6 @@ #include "include/effects/SkImageFilters.h" #include "src/effects/imagefilters/SkCropImageFilter.h" -#ifdef SK_ENABLE_SKSL - #include "include/core/SkColor.h" #include "include/core/SkFlattenable.h" #include "include/core/SkImageFilter.h" @@ -697,49 +695,3 @@ skif::LayerSpace SkLightingImageFilter::onGetOutputLayerBounds( SkRect SkLightingImageFilter::computeFastBounds(const SkRect& src) const { return SkRectPriv::MakeLargeS32(); } - -#else // SK_ENABLE_SKSL - -// Without SkSL, just return the input image filter (possibly cropped) - -sk_sp SkImageFilters::DistantLitDiffuse( - const SkPoint3& direction, SkColor lightColor, SkScalar surfaceScale, SkScalar kd, - sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::PointLitDiffuse( - const SkPoint3& location, SkColor lightColor, SkScalar surfaceScale, SkScalar kd, - sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::SpotLitDiffuse( - const SkPoint3& location, const SkPoint3& target, SkScalar falloffExponent, - SkScalar cutoffAngle, SkColor lightColor, SkScalar surfaceScale, SkScalar kd, - sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::DistantLitSpecular( - const SkPoint3& direction, SkColor lightColor, SkScalar surfaceScale, SkScalar ks, - SkScalar shininess, sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::PointLitSpecular( - const SkPoint3& location, SkColor lightColor, SkScalar surfaceScale, SkScalar ks, - SkScalar shininess, sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::SpotLitSpecular( - const SkPoint3& location, const SkPoint3& target, SkScalar falloffExponent, - SkScalar cutoffAngle, SkColor lightColor, SkScalar surfaceScale, SkScalar ks, - SkScalar shininess, sk_sp input, const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -void SkRegisterLightingImageFilterFlattenables() {} - -#endif // SK_ENABLE_SKSL diff --git a/src/effects/imagefilters/SkMagnifierImageFilter.cpp b/src/effects/imagefilters/SkMagnifierImageFilter.cpp index 2f0ae619115e..6bfa1934360a 100644 --- a/src/effects/imagefilters/SkMagnifierImageFilter.cpp +++ b/src/effects/imagefilters/SkMagnifierImageFilter.cpp @@ -9,32 +9,29 @@ #include "include/core/SkFlattenable.h" #include "include/core/SkImageFilter.h" +#include "include/core/SkM44.h" #include "include/core/SkMatrix.h" #include "include/core/SkPoint.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSamplingOptions.h" #include "include/core/SkScalar.h" +#include "include/core/SkShader.h" #include "include/core/SkSize.h" +#include "include/core/SkSpan.h" #include "include/core/SkTypes.h" +#include "include/effects/SkRuntimeEffect.h" #include "src/core/SkImageFilterTypes.h" #include "src/core/SkImageFilter_Base.h" #include "src/core/SkPicturePriv.h" #include "src/core/SkReadBuffer.h" +#include "src/core/SkRuntimeEffectPriv.h" #include "src/core/SkWriteBuffer.h" #include "src/effects/imagefilters/SkCropImageFilter.h" #include #include -#ifdef SK_ENABLE_SKSL -#include "include/core/SkM44.h" -#include "include/core/SkShader.h" -#include "include/core/SkSpan.h" -#include "include/effects/SkRuntimeEffect.h" -#include "src/core/SkRuntimeEffectPriv.h" -#endif - namespace { class SkMagnifierImageFilter final : public SkImageFilter_Base { @@ -141,7 +138,6 @@ void SkMagnifierImageFilter::flatten(SkWriteBuffer& buffer) const { //////////////////////////////////////////////////////////////////////////////// -#ifdef SK_ENABLE_SKSL static sk_sp make_magnifier_shader( sk_sp input, const skif::LayerSpace& lensBounds, @@ -189,7 +185,6 @@ static sk_sp make_magnifier_shader( return builder.makeShader(); } -#endif // SK_ENABLE_SKSL //////////////////////////////////////////////////////////////////////////////// @@ -263,11 +258,9 @@ skif::FilterResult SkMagnifierImageFilter::onFilterImage(const skif::Context& co // When there is no SkSL support, or there's a 0 inset, the magnifier is equivalent to a // rect->rect transform and crop. -#ifdef SK_ENABLE_SKSL skif::LayerSpace inset = context.mapping().paramToLayer( skif::ParameterSpace({fInset, fInset})); if (inset.width() <= 0.f || inset.height() <= 0.f) -#endif { // When applying the zoom as a direct transform, we only require the visibleSrcRect as // input from the child filter, and transform it by the inverse of zoomXform (to go from @@ -280,7 +273,6 @@ skif::FilterResult SkMagnifierImageFilter::onFilterImage(const skif::Context& co .applyCrop(context, lensBounds.roundOut()); } -#ifdef SK_ENABLE_SKSL using ShaderFlags = skif::FilterResult::ShaderFlags; skif::FilterResult::Builder builder{context}; builder.add(this->getChildOutput(0, context.withNewDesiredOutput(visibleLensBounds.roundOut())), @@ -290,7 +282,6 @@ skif::FilterResult SkMagnifierImageFilter::onFilterImage(const skif::Context& co return inputs[0] ? make_magnifier_shader(inputs[0], lensBounds, zoomXform, inset) : nullptr; }, lensBounds.roundOut()); -#endif } skif::LayerSpace SkMagnifierImageFilter::onGetInputLayerBounds( diff --git a/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp b/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp index 4e2151aa80ba..4a3ae14ef366 100644 --- a/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp +++ b/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp @@ -6,586 +6,8 @@ */ #include "include/effects/SkImageFilters.h" - -#if defined(SK_USE_LEGACY_CONVOLUTION_IMAGEFILTER) - -#include "include/core/SkAlphaType.h" -#include "include/core/SkBitmap.h" -#include "include/core/SkColor.h" -#include "include/core/SkColorPriv.h" -#include "include/core/SkColorSpace.h" -#include "include/core/SkColorType.h" -#include "include/core/SkFlattenable.h" -#include "include/core/SkImageFilter.h" -#include "include/core/SkImageInfo.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/SkTileMode.h" -#include "include/core/SkTypes.h" -#include "include/effects/SkImageFilters.h" -#include "include/private/base/SkMath.h" -#include "include/private/base/SkTPin.h" -#include "include/private/base/SkTemplates.h" -#include "src/core/SkImageFilterTypes.h" -#include "src/core/SkImageFilter_Base.h" -#include "src/core/SkReadBuffer.h" -#include "src/core/SkSpecialImage.h" -#include "src/core/SkWriteBuffer.h" - -#include -#include -#include -#include - -class SkMatrix; -class SkSurfaceProps; - -#if defined(SK_GANESH) -#include "include/gpu/GpuTypes.h" -#include "include/gpu/GrRecordingContext.h" -#include "include/gpu/GrTypes.h" -#include "include/private/gpu/ganesh/GrTypesPriv.h" -#include "src/gpu/SkBackingFit.h" -#include "src/gpu/ganesh/GrFragmentProcessor.h" -#include "src/gpu/ganesh/GrImageInfo.h" -#include "src/gpu/ganesh/GrRecordingContextPriv.h" -#include "src/gpu/ganesh/GrSurfaceProxy.h" -#include "src/gpu/ganesh/GrSurfaceProxyView.h" -#include "src/gpu/ganesh/SkGr.h" -#include "src/gpu/ganesh/SurfaceFillContext.h" -#include "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h" -#include "src/gpu/ganesh/image/SkSpecialImage_Ganesh.h" -#endif - -using namespace skia_private; - -namespace { - -class SkMatrixConvolutionImageFilter final : public SkImageFilter_Base { -public: - SkMatrixConvolutionImageFilter(const SkISize& kernelSize, const SkScalar* kernel, - SkScalar gain, SkScalar bias, const SkIPoint& kernelOffset, - SkTileMode tileMode, bool convolveAlpha, - sk_sp input, const SkRect* cropRect) - : INHERITED(&input, 1, cropRect) - , fKernelSize(kernelSize) - , fGain(gain) - , fBias(bias) - , fKernelOffset(kernelOffset) - , fTileMode(tileMode) - , fConvolveAlpha(convolveAlpha) { - size_t size = (size_t) sk_64_mul(fKernelSize.width(), fKernelSize.height()); - fKernel = new SkScalar[size]; - memcpy(fKernel, kernel, size * sizeof(SkScalar)); - SkASSERT(kernelSize.fWidth >= 1 && kernelSize.fHeight >= 1); - SkASSERT(kernelOffset.fX >= 0 && kernelOffset.fX < kernelSize.fWidth); - SkASSERT(kernelOffset.fY >= 0 && kernelOffset.fY < kernelSize.fHeight); - } - - ~SkMatrixConvolutionImageFilter() override { - delete[] fKernel; - } - -protected: - - void flatten(SkWriteBuffer&) const override; - - sk_sp onFilterImage(const skif::Context&, SkIPoint* offset) const override; - SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm, - MapDirection, const SkIRect* inputRect) const override; - bool onAffectsTransparentBlack() const override; - -private: - friend void ::SkRegisterMatrixConvolutionImageFilterFlattenable(); - SK_FLATTENABLE_HOOKS(SkMatrixConvolutionImageFilter) - - SkISize fKernelSize; - SkScalar* fKernel; - SkScalar fGain; - SkScalar fBias; - SkIPoint fKernelOffset; - SkTileMode fTileMode; - bool fConvolveAlpha; - - template - void filterPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - SkIRect rect, - const SkIRect& bounds) const; - template - void filterPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& bounds) const; - void filterInteriorPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& bounds) const; - void filterBorderPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& bounds) const; - - using INHERITED = SkImageFilter_Base; -}; - -class UncheckedPixelFetcher { -public: - static inline SkPMColor fetch(const SkBitmap& src, int x, int y, const SkIRect& bounds) { - return *src.getAddr32(x, y); - } -}; - -class ClampPixelFetcher { -public: - static inline SkPMColor fetch(const SkBitmap& src, int x, int y, const SkIRect& bounds) { - x = SkTPin(x, bounds.fLeft, bounds.fRight - 1); - y = SkTPin(y, bounds.fTop, bounds.fBottom - 1); - return *src.getAddr32(x, y); - } -}; - -class RepeatPixelFetcher { -public: - static inline SkPMColor fetch(const SkBitmap& src, int x, int y, const SkIRect& bounds) { - x = (x - bounds.left()) % bounds.width() + bounds.left(); - y = (y - bounds.top()) % bounds.height() + bounds.top(); - if (x < bounds.left()) { - x += bounds.width(); - } - if (y < bounds.top()) { - y += bounds.height(); - } - return *src.getAddr32(x, y); - } -}; - -class ClampToBlackPixelFetcher { -public: - static inline SkPMColor fetch(const SkBitmap& src, int x, int y, const SkIRect& bounds) { - if (x < bounds.fLeft || x >= bounds.fRight || y < bounds.fTop || y >= bounds.fBottom) { - return 0; - } else { - return *src.getAddr32(x, y); - } - } -}; - -} // end namespace - -sk_sp SkImageFilters::MatrixConvolution(const SkISize& kernelSize, - const SkScalar kernel[], - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - SkTileMode tileMode, - bool convolveAlpha, - sk_sp input, - const CropRect& cropRect) { - // We need to be able to read at most SK_MaxS32 bytes, so divide that - // by the size of a scalar to know how many scalars we can read. - static constexpr int32_t kMaxKernelSize = SK_MaxS32 / sizeof(SkScalar); - - if (kernelSize.width() < 1 || kernelSize.height() < 1) { - return nullptr; - } - if (kMaxKernelSize / kernelSize.fWidth < kernelSize.fHeight) { - return nullptr; - } - if (!kernel) { - return nullptr; - } - if ((kernelOffset.fX < 0) || (kernelOffset.fX >= kernelSize.fWidth) || - (kernelOffset.fY < 0) || (kernelOffset.fY >= kernelSize.fHeight)) { - return nullptr; - } - return sk_sp(new SkMatrixConvolutionImageFilter( - kernelSize, kernel, gain, bias, kernelOffset, tileMode, convolveAlpha, - std::move(input), cropRect)); -} - -void SkRegisterMatrixConvolutionImageFilterFlattenable() { - SK_REGISTER_FLATTENABLE(SkMatrixConvolutionImageFilter); - // TODO (michaelludwig) - Remove after grace period for SKPs to stop using old name - SkFlattenable::Register("SkMatrixConvolutionImageFilterImpl", - SkMatrixConvolutionImageFilter::CreateProc); -} - -sk_sp SkMatrixConvolutionImageFilter::CreateProc(SkReadBuffer& buffer) { - SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); - - SkISize kernelSize; - kernelSize.fWidth = buffer.readInt(); - kernelSize.fHeight = buffer.readInt(); - const int count = buffer.getArrayCount(); - - const int64_t kernelArea = sk_64_mul(kernelSize.width(), kernelSize.height()); - if (!buffer.validate(kernelArea == count)) { - return nullptr; - } - if (!buffer.validateCanReadN(count)) { - return nullptr; - } - AutoSTArray<16, SkScalar> kernel(count); - if (!buffer.readScalarArray(kernel.get(), count)) { - return nullptr; - } - SkScalar gain = buffer.readScalar(); - SkScalar bias = buffer.readScalar(); - SkIPoint kernelOffset; - kernelOffset.fX = buffer.readInt(); - kernelOffset.fY = buffer.readInt(); - - SkTileMode tileMode = buffer.read32LE(SkTileMode::kLastTileMode); - bool convolveAlpha = buffer.readBool(); - - if (!buffer.isValid()) { - return nullptr; - } - return SkImageFilters::MatrixConvolution( - kernelSize, kernel.get(), gain, bias, kernelOffset, tileMode, - convolveAlpha, common.getInput(0), common.cropRect()); -} - -void SkMatrixConvolutionImageFilter::flatten(SkWriteBuffer& buffer) const { - this->INHERITED::flatten(buffer); - buffer.writeInt(fKernelSize.fWidth); - buffer.writeInt(fKernelSize.fHeight); - buffer.writeScalarArray(fKernel, fKernelSize.fWidth * fKernelSize.fHeight); - buffer.writeScalar(fGain); - buffer.writeScalar(fBias); - buffer.writeInt(fKernelOffset.fX); - buffer.writeInt(fKernelOffset.fY); - buffer.writeInt((int) fTileMode); - buffer.writeBool(fConvolveAlpha); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -template -void SkMatrixConvolutionImageFilter::filterPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - SkIRect rect, - const SkIRect& bounds) const { - if (!rect.intersect(bounds)) { - return; - } - for (int y = rect.fTop; y < rect.fBottom; ++y) { - SkPMColor* dptr = result->getAddr32(rect.fLeft - offset.fX, y - offset.fY); - for (int x = rect.fLeft; x < rect.fRight; ++x) { - SkScalar sumA = 0, sumR = 0, sumG = 0, sumB = 0; - for (int cy = 0; cy < fKernelSize.fHeight; cy++) { - for (int cx = 0; cx < fKernelSize.fWidth; cx++) { - SkPMColor s = PixelFetcher::fetch(src, - x + cx - fKernelOffset.fX, - y + cy - fKernelOffset.fY, - bounds); - SkScalar k = fKernel[cy * fKernelSize.fWidth + cx]; - if (convolveAlpha) { - sumA += SkGetPackedA32(s) * k; - } - sumR += SkGetPackedR32(s) * k; - sumG += SkGetPackedG32(s) * k; - sumB += SkGetPackedB32(s) * k; - } - } - int a = convolveAlpha - ? SkTPin(SkScalarFloorToInt(sumA * fGain + fBias), 0, 255) - : 255; - int r = SkTPin(SkScalarFloorToInt(sumR * fGain + fBias), 0, a); - int g = SkTPin(SkScalarFloorToInt(sumG * fGain + fBias), 0, a); - int b = SkTPin(SkScalarFloorToInt(sumB * fGain + fBias), 0, a); - if (!convolveAlpha) { - a = SkGetPackedA32(PixelFetcher::fetch(src, x, y, bounds)); - *dptr++ = SkPreMultiplyARGB(a, r, g, b); - } else { - *dptr++ = SkPackARGB32(a, r, g, b); - } - } - } -} - -template -void SkMatrixConvolutionImageFilter::filterPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& bounds) const { - if (fConvolveAlpha) { - filterPixels(src, result, offset, rect, bounds); - } else { - filterPixels(src, result, offset, rect, bounds); - } -} - -void SkMatrixConvolutionImageFilter::filterInteriorPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& bounds) const { - switch (fTileMode) { - case SkTileMode::kMirror: - // TODO (michaelludwig) - Implement mirror tiling, treat as repeat for now. - case SkTileMode::kRepeat: - // In repeat mode, we still need to wrap the samples around the src - filterPixels(src, result, offset, rect, bounds); - break; - case SkTileMode::kClamp: - // Fall through - case SkTileMode::kDecal: - filterPixels(src, result, offset, rect, bounds); - break; - } -} - -void SkMatrixConvolutionImageFilter::filterBorderPixels(const SkBitmap& src, - SkBitmap* result, - SkIVector& offset, - const SkIRect& rect, - const SkIRect& srcBounds) const { - switch (fTileMode) { - case SkTileMode::kClamp: - filterPixels(src, result, offset, rect, srcBounds); - break; - case SkTileMode::kMirror: - // TODO (michaelludwig) - Implement mirror tiling, treat as repeat for now. - case SkTileMode::kRepeat: - filterPixels(src, result, offset, rect, srcBounds); - break; - case SkTileMode::kDecal: - filterPixels(src, result, offset, rect, srcBounds); - break; - } -} - -#if defined(SK_GANESH) -static sk_sp draw_with_fp(GrRecordingContext* rContext, - std::unique_ptr fp, - const SkIRect& bounds, - SkColorType colorType, - const SkColorSpace* colorSpace, - const SkSurfaceProps& surfaceProps, - GrSurfaceOrigin surfaceOrigin, - GrProtected isProtected) { - GrImageInfo info(SkColorTypeToGrColorType(colorType), - kPremul_SkAlphaType, - sk_ref_sp(colorSpace), - bounds.size()); - - auto sfc = rContext->priv().makeSFC(info, - "ImageFilterBase_DrawWithFP", - SkBackingFit::kApprox, - 1, - GrMipmapped::kNo, - isProtected, - surfaceOrigin); - if (!sfc) { - return nullptr; - } - - SkIRect dstIRect = SkIRect::MakeWH(bounds.width(), bounds.height()); - SkRect srcRect = SkRect::Make(bounds); - sfc->fillRectToRectWithFP(srcRect, dstIRect, std::move(fp)); - - return SkSpecialImages::MakeDeferredFromGpu(rContext, - dstIRect, - kNeedNewImageUniqueID_SpecialImage, - sfc->readSurfaceView(), - sfc->colorInfo(), - surfaceProps); -} -#endif - -sk_sp SkMatrixConvolutionImageFilter::onFilterImage(const skif::Context& ctx, - SkIPoint* offset) const { - SkIPoint inputOffset = SkIPoint::Make(0, 0); - sk_sp input(this->filterInput(0, ctx, &inputOffset)); - if (!input) { - return nullptr; - } - - SkIRect dstBounds; - input = this->applyCropRectAndPad(this->mapContext(ctx), input.get(), &inputOffset, &dstBounds); - if (!input) { - return nullptr; - } - - const SkIRect originalSrcBounds = SkIRect::MakeXYWH(inputOffset.fX, inputOffset.fY, - input->width(), input->height()); - - SkIRect srcBounds = this->onFilterNodeBounds(dstBounds, ctx.ctm(), kReverse_MapDirection, - &originalSrcBounds); - - if (SkTileMode::kRepeat == fTileMode || SkTileMode::kMirror == fTileMode) { - srcBounds = DetermineRepeatedSrcBound(srcBounds, fKernelOffset, - fKernelSize, originalSrcBounds); - } else { - if (!srcBounds.intersect(dstBounds)) { - return nullptr; - } - } - -#if defined(SK_GANESH) - if (ctx.gpuBacked()) { - auto context = ctx.getContext(); - - // Ensure the input is in the destination color space. Typically applyCropRect will have - // called pad_image to account for our dilation of bounds, so the result will already be - // moved to the destination color space. If a filter DAG avoids that, then we use this - // fall-back, which saves us from having to do the xform during the filter itself. - input = SkSpecialImages::ImageToColorSpace(ctx, input.get()); - - GrSurfaceProxyView inputView = SkSpecialImages::AsView(context, input); - SkASSERT(inputView.asTextureProxy()); - - const auto isProtected = inputView.proxy()->isProtected(); - const auto origin = inputView.origin(); - - offset->fX = dstBounds.left(); - offset->fY = dstBounds.top(); - dstBounds.offset(-inputOffset); - srcBounds.offset(-inputOffset); - // Map srcBounds from input's logical image domain to that of the proxy - srcBounds.offset(input->subset().x(), input->subset().y()); - - auto fp = GrMatrixConvolutionEffect::Make(context, - std::move(inputView), - srcBounds, - fKernelSize, - fKernel, - fGain, - fBias, - fKernelOffset, - SkTileModeToWrapMode(fTileMode), - fConvolveAlpha, - *ctx.getContext()->priv().caps()); - if (!fp) { - return nullptr; - } - - // FIXME (michaelludwig) - Clean this up as part of the imagefilter refactor, some filters - // instead require a coord transform on the FP. At very least, be consistent, at best make - // it so that filter impls don't need to worry about the subset origin. - - // Must also map the dstBounds since it is used as the src rect in DrawWithFP when - // evaluating the FP, and the dst rect just uses the size of dstBounds. - dstBounds.offset(input->subset().x(), input->subset().y()); - return draw_with_fp(context, std::move(fp), dstBounds, ctx.colorType(), ctx.colorSpace(), - ctx.surfaceProps(), origin, isProtected); - } -#endif - - SkBitmap inputBM; - if (!input->getROPixels(&inputBM)) { - return nullptr; - } - - if (inputBM.colorType() != kN32_SkColorType) { - return nullptr; - } - - if (!fConvolveAlpha && !inputBM.isOpaque()) { - // This leaves the bitmap tagged as premul, which seems weird to me, - // but is consistent with old behavior. - inputBM.readPixels(inputBM.info().makeAlphaType(kUnpremul_SkAlphaType), - inputBM.getPixels(), inputBM.rowBytes(), 0,0); - } - - if (!inputBM.getPixels()) { - return nullptr; - } - - const SkImageInfo info = SkImageInfo::MakeN32(dstBounds.width(), dstBounds.height(), - inputBM.alphaType()); - - SkBitmap dst; - if (!dst.tryAllocPixels(info)) { - return nullptr; - } - - offset->fX = dstBounds.fLeft; - offset->fY = dstBounds.fTop; - dstBounds.offset(-inputOffset); - srcBounds.offset(-inputOffset); - - SkIRect interior; - if (SkTileMode::kRepeat == fTileMode || SkTileMode::kMirror == fTileMode) { - // In repeat mode, the filterPixels calls will wrap around - // so we just need to render 'dstBounds' - interior = dstBounds; - } else { - interior = SkIRect::MakeXYWH(dstBounds.left() + fKernelOffset.fX, - dstBounds.top() + fKernelOffset.fY, - dstBounds.width() - fKernelSize.fWidth + 1, - dstBounds.height() - fKernelSize.fHeight + 1); - } - - SkIRect top = SkIRect::MakeLTRB(dstBounds.left(), dstBounds.top(), - dstBounds.right(), interior.top()); - SkIRect bottom = SkIRect::MakeLTRB(dstBounds.left(), interior.bottom(), - dstBounds.right(), dstBounds.bottom()); - SkIRect left = SkIRect::MakeLTRB(dstBounds.left(), interior.top(), - interior.left(), interior.bottom()); - SkIRect right = SkIRect::MakeLTRB(interior.right(), interior.top(), - dstBounds.right(), interior.bottom()); - - SkIVector dstContentOffset = { offset->fX - inputOffset.fX, offset->fY - inputOffset.fY }; - - this->filterBorderPixels(inputBM, &dst, dstContentOffset, top, srcBounds); - this->filterBorderPixels(inputBM, &dst, dstContentOffset, left, srcBounds); - this->filterInteriorPixels(inputBM, &dst, dstContentOffset, interior, srcBounds); - this->filterBorderPixels(inputBM, &dst, dstContentOffset, right, srcBounds); - this->filterBorderPixels(inputBM, &dst, dstContentOffset, bottom, srcBounds); - - return SkSpecialImages::MakeFromRaster( - SkIRect::MakeWH(dstBounds.width(), dstBounds.height()), dst, ctx.surfaceProps()); -} - -SkIRect SkMatrixConvolutionImageFilter::onFilterNodeBounds( - const SkIRect& src, const SkMatrix& ctm, MapDirection dir, const SkIRect* inputRect) const { - if (kReverse_MapDirection == dir && inputRect && - (SkTileMode::kRepeat == fTileMode || SkTileMode::kMirror == fTileMode)) { - SkASSERT(inputRect); - return DetermineRepeatedSrcBound(src, fKernelOffset, fKernelSize, *inputRect); - } - - SkIRect dst = src; - int w = fKernelSize.width() - 1, h = fKernelSize.height() - 1; - - if (kReverse_MapDirection == dir) { - dst.adjust(-fKernelOffset.fX, -fKernelOffset.fY, - w - fKernelOffset.fX, h - fKernelOffset.fY); - } else { - dst.adjust(fKernelOffset.fX - w, fKernelOffset.fY - h, fKernelOffset.fX, fKernelOffset.fY); - } - return dst; -} - -bool SkMatrixConvolutionImageFilter::onAffectsTransparentBlack() const { - // It seems that the only rational way for repeat sample mode to work is if the caller - // explicitly restricts the input in which case the input range is explicitly known and - // specified. - // TODO: is seems that this should be true for clamp mode too. - - // For the other modes, because the kernel is applied in device-space, we have no idea what - // pixels it will affect in object-space. - return SkTileMode::kRepeat != fTileMode && SkTileMode::kMirror != fTileMode; -} - -#else - #include "src/effects/imagefilters/SkCropImageFilter.h" -#ifdef SK_ENABLE_SKSL - #include "include/core/SkAlphaType.h" #include "include/core/SkBitmap.h" #include "include/core/SkColorType.h" @@ -640,10 +62,6 @@ static constexpr int kMaxKernelDimension = 2048; // smaller orders like 3x3 or 5x4, etc.), but must be a multiple of 4 for better packing in std140. static constexpr int kMaxUniformKernelSize = 28; -// TODO: This replicates a lot of the logic in GrMatrixConvolutionEffect::KernelWrapper. Once -// fully landed, GrMatrixConvolutionEffect will only be used for 2D Gaussian blurs, in which case -// its support for texture-backed kernels can be removed. It may also be fully removed if the 2D -// logic can be folded into GrGaussianConvolutionFragmentProcessor. SkBitmap create_kernel_bitmap(const SkISize& kernelSize, const float* kernel, float* innerGain, float* innerBias); @@ -1154,24 +572,3 @@ SkRect SkMatrixConvolutionImageFilter::computeFastBounds(const SkRect& bounds) c // expectations of an image filter that "affects" transparent black. return SkRectPriv::MakeLargeS32(); } - -#else - -// The matrix convolution effect requires SkSL, just return the input, possibly cropped -sk_sp SkImageFilters::MatrixConvolution(const SkISize& kernelSize, - const SkScalar kernel[], - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - SkTileMode tileMode, - bool convolveAlpha, - sk_sp input, - const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -void SkRegisterMatrixConvolutionImageFilterFlattenable() {} - -#endif - -#endif // SK_USE_LEGACY_CONVOLUTION_IMAGEFILTER diff --git a/src/effects/imagefilters/SkMergeImageFilter.cpp b/src/effects/imagefilters/SkMergeImageFilter.cpp index 206efe4577fd..5bd8311e410d 100644 --- a/src/effects/imagefilters/SkMergeImageFilter.cpp +++ b/src/effects/imagefilters/SkMergeImageFilter.cpp @@ -24,7 +24,9 @@ namespace { class SkMergeImageFilter final : public SkImageFilter_Base { public: SkMergeImageFilter(sk_sp* const filters, int count) - : SkImageFilter_Base(filters, count, nullptr) {} + : SkImageFilter_Base(filters, count, nullptr) { + SkASSERT(filters && count > 0); + } SkRect computeFastBounds(const SkRect&) const override; @@ -52,6 +54,10 @@ class SkMergeImageFilter final : public SkImageFilter_Base { sk_sp SkImageFilters::Merge(sk_sp* const filters, int count, const CropRect& cropRect) { + if (count <= 0 || !filters) { + return SkImageFilters::Empty(); + } + sk_sp filter{new SkMergeImageFilter(filters, count)}; if (cropRect) { filter = SkMakeCropImageFilter(*cropRect, std::move(filter)); @@ -89,31 +95,22 @@ skif::LayerSpace SkMergeImageFilter::onGetInputLayerBounds( const skif::LayerSpace& desiredOutput, const skif::LayerSpace& contentBounds) const { const int inputCount = this->countInputs(); - if (inputCount <= 0) { - // A leaf, so no required input or recursion - return skif::LayerSpace::Empty(); - } else { - // Union of all child input bounds so that one source image can provide for all of them. - return skif::LayerSpace::Union( - inputCount, - [&](int i) { - return this->getChildInputLayerBounds(i, mapping, desiredOutput, contentBounds); - }); - } + // Union of all child input bounds so that one source image can provide for all of them. + return skif::LayerSpace::Union( + inputCount, + [&](int i) { + return this->getChildInputLayerBounds(i, mapping, desiredOutput, contentBounds); + }); } skif::LayerSpace SkMergeImageFilter::onGetOutputLayerBounds( const skif::Mapping& mapping, const skif::LayerSpace& contentBounds) const { const int inputCount = this->countInputs(); - if (inputCount <= 0) { - return skif::LayerSpace::Empty(); // Transparent black - } else { - // Merge is src-over of all child outputs, so covers their union but no more - return skif::LayerSpace::Union( - inputCount, - [&](int i) { return this->getChildOutputLayerBounds(i, mapping, contentBounds); }); - } + // Merge is src-over of all child outputs, so covers their union but no more + return skif::LayerSpace::Union( + inputCount, + [&](int i) { return this->getChildOutputLayerBounds(i, mapping, contentBounds); }); } SkRect SkMergeImageFilter::computeFastBounds(const SkRect& rect) const { @@ -122,9 +119,5 @@ SkRect SkMergeImageFilter::computeFastBounds(const SkRect& rect) const { // base implementation when there are filters to merge. // TODO: When the bounds update is complete, this default implementation may go away and we // can move the union'ing logic here. - if (this->countInputs() <= 0) { - return SkRect::MakeEmpty(); - } else { - return SkImageFilter_Base::computeFastBounds(rect); - } + return SkImageFilter_Base::computeFastBounds(rect); } diff --git a/src/effects/imagefilters/SkMorphologyImageFilter.cpp b/src/effects/imagefilters/SkMorphologyImageFilter.cpp index 5cc9871aa909..105b6d6e7b36 100644 --- a/src/effects/imagefilters/SkMorphologyImageFilter.cpp +++ b/src/effects/imagefilters/SkMorphologyImageFilter.cpp @@ -8,8 +8,6 @@ #include "include/effects/SkImageFilters.h" #include "src/effects/imagefilters/SkCropImageFilter.h" -#ifdef SK_ENABLE_SKSL - #include "include/core/SkFlattenable.h" #include "include/core/SkImageFilter.h" #include "include/core/SkM44.h" @@ -343,22 +341,3 @@ SkRect SkMorphologyImageFilter::computeFastBounds(const SkRect& src) const { } return bounds; } - -#else - -// The morphology effects requires SkSL, just return the input, possibly cropped -sk_sp SkImageFilters::Dilate(SkScalar radiusX, SkScalar radiusY, - sk_sp input, - const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -sk_sp SkImageFilters::Erode(SkScalar radiusX, SkScalar radiusY, - sk_sp input, - const CropRect& cropRect) { - return cropRect ? SkMakeCropImageFilter(*cropRect, std::move(input)) : input; -} - -void SkRegisterMorphologyImageFilterFlattenables() {} - -#endif diff --git a/src/effects/imagefilters/SkPictureImageFilter.cpp b/src/effects/imagefilters/SkPictureImageFilter.cpp index 3e6ec7056594..0932d0d77180 100644 --- a/src/effects/imagefilters/SkPictureImageFilter.cpp +++ b/src/effects/imagefilters/SkPictureImageFilter.cpp @@ -31,8 +31,7 @@ class SkPictureImageFilter final : public SkImageFilter_Base { , fPicture(std::move(picture)) , fCullRect(cullRect) { // The external cullrect should already have been intersected with the internal cull rect - SkASSERT((!fPicture && cullRect.isEmpty()) || - (fPicture && fPicture->cullRect().contains(cullRect))); + SkASSERT(fPicture && fPicture->cullRect().contains(cullRect)); } SkRect computeFastBounds(const SkRect&) const override { return SkRect(fCullRect); } @@ -70,8 +69,7 @@ sk_sp SkImageFilters::Picture(sk_sp pic, const SkRect& return sk_sp(new SkPictureImageFilter(std::move(pic), cullRect)); } } - // Will always produce an empty image - return sk_sp(new SkPictureImageFilter(nullptr, SkRect::MakeEmpty())); + return SkImageFilters::Empty(); } void SkRegisterPictureImageFilterFlattenable() { @@ -116,11 +114,6 @@ skif::LayerSpace SkPictureImageFilter::onGetInputLayerBounds( skif::LayerSpace SkPictureImageFilter::onGetOutputLayerBounds( const skif::Mapping& mapping, const skif::LayerSpace&) const { - if (fPicture) { - // The output is the transformed bounds of the picture. - return mapping.paramToLayer(fCullRect).roundOut(); - } else { - // An empty picture is fully transparent - return skif::LayerSpace::Empty(); - } + // The output is the transformed bounds of the picture. + return mapping.paramToLayer(fCullRect).roundOut(); } diff --git a/src/effects/imagefilters/SkRuntimeImageFilter.cpp b/src/effects/imagefilters/SkRuntimeImageFilter.cpp index 9a4f21e09f8c..a34b64d348db 100644 --- a/src/effects/imagefilters/SkRuntimeImageFilter.cpp +++ b/src/effects/imagefilters/SkRuntimeImageFilter.cpp @@ -7,8 +7,6 @@ #include "include/effects/SkImageFilters.h" -#ifdef SK_ENABLE_SKSL - #include "include/core/SkData.h" #include "include/core/SkFlattenable.h" #include "include/core/SkImageFilter.h" @@ -302,5 +300,3 @@ SkRect SkRuntimeImageFilter::computeFastBounds(const SkRect& src) const { // Can't predict what the RT Shader will generate (see onGetOutputLayerBounds) return SkRectPriv::MakeLargeS32(); } - -#endif // SK_ENABLE_SKSL diff --git a/src/effects/imagefilters/SkShaderImageFilter.cpp b/src/effects/imagefilters/SkShaderImageFilter.cpp index 1276cc2973a8..706e125c5e68 100644 --- a/src/effects/imagefilters/SkShaderImageFilter.cpp +++ b/src/effects/imagefilters/SkShaderImageFilter.cpp @@ -31,10 +31,12 @@ class SkShaderImageFilter final : public SkImageFilter_Base { SkShaderImageFilter(sk_sp shader, SkImageFilters::Dither dither) : SkImageFilter_Base(nullptr, 0, nullptr) , fShader(std::move(shader)) - , fDither(dither) {} + , fDither(dither) { + SkASSERT(fShader); + } SkRect computeFastBounds(const SkRect& /*bounds*/) const override { - return fShader ? SkRectPriv::MakeLargeS32() : SkRect::MakeEmpty(); + return SkRectPriv::MakeLargeS32(); } protected: @@ -68,6 +70,10 @@ class SkShaderImageFilter final : public SkImageFilter_Base { sk_sp SkImageFilters::Shader(sk_sp shader, Dither dither, const CropRect& cropRect) { + if (!shader) { + return SkImageFilters::Empty(); + } + sk_sp filter{new SkShaderImageFilter(std::move(shader), dither)}; if (cropRect) { filter = SkMakeCropImageFilter(*cropRect, std::move(filter)); @@ -126,12 +132,7 @@ skif::LayerSpace SkShaderImageFilter::onGetInputLayerBounds( skif::LayerSpace SkShaderImageFilter::onGetOutputLayerBounds( const skif::Mapping&, const skif::LayerSpace&) const { - if (fShader) { - // The output of a shader is infinite, unless we were to inspect the shader for a decal - // tile mode around a gradient or image. - return skif::LayerSpace(SkRectPriv::MakeILarge()); - } else { - // An empty shader is fully transparent - return skif::LayerSpace::Empty(); - } + // The output of a shader is infinite, unless we were to inspect the shader for a decal + // tile mode around a gradient or image. + return skif::LayerSpace(SkRectPriv::MakeILarge()); } diff --git a/src/gpu/AtlasTypes.cpp b/src/gpu/AtlasTypes.cpp index 81d87dda631b..632460a47499 100644 --- a/src/gpu/AtlasTypes.cpp +++ b/src/gpu/AtlasTypes.cpp @@ -8,7 +8,7 @@ #include "src/gpu/AtlasTypes.h" #include "include/private/base/SkMalloc.h" -#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" namespace skgpu { diff --git a/src/gpu/BUILD.bazel b/src/gpu/BUILD.bazel index d5bb28ba29a1..3d7a1428dfd7 100644 --- a/src/gpu/BUILD.bazel +++ b/src/gpu/BUILD.bazel @@ -14,6 +14,8 @@ SHARED_FILES = [ "Blend.h", "BlendFormula.cpp", "BlendFormula.h", + "BlurUtils.cpp", + "BlurUtils.h", "BufferWriter.h", "DitherUtils.cpp", "DitherUtils.h", @@ -56,7 +58,6 @@ string_flag_with_values( name = "gpu_backend", multiple = True, values = [ - "dawn_ganesh", "gl_ganesh", "metal_ganesh", "vulkan_ganesh", @@ -78,7 +79,6 @@ string_flag_with_values( selects.config_setting_group( name = "has_ganesh_backend", match_any = [ - ":dawn_ganesh", ":gl_ganesh", ":metal_ganesh", ":vulkan_ganesh", @@ -119,7 +119,6 @@ bool_flag( selects.config_setting_group( name = "has_dawn", match_any = [ - ":dawn_ganesh", ":dawn_graphite", ], ) diff --git a/src/gpu/BlurUtils.cpp b/src/gpu/BlurUtils.cpp new file mode 100644 index 000000000000..32cd6dfbe77d --- /dev/null +++ b/src/gpu/BlurUtils.cpp @@ -0,0 +1,296 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "src/gpu/BlurUtils.h" + +#include "include/effects/SkRuntimeEffect.h" +#include "src/base/SkMathPriv.h" +#include "src/core/SkRuntimeEffectPriv.h" + +#include + +namespace skgpu { + +void Compute2DBlurKernel(SkSize sigma, + SkISize radius, + SkSpan kernel) { + // Callers likely had to calculate the radius prior to filling out the kernel value, which is + // why it's provided; but make sure it's consistent with expectations. + SkASSERT(BlurSigmaRadius(sigma.width()) == radius.width() && + BlurSigmaRadius(sigma.height()) == radius.height()); + + // Callers are responsible for downscaling large sigmas to values that can be processed by the + // effects, so ensure the radius won't overflow 'kernel' + const int width = BlurKernelWidth(radius.width()); + const int height = BlurKernelWidth(radius.height()); + const size_t kernelSize = SkTo(sk_64_mul(width, height)); + SkASSERT(kernelSize <= kernel.size()); + + // And the definition of an identity blur should be sufficient that 2sigma^2 isn't near zero + // when there's a non-trivial radius. + const float twoSigmaSqrdX = 2.0f * sigma.width() * sigma.width(); + const float twoSigmaSqrdY = 2.0f * sigma.height() * sigma.height(); + SkASSERT((radius.width() == 0 || !SkScalarNearlyZero(twoSigmaSqrdX)) && + (radius.height() == 0 || !SkScalarNearlyZero(twoSigmaSqrdY))); + + // Setting the denominator to 1 when the radius is 0 automatically converts the remaining math + // to the 1D Gaussian distribution. When both radii are 0, it correctly computes a weight of 1.0 + const float sigmaXDenom = radius.width() > 0 ? 1.0f / twoSigmaSqrdX : 1.f; + const float sigmaYDenom = radius.height() > 0 ? 1.0f / twoSigmaSqrdY : 1.f; + + float sum = 0.0f; + for (int x = 0; x < width; x++) { + float xTerm = static_cast(x - radius.width()); + xTerm = xTerm * xTerm * sigmaXDenom; + for (int y = 0; y < height; y++) { + float yTerm = static_cast(y - radius.height()); + float xyTerm = sk_float_exp(-(xTerm + yTerm * yTerm * sigmaYDenom)); + // Note that the constant term (1/(sqrt(2*pi*sigma^2)) of the Gaussian + // is dropped here, since we renormalize the kernel below. + kernel[y * width + x] = xyTerm; + sum += xyTerm; + } + } + // Normalize the kernel + float scale = 1.0f / sum; + for (size_t i = 0; i < kernelSize; ++i) { + kernel[i] *= scale; + } + // Zero remainder of the array + memset(kernel.data() + kernelSize, 0, sizeof(float)*(kernel.size() - kernelSize)); +} + +void Compute2DBlurKernel(SkSize sigma, + SkISize radii, + std::array& kernel) { + static_assert(sizeof(kernel) == sizeof(std::array)); + static_assert(alignof(float) == alignof(SkV4)); + float* data = kernel[0].ptr(); + Compute2DBlurKernel(sigma, radii, SkSpan(data, kMaxBlurSamples)); +} + +void Compute1DBlurLinearKernel(float sigma, + int radius, + std::array& offsetsAndKernel) { + SkASSERT(sigma <= kMaxLinearBlurSigma); + SkASSERT(radius == BlurSigmaRadius(sigma)); + SkASSERT(BlurLinearKernelWidth(radius) <= kMaxBlurSamples); + + // Given 2 adjacent gaussian points, they are blended as: Wi * Ci + Wj * Cj. + // The GPU will mix Ci and Cj as Ci * (1 - x) + Cj * x during sampling. + // Compute W', x such that W' * (Ci * (1 - x) + Cj * x) = Wi * Ci + Wj * Cj. + // Solving W' * x = Wj, W' * (1 - x) = Wi: + // W' = Wi + Wj + // x = Wj / (Wi + Wj) + auto get_new_weight = [](float* new_w, float* offset, float wi, float wj) { + *new_w = wi + wj; + *offset = wj / (wi + wj); + }; + + // Create a temporary standard kernel. The maximum blur radius that can be passed to this + // function is (kMaxBlurSamples-1), so make an array large enough to hold the full kernel width. + static constexpr int kMaxKernelWidth = BlurKernelWidth(kMaxBlurSamples - 1); + SkASSERT(BlurKernelWidth(radius) <= kMaxKernelWidth); + std::array fullKernel; + Compute1DBlurKernel(sigma, radius, SkSpan{fullKernel.data(), BlurKernelWidth(radius)}); + + std::array kernel; + std::array offsets; + // Note that halfsize isn't just size / 2, but radius + 1. This is the size of the output array. + int halfSize = skgpu::BlurLinearKernelWidth(radius); + int halfRadius = halfSize / 2; + int lowIndex = halfRadius - 1; + + // Compute1DGaussianKernel produces a full 2N + 1 kernel. Since the kernel can be mirrored, + // compute only the upper half and mirror to the lower half. + + int index = radius; + if (radius & 1) { + // If N is odd, then use two samples. + // The centre texel gets sampled twice, so halve its influence for each sample. + // We essentially sample like this: + // Texel edges + // v v v v + // | | | | + // \-----^---/ Lower sample + // \---^-----/ Upper sample + get_new_weight(&kernel[halfRadius], + &offsets[halfRadius], + fullKernel[index] * 0.5f, + fullKernel[index + 1]); + kernel[lowIndex] = kernel[halfRadius]; + offsets[lowIndex] = -offsets[halfRadius]; + index++; + lowIndex--; + } else { + // If N is even, then there are an even number of texels on either side of the centre texel. + // Sample the centre texel directly. + kernel[halfRadius] = fullKernel[index]; + offsets[halfRadius] = 0.0f; + } + index++; + + // Every other pair gets one sample. + for (int i = halfRadius + 1; i < halfSize; index += 2, i++, lowIndex--) { + get_new_weight(&kernel[i], &offsets[i], fullKernel[index], fullKernel[index + 1]); + offsets[i] += static_cast(index - radius); + + // Mirror to lower half. + kernel[lowIndex] = kernel[i]; + offsets[lowIndex] = -offsets[i]; + } + + // Zero out remaining values in the kernel + memset(kernel.data() + halfSize, 0, sizeof(float)*(kMaxBlurSamples - halfSize)); + // But copy the last valid offset into the remaining offsets, to increase the chance that + // over-iteration in a fragment shader will have a cache hit. + for (int i = halfSize; i < kMaxBlurSamples; ++i) { + offsets[i] = offsets[halfSize - 1]; + } + + // Interleave into the output array to match the 1D SkSL effect + for (int i = 0; i < skgpu::kMaxBlurSamples / 2; ++i) { + offsetsAndKernel[i] = SkV4{offsets[2*i], kernel[2*i], offsets[2*i+1], kernel[2*i+1]}; + } +} + +const SkRuntimeEffect* GetLinearBlur1DEffect(int radius) { + static const auto makeEffect = [](int kernelWidth) { + SkASSERT(kernelWidth <= kMaxBlurSamples); + return SkMakeRuntimeEffect(SkRuntimeEffect::MakeForShader, + SkStringPrintf( + // The coefficients are always stored for the max radius to keep the + // uniform block consistent across all effects. + "const int kMaxUniformKernelSize = %d / 2;" + // But we generate an exact loop over the kernel size. Note that this + // program can be used for kernels smaller than the constructed max as long + // as the kernel weights for excess entries are set to 0. + "const int kMaxLoopLimit = %d;" + + "uniform half4 offsetsAndKernel[kMaxUniformKernelSize];" + "uniform half2 dir;" + "uniform shader child;" + + "half4 main(float2 coord) {" + "half4 sum = half4(0);" + "for (int i = 0; i < kMaxLoopLimit; ++i) {" + "half4 s = offsetsAndKernel[i];" + "sum += s.y * child.eval(coord + s.x*dir);" + "sum += s.w * child.eval(coord + s.z*dir);" + "}" + "if (%d != 0) {" + "half4 s = offsetsAndKernel[%d];" + "sum += s.y * child.eval(coord + s.x*dir);" + "}" + "return sum;" + "}", kMaxBlurSamples, kernelWidth/2, kernelWidth%2, kernelWidth/2).c_str()); + }; + + const int kernelWidth = BlurLinearKernelWidth(radius); + SkASSERT(kernelWidth >= 2 && kernelWidth <= kMaxBlurSamples); + switch(kernelWidth) { + // Batch on multiples of 4 (skipping width=1, since that can't happen) + case 2: [[fallthrough]]; + case 3: [[fallthrough]]; + case 4: { static const SkRuntimeEffect* effect = makeEffect(4); return effect; } + case 5: [[fallthrough]]; + case 6: [[fallthrough]]; + case 7: [[fallthrough]]; + case 8: { static const SkRuntimeEffect* effect = makeEffect(8); return effect; } + case 9: [[fallthrough]]; + case 10: [[fallthrough]]; + case 11: [[fallthrough]]; + case 12: { static const SkRuntimeEffect* effect = makeEffect(12); return effect; } + case 13: [[fallthrough]]; + case 14: [[fallthrough]]; + case 15: [[fallthrough]]; + case 16: { static const SkRuntimeEffect* effect = makeEffect(16); return effect; } + case 17: [[fallthrough]]; + case 18: [[fallthrough]]; + case 19: [[fallthrough]]; + // With larger kernels, batch on multiples of eight so up to 7 wasted samples. + case 20: { static const SkRuntimeEffect* effect = makeEffect(20); return effect; } + case 21: [[fallthrough]]; + case 22: [[fallthrough]]; + case 23: [[fallthrough]]; + case 24: [[fallthrough]]; + case 25: [[fallthrough]]; + case 26: [[fallthrough]]; + case 27: [[fallthrough]]; + case 28: { static const SkRuntimeEffect* effect = makeEffect(28); return effect; } + default: + SkUNREACHABLE; + } +} + +const SkRuntimeEffect* GetBlur2DEffect(const SkISize& radii) { + // TODO(michaelludwig): This shares a lot of similarity with the matrix convolution image filter + // with convolveAlpha=true and a centered kernel size and offset (represented by just radii). + // Perhaps it can be consolidated by having the runtime effect call out to module functions? + static const auto makeEffect = [](int maxKernelSize) { + SkASSERT(maxKernelSize % 4 == 0); + return SkMakeRuntimeEffect(SkRuntimeEffect::MakeForShader, + SkStringPrintf( + // The coefficients are always stored for the max radius to keep the + // uniform block consistent across all effects. + "const int kMaxUniformKernelSize = %d / 4;" + // But to help lower-end GPUs with unrolling, we bucket the max loop level. + "const int kMaxLoopLimit = %d / 4;" + + // Pack scalar coefficients into half4 for better packing on std140 + "uniform half4 kernel[kMaxUniformKernelSize];" + "uniform int2 radii;" + "uniform shader child;" + + "half4 main(float2 coord) {" + "half4 sum = half4(0);" + + // The constant 1D loop will iterate kernelPos over + // [-radii.x,radii.x]X[-radii.y,radii.y]. + "int2 kernelPos = -radii;" + "for (int i = 0; i < kMaxLoopLimit; ++i) {" + "if (kernelPos.y > radii.y) { break; }" + + "half4 k4 = kernel[i];" + "for (int j = 0; j < 4; ++j) {" + "if (kernelPos.y > radii.y) { break; }" + "half k = k4[j];" + + "half4 c = child.eval(coord + half2(kernelPos));" + "sum += c*k;" + + "kernelPos.x += 1;" + "if (kernelPos.x > radii.x) {" + "kernelPos.x = -radii.x;" + "kernelPos.y += 1;" + "}" + "}" + "}" + "return sum;" + "}", kMaxBlurSamples, maxKernelSize).c_str()); + }; + + int kernelArea = BlurKernelWidth(radii.width()) * BlurKernelWidth(radii.height()); + SkASSERT(kernelArea > 0 && kernelArea < kMaxBlurSamples); + switch(SkNextLog2(kernelArea)) { + // Group area [1,4] in the same shader + case 0: [[fallthrough]]; + case 1: [[fallthrough]]; + case 2: { static const SkRuntimeEffect* effect = makeEffect(4); + return effect; } + case 3: { static const SkRuntimeEffect* effect = makeEffect(8); + return effect; } + case 4: { static const SkRuntimeEffect* effect = makeEffect(16); + return effect; } + case 5: { static const SkRuntimeEffect* effect = makeEffect(kMaxBlurSamples); + return effect; } + default: + SkUNREACHABLE; + } +} + +} // namespace skgpu diff --git a/src/gpu/BlurUtils.h b/src/gpu/BlurUtils.h new file mode 100644 index 000000000000..a4a60cd39b73 --- /dev/null +++ b/src/gpu/BlurUtils.h @@ -0,0 +1,139 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_BlurUtils_DEFINED +#define skgpu_BlurUtils_DEFINED + +#include "include/core/SkM44.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/private/base/SkFloatingPoint.h" + +#include + +class SkRuntimeEffect; + +// TODO(b/): Many of these utilities could be lifted even into src/core as part of the backend +// agnostic blur engine once that API exists. + +namespace skgpu { + +// The kernel width of a Gaussian blur of the given pixel radius, for when all pixels are sampled. +constexpr int BlurKernelWidth(int radius) { return 2 * radius + 1; } + +// The kernel width of a Gaussian blur of the given pixel radius, that relies on HW bilinear +// filtering to combine adjacent pixels. +constexpr int BlurLinearKernelWidth(int radius) { return radius + 1; } + +// Any sigmas smaller than this are effectively an identity blur so can skip convolution at a higher +// level. The value was chosen because it corresponds roughly to a radius of 1/10px, and because +// 2*sigma^2 is slightly greater than SK_ScalarNearlyZero. +constexpr bool BlurIsEffectivelyIdentity(float sigma) { return sigma <= 0.03f; } + +// Convert from a sigma Gaussian standard deviation to a pixel radius such that pixels outside the +// radius would have an insignificant contribution to the final blurred value. +inline int BlurSigmaRadius(float sigma) { + // sk_float_ceil is not constexpr + return BlurIsEffectivelyIdentity(sigma) ? 0 : sk_float_ceil2int(3.f * sigma); +} + +// The maximum sigma that can be computed without downscaling is based on the number of uniforms and +// texture samples the effects will make in a single pass. For 1D passes, the number of samples +// is equal to `BlurLinearKernelWidth`; for 2D passes, it is equal to +// `BlurKernelWidth(radiusX)*BlurKernelWidth(radiusY)`. This maps back to different maximum sigmas +// depending on the approach used, as well as the ratio between the sigmas for the X and Y axes if +// a 2D blur is performed. +static constexpr int kMaxBlurSamples = 28; + +// TODO(b/297393474): Update max linear sigma to 9; it had been 4 when a full 1D kernel was used, +// but never updated after the linear filtering optimization reduced the number of sample() calls +// required. Keep it at 4 for now to better isolate performance changes due to switching to a +// runtime effect and constant loop structure. +static constexpr float kMaxLinearBlurSigma = 4.f; // -> radius = 27 -> linear kernel width = 28 +// NOTE: There is no defined kMaxBlurSigma for direct 2D blurs since it is entirely dependent on the +// ratio between the two axes' sigmas, but generally it will be small on the order of a 5x5 kernel. + +// Return a runtime effect that applies a 2D Gaussian blur in a single pass. The returned effect can +// perform arbitrarily sized blur kernels so long as the kernel area is less than kMaxBlurSamples. +// An SkRuntimeEffect is returned to give flexibility for callers to convert it to an SkShader or +// a GrFragmentProcessor. Callers are responsible for providing the uniform values (using the +// appropriate API of the target effect type). The effect declares the following uniforms: +// +// uniform half4 kernel[7]; +// uniform int2 radius; +// uniform shader child; +// +// 'kernel' should be set to the output of Compute2DBlurKernel(). 'radius' should match the radii +// passed into that function. 'child' should be bound to whatever input is intended to be blurred, +// and can use nearest-neighbor sampling (when it's an image). +const SkRuntimeEffect* GetBlur2DEffect(const SkISize& radii); + +// Return a runtime effect that applies a 1D Gaussian blur, taking advantage of HW linear +// interpolation to accumulate adjacent pixels with fewer samples. The returned effect can be used +// for both X and Y axes by changing the 'dir' uniform value (see below). It can be used for all +// 1D blurs such that BlurLinearKernelWidth(radius) is less than or equal to kMaxBlurSamples. +// Like GetBlur2DEffect(), the caller is free to convert this to an SkShader or a +// GrFragmentProcessor and is responsible for assigning uniforms with the appropriate API. Its +// uniforms are declared as: +// +// uniform half4 offsetsAndKernel[14]; +// uniform half2 dir; +// uniform int radius; +// uniform shader child; +// +// 'offsetsAndKernel' should be set to the output of Compute1DBlurLinearKernel(). 'radius' should +// match the radius passed to that function. 'dir' should either be the vector {1,0} or {0,1} +// for X and Y axis passes, respectively. 'child' should be bound to whatever input is intended to +// be blurred and must use linear sampling in order for the outer blur effect to function correctly. +const SkRuntimeEffect* GetLinearBlur1DEffect(int radius); + +// Calculates a set of weights for a 2D Gaussian blur of the given sigma and radius. It is assumed +// that the radius was from prior calls to BlurSigmaRadius(sigma.width()|height()) and is passed in +// to avoid redundant calculations. +// +// The provided span is fully written. The kernel is stored in row-major order based on the provided +// radius. Any remaining indices in the span are zero initialized. The span must have at least +// BlurKernelWidth(radius.width())*BlurKernelWidth(radius.height()) elements. +// +// NOTE: These take spans because it can be useful to compute full kernels that are larger than what +// is supported in the GPU effects. +void Compute2DBlurKernel(SkSize sigma, + SkISize radius, + SkSpan kernel); + +// A convenience function that packs the kMaxBlurSample scalars into SkV4's to match the required +// type of the uniforms in GetBlur2DEffect(). +void Compute2DBlurKernel(SkSize sigma, + SkISize radius, + std::array& kernel); + +// A convenience for the 2D case where one dimension has a sigma of 0. +inline void Compute1DBlurKernel(float sigma, int radius, SkSpan kernel) { + Compute2DBlurKernel({sigma, 0.f}, {radius, 0}, kernel); +} + +// Calculates a set of weights and sampling offsets for a 1D blur that uses GPU hardware to linearly +// combine two logical source pixel values. This assumes that 'radius' was from a prior call to +// BlurSigmaRadius() and is passed in to avoid redundant calculations. To match std140 uniform +// packing, the offset and kernel weight for adjacent samples are packed into a single SkV4 as +// {offset[2*i], kernel[2*i], offset[2*i+1], kernel[2*i+1]} +// +// The provided array is fully written to. The calculated values are written to indices 0 through +// BlurLinearKernelWidth(radius), with any remaining indices zero initialized. It requires the spans +// to be the same size and have at least BlurLinearKernelWidth(radius) elements. +// +// NOTE: This takes an array of a constrained size because its main use is calculating uniforms for +// an effect with a matching constraint. Knowing the size of the linear kernel means the full kernel +// can be stored on the stack internally. +void Compute1DBlurLinearKernel(float sigma, + int radius, + std::array& offsetsAndKernel); + +} // namespace skgpu + +#endif // skgpu_BlurUtils_DEFINED diff --git a/src/gpu/PipelineUtils.cpp b/src/gpu/PipelineUtils.cpp index ead8d9083485..f2634bdab249 100644 --- a/src/gpu/PipelineUtils.cpp +++ b/src/gpu/PipelineUtils.cpp @@ -9,13 +9,15 @@ namespace skgpu { -bool SkSLToSPIRV(SkSL::Compiler* compiler, - const std::string& sksl, - SkSL::ProgramKind programKind, - const SkSL::ProgramSettings& settings, - std::string* spirv, - SkSL::Program::Interface* outInterface, - ShaderErrorHandler* errorHandler) { +static bool sksl_to_backend(SkSL::Compiler* compiler, + bool (SkSL::Compiler::*toBackend)(SkSL::Program&, std::string*), + const char* backendLabel, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* output, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { #ifdef SK_DEBUG std::string src = SkShaderUtils::PrettyPrint(sksl); #else @@ -24,15 +26,32 @@ bool SkSLToSPIRV(SkSL::Compiler* compiler, std::unique_ptr program = compiler->convertProgram(programKind, src, settings); - if (!program || !compiler->toSPIRV(*program, spirv)) { + if (!program || !(compiler->*toBackend)(*program, output)) { errorHandler->compileError(src.c_str(), compiler->errorText().c_str()); return false; } - if (gPrintSKSL) { +#if defined(SK_PRINT_SKSL_SHADERS) + const bool kPrintSkSL = true; +#else + const bool kPrintSkSL = false; +#endif +#if defined(SK_PRINT_NATIVE_SHADERS) + const bool printBackendSL = (backendLabel != nullptr); +#else + const bool printBackendSL = false; +#endif + + if (kPrintSkSL || printBackendSL) { SkShaderUtils::PrintShaderBanner(programKind); - SkDebugf("SKSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(sksl)); + if (kPrintSkSL) { + SkDebugf("SkSL:\n"); + SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(sksl)); + } + if (printBackendSL) { + SkDebugf("%s:\n", backendLabel); + SkShaderUtils::PrintLineByLine(*output); + } } if (outInterface) { @@ -41,4 +60,59 @@ bool SkSLToSPIRV(SkSL::Compiler* compiler, return true; } +bool SkSLToGLSL(SkSL::Compiler* compiler, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* glsl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { + return sksl_to_backend(compiler, &SkSL::Compiler::toGLSL, "GLSL", + sksl, programKind, settings, glsl, outInterface, errorHandler); +} + +bool SkSLToSPIRV(SkSL::Compiler* compiler, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* spirv, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { + return sksl_to_backend(compiler, &SkSL::Compiler::toSPIRV, /*backendLabel=*/nullptr, + sksl, programKind, settings, spirv, outInterface, errorHandler); +} + +bool SkSLToWGSL(SkSL::Compiler* compiler, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* wgsl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { + return sksl_to_backend(compiler, &SkSL::Compiler::toWGSL, "WGSL", + sksl, programKind, settings, wgsl, outInterface, errorHandler); +} + +bool SkSLToMSL(SkSL::Compiler* compiler, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* msl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { + return sksl_to_backend(compiler, &SkSL::Compiler::toMetal, "MSL", + sksl, programKind, settings, msl, outInterface, errorHandler); +} + +bool SkSLToHLSL(SkSL::Compiler* compiler, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* hlsl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler) { + return sksl_to_backend(compiler, &SkSL::Compiler::toHLSL, "HLSL", + sksl, programKind, settings, hlsl, outInterface, errorHandler); +} + } // namespace skgpu diff --git a/src/gpu/PipelineUtils.h b/src/gpu/PipelineUtils.h index 124297f3f729..454d490d4681 100644 --- a/src/gpu/PipelineUtils.h +++ b/src/gpu/PipelineUtils.h @@ -18,20 +18,14 @@ // This file houses utilities to be shared across pipelines of different backend types. namespace skgpu { -// Print the source code for all shaders generated. -#ifdef SK_PRINT_SKSL_SHADERS -static constexpr bool gPrintSKSL = true; -#else -static constexpr bool gPrintSKSL = false; -#endif -#ifdef SK_PRINT_NATIVE_SHADERS -static const bool gPrintBackendSL = true; -#else -static const bool gPrintBackendSL = false; -#endif - -// SkSL->SPIR-V is only needed by Dawn + Vulkan backends, but seeing as this is a small wrapper -// function, it's fine to be here even if not all backends end up using it. +bool SkSLToGLSL(SkSL::Compiler*, + const std::string& sksl, + SkSL::ProgramKind programKind, + const SkSL::ProgramSettings& settings, + std::string* glsl, + SkSL::Program::Interface*, + ShaderErrorHandler* errorHandler); + bool SkSLToSPIRV(SkSL::Compiler*, const std::string& sksl, SkSL::ProgramKind, @@ -40,6 +34,30 @@ bool SkSLToSPIRV(SkSL::Compiler*, SkSL::Program::Interface*, ShaderErrorHandler*); +bool SkSLToWGSL(SkSL::Compiler*, + const std::string& sksl, + SkSL::ProgramKind, + const SkSL::ProgramSettings&, + std::string* wgsl, + SkSL::Program::Interface*, + ShaderErrorHandler*); + +bool SkSLToMSL(SkSL::Compiler*, + const std::string& sksl, + SkSL::ProgramKind kind, + const SkSL::ProgramSettings& settings, + std::string* msl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler); + +bool SkSLToHLSL(SkSL::Compiler*, + const std::string& sksl, + SkSL::ProgramKind kind, + const SkSL::ProgramSettings& settings, + std::string* hlsl, + SkSL::Program::Interface* outInterface, + ShaderErrorHandler* errorHandler); + } // namespace skgpu #endif // skgpu_PipelineUtils_DEFINED diff --git a/src/gpu/TiledTextureUtils.cpp b/src/gpu/TiledTextureUtils.cpp index 47a0c518ee74..b12bad45b8ac 100644 --- a/src/gpu/TiledTextureUtils.cpp +++ b/src/gpu/TiledTextureUtils.cpp @@ -29,7 +29,7 @@ #include "src/gpu/graphite/RecorderPriv.h" #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // GrContextOptions::fMaxTextureSizeOverride exists but doesn't allow for changing the // maxTextureSize on the fly. int gOverrideMaxTextureSize = 0; @@ -116,7 +116,7 @@ void draw_tiled_bitmap(SkCanvas* canvas, int nx = bitmap.width() / tileSize; int ny = bitmap.height() / tileSize; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) gNumTilesDrawn.store(0, std::memory_order_relaxed); #endif @@ -200,7 +200,7 @@ void draw_tiled_bitmap(SkCanvas* canvas, aaFlags, /* hasClip= */ false)); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) (void)gNumTilesDrawn.fetch_add(+1, std::memory_order_relaxed); #endif } @@ -463,7 +463,7 @@ bool TiledTextureUtils::DrawAsTiledImageRect(SkCanvas* canvas, } int maxTileSize = get_max_texture_size(canvas) - 2*tileFilterPad; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (gOverrideMaxTextureSize) { maxTileSize = gOverrideMaxTextureSize - 2 * tileFilterPad; } diff --git a/src/gpu/ganesh/BUILD.bazel b/src/gpu/ganesh/BUILD.bazel index 7d6147c0ac80..f9c3e5b44920 100644 --- a/src/gpu/ganesh/BUILD.bazel +++ b/src/gpu/ganesh/BUILD.bazel @@ -286,7 +286,6 @@ skia_filegroup( "//src/gpu/ganesh/text:srcs", ] + select_multi( { - "//src/gpu:dawn_ganesh": ["//src/gpu/ganesh/dawn:srcs"], "//src/gpu:gl_ganesh": ["//src/gpu/ganesh/gl:srcs"], "//src/gpu:vulkan_ganesh": ["//src/gpu/ganesh/vk:srcs"], "@platforms//os:android": ["//src/gpu/ganesh/surface:android_srcs"], @@ -326,7 +325,6 @@ skia_filegroup( "//src/gpu/ganesh/text:private_hdrs", ] + select_multi( { - "//src/gpu:dawn_ganesh": ["//src/gpu/ganesh/dawn:private_hdrs"], "//src/gpu:gl_ganesh": ["//src/gpu/ganesh/gl:private_hdrs"], "//src/gpu:vulkan_ganesh": ["//src/gpu/ganesh/vk:private_hdrs"], "//src/gpu:metal_ganesh": ["//src/gpu/ganesh/mtl:private_hdrs"], @@ -341,7 +339,6 @@ skia_cc_deps( visibility = ["//src/gpu:__pkg__"], deps = select_multi( { - "//src/gpu:dawn_ganesh": ["//src/gpu/ganesh/dawn:deps"], "//src/gpu:gl_ganesh": ["//src/gpu/ganesh/gl:deps"], # TODO(kjlubick) mtl and d3d backend }, diff --git a/src/gpu/ganesh/ClipStack.h b/src/gpu/ganesh/ClipStack.h index e7263fcd1474..e28070c41a54 100644 --- a/src/gpu/ganesh/ClipStack.h +++ b/src/gpu/ganesh/ClipStack.h @@ -94,7 +94,7 @@ class ClipStack final : public GrClip { GrClip::PreClipResult preApply(const SkRect& drawBounds, GrAA aa) const override; SkIRect getConservativeBounds() const override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) UniqueKey testingOnly_getLastSWMaskKey() const { return fMasks.empty() ? UniqueKey() : fMasks.back().key(); } diff --git a/src/gpu/ganesh/Device.cpp b/src/gpu/ganesh/Device.cpp index f44fa74e653d..0ed2a35e253c 100644 --- a/src/gpu/ganesh/Device.cpp +++ b/src/gpu/ganesh/Device.cpp @@ -345,7 +345,7 @@ void Device::clearAll() { /////////////////////////////////////////////////////////////////////////////// void Device::onClipPath(const SkPath& path, SkClipOp op, bool aa) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (fContext->priv().options().fAllPathsVolatile && !path.isVolatile()) { this->onClipPath(SkPath(path).setIsVolatile(true), op, aa); return; @@ -777,7 +777,7 @@ void Device::drawArc(const SkRect& oval, /////////////////////////////////////////////////////////////////////////////// void Device::drawPath(const SkPath& origSrcPath, const SkPaint& paint, bool pathIsMutable) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (fContext->priv().options().fAllPathsVolatile && !origSrcPath.isVolatile()) { this->drawPath(SkPath(origSrcPath).setIsVolatile(true), paint, true); return; @@ -1110,7 +1110,7 @@ void Device::drawMesh(const SkMesh& mesh, sk_sp blender, const SkPain #if !defined(SK_ENABLE_OPTIMIZE_SIZE) void Device::drawShadow(const SkPath& path, const SkDrawShadowRec& rec) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (fContext->priv().options().fAllPathsVolatile && !path.isVolatile()) { this->drawShadow(SkPath(path).setIsVolatile(true), rec); return; @@ -1387,12 +1387,15 @@ sk_sp Device::makeSurface(const SkImageInfo& info, const SkSurfacePro ASSERT_SINGLE_OWNER // TODO: Change the signature of newSurface to take a budgeted parameter. static const skgpu::Budgeted kBudgeted = skgpu::Budgeted::kNo; + bool isProtected = this->targetProxy()->isProtected() == GrProtected::kYes; return SkSurfaces::RenderTarget(fContext.get(), kBudgeted, info, fSurfaceDrawContext->numSamples(), fSurfaceDrawContext->origin(), - &props); + &props, + /* shouldCreateWithMips= */ false, + isProtected); } SkImageFilterCache* Device::getImageFilterCache() { diff --git a/src/gpu/ganesh/GrBackendSurface.cpp b/src/gpu/ganesh/GrBackendSurface.cpp index e523c1f015ce..e0fc63789dba 100644 --- a/src/gpu/ganesh/GrBackendSurface.cpp +++ b/src/gpu/ganesh/GrBackendSurface.cpp @@ -8,27 +8,17 @@ #include "include/gpu/GrBackendSurface.h" #include "include/core/SkTextureCompressionType.h" +#include "include/gpu/GrTypes.h" #include "include/private/base/SkAssert.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" -#include "src/gpu/MutableTextureStateRef.h" +#include "src/gpu/MutableTextureStateRef.h" // IWYU pragma: keep #include "src/gpu/ganesh/GrBackendSurfacePriv.h" -#ifdef SK_DAWN -#include "include/gpu/dawn/GrDawnTypes.h" -#include "src/gpu/dawn/DawnUtilsPriv.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" -#endif - -#ifdef SK_VULKAN -#include "include/gpu/vk/GrVkTypes.h" -#include "src/gpu/ganesh/vk/GrVkUtil.h" -#include "src/gpu/vk/VulkanUtilsPriv.h" -#endif - #ifdef SK_METAL #include "include/gpu/mtl/GrMtlTypes.h" #include "src/gpu/ganesh/mtl/GrMtlCppUtil.h" #endif + #ifdef SK_DIRECT3D #include "include/gpu/d3d/GrD3DTypes.h" #include "src/gpu/ganesh/d3d/GrD3DResourceState.h" @@ -37,19 +27,11 @@ #include #include -#include namespace skgpu { class MutableTextureState; } -GrBackendFormat::GrBackendFormat(){}; -GrBackendFormat::~GrBackendFormat() = default; -GrBackendFormat::GrBackendFormat(GrTextureType texture, - GrBackendApi api, - std::unique_ptr data) - : fBackend(api) - , fValid(data != nullptr) - , fFormatData(std::move(data)) - , fTextureType(texture) {} +GrBackendFormat::GrBackendFormat() : fValid(false) {} +GrBackendFormat::~GrBackendFormat() = default; GrBackendFormat::GrBackendFormat(const GrBackendFormat& that) : fBackend(that.fBackend) @@ -61,14 +43,10 @@ GrBackendFormat::GrBackendFormat(const GrBackendFormat& that) switch (fBackend) { case GrBackendApi::kOpenGL: - SkASSERT(that.fFormatData); - fFormatData.reset(that.fFormatData->copy()); - break; // fFormatData is sufficient -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - fVk = that.fVk; - break; -#endif + fFormatData.reset(); + that.fFormatData->copyTo(fFormatData); + break; // fFormatData is sufficient #ifdef SK_METAL case GrBackendApi::kMetal: fMtlFormat = that.fMtlFormat; @@ -78,11 +56,6 @@ GrBackendFormat::GrBackendFormat(const GrBackendFormat& that) case GrBackendApi::kDirect3D: fDxgiFormat = that.fDxgiFormat; break; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - fDawnFormat = that.fDawnFormat; - break; #endif case GrBackendApi::kMock: fMock = that.fMock; @@ -100,61 +73,6 @@ GrBackendFormat& GrBackendFormat::operator=(const GrBackendFormat& that) { return *this; } -#ifdef SK_VULKAN -GrBackendFormat GrBackendFormat::MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, - bool willUseDRMFormatModifiers) { - SkASSERT(ycbcrInfo.isValid()); - return GrBackendFormat(ycbcrInfo.fFormat, ycbcrInfo, willUseDRMFormatModifiers); -} - -GrBackendFormat::GrBackendFormat(VkFormat vkFormat, const GrVkYcbcrConversionInfo& ycbcrInfo, - bool willUseDRMFormatModifiers) - : fBackend(GrBackendApi::kVulkan) - , fValid(true) - , fTextureType(GrTextureType::k2D) { - fVk.fFormat = vkFormat; - fVk.fYcbcrConversionInfo = ycbcrInfo; - if ((fVk.fYcbcrConversionInfo.isValid() && fVk.fYcbcrConversionInfo.fExternalFormat) || - willUseDRMFormatModifiers) { - fTextureType = GrTextureType::kExternal; - } -} - -bool GrBackendFormat::asVkFormat(VkFormat* format) const { - SkASSERT(format); - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - *format = fVk.fFormat; - return true; - } - return false; -} - -const GrVkYcbcrConversionInfo* GrBackendFormat::getVkYcbcrConversionInfo() const { - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - return &fVk.fYcbcrConversionInfo; - } - return nullptr; -} -#endif - -#ifdef SK_DAWN -GrBackendFormat::GrBackendFormat(wgpu::TextureFormat format) - : fBackend(GrBackendApi::kDawn) - , fValid(true) - , fDawnFormat(format) - , fTextureType(GrTextureType::k2D) { -} - -bool GrBackendFormat::asDawnFormat(wgpu::TextureFormat* format) const { - SkASSERT(format); - if (this->isValid() && GrBackendApi::kDawn == fBackend) { - *format = fDawnFormat; - return true; - } - return false; -} -#endif - #ifdef SK_METAL GrBackendFormat::GrBackendFormat(GrMTLPixelFormat mtlFormat) : fBackend(GrBackendApi::kMetal) @@ -206,19 +124,12 @@ uint32_t GrBackendFormat::channelMask() const { } switch (fBackend) { case GrBackendApi::kOpenGL: - return fFormatData->channelMask(); -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - return skgpu::VkFormatChannels(fVk.fFormat); -#endif + return fFormatData->channelMask(); #ifdef SK_METAL case GrBackendApi::kMetal: return GrMtlFormatChannels(fMtlFormat); #endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - return skgpu::DawnFormatChannels(fDawnFormat); -#endif #ifdef SK_DIRECT3D case GrBackendApi::kDirect3D: return GrDxgiFormatChannels(fDxgiFormat); @@ -237,19 +148,12 @@ GrColorFormatDesc GrBackendFormat::desc() const { } switch (fBackend) { case GrBackendApi::kOpenGL: - return fFormatData->desc(); -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - return GrVkFormatDesc(fVk.fFormat); -#endif + return fFormatData->desc(); #ifdef SK_METAL case GrBackendApi::kMetal: return GrMtlFormatDesc(fMtlFormat); #endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - return GrDawnFormatDesc(fDawnFormat); -#endif #ifdef SK_DIRECT3D case GrBackendApi::kDirect3D: return GrDxgiFormatDesc(fDxgiFormat); @@ -307,17 +211,10 @@ bool GrBackendFormat::isMockStencilFormat() const { GrBackendFormat GrBackendFormat::makeTexture2D() const { GrBackendFormat copy = *this; -#ifdef SK_VULKAN - if (const GrVkYcbcrConversionInfo* ycbcrInfo = this->getVkYcbcrConversionInfo()) { - if (ycbcrInfo->isValid()) { - // If we have a ycbcr we remove it from the backend format and set the VkFormat to - // R8G8B8A8_UNORM - SkASSERT(copy.fBackend == GrBackendApi::kVulkan); - copy.fVk.fYcbcrConversionInfo = GrVkYcbcrConversionInfo(); - copy.fVk.fFormat = VK_FORMAT_R8G8B8A8_UNORM; - } + // TODO(b/293490566): Remove this kVulkan check once all backends are using fFormatData. + if (fBackend==GrBackendApi::kVulkan) { + copy.fFormatData->makeTexture2D(); } -#endif copy.fTextureType = GrTextureType::k2D; return copy; } @@ -340,19 +237,11 @@ bool GrBackendFormat::operator==(const GrBackendFormat& that) const { switch (fBackend) { case GrBackendApi::kOpenGL: - return fFormatData->equal(that.fFormatData.get()); -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - return fVk.fFormat == that.fVk.fFormat && - fVk.fYcbcrConversionInfo == that.fVk.fYcbcrConversionInfo; -#endif + return fFormatData->equal(that.fFormatData.get()); #ifdef SK_METAL case GrBackendApi::kMetal: return fMtlFormat == that.fMtlFormat; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - return fDawnFormat == that.fDawnFormat; #endif case GrBackendApi::kMock: return fMock.fColorType == that.fMock.fColorType && @@ -367,7 +256,7 @@ bool GrBackendFormat::operator==(const GrBackendFormat& that) const { return false; } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) #include "include/core/SkString.h" SkString GrBackendFormat::toStr() const { @@ -382,12 +271,8 @@ SkString GrBackendFormat::toStr() const { switch (fBackend) { case GrBackendApi::kOpenGL: - str.append(fFormatData->toString()); - break; case GrBackendApi::kVulkan: -#ifdef SK_VULKAN - str.append(skgpu::VkFormatToStr(fVk.fFormat)); -#endif + str.append(fFormatData->toString()); break; case GrBackendApi::kMetal: #ifdef SK_METAL @@ -397,11 +282,6 @@ SkString GrBackendFormat::toStr() const { case GrBackendApi::kDirect3D: #ifdef SK_DIRECT3D str.append(GrDxgiFormatToStr(fDxgiFormat)); -#endif - break; - case GrBackendApi::kDawn: -#ifdef SK_DAWN - str.append(GrDawnFormatToStr(fDawnFormat)); #endif break; case GrBackendApi::kMock: @@ -409,6 +289,8 @@ SkString GrBackendFormat::toStr() const { str.appendf("-"); str.append(GrCompressionTypeToStr(fMock.fCompressionType)); break; + case GrBackendApi::kUnsupported: + break; } return str; @@ -418,92 +300,6 @@ SkString GrBackendFormat::toStr() const { /////////////////////////////////////////////////////////////////////////////////////////////////// GrBackendTexture::GrBackendTexture() : fIsValid(false) {} -GrBackendTexture::GrBackendTexture(int width, - int height, - std::string_view label, - skgpu::Mipmapped mipped, - GrBackendApi backend, - GrTextureType texture, - std::unique_ptr data) - : fIsValid(data != nullptr) - , fWidth(width) - , fHeight(height) - , fLabel(label) - , fMipmapped(mipped) - , fBackend(backend) - , fTextureType(texture) - , fTextureData(std::move(data)) {} - -#ifdef SK_DAWN -GrBackendTexture::GrBackendTexture(int width, - int height, - const GrDawnTextureInfo& dawnInfo, - std::string_view label) - : fIsValid(true) - , fWidth(width) - , fHeight(height) - , fLabel(label) - , fMipmapped(GrMipmapped(dawnInfo.fLevelCount > 1)) - , fBackend(GrBackendApi::kDawn) - , fTextureType(GrTextureType::k2D) - , fDawnInfo(dawnInfo) {} -#endif - -#ifdef SK_VULKAN -GrBackendTexture::GrBackendTexture(int width, - int height, - const GrVkImageInfo& vkInfo, - std::string_view label) - : GrBackendTexture( - width, - height, - vkInfo, - sk_sp(new skgpu::MutableTextureStateRef( - vkInfo.fImageLayout, vkInfo.fCurrentQueueFamily)), - label) {} - -static const VkImageUsageFlags kDefaultUsageFlags = - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - -// We don't know if the backend texture is made renderable or not, so we default the usage flags -// to include color attachment as well. -static const VkImageUsageFlags kDefaultTexRTUsageFlags = - kDefaultUsageFlags | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - -static GrVkImageInfo apply_default_usage_flags(const GrVkImageInfo& info, - VkImageUsageFlags defaultFlags) { - if (info.fImageUsageFlags == 0) { - GrVkImageInfo newInfo = info; - newInfo.fImageUsageFlags = defaultFlags; - return newInfo; - } - return info; -} - -static GrTextureType vk_image_info_to_texture_type(const GrVkImageInfo& info) { - if ((info.fYcbcrConversionInfo.isValid() && info.fYcbcrConversionInfo.fExternalFormat != 0) || - info.fImageTiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) { - return GrTextureType::kExternal; - } - return GrTextureType::k2D; -} - -GrBackendTexture::GrBackendTexture(int width, - int height, - const GrVkImageInfo& vkInfo, - sk_sp mutableState, - std::string_view label) - : fIsValid(true) - , fWidth(width) - , fHeight(height) - , fLabel(label) - , fMipmapped(GrMipmapped(vkInfo.fLevelCount > 1)) - , fBackend(GrBackendApi::kVulkan) - , fTextureType(vk_image_info_to_texture_type(vkInfo)) - , fVkInfo(apply_default_usage_flags(vkInfo, kDefaultTexRTUsageFlags)) - , fMutableState(std::move(mutableState)) {} -#endif - #ifdef SK_METAL GrBackendTexture::GrBackendTexture(int width, int height, @@ -566,11 +362,7 @@ GrBackendTexture::~GrBackendTexture() { } void GrBackendTexture::cleanup() { -#ifdef SK_VULKAN - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - fVkInfo.cleanup(); - } -#endif + fTextureData.reset(); #ifdef SK_DIRECT3D if (this->isValid() && GrBackendApi::kDirect3D == fBackend) { fD3DInfo.cleanup(); @@ -583,6 +375,10 @@ GrBackendTexture::GrBackendTexture(const GrBackendTexture& that) : fIsValid(fals } GrBackendTexture& GrBackendTexture::operator=(const GrBackendTexture& that) { + if (this == &that) { + return *this; + } + if (!that.isValid()) { this->cleanup(); fIsValid = false; @@ -590,7 +386,6 @@ GrBackendTexture& GrBackendTexture::operator=(const GrBackendTexture& that) { } else if (fIsValid && this->fBackend != that.fBackend) { this->cleanup(); fIsValid = false; - fTextureData.reset(); } fWidth = that.fWidth; fHeight = that.fHeight; @@ -600,13 +395,10 @@ GrBackendTexture& GrBackendTexture::operator=(const GrBackendTexture& that) { switch (that.fBackend) { case GrBackendApi::kOpenGL: - fTextureData.reset(that.fTextureData->copy()); - break; -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - fVkInfo.assign(that.fVkInfo, this->isValid()); + fTextureData.reset(); + that.fTextureData->copyTo(fTextureData); break; -#endif #ifdef SK_METAL case GrBackendApi::kMetal: fMtlInfo = that.fMtlInfo; @@ -616,11 +408,6 @@ GrBackendTexture& GrBackendTexture::operator=(const GrBackendTexture& that) { case GrBackendApi::kDirect3D: fD3DInfo.assign(that.fD3DInfo, this->isValid()); break; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - fDawnInfo = that.fDawnInfo; - break; #endif case GrBackendApi::kMock: fMockInfo = that.fMockInfo; @@ -628,41 +415,14 @@ GrBackendTexture& GrBackendTexture::operator=(const GrBackendTexture& that) { default: SK_ABORT("Unknown GrBackend"); } - fMutableState = that.fMutableState; fIsValid = true; return *this; } sk_sp GrBackendTexture::getMutableState() const { - return fMutableState; + return fTextureData->getMutableState(); } -#ifdef SK_DAWN -bool GrBackendTexture::getDawnTextureInfo(GrDawnTextureInfo* outInfo) const { - if (this->isValid() && GrBackendApi::kDawn == fBackend) { - *outInfo = fDawnInfo; - return true; - } - return false; -} -#endif - -#ifdef SK_VULKAN -bool GrBackendTexture::getVkImageInfo(GrVkImageInfo* outInfo) const { - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - *outInfo = fVkInfo.snapImageInfo(fMutableState.get()); - return true; - } - return false; -} - -void GrBackendTexture::setVkImageLayout(VkImageLayout layout) { - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - fMutableState->setImageLayout(layout); - } -} -#endif - #ifdef SK_METAL bool GrBackendTexture::getMtlTextureInfo(GrMtlTextureInfo* outInfo) const { if (this->isValid() && GrBackendApi::kMetal == fBackend) { @@ -705,21 +465,16 @@ bool GrBackendTexture::getMockTextureInfo(GrMockTextureInfo* outInfo) const { } void GrBackendTexture::setMutableState(const skgpu::MutableTextureState& state) { - fMutableState->set(state); + fTextureData->setMutableState(state); } bool GrBackendTexture::isProtected() const { if (!this->isValid()) { return false; } - if (this->backend() == GrBackendApi::kOpenGL) { + if (this->backend() == GrBackendApi::kOpenGL || this->backend() == GrBackendApi::kVulkan) { return fTextureData->isProtected(); } -#ifdef SK_VULKAN - if (this->backend() == GrBackendApi::kVulkan) { - return fVkInfo.isProtected(); - } -#endif if (this->backend() == GrBackendApi::kMock) { return fMockInfo.isProtected(); } @@ -736,12 +491,8 @@ bool GrBackendTexture::isSameTexture(const GrBackendTexture& that) { } switch (fBackend) { case GrBackendApi::kOpenGL: - return fTextureData->isSameTexture(that.fTextureData.get()); -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - return fVkInfo.snapImageInfo(fMutableState.get()).fImage == - that.fVkInfo.snapImageInfo(that.fMutableState.get()).fImage; -#endif + return fTextureData->isSameTexture(that.fTextureData.get()); #ifdef SK_METAL case GrBackendApi::kMetal: return this->fMtlInfo.fTexture == that.fMtlInfo.fTexture; @@ -750,11 +501,6 @@ bool GrBackendTexture::isSameTexture(const GrBackendTexture& that) { case GrBackendApi::kDirect3D: return fD3DInfo.snapTextureResourceInfo().fResource == that.fD3DInfo.snapTextureResourceInfo().fResource; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: { - return this->fDawnInfo.fTexture.Get() == that.fDawnInfo.fTexture.Get(); - } #endif case GrBackendApi::kMock: return fMockInfo.id() == that.fMockInfo.id(); @@ -769,18 +515,8 @@ GrBackendFormat GrBackendTexture::getBackendFormat() const { } switch (fBackend) { case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return fTextureData->getBackendFormat(); -#ifdef SK_VULKAN - case GrBackendApi::kVulkan: { - auto info = fVkInfo.snapImageInfo(fMutableState.get()); - bool usesDRMModifier = info.fImageTiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT; - if (info.fYcbcrConversionInfo.isValid()) { - SkASSERT(info.fFormat == info.fYcbcrConversionInfo.fFormat); - return GrBackendFormat::MakeVk(info.fYcbcrConversionInfo, usesDRMModifier); - } - return GrBackendFormat::MakeVk(info.fFormat, usesDRMModifier); - } -#endif #ifdef SK_METAL case GrBackendApi::kMetal: { GrMtlTextureInfo mtlInfo; @@ -793,11 +529,6 @@ GrBackendFormat GrBackendTexture::getBackendFormat() const { auto d3dInfo = fD3DInfo.snapTextureResourceInfo(); return GrBackendFormat::MakeDxgi(d3dInfo.fFormat); } -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: { - return GrBackendFormat::MakeDawn(fDawnInfo.fFormat); - } #endif case GrBackendApi::kMock: return fMockInfo.getBackendFormat(); @@ -806,7 +537,7 @@ GrBackendFormat GrBackendTexture::getBackendFormat() const { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrBackendTexture::TestingOnly_Equals(const GrBackendTexture& t0, const GrBackendTexture& t1) { if (!t0.isValid() || !t1.isValid()) { return false; // two invalid backend textures are not considered equal @@ -819,21 +550,12 @@ bool GrBackendTexture::TestingOnly_Equals(const GrBackendTexture& t0, const GrBa return false; } - // For our tests when checking equality we are assuming the both backendTexture objects will - // be using the same mutable state object. - if (t0.fMutableState != t1.fMutableState) { - return false; - } - switch (t0.fBackend) { case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return t0.fTextureData->equal(t1.fTextureData.get()); case GrBackendApi::kMock: return t0.fMockInfo == t1.fMockInfo; -#ifdef SK_VULKAN - case GrBackendApi::kVulkan: - return t0.fVkInfo == t1.fVkInfo; -#endif #ifdef SK_METAL case GrBackendApi::kMetal: return t0.fMtlInfo == t1.fMtlInfo; @@ -841,10 +563,6 @@ bool GrBackendTexture::TestingOnly_Equals(const GrBackendTexture& t0, const GrBa #ifdef SK_DIRECT3D case GrBackendApi::kDirect3D: return t0.fD3DInfo == t1.fD3DInfo; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - return t0.fDawnInfo == t1.fDawnInfo; #endif default: return false; @@ -856,78 +574,6 @@ bool GrBackendTexture::TestingOnly_Equals(const GrBackendTexture& t0, const GrBa GrBackendRenderTarget::GrBackendRenderTarget() : fIsValid(false) {} -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - int sampleCnt, - int stencilBits, - GrBackendApi backend, - bool framebufferOnly, - std::unique_ptr data) - : fIsValid(data && data->isValid()) - , fFramebufferOnly(framebufferOnly) - , fWidth(width) - , fHeight(height) - , fSampleCnt(sampleCnt) - , fStencilBits(stencilBits) - , fBackend(backend) - , fRTData(std::move(data)) {} - -#ifdef SK_DAWN -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - int sampleCnt, - int stencilBits, - const GrDawnRenderTargetInfo& dawnInfo) - : fIsValid(true) - , fFramebufferOnly(true) - , fWidth(width) - , fHeight(height) - , fSampleCnt(sampleCnt) - , fStencilBits(stencilBits) - , fBackend(GrBackendApi::kDawn) - , fDawnInfo(dawnInfo) {} -#endif - -#ifdef SK_VULKAN -static GrVkImageInfo resolve_vkii_sample_count(const GrVkImageInfo& vkII, int sidebandSampleCnt) { - auto result = vkII; - result.fSampleCount = std::max({vkII.fSampleCount, - static_cast(sidebandSampleCnt), - 1U}); - return result; -} - -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - int sampleCnt, - const GrVkImageInfo& vkInfo) - : GrBackendRenderTarget(width, height, resolve_vkii_sample_count(vkInfo, sampleCnt)) {} - -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - const GrVkImageInfo& vkInfo) - : GrBackendRenderTarget(width, height, vkInfo, - sk_sp( - new skgpu::MutableTextureStateRef( - vkInfo.fImageLayout, vkInfo.fCurrentQueueFamily))) {} - -static const VkImageUsageFlags kDefaultRTUsageFlags = - kDefaultUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - const GrVkImageInfo& vkInfo, - sk_sp mutableState) - : fIsValid(true) - , fWidth(width) - , fHeight(height) - , fSampleCnt(std::max(1U, vkInfo.fSampleCount)) - , fStencilBits(0) // We always create stencil buffers internally for vulkan - , fBackend(GrBackendApi::kVulkan) - , fVkInfo(apply_default_usage_flags(vkInfo, kDefaultRTUsageFlags)) - , fMutableState(mutableState) {} -#endif - #ifdef SK_METAL GrBackendRenderTarget::GrBackendRenderTarget(int width, int height, const GrMtlTextureInfo& mtlInfo) : fIsValid(true) @@ -938,13 +584,6 @@ GrBackendRenderTarget::GrBackendRenderTarget(int width, int height, const GrMtlT , fStencilBits(0) , fBackend(GrBackendApi::kMetal) , fMtlInfo(mtlInfo) {} - -GrBackendRenderTarget::GrBackendRenderTarget(int width, int height, - int sampleCount, - const GrMtlTextureInfo& mtlInfo) - : GrBackendRenderTarget(width, height, mtlInfo) { - fSampleCnt = sampleCount; -} #endif #ifdef SK_DIRECT3D @@ -986,11 +625,7 @@ GrBackendRenderTarget::~GrBackendRenderTarget() { } void GrBackendRenderTarget::cleanup() { -#ifdef SK_VULKAN - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - fVkInfo.cleanup(); - } -#endif + fRTData.reset(); #ifdef SK_DIRECT3D if (this->isValid() && GrBackendApi::kDirect3D == fBackend) { fD3DInfo.cleanup(); @@ -1003,6 +638,10 @@ GrBackendRenderTarget::GrBackendRenderTarget(const GrBackendRenderTarget& that) } GrBackendRenderTarget& GrBackendRenderTarget::operator=(const GrBackendRenderTarget& that) { + if (this == &that) { + return *this; + } + if (!that.isValid()) { this->cleanup(); fIsValid = false; @@ -1019,17 +658,10 @@ GrBackendRenderTarget& GrBackendRenderTarget::operator=(const GrBackendRenderTar switch (that.fBackend) { case GrBackendApi::kOpenGL: - if (that.fRTData) { - fRTData.reset(that.fRTData->copy()); - } else { - fRTData = nullptr; - } - break; -#ifdef SK_VULKAN case GrBackendApi::kVulkan: - fVkInfo.assign(that.fVkInfo, this->isValid()); + fRTData.reset(); + that.fRTData->copyTo(fRTData); break; -#endif #ifdef SK_METAL case GrBackendApi::kMetal: fMtlInfo = that.fMtlInfo; @@ -1039,11 +671,6 @@ GrBackendRenderTarget& GrBackendRenderTarget::operator=(const GrBackendRenderTar case GrBackendApi::kDirect3D: fD3DInfo.assign(that.fD3DInfo, this->isValid()); break; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - fDawnInfo = that.fDawnInfo; - break; #endif case GrBackendApi::kMock: fMockInfo = that.fMockInfo; @@ -1051,41 +678,14 @@ GrBackendRenderTarget& GrBackendRenderTarget::operator=(const GrBackendRenderTar default: SK_ABORT("Unknown GrBackend"); } - fMutableState = that.fMutableState; fIsValid = that.fIsValid; return *this; } sk_sp GrBackendRenderTarget::getMutableState() const { - return fMutableState; + return fRTData->getMutableState(); } -#ifdef SK_DAWN -bool GrBackendRenderTarget::getDawnRenderTargetInfo(GrDawnRenderTargetInfo* outInfo) const { - if (this->isValid() && GrBackendApi::kDawn == fBackend) { - *outInfo = fDawnInfo; - return true; - } - return false; -} -#endif - -#ifdef SK_VULKAN -bool GrBackendRenderTarget::getVkImageInfo(GrVkImageInfo* outInfo) const { - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - *outInfo = fVkInfo.snapImageInfo(fMutableState.get()); - return true; - } - return false; -} - -void GrBackendRenderTarget::setVkImageLayout(VkImageLayout layout) { - if (this->isValid() && GrBackendApi::kVulkan == fBackend) { - fMutableState->setImageLayout(layout); - } -} -#endif - #ifdef SK_METAL bool GrBackendRenderTarget::getMtlTextureInfo(GrMtlTextureInfo* outInfo) const { if (this->isValid() && GrBackendApi::kMetal == fBackend) { @@ -1125,17 +725,8 @@ GrBackendFormat GrBackendRenderTarget::getBackendFormat() const { } switch (fBackend) { case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return fRTData->getBackendFormat(); -#ifdef SK_VULKAN - case GrBackendApi::kVulkan: { - auto info = fVkInfo.snapImageInfo(fMutableState.get()); - if (info.fYcbcrConversionInfo.isValid()) { - SkASSERT(info.fFormat == info.fYcbcrConversionInfo.fFormat); - return GrBackendFormat::MakeVk(info.fYcbcrConversionInfo); - } - return GrBackendFormat::MakeVk(info.fFormat); - } -#endif #ifdef SK_METAL case GrBackendApi::kMetal: { GrMtlTextureInfo mtlInfo; @@ -1148,13 +739,6 @@ GrBackendFormat GrBackendRenderTarget::getBackendFormat() const { auto info = fD3DInfo.snapTextureResourceInfo(); return GrBackendFormat::MakeDxgi(info.fFormat); } -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: { - GrDawnRenderTargetInfo dawnInfo; - SkAssertResult(this->getDawnRenderTargetInfo(&dawnInfo)); - return GrBackendFormat::MakeDawn(dawnInfo.fFormat); - } #endif case GrBackendApi::kMock: return fMockInfo.getBackendFormat(); @@ -1172,21 +756,16 @@ bool GrBackendRenderTarget::getMockRenderTargetInfo(GrMockRenderTargetInfo* outI } void GrBackendRenderTarget::setMutableState(const skgpu::MutableTextureState& state) { - fMutableState->set(state); + fRTData->setMutableState(state); } bool GrBackendRenderTarget::isProtected() const { if (!this->isValid()) { return false; } - if (this->backend() == GrBackendApi::kOpenGL) { + if (this->backend() == GrBackendApi::kOpenGL || this->backend() == GrBackendApi::kVulkan) { return fRTData->isProtected(); } -#ifdef SK_VULKAN - if (this->backend() == GrBackendApi::kVulkan) { - return fVkInfo.isProtected(); - } -#endif if (this->backend() == GrBackendApi::kMock) { return fMockInfo.isProtected(); } @@ -1194,7 +773,7 @@ bool GrBackendRenderTarget::isProtected() const { return false; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrBackendRenderTarget::TestingOnly_Equals(const GrBackendRenderTarget& r0, const GrBackendRenderTarget& r1) { if (!r0.isValid() || !r1.isValid()) { @@ -1211,13 +790,10 @@ bool GrBackendRenderTarget::TestingOnly_Equals(const GrBackendRenderTarget& r0, switch (r0.fBackend) { case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return r0.fRTData->equal(r1.fRTData.get()); case GrBackendApi::kMock: return r0.fMockInfo == r1.fMockInfo; -#ifdef SK_VULKAN - case GrBackendApi::kVulkan: - return r0.fVkInfo == r1.fVkInfo; -#endif #ifdef SK_METAL case GrBackendApi::kMetal: return r0.fMtlInfo == r1.fMtlInfo; @@ -1225,10 +801,6 @@ bool GrBackendRenderTarget::TestingOnly_Equals(const GrBackendRenderTarget& r0, #ifdef SK_DIRECT3D case GrBackendApi::kDirect3D: return r0.fD3DInfo == r1.fD3DInfo; -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: - return r0.fDawnInfo == r1.fDawnInfo; #endif default: return false; diff --git a/src/gpu/ganesh/GrBackendSurfacePriv.h b/src/gpu/ganesh/GrBackendSurfacePriv.h index a9ff95625ca3..8e20484bd22e 100644 --- a/src/gpu/ganesh/GrBackendSurfacePriv.h +++ b/src/gpu/ganesh/GrBackendSurfacePriv.h @@ -8,20 +8,24 @@ #ifndef GrBackendSurfacePriv_DEFINED #define GrBackendSurfacePriv_DEFINED +#include "include/core/SkRefCnt.h" #include "include/gpu/GrBackendSurface.h" #include "include/private/base/SkAssert.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" +#include "src/gpu/MutableTextureStateRef.h" // IWYU pragma: keep #include #include -#include #include #include -#include enum class GrBackendApi : unsigned int; enum class SkTextureCompressionType; -namespace skgpu { enum class Mipmapped : bool; } + +namespace skgpu { +enum class Mipmapped : bool; +class MutableTextureState; +} class GrBackendFormatData { public: @@ -35,13 +39,19 @@ class GrBackendFormatData { #endif protected: GrBackendFormatData() = default; + GrBackendFormatData(const GrBackendFormatData&) = default; + + using AnyFormatData = GrBackendFormat::AnyFormatData; private: friend class GrBackendFormat; virtual uint32_t channelMask() const = 0; virtual GrColorFormatDesc desc() const = 0; virtual std::string toString() const = 0; - virtual GrBackendFormatData* copy() const = 0; + virtual void copyTo(AnyFormatData&) const = 0; + + // Vulkan-only API: + virtual void makeTexture2D() {} }; class GrBackendTextureData { @@ -52,6 +62,9 @@ class GrBackendTextureData { #endif protected: GrBackendTextureData() = default; + GrBackendTextureData(const GrBackendTextureData&) = default; + + using AnyTextureData = GrBackendTexture::AnyTextureData; private: friend class GrBackendTexture; @@ -59,7 +72,11 @@ class GrBackendTextureData { virtual bool equal(const GrBackendTextureData* that) const = 0; virtual bool isSameTexture(const GrBackendTextureData*) const = 0; virtual GrBackendFormat getBackendFormat() const = 0; - virtual GrBackendTextureData* copy() const = 0; + virtual void copyTo(AnyTextureData&) const = 0; + + // Vulkan-only API: + virtual sk_sp getMutableState() const { return nullptr; } + virtual void setMutableState(const skgpu::MutableTextureState&) {} }; class GrBackendRenderTargetData { @@ -70,39 +87,47 @@ class GrBackendRenderTargetData { #endif protected: GrBackendRenderTargetData() = default; + GrBackendRenderTargetData(const GrBackendRenderTargetData&) = default; + + using AnyRenderTargetData = GrBackendRenderTarget::AnyRenderTargetData; private: friend class GrBackendRenderTarget; - virtual bool isValid() const = 0; virtual GrBackendFormat getBackendFormat() const = 0; virtual bool isProtected() const = 0; virtual bool equal(const GrBackendRenderTargetData* that) const = 0; - virtual GrBackendRenderTargetData* copy() const = 0; + virtual void copyTo(AnyRenderTargetData&) const = 0; + + // Vulkan-only API: + virtual sk_sp getMutableState() const { return nullptr; } + virtual void setMutableState(const skgpu::MutableTextureState&) {} }; class GrBackendSurfacePriv final { public: + template static GrBackendFormat MakeGrBackendFormat(GrTextureType textureType, GrBackendApi api, - std::unique_ptr data) { - return GrBackendFormat(textureType, api, std::move(data)); + const FormatData& data) { + return GrBackendFormat(textureType, api, data); } static const GrBackendFormatData* GetBackendData(const GrBackendFormat& format) { return format.fFormatData.get(); } + template static GrBackendTexture MakeGrBackendTexture(int width, int height, std::string_view label, skgpu::Mipmapped mipped, GrBackendApi backend, GrTextureType texture, - std::unique_ptr data) { - return GrBackendTexture(width, height, label, mipped, backend, texture, std::move(data)); + const TextureData& data) { + return GrBackendTexture(width, height, label, mipped, backend, texture, data); } - static GrBackendTextureData* GetBackendData(const GrBackendTexture& tex) { + static const GrBackendTextureData* GetBackendData(const GrBackendTexture& tex) { return tex.fTextureData.get(); } @@ -111,21 +136,25 @@ class GrBackendSurfacePriv final { return tex->fTextureData.get(); } - static GrBackendRenderTarget MakeGrBackendRenderTarget( - int width, - int height, - int sampleCnt, - int stencilBits, - GrBackendApi backend, - bool framebufferOnly, - std::unique_ptr data) { + template + static GrBackendRenderTarget MakeGrBackendRenderTarget(int width, + int height, + int sampleCnt, + int stencilBits, + GrBackendApi backend, + bool framebufferOnly, + const RenderTargetData& data) { return GrBackendRenderTarget( - width, height, sampleCnt, stencilBits, backend, framebufferOnly, std::move(data)); + width, height, sampleCnt, stencilBits, backend, framebufferOnly, data); } static const GrBackendRenderTargetData* GetBackendData(const GrBackendRenderTarget& rt) { return rt.fRTData.get(); } + + static GrBackendRenderTargetData* GetBackendData(GrBackendRenderTarget* rt) { + return rt->fRTData.get(); + } }; #endif diff --git a/src/gpu/ganesh/GrBackendTextureImageGenerator.cpp b/src/gpu/ganesh/GrBackendTextureImageGenerator.cpp index 1629628a746a..707b09c6b74e 100644 --- a/src/gpu/ganesh/GrBackendTextureImageGenerator.cpp +++ b/src/gpu/ganesh/GrBackendTextureImageGenerator.cpp @@ -76,6 +76,10 @@ GrBackendTextureImageGenerator::~GrBackendTextureImageGenerator() { fRefHelper->unref(); } +bool GrBackendTextureImageGenerator::onIsProtected() const { + return fBackendTexture.isProtected(); +} + /////////////////////////////////////////////////////////////////////////////////////////////////// void GrBackendTextureImageGenerator::ReleaseRefHelper_TextureReleaseProc(void* ctx) { diff --git a/src/gpu/ganesh/GrBackendTextureImageGenerator.h b/src/gpu/ganesh/GrBackendTextureImageGenerator.h index b834ea253f72..8f2c671b951f 100644 --- a/src/gpu/ganesh/GrBackendTextureImageGenerator.h +++ b/src/gpu/ganesh/GrBackendTextureImageGenerator.h @@ -45,6 +45,7 @@ class GrBackendTextureImageGenerator : public GrTextureGenerator { } return true; } + bool onIsProtected() const override; GrSurfaceProxyView onGenerateTexture(GrRecordingContext*, const SkImageInfo&, GrMipmapped mipmapped, GrImageTexGenPolicy) override; diff --git a/src/gpu/ganesh/GrBackendUtils.cpp b/src/gpu/ganesh/GrBackendUtils.cpp index 95e6022dce56..afbde4c7e494 100644 --- a/src/gpu/ganesh/GrBackendUtils.cpp +++ b/src/gpu/ganesh/GrBackendUtils.cpp @@ -15,11 +15,6 @@ #include "src/gpu/ganesh/GrBackendSurfacePriv.h" #include "src/gpu/ganesh/GrDataUtils.h" -#ifdef SK_VULKAN -#include "include/private/gpu/vk/SkiaVulkan.h" -#include "src/gpu/vk/VulkanUtilsPriv.h" -#endif - #ifdef SK_DIRECT3D #include "src/gpu/ganesh/d3d/GrD3DUtil.h" #endif @@ -28,36 +23,11 @@ #include "src/gpu/ganesh/mtl/GrMtlCppUtil.h" #endif -#ifdef SK_DAWN -#include "src/gpu/dawn/DawnUtilsPriv.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" -#include -namespace wgpu { enum class TextureFormat : uint32_t; } -#endif - SkTextureCompressionType GrBackendFormatToCompressionType(const GrBackendFormat& format) { switch (format.backend()) { - case GrBackendApi::kOpenGL: { + case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return GrBackendSurfacePriv::GetBackendData(format)->compressionType(); - } - case GrBackendApi::kVulkan: { -#ifdef SK_VULKAN - VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); - switch (vkFormat) { - case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: - return SkTextureCompressionType::kETC2_RGB8_UNORM; - case VK_FORMAT_BC1_RGB_UNORM_BLOCK: - return SkTextureCompressionType::kBC1_RGB8_UNORM; - case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: - return SkTextureCompressionType::kBC1_RGBA8_UNORM; - default: - return SkTextureCompressionType::kNone; - } -#else - break; -#endif - } case GrBackendApi::kMetal: { #ifdef SK_METAL return GrMtlBackendFormatToCompressionType(format); @@ -79,30 +49,21 @@ SkTextureCompressionType GrBackendFormatToCompressionType(const GrBackendFormat& break; #endif } - case GrBackendApi::kDawn: { - return SkTextureCompressionType::kNone; - } case GrBackendApi::kMock: { return format.asMockCompressionType(); } + case GrBackendApi::kUnsupported: { + break; + } } return SkTextureCompressionType::kNone; } size_t GrBackendFormatBytesPerBlock(const GrBackendFormat& format) { switch (format.backend()) { - case GrBackendApi::kOpenGL: { + case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return GrBackendSurfacePriv::GetBackendData(format)->bytesPerBlock(); - } - case GrBackendApi::kVulkan: { -#ifdef SK_VULKAN - VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); - return skgpu::VkFormatBytesPerBlock(vkFormat); -#else - break; -#endif - } case GrBackendApi::kMetal: { #ifdef SK_METAL return GrMtlBackendFormatBytesPerBlock(format); @@ -117,15 +78,6 @@ size_t GrBackendFormatBytesPerBlock(const GrBackendFormat& format) { return GrDxgiFormatBytesPerBlock(dxgiFormat); #else break; -#endif - } - case GrBackendApi::kDawn: { -#ifdef SK_DAWN - wgpu::TextureFormat dawnFormat; - SkAssertResult(format.asDawnFormat(&dawnFormat)); - return skgpu::DawnFormatBytesPerBlock(dawnFormat); -#else - break; #endif } case GrBackendApi::kMock: { @@ -138,6 +90,9 @@ size_t GrBackendFormatBytesPerBlock(const GrBackendFormat& format) { } return GrColorTypeBytesPerPixel(format.asMockColorType()); } + case GrBackendApi::kUnsupported: { + break; + } } return 0; } @@ -151,18 +106,9 @@ size_t GrBackendFormatBytesPerPixel(const GrBackendFormat& format) { int GrBackendFormatStencilBits(const GrBackendFormat& format) { switch (format.backend()) { - case GrBackendApi::kOpenGL: { + case GrBackendApi::kOpenGL: + case GrBackendApi::kVulkan: return GrBackendSurfacePriv::GetBackendData(format)->stencilBits(); - } - case GrBackendApi::kVulkan: { -#ifdef SK_VULKAN - VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); - return skgpu::VkFormatStencilBits(vkFormat); -#else - break; -#endif - } case GrBackendApi::kMetal: { #ifdef SK_METAL return GrMtlBackendFormatStencilBits(format); @@ -177,15 +123,6 @@ int GrBackendFormatStencilBits(const GrBackendFormat& format) { return GrDxgiFormatStencilBits(dxgiFormat); #else break; -#endif - } - case GrBackendApi::kDawn: { -#ifdef SK_DAWN - wgpu::TextureFormat dawnFormat; - SkAssertResult(format.asDawnFormat(&dawnFormat)); - return GrDawnFormatStencilBits(dawnFormat); -#else - break; #endif } case GrBackendApi::kMock: { @@ -193,6 +130,10 @@ int GrBackendFormatStencilBits(const GrBackendFormat& format) { static constexpr int kMockStencilBits = 8; return kMockStencilBits; } + break; + } + case GrBackendApi::kUnsupported: { + break; } } return 0; diff --git a/src/gpu/ganesh/GrBlurUtils.cpp b/src/gpu/ganesh/GrBlurUtils.cpp index 6f80ea08235b..6d1c4558e087 100644 --- a/src/gpu/ganesh/GrBlurUtils.cpp +++ b/src/gpu/ganesh/GrBlurUtils.cpp @@ -28,6 +28,7 @@ #include "include/core/SkSamplingOptions.h" #include "include/core/SkScalar.h" #include "include/core/SkSize.h" +#include "include/core/SkSpan.h" #include "include/core/SkString.h" #include "include/core/SkStrokeRec.h" #include "include/core/SkSurface.h" @@ -56,6 +57,7 @@ #include "src/core/SkRRectPriv.h" #include "src/core/SkRuntimeEffectPriv.h" #include "src/core/SkTraceEvent.h" +#include "src/gpu/BlurUtils.h" #include "src/gpu/ResourceKey.h" #include "src/gpu/SkBackingFit.h" #include "src/gpu/Swizzle.h" @@ -83,14 +85,13 @@ #include "src/gpu/ganesh/SurfaceDrawContext.h" #include "src/gpu/ganesh/SurfaceFillContext.h" #include "src/gpu/ganesh/effects/GrBlendFragmentProcessor.h" -#include "src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h" -#include "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h" #include "src/gpu/ganesh/effects/GrMatrixEffect.h" #include "src/gpu/ganesh/effects/GrSkSLFP.h" #include "src/gpu/ganesh/effects/GrTextureEffect.h" #include "src/gpu/ganesh/geometry/GrStyledShape.h" #include +#include #include #include #include @@ -390,7 +391,7 @@ static bool can_filter_mask(const SkMaskFilterBase* maskFilter, } auto bmf = static_cast(maskFilter); SkScalar xformedSigma = bmf->computeXformedSigma(ctm); - if (IsEffectivelyZeroSigma(xformedSigma)) { + if (skgpu::BlurIsEffectivelyIdentity(xformedSigma)) { *maskRect = devSpaceShapeBounds; return maskRect->intersect(clipBounds); } @@ -672,7 +673,7 @@ static std::unique_ptr create_profile_effect(GrRecordingCon static std::unique_ptr make_circle_blur(GrRecordingContext* context, const SkRect& circle, float sigma) { - if (IsEffectivelyZeroSigma(sigma)) { + if (skgpu::BlurIsEffectivelyIdentity(sigma)) { return nullptr; } @@ -754,7 +755,7 @@ static int create_integral_table(float sixSigma, SkBitmap* table) { static std::unique_ptr make_rect_integral_fp(GrRecordingContext* rContext, float sixSigma) { - SkASSERT(!IsEffectivelyZeroSigma(sixSigma / 6.f)); + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(sixSigma / 6.f)); auto threadSafeCache = rContext->priv().threadSafeCache(); int width = create_integral_table(sixSigma, nullptr); @@ -800,7 +801,7 @@ static std::unique_ptr make_rect_blur(GrRecordingContext* c SkASSERT(viewMatrix.preservesRightAngles()); SkASSERT(srcRect.isSorted()); - if (IsEffectivelyZeroSigma(transformedSigma)) { + if (skgpu::BlurIsEffectivelyIdentity(transformedSigma)) { // No need to blur the rect return nullptr; } @@ -933,7 +934,7 @@ static constexpr auto kBlurredRRectMaskOrigin = kTopLeft_GrSurfaceOrigin; static void make_blurred_rrect_key(skgpu::UniqueKey* key, const SkRRect& rrectToDraw, float xformedSigma) { - SkASSERT(!IsEffectivelyZeroSigma(xformedSigma)); + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(xformedSigma)); static const skgpu::UniqueKey::Domain kDomain = skgpu::UniqueKey::GenerateDomain(); skgpu::UniqueKey::Builder builder(key, kDomain, 9, "RoundRect Blur Mask"); @@ -958,7 +959,7 @@ static bool fillin_view_on_gpu(GrDirectContext* dContext, const SkRRect& rrectToDraw, const SkISize& dimensions, float xformedSigma) { - SkASSERT(!IsEffectivelyZeroSigma(xformedSigma)); + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(xformedSigma)); // We cache blur masks. Use default surface props here so we can use the same cached mask // regardless of the final dst surface. @@ -1062,45 +1063,15 @@ static uint8_t eval_H(int x, return accum + 0.5f; } -static void compute_1D_gaussian_kernel(float* kernel, float sigma, int radius) { - SkASSERT(radius == SigmaRadius(sigma)); - if (IsEffectivelyZeroSigma(sigma)) { - // Calling SigmaRadius() produces 1, just computing ceil(sigma)*3 produces 3 - SkASSERT(KernelWidth(radius) == 1); - std::fill_n(kernel, 1, 0.f); - kernel[0] = 1.f; - return; - } - - // If this fails, kEffectivelyZeroSigma isn't big enough to prevent precision issues - SkASSERT(!SkScalarNearlyZero(2.f * sigma * sigma)); - - const float sigmaDenom = 1.0f / (2.f * sigma * sigma); - int size = KernelWidth(radius); - float sum = 0.0f; - for (int i = 0; i < size; ++i) { - float term = static_cast(i - radius); - // Note that the constant term (1/(sqrt(2*pi*sigma^2)) of the Gaussian - // is dropped here, since we renormalize the kernel below. - kernel[i] = sk_float_exp(-term * term * sigmaDenom); - sum += kernel[i]; - } - // Normalize the kernel - float scale = 1.0f / sum; - for (int i = 0; i < size; ++i) { - kernel[i] *= scale; - } -} - // Create a cpu-side blurred-rrect mask that is close to the version the gpu would've produced. // The match needs to be close bc the cpu- and gpu-generated version must be interchangeable. static GrSurfaceProxyView create_mask_on_cpu(GrRecordingContext* rContext, const SkRRect& rrectToDraw, const SkISize& dimensions, float xformedSigma) { - SkASSERT(!IsEffectivelyZeroSigma(xformedSigma)); - int radius = SigmaRadius(xformedSigma); - int kernelSize = 2 * radius + 1; + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(xformedSigma)); + int radius = skgpu::BlurSigmaRadius(xformedSigma); + int kernelSize = skgpu::BlurKernelWidth(radius); SkASSERT(kernelSize % 2); SkASSERT(dimensions.width() % 2); @@ -1113,8 +1084,7 @@ static GrSurfaceProxyView create_mask_on_cpu(GrRecordingContext* rContext, const int halfHeightPlus1 = (dimensions.height() / 2) + 1; std::unique_ptr kernel(new float[kernelSize]); - - compute_1D_gaussian_kernel(kernel.get(), xformedSigma, radius); + skgpu::Compute1DBlurKernel(xformedSigma, radius, SkSpan(kernel.get(), kernelSize)); SkBitmap integral; if (!create_integral_table(6 * xformedSigma, &integral)) { @@ -1177,7 +1147,7 @@ static std::unique_ptr find_or_create_rrect_blur_mask_fp( const SkRRect& rrectToDraw, const SkISize& dimensions, float xformedSigma) { - SkASSERT(!IsEffectivelyZeroSigma(xformedSigma)); + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(xformedSigma)); skgpu::UniqueKey key; make_blurred_rrect_key(&key, rrectToDraw, xformedSigma); @@ -1265,7 +1235,7 @@ static std::unique_ptr make_rrect_blur(GrRecordingContext* return nullptr; } - if (IsEffectivelyZeroSigma(xformedSigma)) { + if (skgpu::BlurIsEffectivelyIdentity(xformedSigma)) { return nullptr; } @@ -1385,7 +1355,7 @@ static bool direct_filter_mask(GrRecordingContext* context, } SkScalar xformedSigma = bmf->computeXformedSigma(viewMatrix); - if (IsEffectivelyZeroSigma(xformedSigma)) { + if (skgpu::BlurIsEffectivelyIdentity(xformedSigma)) { sdc->drawShape(clip, std::move(paint), GrAA::kYes, viewMatrix, GrStyledShape(shape)); return true; } @@ -1818,68 +1788,6 @@ static void draw_shape_with_mask_filter(GrRecordingContext* rContext, } } -void Compute1DLinearGaussianKernel(float* kernel, float* offset, float sigma, int radius) { - // Given 2 adjacent gaussian points, they are blended as: Wi * Ci + Wj * Cj. - // The GPU will mix Ci and Cj as Ci * (1 - x) + Cj * x during sampling. - // Compute W', x such that W' * (Ci * (1 - x) + Cj * x) = Wi * Ci + Wj * Cj. - // Solving W' * x = Wj, W' * (1 - x) = Wi: - // W' = Wi + Wj - // x = Wj / (Wi + Wj) - auto get_new_weight = [](float* new_w, float* offset, float wi, float wj) { - *new_w = wi + wj; - *offset = wj / (wi + wj); - }; - - // Create a temporary standard kernel. - int size = KernelWidth(radius); - std::unique_ptr temp_kernel(new float[size]); - compute_1D_gaussian_kernel(temp_kernel.get(), sigma, radius); - - // Note that halfsize isn't just size / 2, but radius + 1. This is the size of the output array. - int halfsize = LinearKernelWidth(radius); - int halfradius = halfsize / 2; - int low_index = halfradius - 1; - - // Compute1DGaussianKernel produces a full 2N + 1 kernel. Since the kernel can be mirrored, - // compute only the upper half and mirror to the lower half. - - int index = radius; - if (radius & 1) { - // If N is odd, then use two samples. - // The centre texel gets sampled twice, so halve its influence for each sample. - // We essentially sample like this: - // Texel edges - // v v v v - // | | | | - // \-----^---/ Lower sample - // \---^-----/ Upper sample - get_new_weight(&kernel[halfradius], - &offset[halfradius], - temp_kernel[index] * 0.5f, - temp_kernel[index + 1]); - kernel[low_index] = kernel[halfradius]; - offset[low_index] = -offset[halfradius]; - index++; - low_index--; - } else { - // If N is even, then there are an even number of texels on either side of the centre texel. - // Sample the centre texel directly. - kernel[halfradius] = temp_kernel[index]; - offset[halfradius] = 0.0f; - } - index++; - - // Every other pair gets one sample. - for (int i = halfradius + 1; i < halfsize; index += 2, i++, low_index--) { - get_new_weight(&kernel[i], &offset[i], temp_kernel[index], temp_kernel[index + 1]); - offset[i] += static_cast(index - radius); - - // Mirror to lower half. - kernel[low_index] = kernel[i]; - offset[low_index] = -offset[i]; - } -} - bool ComputeBlurredRRectParams(const SkRRect& srcRRect, const SkRRect& devRRect, SkScalar sigma, @@ -1999,51 +1907,52 @@ void DrawShapeWithMaskFilter(GrRecordingContext* rContext, // =================== Gaussian Blur ========================================= -using Direction = GrGaussianConvolutionFragmentProcessor::Direction; - -static void fill_in_2D_gaussian_kernel( - float* kernel, int width, int height, SkScalar sigmaX, SkScalar sigmaY) { - const float twoSigmaSqrdX = 2.0f * SkScalarToFloat(SkScalarSquare(sigmaX)); - const float twoSigmaSqrdY = 2.0f * SkScalarToFloat(SkScalarSquare(sigmaY)); - - // GaussianBlur() should have detected the cases where a 2D blur - // degenerates to a 1D on X or Y, or to the identity. - SkASSERT(!IsEffectivelyZeroSigma(sigmaX) && - !IsEffectivelyZeroSigma(sigmaY)); - SkASSERT(!SkScalarNearlyZero(twoSigmaSqrdX) && !SkScalarNearlyZero(twoSigmaSqrdY)); - - const float sigmaXDenom = 1.0f / twoSigmaSqrdX; - const float sigmaYDenom = 1.0f / twoSigmaSqrdY; - const int xRadius = width / 2; - const int yRadius = height / 2; - - float sum = 0.0f; - for (int x = 0; x < width; x++) { - float xTerm = static_cast(x - xRadius); - xTerm = xTerm * xTerm * sigmaXDenom; - for (int y = 0; y < height; y++) { - float yTerm = static_cast(y - yRadius); - float xyTerm = sk_float_exp(-(xTerm + yTerm * yTerm * sigmaYDenom)); - // Note that the constant term (1/(sqrt(2*pi*sigma^2)) of the Gaussian - // is dropped here, since we renormalize the kernel below. - kernel[y * width + x] = xyTerm; - sum += xyTerm; - } - } - // Normalize the kernel - float scale = 1.0f / sum; - for (int i = 0; i < width * height; ++i) { - kernel[i] *= scale; +namespace { + +enum class Direction { kX, kY }; + +std::unique_ptr make_texture_effect(const GrCaps* caps, + GrSurfaceProxyView srcView, + SkAlphaType srcAlphaType, + const GrSamplerState& sampler, + const SkIRect& srcSubset, + const SkIRect& srcRelativeDstRect, + const SkISize& radii) { + // It's pretty common to blur a subset of an input texture. In reduced shader mode we always + // apply the wrap mode in the shader. + if (caps->reducedShaderMode()) { + return GrTextureEffect::MakeSubset(std::move(srcView), + srcAlphaType, + SkMatrix::I(), + sampler, + SkRect::Make(srcSubset), + *caps, + GrTextureEffect::kDefaultBorder, + /*alwaysUseShaderTileMode=*/true); + } else { + // Inset because we expect to be invoked at pixel centers + SkRect domain = SkRect::Make(srcRelativeDstRect); + domain.inset(0.5f, 0.5f); + domain.outset(radii.width(), radii.height()); + return GrTextureEffect::MakeSubset(std::move(srcView), + srcAlphaType, + SkMatrix::I(), + sampler, + SkRect::Make(srcSubset), + domain, + *caps); } } +} // end namespace + /** * Draws 'dstRect' into 'surfaceFillContext' evaluating a 1D Gaussian over 'srcView'. The src rect * is 'dstRect' offset by 'dstToSrcOffset'. 'mode' and 'bounds' are applied to the src coords. */ static void convolve_gaussian_1d(skgpu::ganesh::SurfaceFillContext* sfc, GrSurfaceProxyView srcView, - const SkIRect srcSubset, + const SkIRect& srcSubset, SkIVector dstToSrcOffset, const SkIRect& dstRect, SkAlphaType srcAlphaType, @@ -2051,23 +1960,33 @@ static void convolve_gaussian_1d(skgpu::ganesh::SurfaceFillContext* sfc, int radius, float sigma, SkTileMode mode) { - SkASSERT(radius && !IsEffectivelyZeroSigma(sigma)); - auto wm = SkTileModeToWrapMode(mode); + SkASSERT(radius && !skgpu::BlurIsEffectivelyIdentity(sigma)); auto srcRect = dstRect.makeOffset(dstToSrcOffset); - // NOTE: This could just be GrMatrixConvolutionEffect with one of the dimensions set to 1 - // and the appropriate kernel already computed, but there's value in keeping the shader simpler. - // TODO(michaelludwig): Is this true? If not, is the shader key simplicity worth it two have - // two convolution effects? - std::unique_ptr conv = - GrGaussianConvolutionFragmentProcessor::Make(std::move(srcView), - srcAlphaType, - direction, - radius, - sigma, - wm, - srcSubset, - &srcRect, - *sfc->caps()); + + std::array offsetsAndKernel; + skgpu::Compute1DBlurLinearKernel(sigma, radius, offsetsAndKernel); + + // The child of the 1D linear blur effect must be linearly sampled. + GrSamplerState sampler{SkTileModeToWrapMode(mode), GrSamplerState::Filter::kLinear}; + + SkISize radii = {direction == Direction::kX ? radius : 0, + direction == Direction::kY ? radius : 0}; + std::unique_ptr child = make_texture_effect(sfc->caps(), + std::move(srcView), + srcAlphaType, + sampler, + srcSubset, + srcRect, + radii); + + auto conv = GrSkSLFP::Make(skgpu::GetLinearBlur1DEffect(radius), + "GaussianBlur1D", + /*inputFP=*/nullptr, + GrSkSLFP::OptFlags::kCompatibleWithCoverageAsAlpha, + "offsetsAndKernel", SkSpan{offsetsAndKernel}, + "dir", direction == Direction::kX ? SkV2{1.f, 0.f} + : SkV2{0.f, 1.f}, + "child", std::move(child)); sfc->fillRectToRectWithFP(srcRect, dstRect, std::move(conv)); } @@ -2085,8 +2004,8 @@ static std::unique_ptr convolve_gaussian_2d( sk_sp finalCS, SkBackingFit dstFit) { SkASSERT(radiusX && radiusY); - SkASSERT(!IsEffectivelyZeroSigma(sigmaX) && - !IsEffectivelyZeroSigma(sigmaY)); + SkASSERT(!skgpu::BlurIsEffectivelyIdentity(sigmaX) && + !skgpu::BlurIsEffectivelyIdentity(sigmaY)); // Create the sdc with default SkSurfaceProps. Gaussian blurs will soon use a // SurfaceFillContext, at which point the SkSurfaceProps won't exist anymore. auto sdc = skgpu::ganesh::SurfaceDrawContext::Make( @@ -2105,29 +2024,29 @@ static std::unique_ptr convolve_gaussian_2d( return nullptr; } - SkISize size = SkISize::Make(KernelWidth(radiusX), - KernelWidth(radiusY)); - SkIPoint kernelOffset = SkIPoint::Make(radiusX, radiusY); - GrPaint paint; - auto wm = SkTileModeToWrapMode(mode); - // GaussianBlur() should have downsampled the request until we can handle the 2D blur with - // just a uniform array. - SkASSERT(size.area() <= GrMatrixConvolutionEffect::kMaxUniformSize); - float kernel[GrMatrixConvolutionEffect::kMaxUniformSize]; - fill_in_2D_gaussian_kernel(kernel, size.width(), size.height(), sigmaX, sigmaY); - auto conv = GrMatrixConvolutionEffect::Make(rContext, - std::move(srcView), - srcBounds, - size, - kernel, - 1.0f, - 0.0f, - kernelOffset, - wm, - true, - *sdc->caps()); + // just a uniform array, which is asserted inside the Compute function. + const SkISize radii{radiusX, radiusY}; + std::array kernel; + skgpu::Compute2DBlurKernel({sigmaX, sigmaY}, radii, kernel); + + GrSamplerState sampler{SkTileModeToWrapMode(mode), GrSamplerState::Filter::kNearest}; + auto child = make_texture_effect(sdc->caps(), + std::move(srcView), + kPremul_SkAlphaType, + sampler, + srcBounds, + dstBounds, + radii); + auto conv = GrSkSLFP::Make(skgpu::GetBlur2DEffect(radii), + "GaussianBlur2D", + /*inputFP=*/nullptr, + GrSkSLFP::OptFlags::kNone, + "kernel", SkSpan{kernel}, + "radii", radii, + "child", std::move(child)); + GrPaint paint; paint.setColorFragmentProcessor(std::move(conv)); paint.setPorterDuffXPFactory(SkBlendMode::kSrc); @@ -2157,7 +2076,7 @@ static std::unique_ptr convolve_gaussian( SkTileMode mode, sk_sp finalCS, SkBackingFit fit) { - SkASSERT(radius > 0 && !IsEffectivelyZeroSigma(sigma)); + SkASSERT(radius > 0 && !skgpu::BlurIsEffectivelyIdentity(sigma)); // Logically we're creating an infinite blur of 'srcBounds' of 'srcView' with 'mode' tiling // and then capturing the 'dstBounds' portion in a new RTC where the top left of 'dstBounds' is // at {0, 0} in the new RTC. @@ -2522,8 +2441,8 @@ std::unique_ptr GaussianBlur(GrRecordingConte return nullptr; } - int radiusX = SigmaRadius(sigmaX); - int radiusY = SigmaRadius(sigmaY); + int radiusX = skgpu::BlurSigmaRadius(sigmaX); + int radiusY = skgpu::BlurSigmaRadius(sigmaY); // Attempt to reduce the srcBounds in order to detect that we can set the sigmas to zero or // to reduce the amount of work to rescale the source if sigmas are large. TODO: Could consider // how to minimize the required source bounds for repeat/mirror modes. @@ -2596,14 +2515,16 @@ std::unique_ptr GaussianBlur(GrRecordingConte return result; } + // Any sigma higher than the limit for the 1D linear-filtered Gaussian blur is downsampled. If + // the sigma in X and Y just so happen to fit in the 2D limit, we'll use that. The 2D limit is + // always less than the linear blur sigma limit. + static constexpr float kMaxSigma = skgpu::kMaxLinearBlurSigma; if (sigmaX <= kMaxSigma && sigmaY <= kMaxSigma) { - SkASSERT(radiusX <= GrGaussianConvolutionFragmentProcessor::kMaxKernelRadius); - SkASSERT(radiusY <= GrGaussianConvolutionFragmentProcessor::kMaxKernelRadius); // For really small blurs (certainly no wider than 5x5 on desktop GPUs) it is faster to just // launch a single non separable kernel vs two launches. - const int kernelSize = (2 * radiusX + 1) * (2 * radiusY + 1); + const int kernelSize = skgpu::BlurKernelWidth(radiusX) * skgpu::BlurKernelWidth(radiusY); if (radiusX > 0 && radiusY > 0 && - kernelSize <= GrMatrixConvolutionEffect::kMaxUniformSize && + kernelSize <= skgpu::kMaxBlurSamples && !rContext->priv().caps()->reducedShaderMode()) { // Apply the proxy offset to src bounds and offset directly return convolve_gaussian_2d(rContext, @@ -2621,6 +2542,8 @@ std::unique_ptr GaussianBlur(GrRecordingConte } // This will automatically degenerate into a single pass of X or Y if only one of the // radii are non-zero. + SkASSERT(skgpu::BlurLinearKernelWidth(radiusX) <= skgpu::kMaxBlurSamples && + skgpu::BlurLinearKernelWidth(radiusY) <= skgpu::kMaxBlurSamples); return two_pass_gaussian(rContext, std::move(srcView), srcColorType, diff --git a/src/gpu/ganesh/GrBlurUtils.h b/src/gpu/ganesh/GrBlurUtils.h index 08fd92929285..0a90db03e45a 100644 --- a/src/gpu/ganesh/GrBlurUtils.h +++ b/src/gpu/ganesh/GrBlurUtils.h @@ -12,7 +12,6 @@ #include "include/core/SkScalar.h" #include "src/gpu/SkBackingFit.h" -#include #include class GrClip; @@ -36,11 +35,8 @@ struct SkISize; * Blur utilities. */ namespace GrBlurUtils { -/** Maximum sigma before the implementation downscales the input image. */ -static constexpr float kMaxSigma = 4.f; -static constexpr int kBlurRRectMaxDivisions = 6; -void Compute1DLinearGaussianKernel(float* kernel, float* offset, float sigma, int radius); +static constexpr int kBlurRRectMaxDivisions = 6; /** * This method computes all the parameters for drawing a partially occluded nine-patched @@ -118,21 +114,6 @@ std::unique_ptr GaussianBlur( SkTileMode mode, SkBackingFit fit = SkBackingFit::kApprox); -/* - * Any sigmas smaller than this are effectively an identity blur so can skip convolution at a higher - * level. The value was chosen because it corresponds roughly to a radius of 1/10px, and is slightly - * greater than sqrt(1/2*sigma^2) for SK_ScalarNearlyZero. - */ -inline bool IsEffectivelyZeroSigma(float sigma) { return sigma <= 0.03f; } - -inline int KernelWidth(int radius) { return 2 * radius + 1; } - -inline int LinearKernelWidth(int radius) { return radius + 1; } - -inline int SigmaRadius(float sigma) { - return IsEffectivelyZeroSigma(sigma) ? 0 : static_cast(ceilf(sigma * 3.0f)); -} - } // namespace GrBlurUtils #endif diff --git a/src/gpu/ganesh/GrBufferTransferRenderTask.h b/src/gpu/ganesh/GrBufferTransferRenderTask.h index bab294ee2299..a3a1316a9b50 100644 --- a/src/gpu/ganesh/GrBufferTransferRenderTask.h +++ b/src/gpu/ganesh/GrBufferTransferRenderTask.h @@ -36,7 +36,7 @@ class GrBufferTransferRenderTask final : public GrRenderTask { } bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "BufferTransfer"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrBufferUpdateRenderTask.h b/src/gpu/ganesh/GrBufferUpdateRenderTask.h index 58288f7f8fe1..ef60d9da595b 100644 --- a/src/gpu/ganesh/GrBufferUpdateRenderTask.h +++ b/src/gpu/ganesh/GrBufferUpdateRenderTask.h @@ -28,7 +28,7 @@ class GrBufferUpdateRenderTask final : public GrRenderTask { } bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "BufferUpdate"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrCaps.cpp b/src/gpu/ganesh/GrCaps.cpp index 8c4c7cbaf65d..1c0b8505fbdc 100644 --- a/src/gpu/ganesh/GrCaps.cpp +++ b/src/gpu/ganesh/GrCaps.cpp @@ -53,6 +53,7 @@ GrCaps::GrCaps(const GrContextOptions& options) { fCrossContextTextureSupport = false; fHalfFloatVertexAttributeSupport = false; fDynamicStateArrayGeometryProcessorTextureSupport = false; + fSupportsProtectedContent = false; fPerformPartialClearsAsDraws = false; fPerformColorClearsAsDraws = false; fAvoidLargeIndexBufferDraws = false; @@ -80,7 +81,7 @@ GrCaps::GrCaps(const GrContextOptions& options) { fInternalMultisampleCount = 0; fSuppressPrints = options.fSuppressPrints; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) fWireframeMode = options.fWireframeMode; #else fWireframeMode = false; @@ -141,7 +142,7 @@ void GrCaps::applyOptionsOverrides(const GrContextOptions& options) { } fMaxTextureSize = std::min(fMaxTextureSize, options.fMaxTextureSizeOverride); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (options.fSuppressAdvancedBlendEquations) { fBlendEquationSupport = kBasic_BlendEquationSupport; } @@ -238,6 +239,7 @@ void GrCaps::dumpJSON(SkJSONWriter* writer) const { writer->appendBool("Half float vertex attribute support", fHalfFloatVertexAttributeSupport); writer->appendBool("Specify GeometryProcessor textures as a dynamic state array", fDynamicStateArrayGeometryProcessorTextureSupport); + writer->appendBool("Supports Protected content", fSupportsProtectedContent); writer->appendBool("Use draws for partial clears", fPerformPartialClearsAsDraws); writer->appendBool("Use draws for color clears", fPerformColorClearsAsDraws); writer->appendBool("Avoid Large IndexBuffer Draws", fAvoidLargeIndexBufferDraws); diff --git a/src/gpu/ganesh/GrCaps.h b/src/gpu/ganesh/GrCaps.h index 218c6829785c..28430f528c86 100644 --- a/src/gpu/ganesh/GrCaps.h +++ b/src/gpu/ganesh/GrCaps.h @@ -408,6 +408,8 @@ class GrCaps : public SkCapabilities { return fDynamicStateArrayGeometryProcessorTextureSupport; } + bool supportsProtectedContent() const { return fSupportsProtectedContent; } + // Not all backends support clearing with a scissor test (e.g. Metal), this will always // return true if performColorClearsAsDraws() returns true. bool performPartialClearsAsDraws() const { @@ -546,7 +548,7 @@ class GrCaps : public SkCapabilities { std::tuple getFallbackColorTypeAndFormat(GrColorType, int sampleCount) const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) virtual std::vector getTestingCombinations() const = 0; #endif @@ -621,6 +623,8 @@ class GrCaps : public SkCapabilities { // Not (yet) implemented in VK backend. bool fDynamicStateArrayGeometryProcessorTextureSupport : 1; + bool fSupportsProtectedContent : 1; + BlendEquationSupport fBlendEquationSupport; uint32_t fAdvBlendEqDisableFlags; static_assert(static_cast(skgpu::BlendEquation::kLast) < 32); diff --git a/src/gpu/ganesh/GrContextThreadSafeProxy.cpp b/src/gpu/ganesh/GrContextThreadSafeProxy.cpp index 2ed0bf645e6b..9a642b0b1780 100644 --- a/src/gpu/ganesh/GrContextThreadSafeProxy.cpp +++ b/src/gpu/ganesh/GrContextThreadSafeProxy.cpp @@ -120,7 +120,7 @@ GrSurfaceCharacterization GrContextThreadSafeProxy::createCharacterization( const GrVkCaps* vkCaps = (const GrVkCaps*) fCaps.get(); // The protection status of the characterization and the context need to match - if (isProtected != GrProtected(vkCaps->supportsProtectedMemory())) { + if (isProtected != GrProtected(vkCaps->supportsProtectedContent())) { return {}; } #endif diff --git a/src/gpu/ganesh/GrCopyRenderTask.h b/src/gpu/ganesh/GrCopyRenderTask.h index fb4d48421222..bfe339066679 100644 --- a/src/gpu/ganesh/GrCopyRenderTask.h +++ b/src/gpu/ganesh/GrCopyRenderTask.h @@ -41,7 +41,7 @@ class GrCopyRenderTask final : public GrRenderTask { ExpectedOutcome onMakeClosed(GrRecordingContext*, SkIRect* targetUpdateBounds) override; bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "Copy"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrDDLContext.cpp b/src/gpu/ganesh/GrDDLContext.cpp index f2e1e24b1dab..af414c1b3b29 100644 --- a/src/gpu/ganesh/GrDDLContext.cpp +++ b/src/gpu/ganesh/GrDDLContext.cpp @@ -43,11 +43,8 @@ class GrDDLContext final : public GrRecordingContext { const GrCaps* caps = this->caps(); - if (this->backend() == GrBackendApi::kMetal || - this->backend() == GrBackendApi::kDirect3D || - this->backend() == GrBackendApi::kDawn) { - // Currently Metal, Direct3D, and Dawn require a live renderTarget to - // compute the key + if (this->backend() == GrBackendApi::kMetal || this->backend() == GrBackendApi::kDirect3D) { + // Currently Metal and Direct3D require a live renderTarget to compute the key return; } diff --git a/src/gpu/ganesh/GrDDLTask.cpp b/src/gpu/ganesh/GrDDLTask.cpp index b1f607ed6bb3..cd9530270a4a 100644 --- a/src/gpu/ganesh/GrDDLTask.cpp +++ b/src/gpu/ganesh/GrDDLTask.cpp @@ -95,7 +95,7 @@ bool GrDDLTask::onExecute(GrOpFlushState* flushState) { return anyCommandsIssued; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrDDLTask::dump(const SkString& label, SkString indent, bool printDependencies, diff --git a/src/gpu/ganesh/GrDDLTask.h b/src/gpu/ganesh/GrDDLTask.h index 1cc5813274dc..7484f14c96a6 100644 --- a/src/gpu/ganesh/GrDDLTask.h +++ b/src/gpu/ganesh/GrDDLTask.h @@ -54,7 +54,7 @@ class GrDDLTask final : public GrRenderTask { bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(const SkString& label, SkString indent, bool printDependencies, diff --git a/src/gpu/ganesh/GrDataUtils.cpp b/src/gpu/ganesh/GrDataUtils.cpp index 12f6407252d2..1a72011d2230 100644 --- a/src/gpu/ganesh/GrDataUtils.cpp +++ b/src/gpu/ganesh/GrDataUtils.cpp @@ -241,7 +241,7 @@ static void fillin_BC1_with_color(SkISize dimensions, const SkColor4f& colorf, c } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // Fill in 'dstPixels' with BC1 blocks derived from the 'pixmap'. void GrTwoColorBC1Compress(const SkPixmap& pixmap, SkColor otherColor, char* dstPixels) { diff --git a/src/gpu/ganesh/GrDataUtils.h b/src/gpu/ganesh/GrDataUtils.h index 58898ee65cb2..f07005c71af3 100644 --- a/src/gpu/ganesh/GrDataUtils.h +++ b/src/gpu/ganesh/GrDataUtils.h @@ -45,7 +45,7 @@ bool GrConvertPixels(const GrPixmap& dst, const GrCPixmap& src, bool flipY = fal /** Clears the dst image to a constant color. */ bool GrClearImage(const GrImageInfo& dstInfo, void* dst, size_t dstRB, std::array color); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** * BC1 compress an image that contains only either opaque black or transparent black and one * other color. diff --git a/src/gpu/ganesh/GrDefaultGeoProcFactory.cpp b/src/gpu/ganesh/GrDefaultGeoProcFactory.cpp index 536f3cf6f2b4..fa40626ee29a 100644 --- a/src/gpu/ganesh/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/ganesh/GrDefaultGeoProcFactory.cpp @@ -257,7 +257,7 @@ class DefaultGeoProc : public GrGeometryProcessor { GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DefaultGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* DefaultGeoProc::TestCreate(GrProcessorTestData* d) { uint32_t flags = 0; if (d->fRandom->nextBool()) { diff --git a/src/gpu/ganesh/GrDirectContext.cpp b/src/gpu/ganesh/GrDirectContext.cpp index dc671d1c978a..dc02df35806f 100644 --- a/src/gpu/ganesh/GrDirectContext.cpp +++ b/src/gpu/ganesh/GrDirectContext.cpp @@ -88,11 +88,8 @@ class GrSemaphore; #ifdef SK_DIRECT3D #include "src/gpu/ganesh/d3d/GrD3DGpu.h" #endif -#ifdef SK_DAWN -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) # include "src/base/SkRandom.h" # if defined(SK_ENABLE_SCOPED_LSAN_SUPPRESSIONS) # include @@ -279,7 +276,7 @@ bool GrDirectContext::init() { this->contextID()); fResourceCache->setProxyProvider(this->proxyProvider()); fResourceCache->setThreadSafeCache(this->threadSafeCache()); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (this->options().fResourceCacheLimitOverride != -1) { this->setResourceCacheLimit(this->options().fResourceCacheLimitOverride); } @@ -1215,7 +1212,7 @@ sk_sp GrDirectContext::MakeGL() { return MakeGL(nullptr, defaultOptions); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGLFunction make_get_error_with_random_oom(GrGLFunction original) { // A SkRandom and a GrGLFunction are too big to be captured by a // GrGLFunction (surprise, surprise). So we make a context object and @@ -1247,7 +1244,7 @@ GrGLFunction make_get_error_with_random_oom(GrGLFunction GrDirectContext::MakeGL(sk_sp glInterface, const GrContextOptions& options) { sk_sp direct(new GrDirectContext(GrBackendApi::kOpenGL, options)); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (options.fRandomGLOOM) { auto copy = sk_make_sp(*glInterface); copy->fFunctions.fGetError = @@ -1362,24 +1359,3 @@ sk_sp GrDirectContext::MakeDirect3D(const GrD3DBackendContext& return direct; } #endif - -#ifdef SK_DAWN -/*************************************************************************************************/ -sk_sp GrDirectContext::MakeDawn(const wgpu::Device& device) { - GrContextOptions defaultOptions; - return MakeDawn(device, defaultOptions); -} - -sk_sp GrDirectContext::MakeDawn(const wgpu::Device& device, - const GrContextOptions& options) { - sk_sp direct(new GrDirectContext(GrBackendApi::kDawn, options)); - - direct->fGpu = GrDawnGpu::Make(device, options, direct.get()); - if (!direct->init()) { - return nullptr; - } - - return direct; -} - -#endif diff --git a/src/gpu/ganesh/GrDirectContextPriv.cpp b/src/gpu/ganesh/GrDirectContextPriv.cpp index 44ca8e86e033..158910a13197 100644 --- a/src/gpu/ganesh/GrDirectContextPriv.cpp +++ b/src/gpu/ganesh/GrDirectContextPriv.cpp @@ -83,7 +83,7 @@ bool GrDirectContextPriv::compile(const GrProgramDesc& desc, const GrProgramInfo ////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrDirectContextPriv::dumpCacheStats(SkString* out) const { #if GR_CACHE_STATS diff --git a/src/gpu/ganesh/GrDirectContextPriv.h b/src/gpu/ganesh/GrDirectContextPriv.h index 2bb62fee8182..b1eab7e2149c 100644 --- a/src/gpu/ganesh/GrDirectContextPriv.h +++ b/src/gpu/ganesh/GrDirectContextPriv.h @@ -122,7 +122,7 @@ class GrDirectContextPriv : public GrRecordingContextPriv { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** Reset GPU stats */ void resetGpuStats() const; diff --git a/src/gpu/ganesh/GrDrawOpAtlas.cpp b/src/gpu/ganesh/GrDrawOpAtlas.cpp index c6aeff29a3dc..6943174466f5 100644 --- a/src/gpu/ganesh/GrDrawOpAtlas.cpp +++ b/src/gpu/ganesh/GrDrawOpAtlas.cpp @@ -10,7 +10,6 @@ #include #include "include/private/base/SkTPin.h" -#include "src/core/SkOpts.h" #include "src/gpu/ganesh/GrBackendUtils.h" #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrOnFlushResourceProvider.h" diff --git a/src/gpu/ganesh/GrDrawOpTest.cpp b/src/gpu/ganesh/GrDrawOpTest.cpp index a198936c0216..76d465ecf07e 100644 --- a/src/gpu/ganesh/GrDrawOpTest.cpp +++ b/src/gpu/ganesh/GrDrawOpTest.cpp @@ -14,7 +14,7 @@ #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrUserStencilSettings.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext_Base* context) { if (context->priv().caps()->avoidStencilBuffers()) { diff --git a/src/gpu/ganesh/GrDrawOpTest.h b/src/gpu/ganesh/GrDrawOpTest.h index 8d74176a8c9d..3c477aee5c95 100644 --- a/src/gpu/ganesh/GrDrawOpTest.h +++ b/src/gpu/ganesh/GrDrawOpTest.h @@ -11,7 +11,7 @@ #include "include/core/SkRefCnt.h" #include "src/gpu/ganesh/GrTestUtils.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) class GrContext_Base; class GrDrawOp; diff --git a/src/gpu/ganesh/GrDrawingManager.cpp b/src/gpu/ganesh/GrDrawingManager.cpp index a9f567dc0615..ecd870b8562e 100644 --- a/src/gpu/ganesh/GrDrawingManager.cpp +++ b/src/gpu/ganesh/GrDrawingManager.cpp @@ -535,7 +535,7 @@ void GrDrawingManager::addOnFlushCallbackObject(GrOnFlushCallbackObject* onFlush fOnFlushCBObjects.push_back(onFlushCBObject); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrDrawingManager::testingOnly_removeOnFlushCallbackObject(GrOnFlushCallbackObject* cb) { int n = std::find(fOnFlushCBObjects.begin(), fOnFlushCBObjects.end(), cb) - fOnFlushCBObjects.begin(); diff --git a/src/gpu/ganesh/GrDrawingManager.h b/src/gpu/ganesh/GrDrawingManager.h index 6e53131cf3c9..9c258236bf5a 100644 --- a/src/gpu/ganesh/GrDrawingManager.h +++ b/src/gpu/ganesh/GrDrawingManager.h @@ -163,7 +163,7 @@ class GrDrawingManager { void addOnFlushCallbackObject(GrOnFlushCallbackObject*); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void testingOnly_removeOnFlushCallbackObject(GrOnFlushCallbackObject*); PathRendererChain::Options testingOnly_getOptionsForPathRendererChain() { return fOptionsForPathRendererChain; diff --git a/src/gpu/ganesh/GrFragmentProcessor.cpp b/src/gpu/ganesh/GrFragmentProcessor.cpp index 44c6b3b54d42..edcadf37c0dd 100644 --- a/src/gpu/ganesh/GrFragmentProcessor.cpp +++ b/src/gpu/ganesh/GrFragmentProcessor.cpp @@ -92,7 +92,7 @@ const GrTextureEffect* GrFragmentProcessor::asTextureEffect() const { return nullptr; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static void recursive_dump_tree_info(const GrFragmentProcessor& fp, SkString indent, SkString* text) { diff --git a/src/gpu/ganesh/GrFragmentProcessor.h b/src/gpu/ganesh/GrFragmentProcessor.h index 787f5bde7a21..0f8eb35d999d 100644 --- a/src/gpu/ganesh/GrFragmentProcessor.h +++ b/src/gpu/ganesh/GrFragmentProcessor.h @@ -297,7 +297,7 @@ class GrFragmentProcessor : public GrProcessor { GrTextureEffect* asTextureEffect(); const GrTextureEffect* asTextureEffect() const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // Generates debug info for this processor tree by recursively calling dumpInfo() on this // processor and its children. SkString dumpTreeInfo() const; diff --git a/src/gpu/ganesh/GrFragmentProcessors.cpp b/src/gpu/ganesh/GrFragmentProcessors.cpp index 565b4f930230..64e3f56793bb 100644 --- a/src/gpu/ganesh/GrFragmentProcessors.cpp +++ b/src/gpu/ganesh/GrFragmentProcessors.cpp @@ -731,13 +731,15 @@ static std::unique_ptr make_shader_fp(const SkPictureShader } else { const int msaaSampleCount = 0; const bool createWithMips = false; + const bool kUnprotected = false; auto image = info.makeImage(SkSurfaces::RenderTarget(ctx, skgpu::Budgeted::kYes, info.imageInfo, msaaSampleCount, kTopLeft_GrSurfaceOrigin, &info.props, - createWithMips), + createWithMips, + kUnprotected), shader->picture().get()); if (!image) { return nullptr; @@ -1006,9 +1008,15 @@ static std::unique_ptr make_gradient_fp(const SkSweepGradie "uniform int useAtanWorkaround;" // specialized "half4 main(float2 coord) {" - "half angle = bool(useAtanWorkaround)" - "? half(2 * atan(-coord.y, length(coord) - coord.x))" - ": half(atan(-coord.y, -coord.x));" + "half angle;" + "if (bool(useAtanWorkaround)) {" + "angle = half(2 * atan(-coord.y, length(coord) - coord.x));" + "} else {" + // Hardcode pi/2 for the angle when x == 0, to avoid undefined behavior in this + // case. This hasn't proven to be necessary in the atan workaround case. + "angle = (coord.x != 0) ? half(atan(-coord.y, -coord.x)) :" + " sign(coord.y) * -1.5707963267949;" + "}" // 0.1591549430918 is 1/(2*pi), used since atan returns values [-pi, pi] "half t = (angle * 0.1591549430918 + 0.5 + bias) * scale;" diff --git a/src/gpu/ganesh/GrGpu.cpp b/src/gpu/ganesh/GrGpu.cpp index 11fbca307d9d..069edf9ef120 100644 --- a/src/gpu/ganesh/GrGpu.cpp +++ b/src/gpu/ganesh/GrGpu.cpp @@ -812,7 +812,7 @@ void GrGpu::dumpJSON(SkJSONWriter* writer) const { void GrGpu::dumpJSON(SkJSONWriter* writer) const { } #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #if GR_GPU_STATS @@ -854,7 +854,7 @@ void GrGpu::Stats::dumpKeyValuePairs(TArray* keys, TArray* val } #endif // GR_GPU_STATS -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) bool GrGpu::CompressedDataIsCorrect(SkISize dimensions, SkTextureCompressionType compressionType, diff --git a/src/gpu/ganesh/GrGpu.h b/src/gpu/ganesh/GrGpu.h index 52435362fcee..6db40f692338 100644 --- a/src/gpu/ganesh/GrGpu.h +++ b/src/gpu/ganesh/GrGpu.h @@ -498,7 +498,7 @@ class GrGpu : public SkRefCnt { int numReorderedDAGsOverBudget() const { return fNumReorderedDAGsOverBudget; } void incNumReorderedDAGsOverBudget() { fNumReorderedDAGsOverBudget++; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString*); void dumpKeyValuePairs( skia_private::TArray* keys, skia_private::TArray* values); @@ -521,7 +521,7 @@ class GrGpu : public SkRefCnt { #else // !GR_GPU_STATS -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString*) {} void dumpKeyValuePairs(skia_private::TArray*, skia_private::TArray*) {} #endif @@ -612,7 +612,7 @@ class GrGpu : public SkRefCnt { virtual bool precompileShader(const SkData& key, const SkData& data) { return false; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** Check a handle represents an actual texture in the backend API that has not been freed. */ virtual bool isTestingOnlyBackendTexture(const GrBackendTexture&) const = 0; diff --git a/src/gpu/ganesh/GrGpuResource.h b/src/gpu/ganesh/GrGpuResource.h index ba332b7f681b..c931109cdb69 100644 --- a/src/gpu/ganesh/GrGpuResource.h +++ b/src/gpu/ganesh/GrGpuResource.h @@ -19,7 +19,7 @@ class GrGpu; class GrResourceCache; class SkTraceMemoryDump; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) class GrSurface; #endif @@ -69,7 +69,7 @@ template class GrIORef : public SkNoncopyable { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int32_t testingOnly_getRefCnt() const { return this->getRefCnt(); } #endif @@ -226,7 +226,7 @@ class GrGpuResource : public GrIORef { static uint32_t CreateUniqueID(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) virtual const GrSurface* asSurface() const { return nullptr; } #endif diff --git a/src/gpu/ganesh/GrOnFlushResourceProvider.cpp b/src/gpu/ganesh/GrOnFlushResourceProvider.cpp index 75d7cc9f90df..de414b4dcb95 100644 --- a/src/gpu/ganesh/GrOnFlushResourceProvider.cpp +++ b/src/gpu/ganesh/GrOnFlushResourceProvider.cpp @@ -40,7 +40,7 @@ const GrCaps* GrOnFlushResourceProvider::caps() const { return fDrawingMgr->getContext()->priv().caps(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrOnFlushResourceProvider::failFlushTimeCallbacks() const { return fDrawingMgr->getContext()->priv().options().fFailFlushTimeCallbacks; } diff --git a/src/gpu/ganesh/GrOnFlushResourceProvider.h b/src/gpu/ganesh/GrOnFlushResourceProvider.h index 749625754b99..2a2deb269923 100644 --- a/src/gpu/ganesh/GrOnFlushResourceProvider.h +++ b/src/gpu/ganesh/GrOnFlushResourceProvider.h @@ -57,7 +57,7 @@ class GrOnFlushResourceProvider { const GrCaps* caps() const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool failFlushTimeCallbacks() const; #endif diff --git a/src/gpu/ganesh/GrProcessor.h b/src/gpu/ganesh/GrProcessor.h index f5025832fbce..422d4c73096e 100644 --- a/src/gpu/ganesh/GrProcessor.h +++ b/src/gpu/ganesh/GrProcessor.h @@ -109,7 +109,7 @@ class GrProcessor { virtual const char* name() const = 0; /** Human-readable dump of all information */ -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) virtual SkString onDumpInfo() const { return SkString(); } SkString dumpInfo() const { diff --git a/src/gpu/ganesh/GrProcessorSet.cpp b/src/gpu/ganesh/GrProcessorSet.cpp index 23896e4dfab5..86b277cd92b0 100644 --- a/src/gpu/ganesh/GrProcessorSet.cpp +++ b/src/gpu/ganesh/GrProcessorSet.cpp @@ -49,7 +49,7 @@ GrProcessorSet::~GrProcessorSet() { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString GrProcessorSet::dumpProcessors() const { SkString result; if (this->hasColorFragmentProcessor()) { diff --git a/src/gpu/ganesh/GrProcessorSet.h b/src/gpu/ganesh/GrProcessorSet.h index c0e0c237645d..5376c7205fd3 100644 --- a/src/gpu/ganesh/GrProcessorSet.h +++ b/src/gpu/ganesh/GrProcessorSet.h @@ -150,7 +150,7 @@ class GrProcessorSet { static GrProcessorSet MakeEmptySet(); static constexpr Analysis EmptySetAnalysis() { return Analysis(Empty::kEmpty); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString dumpProcessors() const; #endif diff --git a/src/gpu/ganesh/GrProcessorUnitTest.cpp b/src/gpu/ganesh/GrProcessorUnitTest.cpp index c69d726b6d01..dba0cae6dbc6 100644 --- a/src/gpu/ganesh/GrProcessorUnitTest.cpp +++ b/src/gpu/ganesh/GrProcessorUnitTest.cpp @@ -16,7 +16,7 @@ using namespace skia_private; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) class GrGeometryProcessor; @@ -149,7 +149,7 @@ TArray* GrXPFactoryTestFactory::GetFactories() { * we verify the count is as expected. If a new factory is added, then these numbers must be * manually adjusted. */ -static constexpr int kFPFactoryCount = 12; +static constexpr int kFPFactoryCount = 10; static constexpr int kGPFactoryCount = 14; static constexpr int kXPFactoryCount = 4; diff --git a/src/gpu/ganesh/GrProcessorUnitTest.h b/src/gpu/ganesh/GrProcessorUnitTest.h index d7d0698ffa3b..d4bc5a9b6e88 100644 --- a/src/gpu/ganesh/GrProcessorUnitTest.h +++ b/src/gpu/ganesh/GrProcessorUnitTest.h @@ -10,7 +10,7 @@ #include "include/core/SkTypes.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "include/private/base/SkTArray.h" #include "src/base/SkArenaAlloc.h" @@ -178,7 +178,7 @@ class GrXPFactoryTestFactory : private SkNoncopyable { #define GR_DEFINE_XP_FACTORY_TEST(X) #endif // !SK_ALLOW_STATIC_GLOBAL_INITIALIZERS -#else // GR_TEST_UTILS +#else // defined(GR_TEST_UTILS) #define GR_DECLARE_GEOMETRY_PROCESSOR_TEST #define GR_DECLARE_FRAGMENT_PROCESSOR_TEST #define GR_DECLARE_XP_FACTORY_TEST @@ -191,5 +191,5 @@ class GrXPFactoryTestFactory : private SkNoncopyable { #define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(...) #define GR_DECLARE_XP_FACTORY_TEST #define GR_DEFINE_XP_FACTORY_TEST(...) -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) #endif // GrProcessorUnitTest_DEFINED diff --git a/src/gpu/ganesh/GrProxyProvider.cpp b/src/gpu/ganesh/GrProxyProvider.cpp index a87afbd0b13a..e3f0ba7652b2 100644 --- a/src/gpu/ganesh/GrProxyProvider.cpp +++ b/src/gpu/ganesh/GrProxyProvider.cpp @@ -34,6 +34,7 @@ #include "src/image/SkImage_Base.h" #ifdef SK_VULKAN +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #endif @@ -118,7 +119,7 @@ sk_sp GrProxyProvider::findProxyByUniqueKey(const skgpu::UniqueK /////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) sk_sp GrProxyProvider::testingOnly_createInstantiatedProxy( SkISize dimensions, const GrBackendFormat& format, @@ -753,7 +754,7 @@ sk_sp GrProxyProvider::wrapVulkanSecondaryCBAsRenderTarget( GrColorType colorType = SkColorTypeToGrColorType(imageInfo.colorType()); if (!this->caps()->isFormatAsColorTypeRenderable( - colorType, GrBackendFormat::MakeVk(vkInfo.fFormat), /*sampleCount=*/1)) { + colorType, GrBackendFormats::MakeVk(vkInfo.fFormat), /*sampleCount=*/1)) { return nullptr; } diff --git a/src/gpu/ganesh/GrProxyProvider.h b/src/gpu/ganesh/GrProxyProvider.h index c5a185d5c726..d7e7c55cef07 100644 --- a/src/gpu/ganesh/GrProxyProvider.h +++ b/src/gpu/ganesh/GrProxyProvider.h @@ -252,7 +252,7 @@ class GrProxyProvider { */ bool renderingDirectly() const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** * Create a texture proxy that is backed by an instantiated GrSurface. */ diff --git a/src/gpu/ganesh/GrRecordingContext.cpp b/src/gpu/ganesh/GrRecordingContext.cpp index 0768a0bfadb8..76801b9419e9 100644 --- a/src/gpu/ganesh/GrRecordingContext.cpp +++ b/src/gpu/ganesh/GrRecordingContext.cpp @@ -65,7 +65,7 @@ bool GrRecordingContext::init() { skgpu::ganesh::PathRendererChain::Options prcOptions; prcOptions.fAllowPathMaskCaching = this->options().fAllowPathMaskCaching; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) prcOptions.fGpuPathRenderers = this->options().fGpuPathRenderers; #endif // FIXME: Once this is removed from Chrome and Android, rename to fEnable"". @@ -175,6 +175,10 @@ bool GrRecordingContext::colorTypeSupportedAsImage(SkColorType colorType) const return format.isValid(); } +bool GrRecordingContext::supportsProtectedContent() const { + return this->caps()->supportsProtectedContent(); +} + /////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef SK_ENABLE_DUMP_GPU @@ -194,7 +198,7 @@ void GrRecordingContext::dumpJSON(SkJSONWriter* writer) const { void GrRecordingContext::dumpJSON(SkJSONWriter*) const { } #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #if GR_GPU_STATS @@ -246,4 +250,4 @@ void GrRecordingContext::DMSAAStats::merge(const DMSAAStats& stats) { } #endif // GR_GPU_STATS -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/GrRecordingContextPriv.h b/src/gpu/ganesh/GrRecordingContextPriv.h index bbc68ebdf874..265cd71377a3 100644 --- a/src/gpu/ganesh/GrRecordingContextPriv.h +++ b/src/gpu/ganesh/GrRecordingContextPriv.h @@ -76,7 +76,7 @@ class GrRecordingContextPriv : public GrImageContextPriv { GrAuditTrail* auditTrail() { return this->context()->fAuditTrail.get(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // Used by tests that intentionally exercise codepaths that print warning messages, in order to // not confuse users with output that looks like a testing failure. class AutoSuppressWarningMessages { @@ -95,7 +95,7 @@ class GrRecordingContextPriv : public GrImageContextPriv { #endif void printWarningMessage(const char* msg) const { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (this->context()->fSuppressWarningMessages > 0) { return; } @@ -107,7 +107,7 @@ class GrRecordingContextPriv : public GrImageContextPriv { return &this->context()->fStats; } -#if GR_GPU_STATS && GR_TEST_UTILS +#if GR_GPU_STATS && defined(GR_TEST_UTILS) using DMSAAStats = GrRecordingContext::DMSAAStats; DMSAAStats& dmsaaStats() { return this->context()->fDMSAAStats; } #endif diff --git a/src/gpu/ganesh/GrRenderTask.cpp b/src/gpu/ganesh/GrRenderTask.cpp index 5c8cd95f6b3c..ea32b6127020 100644 --- a/src/gpu/ganesh/GrRenderTask.cpp +++ b/src/gpu/ganesh/GrRenderTask.cpp @@ -311,7 +311,7 @@ void GrRenderTask::addTarget(GrDrawingManager* drawingMgr, sk_sp fTargets.emplace_back(std::move(proxy)); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrRenderTask::dump(const SkString& label, SkString indent, bool printDependencies, diff --git a/src/gpu/ganesh/GrRenderTask.h b/src/gpu/ganesh/GrRenderTask.h index e4d1a9a4c740..f84d3ec6ea12 100644 --- a/src/gpu/ganesh/GrRenderTask.h +++ b/src/gpu/ganesh/GrRenderTask.h @@ -105,7 +105,7 @@ class GrRenderTask : public SkRefCnt { */ virtual skgpu::ganesh::OpsTask* asOpsTask() { return nullptr; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /* * Dump out the GrRenderTask dependency DAG */ @@ -149,7 +149,7 @@ class GrRenderTask : public SkRefCnt { // Used by GrRenderTaskCluster. SK_DECLARE_INTERNAL_LLIST_INTERFACE(GrRenderTask); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrTextureResolveRenderTask* resolveTask() const { return fTextureResolveTask; } #endif protected: diff --git a/src/gpu/ganesh/GrResourceCache.cpp b/src/gpu/ganesh/GrResourceCache.cpp index 184b963dad6d..adfbcc48072e 100644 --- a/src/gpu/ganesh/GrResourceCache.cpp +++ b/src/gpu/ganesh/GrResourceCache.cpp @@ -15,7 +15,6 @@ #include "src/base/SkScopeExit.h" #include "src/base/SkTSort.h" #include "src/core/SkMessageBus.h" -#include "src/core/SkOpts.h" #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrGpuResourceCacheAccess.h" @@ -746,7 +745,7 @@ void GrResourceCache::getStats(Stats* stats) const { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrResourceCache::dumpStats(SkString* out) const { this->validate(); @@ -775,7 +774,7 @@ void GrResourceCache::dumpStatsKeyValuePairs(TArray* keys, keys->push_back(SkString("gpu_cache_purgable_entries")); values->push_back(stats.fNumPurgeable); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) #endif // GR_CACHE_STATS #ifdef SK_DEBUG @@ -917,7 +916,7 @@ bool GrResourceCache::isInCache(const GrGpuResource* resource) const { #endif // SK_DEBUG -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int GrResourceCache::countUniqueKeysWithTag(const char* tag) const { int count = 0; @@ -948,4 +947,4 @@ void GrResourceCache::visitSurfaces( } } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/GrResourceCache.h b/src/gpu/ganesh/GrResourceCache.h index 710809dedce8..98643b5613ec 100644 --- a/src/gpu/ganesh/GrResourceCache.h +++ b/src/gpu/ganesh/GrResourceCache.h @@ -241,7 +241,7 @@ class GrResourceCache { void getStats(Stats*) const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dumpStats(SkString*) const; void dumpStatsKeyValuePairs( @@ -250,7 +250,7 @@ class GrResourceCache { #endif // GR_CACHE_STATS -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int countUniqueKeysWithTag(const char* tag) const; void changeTimestamp(uint32_t newTimestamp); diff --git a/src/gpu/ganesh/GrSPIRVUniformHandler.cpp b/src/gpu/ganesh/GrSPIRVUniformHandler.cpp index b888f37aac40..e2e540ef21b4 100644 --- a/src/gpu/ganesh/GrSPIRVUniformHandler.cpp +++ b/src/gpu/ganesh/GrSPIRVUniformHandler.cpp @@ -7,15 +7,13 @@ #include "src/gpu/ganesh/GrSPIRVUniformHandler.h" +#include "src/gpu/ganesh/GrUtil.h" #include "src/gpu/ganesh/glsl/GrGLSLProgramBuilder.h" GrSPIRVUniformHandler::GrSPIRVUniformHandler(GrGLSLProgramBuilder* program) : INHERITED(program) , fUniforms(kUniformsPerBlock) - , fSamplers(kUniformsPerBlock) - , fTextures(kUniformsPerBlock) -{ -} + , fSamplers(kUniformsPerBlock) {} const GrShaderVar& GrSPIRVUniformHandler::getUniformVariable(UniformHandle u) const { return fUniforms.item(u.toIndex()).fVariable; @@ -226,56 +224,45 @@ GrGLSLUniformHandler::UniformHandle GrSPIRVUniformHandler::internalAddUniformArr return GrGLSLUniformHandler::UniformHandle(fUniforms.count() - 1); } -GrGLSLUniformHandler::SamplerHandle GrSPIRVUniformHandler::addSampler(const GrBackendFormat&, - GrSamplerState, - const skgpu::Swizzle& swizzle, - const char* name, - const GrShaderCaps* caps) { +GrGLSLUniformHandler::SamplerHandle GrSPIRVUniformHandler::addSampler( + const GrBackendFormat& backendFormat, + GrSamplerState, + const skgpu::Swizzle& swizzle, + const char* name, + const GrShaderCaps* caps) { + SkASSERT(name && strlen(name)); + int binding = fSamplers.count() * 2; - SkString mangleName = fProgramBuilder->nameVariable('s', name, /*mangle=*/true); - SkString layoutQualifier; - layoutQualifier.appendf("set = %d, binding = %d", kSamplerTextureDescriptorSet, binding); + SkString mangleName = fProgramBuilder->nameVariable('u', name, /*mangle=*/true); + SkString layoutQualifier = SkStringPrintf("direct3d, set = %d, sampler = %d, texture = %d", + kSamplerTextureDescriptorSet, + binding, + binding + 1); - SPIRVUniformInfo tempInfo; - tempInfo.fVariable = GrShaderVar{std::move(mangleName), - SkSLType::kSampler, - GrShaderVar::TypeModifier::Uniform, - GrShaderVar::kNonArray, - std::move(layoutQualifier), - SkString()}; + SPIRVUniformInfo& uniformInfo = fSamplers.emplace_back(); + uniformInfo.fVariable = + GrShaderVar{std::move(mangleName), + SkSLCombinedSamplerTypeForTextureType(backendFormat.textureType()), + GrShaderVar::TypeModifier::None, + GrShaderVar::kNonArray, + std::move(layoutQualifier), + SkString()}; - tempInfo.fVisibility = kFragment_GrShaderFlag; - tempInfo.fOwner = nullptr; - tempInfo.fRawName = SkString(name); - tempInfo.fUBOOffset = 0; + uniformInfo.fVisibility = kFragment_GrShaderFlag; + uniformInfo.fOwner = nullptr; + uniformInfo.fRawName = SkString(name); + uniformInfo.fUBOOffset = 0; - fSamplers.push_back(tempInfo); fSamplerSwizzles.push_back(swizzle); SkASSERT(fSamplerSwizzles.size() == fSamplers.count()); - SkString mangleTexName = fProgramBuilder->nameVariable('t', name, /*mangle=*/true); - SkString texLayoutQualifier; - texLayoutQualifier.appendf("set = %d, binding = %d", kSamplerTextureDescriptorSet, binding + 1); - tempInfo.fVariable = GrShaderVar{std::move(mangleTexName), - SkSLType::kTexture2D, - GrShaderVar::TypeModifier::Uniform, - GrShaderVar::kNonArray, - std::move(texLayoutQualifier), - SkString()}; - fTextures.push_back(tempInfo); - - SkString reference; - reference.printf("makeSampler2D(%s, %s)", - fTextures.back().fVariable.getName().c_str(), - fSamplers.back().fVariable.getName().c_str()); - fSamplerReferences.emplace_back(std::move(reference)); return GrGLSLUniformHandler::SamplerHandle(fSamplers.count() - 1); } const char* GrSPIRVUniformHandler::samplerVariable( GrGLSLUniformHandler::SamplerHandle handle) const { - return fSamplerReferences[handle.toIndex()].c_str(); + return fSamplers.item(handle.toIndex()).fVariable.getName().c_str(); } skgpu::Swizzle GrSPIRVUniformHandler::samplerSwizzle( @@ -284,15 +271,11 @@ skgpu::Swizzle GrSPIRVUniformHandler::samplerSwizzle( } void GrSPIRVUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString* out) const { - auto textures = fTextures.items().begin(); for (const SPIRVUniformInfo& sampler : fSamplers.items()) { if (sampler.fVisibility & visibility) { sampler.fVariable.appendDecl(fProgramBuilder->shaderCaps(), out); out->append(";\n"); - (*textures).fVariable.appendDecl(fProgramBuilder->shaderCaps(), out); - out->append(";\n"); } - ++textures; } SkString uniformsString; for (const UniformInfo& uniform : fUniforms.items()) { diff --git a/src/gpu/ganesh/GrSPIRVUniformHandler.h b/src/gpu/ganesh/GrSPIRVUniformHandler.h index b080bead1fa0..277ef2f407d7 100644 --- a/src/gpu/ganesh/GrSPIRVUniformHandler.h +++ b/src/gpu/ganesh/GrSPIRVUniformHandler.h @@ -63,11 +63,9 @@ class GrSPIRVUniformHandler : public GrGLSLUniformHandler { int arrayCount, const char** outName) override; - UniformInfoArray fUniforms; - UniformInfoArray fSamplers; - UniformInfoArray fTextures; + UniformInfoArray fUniforms; + UniformInfoArray fSamplers; skia_private::TArray fSamplerSwizzles; - skia_private::TArray fSamplerReferences; uint32_t fCurrentUBOOffset = 0; uint32_t fRTFlipOffset = 0; diff --git a/src/gpu/ganesh/GrShaderCaps.cpp b/src/gpu/ganesh/GrShaderCaps.cpp index df9525814705..7129875f2cd7 100644 --- a/src/gpu/ganesh/GrShaderCaps.cpp +++ b/src/gpu/ganesh/GrShaderCaps.cpp @@ -37,6 +37,8 @@ void GrShaderCaps::dumpJSON(SkJSONWriter* writer) const { writer->appendBool("FB Fetch Support", fFBFetchSupport); writer->appendBool("Uses precision modifiers", fUsesPrecisionModifiers); + writer->appendBool("Can use void-typed expressions in a sequence expression", + fCanUseVoidInSequenceExpressions); writer->appendBool("Can use min() and abs() together", fCanUseMinAndAbsTogether); writer->appendBool("Can use fract() for negative values", fCanUseFractForNegativeValues); writer->appendBool("Must force negated atan param to float", fMustForceNegatedAtanParamToFloat); @@ -88,6 +90,7 @@ void GrShaderCaps::dumpJSON(SkJSONWriter* writer) const { } void GrShaderCaps::applyOptionsOverrides(const GrContextOptions& options) { if (options.fDisableDriverCorrectnessWorkarounds) { + SkASSERT(fCanUseVoidInSequenceExpressions); SkASSERT(fCanUseMinAndAbsTogether); SkASSERT(fCanUseFractForNegativeValues); SkASSERT(!fMustForceNegatedAtanParamToFloat); @@ -114,7 +117,7 @@ void GrShaderCaps::applyOptionsOverrides(const GrContextOptions& options) { if (options.fReducedShaderVariations) { fReducedShaderMode = true; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (options.fSuppressDualSourceBlending) { fDualSourceBlendingSupport = false; } diff --git a/src/gpu/ganesh/GrSurface.h b/src/gpu/ganesh/GrSurface.h index 7684e328cf67..d4960348874a 100644 --- a/src/gpu/ganesh/GrSurface.h +++ b/src/gpu/ganesh/GrSurface.h @@ -100,7 +100,7 @@ class GrSurface : public GrGpuResource { sk_sp fDirectContext; }; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrSurface* asSurface() const override { return this; } #endif diff --git a/src/gpu/ganesh/GrSurfaceCharacterization.cpp b/src/gpu/ganesh/GrSurfaceCharacterization.cpp index c4f04309d748..b73c70483b89 100644 --- a/src/gpu/ganesh/GrSurfaceCharacterization.cpp +++ b/src/gpu/ganesh/GrSurfaceCharacterization.cpp @@ -13,6 +13,7 @@ #include "src/gpu/ganesh/GrContextThreadSafeProxyPriv.h" #ifdef SK_VULKAN +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/private/base/SkTo.h" #include "include/private/gpu/vk/SkiaVulkan.h" @@ -155,7 +156,7 @@ bool GrSurfaceCharacterization::isCompatible(const GrBackendTexture& backendTex) } #ifdef SK_VULKAN GrVkImageInfo vkInfo; - if (!backendTex.getVkImageInfo(&vkInfo)) { + if (!GrBackendTextures::GetVkImageInfo(backendTex, &vkInfo)) { return false; } if (!SkToBool(vkInfo.fImageUsageFlags & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)) { diff --git a/src/gpu/ganesh/GrSurfaceProxy.cpp b/src/gpu/ganesh/GrSurfaceProxy.cpp index e41b6f236df9..738fce9d0d26 100644 --- a/src/gpu/ganesh/GrSurfaceProxy.cpp +++ b/src/gpu/ganesh/GrSurfaceProxy.cpp @@ -376,7 +376,7 @@ sk_sp GrSurfaceProxy::Copy(GrRecordingContext* context, outTask); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int32_t GrSurfaceProxy::testingOnly_getBackingRefCnt() const { if (fTarget) { return fTarget->testingOnly_getRefCnt(); diff --git a/src/gpu/ganesh/GrSurfaceProxy.h b/src/gpu/ganesh/GrSurfaceProxy.h index baa5420a574f..d10780767c96 100644 --- a/src/gpu/ganesh/GrSurfaceProxy.h +++ b/src/gpu/ganesh/GrSurfaceProxy.h @@ -357,7 +357,7 @@ class GrSurfaceProxy : public SkNVRefCnt { std::string_view label, sk_sp* outTask = nullptr); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int32_t testingOnly_getBackingRefCnt() const; GrInternalSurfaceFlags testingOnly_getFlags() const; SkString dump() const; diff --git a/src/gpu/ganesh/GrTestUtils.cpp b/src/gpu/ganesh/GrTestUtils.cpp index c818e1d7cf16..9f023c7fccd4 100644 --- a/src/gpu/ganesh/GrTestUtils.cpp +++ b/src/gpu/ganesh/GrTestUtils.cpp @@ -17,7 +17,7 @@ #include "src/gpu/ganesh/GrStyle.h" #include "src/utils/SkDashPathPriv.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static const SkMatrix& test_matrix(SkRandom* random, bool includeNonPerspective, diff --git a/src/gpu/ganesh/GrTestUtils.h b/src/gpu/ganesh/GrTestUtils.h index 0b866962f241..25ea707660d6 100644 --- a/src/gpu/ganesh/GrTestUtils.h +++ b/src/gpu/ganesh/GrTestUtils.h @@ -10,7 +10,7 @@ #include "include/core/SkTypes.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "include/core/SkStrokeRec.h" #include "include/core/SkSurfaceProps.h" diff --git a/src/gpu/ganesh/GrTextureResolveRenderTask.cpp b/src/gpu/ganesh/GrTextureResolveRenderTask.cpp index 12bcdfb12c20..8d32edd8af84 100644 --- a/src/gpu/ganesh/GrTextureResolveRenderTask.cpp +++ b/src/gpu/ganesh/GrTextureResolveRenderTask.cpp @@ -114,7 +114,7 @@ bool GrTextureResolveRenderTask::onExecute(GrOpFlushState* flushState) { void GrTextureResolveRenderTask::visitProxies_debugOnly(const GrVisitProxyFunc&) const {} #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrSurfaceProxy::ResolveFlags GrTextureResolveRenderTask::flagsForProxy(sk_sp proxy) const { if (auto found = std::find(fTargets.begin(), fTargets.end(), proxy); diff --git a/src/gpu/ganesh/GrTextureResolveRenderTask.h b/src/gpu/ganesh/GrTextureResolveRenderTask.h index 2687d530fe95..004797b67716 100644 --- a/src/gpu/ganesh/GrTextureResolveRenderTask.h +++ b/src/gpu/ganesh/GrTextureResolveRenderTask.h @@ -16,7 +16,7 @@ class GrTextureResolveRenderTask final : public GrRenderTask { void addProxy(GrDrawingManager*, sk_sp proxy, GrSurfaceProxy::ResolveFlags, const GrCaps&); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrSurfaceProxy::ResolveFlags flagsForProxy(sk_sp) const; #endif @@ -32,7 +32,7 @@ class GrTextureResolveRenderTask final : public GrRenderTask { bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "TextureResolve"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrThreadSafeCache.cpp b/src/gpu/ganesh/GrThreadSafeCache.cpp index 6a32f0715bf8..7e6b85209275 100644 --- a/src/gpu/ganesh/GrThreadSafeCache.cpp +++ b/src/gpu/ganesh/GrThreadSafeCache.cpp @@ -29,7 +29,7 @@ GrThreadSafeCache::~GrThreadSafeCache() { this->dropAllRefs(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int GrThreadSafeCache::numEntries() const { SkAutoSpinlock lock{fSpinLock}; diff --git a/src/gpu/ganesh/GrThreadSafeCache.h b/src/gpu/ganesh/GrThreadSafeCache.h index 175764b26171..4e104d5f529d 100644 --- a/src/gpu/ganesh/GrThreadSafeCache.h +++ b/src/gpu/ganesh/GrThreadSafeCache.h @@ -68,7 +68,7 @@ class GrThreadSafeCache { GrThreadSafeCache(); ~GrThreadSafeCache(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int numEntries() const SK_EXCLUDES(fSpinLock); size_t approxBytesUsedForHash() const SK_EXCLUDES(fSpinLock); diff --git a/src/gpu/ganesh/GrThreadSafePipelineBuilder.cpp b/src/gpu/ganesh/GrThreadSafePipelineBuilder.cpp index 0f2e2cad7fad..5c9638f1a879 100644 --- a/src/gpu/ganesh/GrThreadSafePipelineBuilder.cpp +++ b/src/gpu/ganesh/GrThreadSafePipelineBuilder.cpp @@ -8,7 +8,7 @@ #include "src/gpu/ganesh/GrThreadSafePipelineBuilder.h" #if GR_GPU_STATS -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "include/core/SkString.h" using namespace skia_private; @@ -57,5 +57,5 @@ void GrThreadSafePipelineBuilder::Stats::dumpKeyValuePairs(TArray* key keys->push_back(SkString("shader_compilations")); values->push_back(fShaderCompilations); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) #endif // GR_GPU_STATS diff --git a/src/gpu/ganesh/GrThreadSafePipelineBuilder.h b/src/gpu/ganesh/GrThreadSafePipelineBuilder.h index 8af6904cf180..419f8b439134 100644 --- a/src/gpu/ganesh/GrThreadSafePipelineBuilder.h +++ b/src/gpu/ganesh/GrThreadSafePipelineBuilder.h @@ -12,7 +12,7 @@ #include "include/core/SkTypes.h" #include -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "include/core/SkString.h" #include "include/private/base/SkTArray.h" #endif @@ -68,7 +68,7 @@ class GrThreadSafePipelineBuilder : public SkRefCnt { int numCompilationSuccesses() const { return fNumCompilationSuccesses; } void incNumCompilationSuccesses() { ++fNumCompilationSuccesses; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString*); void dumpKeyValuePairs(skia_private::TArray* keys, skia_private::TArray* values); #endif @@ -96,7 +96,7 @@ class GrThreadSafePipelineBuilder : public SkRefCnt { void incNumPartialCompilationSuccesses() {} void incNumCompilationSuccesses() {} -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(SkString*) {} void dumpKeyValuePairs(skia_private::TArray*, skia_private::TArray*) {} #endif diff --git a/src/gpu/ganesh/GrTransferFromRenderTask.h b/src/gpu/ganesh/GrTransferFromRenderTask.h index dba60ed0134c..9a85842cf13f 100644 --- a/src/gpu/ganesh/GrTransferFromRenderTask.h +++ b/src/gpu/ganesh/GrTransferFromRenderTask.h @@ -39,7 +39,7 @@ class GrTransferFromRenderTask final : public GrRenderTask { bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "TransferFrom"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrWaitRenderTask.h b/src/gpu/ganesh/GrWaitRenderTask.h index cefeab6e1f96..537e67723589 100644 --- a/src/gpu/ganesh/GrWaitRenderTask.h +++ b/src/gpu/ganesh/GrWaitRenderTask.h @@ -33,7 +33,7 @@ class GrWaitRenderTask final : public GrRenderTask { bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "Wait"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/GrWritePixelsRenderTask.h b/src/gpu/ganesh/GrWritePixelsRenderTask.h index 74d2e8131ea0..71f0e0dd14d3 100644 --- a/src/gpu/ganesh/GrWritePixelsRenderTask.h +++ b/src/gpu/ganesh/GrWritePixelsRenderTask.h @@ -34,7 +34,7 @@ class GrWritePixelsTask final : public GrRenderTask { ExpectedOutcome onMakeClosed(GrRecordingContext*, SkIRect* targetUpdateBounds) override; bool onExecute(GrOpFlushState*) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "WritePixels"; } #endif #ifdef SK_DEBUG diff --git a/src/gpu/ganesh/SurfaceContext.cpp b/src/gpu/ganesh/SurfaceContext.cpp index aacf18926589..23444941d52f 100644 --- a/src/gpu/ganesh/SurfaceContext.cpp +++ b/src/gpu/ganesh/SurfaceContext.cpp @@ -578,20 +578,9 @@ void SurfaceContext::asyncRescaleAndReadPixels(GrDirectContext* dContext, this->origin() == kBottomLeft_GrSurfaceOrigin || this->colorInfo().alphaType() != info.alphaType() || !SkColorSpace::Equals(this->colorInfo().colorSpace(), info.colorSpace()); - auto colorTypeOfFinalContext = this->colorInfo().colorType(); - auto backendFormatOfFinalContext = this->asSurfaceProxy()->backendFormat(); - if (needsRescale) { - colorTypeOfFinalContext = dstCT; - backendFormatOfFinalContext = - this->caps()->getDefaultBackendFormat(dstCT, GrRenderable::kYes); - if (!backendFormatOfFinalContext.isValid()) { - constexpr int kSampleCnt = 1; - std::tie(colorTypeOfFinalContext, backendFormatOfFinalContext) = - this->caps()->getFallbackColorTypeAndFormat(colorTypeOfFinalContext, kSampleCnt); - } - } - auto readInfo = this->caps()->supportedReadPixelsColorType(colorTypeOfFinalContext, - backendFormatOfFinalContext, + auto surfaceBackendFormat = this->asSurfaceProxy()->backendFormat(); + auto readInfo = this->caps()->supportedReadPixelsColorType(this->colorInfo().colorType(), + surfaceBackendFormat, dstCT); // Fail if we can't read from the source surface's color type. if (readInfo.fColorType == GrColorType::kUnknown) { @@ -612,7 +601,9 @@ void SurfaceContext::asyncRescaleAndReadPixels(GrDirectContext* dContext, int x = srcRect.fLeft; int y = srcRect.fTop; if (needsRescale) { - tempFC = this->rescale(info, kTopLeft_GrSurfaceOrigin, srcRect, rescaleGamma, rescaleMode); + auto tempInfo = GrImageInfo(info).makeColorType(this->colorInfo().colorType()); + tempFC = this->rescale(tempInfo, kTopLeft_GrSurfaceOrigin, srcRect, + rescaleGamma, rescaleMode); if (!tempFC) { callback(callbackContext, nullptr); return; @@ -670,8 +661,6 @@ void SurfaceContext::asyncReadPixels(GrDirectContext* dContext, ReadPixelsCallback* fClientCallback; ReadPixelsContext fClientContext; SkISize fSize; - SkColorType fColorType; - size_t fBufferAlignment; GrClientMappedBufferManager* fMappedBufferManager; PixelTransferResult fTransferResult; }; @@ -681,18 +670,15 @@ void SurfaceContext::asyncReadPixels(GrDirectContext* dContext, auto* finishContext = new FinishContext{callback, callbackContext, rect.size(), - colorType, - this->caps()->transferBufferRowBytesAlignment(), mappedBufferManager, std::move(transferResult)}; auto finishCallback = [](GrGpuFinishedContext c) { const auto* context = reinterpret_cast(c); auto manager = context->fMappedBufferManager; auto result = std::make_unique(manager->ownerID()); - size_t rowBytes = - SkAlignTo(context->fSize.width() * SkColorTypeBytesPerPixel(context->fColorType), - context->fBufferAlignment); - if (!result->addTransferResult(context->fTransferResult, context->fSize, rowBytes, + if (!result->addTransferResult(context->fTransferResult, + context->fSize, + context->fTransferResult.fRowBytes, manager)) { result.reset(); } @@ -946,7 +932,6 @@ void SurfaceContext::asyncRescaleAndReadPixelsYUV420(GrDirectContext* dContext, ReadPixelsContext fClientContext; GrClientMappedBufferManager* fMappedBufferManager; SkISize fSize; - size_t fBufferAlignment; PixelTransferResult fYTransfer; PixelTransferResult fUTransfer; PixelTransferResult fVTransfer; @@ -959,7 +944,6 @@ void SurfaceContext::asyncRescaleAndReadPixelsYUV420(GrDirectContext* dContext, callbackContext, dContext->priv().clientMappedBufferManager(), dstSize, - this->caps()->transferBufferRowBytesAlignment(), std::move(yTransfer), std::move(uTransfer), std::move(vTransfer), @@ -968,28 +952,36 @@ void SurfaceContext::asyncRescaleAndReadPixelsYUV420(GrDirectContext* dContext, const auto* context = reinterpret_cast(c); auto manager = context->fMappedBufferManager; auto result = std::make_unique(manager->ownerID()); - size_t yaRowBytes = SkToSizeT(context->fSize.width()); - yaRowBytes = SkAlignTo(yaRowBytes, context->fBufferAlignment); - if (!result->addTransferResult(context->fYTransfer, context->fSize, yaRowBytes, manager)) { + if (!result->addTransferResult(context->fYTransfer, + context->fSize, + context->fYTransfer.fRowBytes, + manager)) { (*context->fClientCallback)(context->fClientContext, nullptr); delete context; return; } - size_t uvRowBytes = SkToSizeT(context->fSize.width()) / 2; - uvRowBytes = SkAlignTo(uvRowBytes, context->fBufferAlignment); SkISize uvSize = {context->fSize.width() / 2, context->fSize.height() / 2}; - if (!result->addTransferResult(context->fUTransfer, uvSize, uvRowBytes, manager)) { + if (!result->addTransferResult(context->fUTransfer, + uvSize, + context->fUTransfer.fRowBytes, + manager)) { (*context->fClientCallback)(context->fClientContext, nullptr); delete context; return; } - if (!result->addTransferResult(context->fVTransfer, uvSize, uvRowBytes, manager)) { + if (!result->addTransferResult(context->fVTransfer, + uvSize, + context->fVTransfer.fRowBytes, + manager)) { (*context->fClientCallback)(context->fClientContext, nullptr); delete context; return; } if (context->fATransfer.fTransferBuffer && - !result->addTransferResult(context->fATransfer, context->fSize, yaRowBytes, manager)) { + !result->addTransferResult(context->fATransfer, + context->fSize, + context->fATransfer.fRowBytes, + manager)) { (*context->fClientCallback)(context->fClientContext, nullptr); delete context; return; @@ -1160,7 +1152,7 @@ bool SurfaceContext::rescaleInto(SurfaceFillContext* dst, SkBackingFit::kApprox, /* sampleCount= */ 1, GrMipmapped::kNo, - GrProtected::kNo, + texView.proxy()->isProtected(), dst->origin()); if (!linearRTC) { return false; @@ -1208,7 +1200,7 @@ bool SurfaceContext::rescaleInto(SurfaceFillContext* dst, tempB = fContext->priv().makeSFCWithFallback(nextInfo, SkBackingFit::kApprox, /* sampleCount= */ 1, skgpu::Mipmapped::kNo, - skgpu::Protected::kNo); + texView.proxy()->isProtected()); if (!tempB) { return false; } @@ -1334,13 +1326,17 @@ SurfaceContext::PixelTransferResult SurfaceContext::transferPixels(GrColorType d result.fTransferBuffer = std::move(buffer); auto at = this->colorInfo().alphaType(); if (supportedRead.fColorType != dstCT || flip) { - result.fPixelConverter = [w = rect.width(), h = rect.height(), dstCT, supportedRead, at]( + int w = rect.width(), h = rect.height(); + GrImageInfo srcInfo(supportedRead.fColorType, at, nullptr, w, h); + GrImageInfo dstInfo(dstCT, at, nullptr, w, h); + result.fRowBytes = dstInfo.minRowBytes(); + result.fPixelConverter = [dstInfo, srcInfo, rowBytes]( void* dst, const void* src) { - GrImageInfo srcInfo(supportedRead.fColorType, at, nullptr, w, h); - GrImageInfo dstInfo(dstCT, at, nullptr, w, h); GrConvertPixels( GrPixmap(dstInfo, dst, dstInfo.minRowBytes()), - GrCPixmap(srcInfo, src, srcInfo.minRowBytes())); + GrCPixmap(srcInfo, src, rowBytes)); }; + } else { + result.fRowBytes = rowBytes; } return result; } diff --git a/src/gpu/ganesh/SurfaceContext.h b/src/gpu/ganesh/SurfaceContext.h index 250b2c5055f8..369cfe380fe3 100644 --- a/src/gpu/ganesh/SurfaceContext.h +++ b/src/gpu/ganesh/SurfaceContext.h @@ -163,7 +163,7 @@ class SurfaceContext { SkImage::RescaleGamma, SkImage::RescaleMode); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool testCopy(sk_sp src, const SkIRect& srcRect, const SkIPoint& dstPoint) { return this->copy(std::move(src), srcRect, dstPoint) != nullptr; } @@ -193,6 +193,8 @@ class SurfaceContext { // If null then the transfer could not be performed. Otherwise this buffer will contain // the pixel data when the transfer is complete. sk_sp fTransferBuffer; + // RowBytes for transfer buffer data + size_t fRowBytes; // If this is null then the transfer buffer will contain the data in the requested // color type. Otherwise, when the transfer is done this must be called to convert // from the transfer buffer's color type to the requested color type. diff --git a/src/gpu/ganesh/SurfaceDrawContext.cpp b/src/gpu/ganesh/SurfaceDrawContext.cpp index b9daef71de57..825b5e91f8db 100644 --- a/src/gpu/ganesh/SurfaceDrawContext.cpp +++ b/src/gpu/ganesh/SurfaceDrawContext.cpp @@ -320,7 +320,7 @@ void SurfaceDrawContext::willReplaceOpsTask(OpsTask* prevTask, OpsTask* nextTask // values? nextTask->setInitialStencilContent(OpsTask::StencilContent::kPreserved); } -#if GR_GPU_STATS && GR_TEST_UTILS +#if GR_GPU_STATS && defined(GR_TEST_UTILS) if (fCanUseDynamicMSAA) { fContext->priv().dmsaaStats().fNumRenderPasses++; } @@ -788,7 +788,7 @@ int SurfaceDrawContext::maxWindowRectangles() const { } OpsTask::CanDiscardPreviousOps SurfaceDrawContext::canDiscardPreviousOpsOnFullClear() const { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (fPreserveOpsOnFullClear_TestingOnly) { return OpsTask::CanDiscardPreviousOps::kNo; } @@ -2003,7 +2003,7 @@ void SurfaceDrawContext::addDrawOp(const GrClip* clip, this->setNeedsStencil(); } -#if GR_GPU_STATS && GR_TEST_UTILS +#if GR_GPU_STATS && defined(GR_TEST_UTILS) if (fCanUseDynamicMSAA && drawNeedsMSAA) { if (!opsTask->usesMSAASurface()) { fContext->priv().dmsaaStats().fNumMultisampleRenderPasses++; diff --git a/src/gpu/ganesh/SurfaceDrawContext.h b/src/gpu/ganesh/SurfaceDrawContext.h index 19bc2d0f428b..2162765a8caf 100644 --- a/src/gpu/ganesh/SurfaceDrawContext.h +++ b/src/gpu/ganesh/SurfaceDrawContext.h @@ -612,7 +612,7 @@ class SurfaceDrawContext final : public SurfaceFillContext { // instantiated. GrRenderTarget* accessRenderTarget() { return this->asSurfaceProxy()->peekRenderTarget(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void testingOnly_SetPreserveOpsOnFullClear() { fPreserveOpsOnFullClear_TestingOnly = true; } #endif @@ -690,7 +690,7 @@ class SurfaceDrawContext final : public SurfaceFillContext { bool fNeedsStencil = false; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool fPreserveOpsOnFullClear_TestingOnly = false; #endif }; diff --git a/src/gpu/ganesh/SurfaceFillContext.h b/src/gpu/ganesh/SurfaceFillContext.h index 5609484854db..97c1203b4036 100644 --- a/src/gpu/ganesh/SurfaceFillContext.h +++ b/src/gpu/ganesh/SurfaceFillContext.h @@ -25,7 +25,7 @@ class SurfaceFillContext : public SurfaceContext { OpsTask* getOpsTask(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) OpsTask* testingOnly_PeekLastOpsTask() { return fOpsTask.get(); } #endif diff --git a/src/gpu/ganesh/d3d/GrD3DCaps.cpp b/src/gpu/ganesh/d3d/GrD3DCaps.cpp index 164a96078e25..5abfeae99318 100644 --- a/src/gpu/ganesh/d3d/GrD3DCaps.cpp +++ b/src/gpu/ganesh/d3d/GrD3DCaps.cpp @@ -1088,7 +1088,7 @@ GrProgramDesc GrD3DCaps::makeDesc(GrRenderTarget* rt, return desc; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector GrD3DCaps::getTestingCombinations() const { std::vector combos = { {GrColorType::kAlpha_8, GrBackendFormat::MakeDxgi(DXGI_FORMAT_R8_UNORM) }, diff --git a/src/gpu/ganesh/d3d/GrD3DCaps.h b/src/gpu/ganesh/d3d/GrD3DCaps.h index 53217b6a596d..c6416bf4625e 100644 --- a/src/gpu/ganesh/d3d/GrD3DCaps.h +++ b/src/gpu/ganesh/d3d/GrD3DCaps.h @@ -107,7 +107,7 @@ class GrD3DCaps : public GrCaps { bool resolveSubresourceRegionSupport() const { return fResolveSubresourceRegionSupport; } bool standardSwizzleLayoutSupport() const { return fStandardSwizzleLayoutSupport; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector getTestingCombinations() const override; #endif diff --git a/src/gpu/ganesh/d3d/GrD3DGpu.cpp b/src/gpu/ganesh/d3d/GrD3DGpu.cpp index 234d9fd9a23b..b9bc13f9771a 100644 --- a/src/gpu/ganesh/d3d/GrD3DGpu.cpp +++ b/src/gpu/ganesh/d3d/GrD3DGpu.cpp @@ -31,7 +31,7 @@ #include "src/gpu/ganesh/d3d/GrD3DUtil.h" #include "src/sksl/SkSLCompiler.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include #endif @@ -93,7 +93,7 @@ GrD3DGpu::GrD3DGpu(GrDirectContext* direct, const GrContextOptions& contextOptio GR_D3D_CALL_ERRCHECK(fDevice->CreateFence(fCurrentFenceValue, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&fFence))); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) HRESULT getAnalysis = DXGIGetDebugInterface1(0, IID_PPV_ARGS(&fGraphicsAnalysis)); if (FAILED(getAnalysis)) { fGraphicsAnalysis = nullptr; @@ -1644,7 +1644,7 @@ bool GrD3DGpu::compile(const GrProgramDesc&, const GrProgramInfo&) { return false; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrD3DGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { SkASSERT(GrBackendApi::kDirect3D == tex.backend()); diff --git a/src/gpu/ganesh/d3d/GrD3DGpu.h b/src/gpu/ganesh/d3d/GrD3DGpu.h index e9cfe95c6e8c..1ff3b66c7f32 100644 --- a/src/gpu/ganesh/d3d/GrD3DGpu.h +++ b/src/gpu/ganesh/d3d/GrD3DGpu.h @@ -21,7 +21,7 @@ struct GrD3DBackendContext; class GrD3DOpsRenderPass; struct GrD3DOptions; class GrPipeline; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) struct IDXGraphicsAnalysis; #endif @@ -59,7 +59,7 @@ class GrD3DGpu : public GrGpu { bool compile(const GrProgramDesc&, const GrProgramInfo&) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, @@ -329,7 +329,7 @@ class GrD3DGpu : public GrGpu { std::unique_ptr fCachedOpsRenderPass; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) IDXGraphicsAnalysis* fGraphicsAnalysis; #endif diff --git a/src/gpu/ganesh/d3d/GrD3DPipelineStateBuilder.cpp b/src/gpu/ganesh/d3d/GrD3DPipelineStateBuilder.cpp index b52230f62cc9..bb38e636d755 100644 --- a/src/gpu/ganesh/d3d/GrD3DPipelineStateBuilder.cpp +++ b/src/gpu/ganesh/d3d/GrD3DPipelineStateBuilder.cpp @@ -135,35 +135,17 @@ gr_cp GrD3DPipelineStateBuilder::compileD3DProgram(SkSL::ProgramKind k const SkSL::ProgramSettings& settings, SkSL::Program::Interface* outInterface, std::string* outHLSL) { -#ifdef SK_DEBUG - std::string src = SkShaderUtils::PrettyPrint(sksl); -#else - const std::string& src = sksl; -#endif - - std::unique_ptr program = fGpu->shaderCompiler()->convertProgram( - kind, src, settings); - if (!program || !fGpu->shaderCompiler()->toHLSL(*program, outHLSL)) { - auto errorHandler = fGpu->getContext()->priv().getShaderErrorHandler(); - errorHandler->compileError(src.c_str(), - fGpu->shaderCompiler()->errorText().c_str()); + if (!skgpu::SkSLToHLSL(this->shaderCompiler(), + sksl, + kind, + settings, + outHLSL, + outInterface, + fGpu->getContext()->priv().getShaderErrorHandler())) { return gr_cp(); } - *outInterface = program->fInterface; - - if (skgpu::gPrintSKSL || skgpu::gPrintBackendSL) { - SkShaderUtils::PrintShaderBanner(kind); - if (skgpu::gPrintSKSL) { - SkDebugf("SKSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(sksl)); - } - if (skgpu::gPrintBackendSL) { - SkDebugf("HLSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(*outHLSL)); - } - } - if (program->fInterface.fUseFlipRTUniform) { + if (outInterface->fUseFlipRTUniform) { this->addRTFlipUniform(SKSL_RTFLIP_NAME); } @@ -627,7 +609,7 @@ std::unique_ptr GrD3DPipelineStateBuilder::finalize() { } sk_sp rootSig = - fGpu->resourceProvider().findOrCreateRootSignature(fUniformHandler.fTextures.count()); + fGpu->resourceProvider().findOrCreateRootSignature(fUniformHandler.fSamplers.count()); if (!rootSig) { return nullptr; } diff --git a/src/gpu/ganesh/d3d/GrD3DResourceProvider.h b/src/gpu/ganesh/d3d/GrD3DResourceProvider.h index e5b34b3788e3..0df1acf9d626 100644 --- a/src/gpu/ganesh/d3d/GrD3DResourceProvider.h +++ b/src/gpu/ganesh/d3d/GrD3DResourceProvider.h @@ -83,7 +83,7 @@ class GrD3DResourceProvider { void markPipelineStateUniformsDirty() { fPipelineStateCache->markPipelineStateUniformsDirty(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void resetShaderCacheForTesting() const { fPipelineStateCache->release(); } #endif diff --git a/src/gpu/ganesh/d3d/GrD3DTypesMinimal.cpp b/src/gpu/ganesh/d3d/GrD3DTypesMinimal.cpp index ec95d194b82e..f8a55756e9c8 100644 --- a/src/gpu/ganesh/d3d/GrD3DTypesMinimal.cpp +++ b/src/gpu/ganesh/d3d/GrD3DTypesMinimal.cpp @@ -55,7 +55,7 @@ bool GrD3DBackendSurfaceInfo::isProtected() const { return fTextureResourceInfo->fProtected == GrProtected::kYes; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrD3DBackendSurfaceInfo::operator==(const GrD3DBackendSurfaceInfo& that) const { GrD3DTextureResourceInfo cpyInfoThis = *fTextureResourceInfo; GrD3DTextureResourceInfo cpyInfoThat = *that.fTextureResourceInfo; diff --git a/src/gpu/ganesh/d3d/GrD3DUtil.h b/src/gpu/ganesh/d3d/GrD3DUtil.h index a04376ad110b..a58f6d0480d8 100644 --- a/src/gpu/ganesh/d3d/GrD3DUtil.h +++ b/src/gpu/ganesh/d3d/GrD3DUtil.h @@ -133,7 +133,7 @@ static constexpr int GrDxgiFormatStencilBits(DXGI_FORMAT format) { } } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) static constexpr const char* GrDxgiFormatToStr(DXGI_FORMAT dxgiFormat) { switch (dxgiFormat) { case DXGI_FORMAT_R8G8B8A8_UNORM: return "R8G8B8A8_UNORM"; diff --git a/src/gpu/ganesh/dawn/BUILD.bazel b/src/gpu/ganesh/dawn/BUILD.bazel deleted file mode 100644 index ef84075eb2bd..000000000000 --- a/src/gpu/ganesh/dawn/BUILD.bazel +++ /dev/null @@ -1,63 +0,0 @@ -load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_deps", "skia_filegroup", "split_srcs_and_hdrs") - -licenses(["notice"]) - -exports_files_legacy() - -DAWN_FILES = [ - "GrDawnAsyncWait.cpp", - "GrDawnAsyncWait.h", - "GrDawnAttachment.cpp", - "GrDawnAttachment.h", - "GrDawnBuffer.cpp", - "GrDawnBuffer.h", - "GrDawnCaps.cpp", - "GrDawnCaps.h", - "GrDawnGpu.cpp", - "GrDawnGpu.h", - "GrDawnOpsRenderPass.cpp", - "GrDawnOpsRenderPass.h", - "GrDawnProgramBuilder.cpp", - "GrDawnProgramBuilder.h", - "GrDawnProgramDataManager.cpp", - "GrDawnProgramDataManager.h", - "GrDawnRenderTarget.cpp", - "GrDawnRenderTarget.h", - "GrDawnRingBuffer.cpp", - "GrDawnRingBuffer.h", - "GrDawnTexture.cpp", - "GrDawnTexture.h", - "GrDawnTextureRenderTarget.cpp", - "GrDawnTextureRenderTarget.h", - "GrDawnTypesPriv.cpp", - "GrDawnUtil.cpp", - "GrDawnUtil.h", -] - -split_srcs_and_hdrs( - name = "dawn", - files = DAWN_FILES, -) - -skia_filegroup( - name = "srcs", - srcs = [":dawn_srcs"], - visibility = ["//src/gpu/ganesh:__pkg__"], -) - -skia_filegroup( - name = "private_hdrs", - srcs = [":dawn_hdrs"], - visibility = ["//src/gpu/ganesh:__pkg__"], -) - -skia_cc_deps( - name = "deps", - visibility = ["//src/gpu/ganesh:__pkg__"], - deps = select({ - # Dawn headers and symbols are provided by Emscripten in a WASM build. We depend on Dawn - # only for native. - "//bazel/common_config_settings:cpu_wasm": [], - "//conditions:default": ["@dawn"], - }), -) diff --git a/src/gpu/ganesh/dawn/GrDawnAsyncWait.cpp b/src/gpu/ganesh/dawn/GrDawnAsyncWait.cpp deleted file mode 100644 index f0d853f18b23..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnAsyncWait.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2022 Google LLC. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnAsyncWait.h" - -#include "include/core/SkTypes.h" - -#ifdef __EMSCRIPTEN__ -#include -#endif // __EMSCRIPTEN__ - -namespace { - -#ifdef __EMSCRIPTEN__ - -// When we use Dawn/WebGPU in a WebAssembly environment, we do not have access to -// `wgpu::Device::Tick()`, which is only available to dawn_native. Here we emulate the same -// behavior by scheduling and awaiting on a single async task, which will yield to the browser's -// underlying event loop. -// -// This requires that Emscripten is configured with `-s ASYNCIFY` to work as expected. -EM_ASYNC_JS(void, asyncSleep, (), { - await new Promise((resolve, _) => { - setTimeout(resolve, 0); - }) -}); - -#endif // __EMSCRIPTEN__ - -} // namespace - -GrDawnAsyncWait::GrDawnAsyncWait(const wgpu::Device& device) : fDevice(device), fSignaled(false) {} - -bool GrDawnAsyncWait::yieldAndCheck() const { - if (fSignaled.load()) { - return true; - } -#ifdef __EMSCRIPTEN__ - asyncSleep(); -#else - fDevice.Tick(); -#endif // __EMSCRIPTEN__ - return fSignaled.load(); -} - -void GrDawnAsyncWait::busyWait() const { - while (!this->yieldAndCheck()) {} -} diff --git a/src/gpu/ganesh/dawn/GrDawnAsyncWait.h b/src/gpu/ganesh/dawn/GrDawnAsyncWait.h deleted file mode 100644 index b075476355af..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnAsyncWait.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2022 Google LLC. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnAsyncWait_DEFINED -#define GrDawnAsyncWait_DEFINED - -#include "webgpu/webgpu_cpp.h" - -#include -#include - -// Utility for monitoring the execution of an asynchronous Dawn-API event. -class GrDawnAsyncWait final { -public: - explicit GrDawnAsyncWait(const wgpu::Device& device); - - // Returns true if the wait has been signaled and false otherwise. This function yields - // execution to the event loop where Dawn's asynchronous tasks get scheduled and returns - // as soon as the loop yields the execution back to the caller. - bool yieldAndCheck() const; - - // Busy-waits until this wait has been signaled. - // TODO(armansito): This could benefit from a timeout in the case the wait never gets signaled. - void busyWait() const; - - // Marks this wait as resolved. Once called, all calls to `yieldAndCheck` and `busyWait` will - // return true immediately. - void signal() { fSignaled.store(true); } - - // Resets this object into its unsignaled state. - void reset() { fSignaled.store(false); } - -private: - wgpu::Device fDevice; - std::atomic_bool fSignaled; -}; - -#endif // GrDawnAsyncWait_DEFINED diff --git a/src/gpu/ganesh/dawn/GrDawnAttachment.cpp b/src/gpu/ganesh/dawn/GrDawnAttachment.cpp deleted file mode 100644 index dd81c3859f29..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnAttachment.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnAttachment.h" - -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -#define VK_CALL(GPU, X) GR_VK_CALL(GPU->vkInterface(), X) - -GrDawnAttachment::GrDawnAttachment(GrDawnGpu* gpu, - SkISize dimensions, - UsageFlags supportedUsages, - int samples, - wgpu::Texture texture, - wgpu::TextureView view, - std::string_view label) - : INHERITED(gpu, - dimensions, - supportedUsages, - samples, - GrMipmapped::kNo, - GrProtected::kNo, - label) - , fTexture(texture) - , fView(view) { - this->registerWithCache(skgpu::Budgeted::kYes); -} - -sk_sp GrDawnAttachment::MakeStencil(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt) { - wgpu::TextureDescriptor desc; - desc.usage = wgpu::TextureUsage::RenderAttachment; - desc.size.width = dimensions.width(); - desc.size.height = dimensions.height(); - desc.size.depthOrArrayLayers = 1; - desc.format = wgpu::TextureFormat::Depth24PlusStencil8; - wgpu::Texture texture = gpu->device().CreateTexture(&desc); - if (!texture) { - return nullptr; - } - wgpu::TextureView view = texture.CreateView(); - if (!view) { - return nullptr; - } - return sk_sp(new GrDawnAttachment(gpu, - dimensions, - UsageFlags::kStencilAttachment, - sampleCnt, - texture, - view, - /*label=*/"DawnAttachment_MakeStencil")); -} - -GrDawnAttachment::~GrDawnAttachment() {} - -void GrDawnAttachment::onRelease() { GrAttachment::onRelease(); } - -void GrDawnAttachment::onAbandon() { GrAttachment::onAbandon(); } - -GrDawnGpu* GrDawnAttachment::getDawnGpu() const { - SkASSERT(!this->wasDestroyed()); - return static_cast(this->getGpu()); -} diff --git a/src/gpu/ganesh/dawn/GrDawnAttachment.h b/src/gpu/ganesh/dawn/GrDawnAttachment.h deleted file mode 100644 index 48570672dedc..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnAttachment.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnAttachment_DEFINED -#define GrDawnAttachment_DEFINED - -#include "include/gpu/GrBackendSurface.h" -#include "src/gpu/ganesh/GrAttachment.h" - -#include "webgpu/webgpu_cpp.h" - -class GrDawnGpu; - -class GrDawnAttachment : public GrAttachment { -public: - static sk_sp MakeStencil(GrDawnGpu* gpu, SkISize dimensions, int sampleCnt); - - ~GrDawnAttachment() override; - wgpu::TextureView view() const { return fView; } - GrBackendFormat backendFormat() const override { - return GrBackendFormat::MakeDawn(wgpu::TextureFormat::Depth24PlusStencil8); - } - -protected: - void onRelease() override; - void onAbandon() override; - -private: - GrDawnAttachment(GrDawnGpu* gpu, - SkISize dimensions, - UsageFlags supportedUsages, - int samples, - wgpu::Texture texture, - wgpu::TextureView view, - std::string_view label); - - GrDawnGpu* getDawnGpu() const; - - wgpu::Texture fTexture; - wgpu::TextureView fView; - - using INHERITED = GrAttachment; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnBuffer.cpp b/src/gpu/ganesh/dawn/GrDawnBuffer.cpp deleted file mode 100644 index 5953441ce16d..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnBuffer.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnBuffer.h" - -#include "src/gpu/ganesh/dawn/GrDawnAsyncWait.h" -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" - -namespace { - wgpu::BufferUsage GrGpuBufferTypeToDawnUsageBit(GrGpuBufferType type) { - switch (type) { - case GrGpuBufferType::kVertex: - return wgpu::BufferUsage::Vertex | wgpu::BufferUsage::CopyDst; - case GrGpuBufferType::kIndex: - return wgpu::BufferUsage::Index | wgpu::BufferUsage::CopyDst; - case GrGpuBufferType::kXferCpuToGpu: - return wgpu::BufferUsage::MapWrite | wgpu::BufferUsage::CopySrc; - case GrGpuBufferType::kXferGpuToCpu: - return wgpu::BufferUsage::MapRead | wgpu::BufferUsage::CopyDst; - default: - SkDEBUGFAIL("buffer type not supported by Dawn"); - return wgpu::BufferUsage::Vertex; - } - } -} - -// static -sk_sp GrDawnBuffer::Make(GrDawnGpu* gpu, - size_t sizeInBytes, - GrGpuBufferType type, - GrAccessPattern pattern, - std::string_view label) { - wgpu::BufferDescriptor bufferDesc; - bufferDesc.size = sizeInBytes; - bufferDesc.usage = GrGpuBufferTypeToDawnUsageBit(type); - - Mappable mappable = Mappable::kNot; - if (bufferDesc.usage & wgpu::BufferUsage::MapRead) { - SkASSERT(!SkToBool(bufferDesc.usage & wgpu::BufferUsage::MapWrite)); - mappable = Mappable::kReadOnly; - } else if (bufferDesc.usage & wgpu::BufferUsage::MapWrite) { - mappable = Mappable::kWriteOnly; - } - - if (mappable == Mappable::kNot) { - // onMap can still succeed by using a staging buffer that gets transferred to the real - // buffer. updateData will use this same mechanism ("map", copy to staging buffer, "unmap"). - // The transfer must be 4 byte aligned. So ensure the real size of the buffer is 4 byte - // aligned. - bufferDesc.size = SkAlign4(bufferDesc.size); - SkASSERT(gpu->caps()->transferFromBufferToBufferAlignment() == 4); - } - - wgpu::Buffer buffer; - void* mapPtr = nullptr; - if (mappable == Mappable::kNot || mappable == Mappable::kReadOnly) { - buffer = gpu->device().CreateBuffer(&bufferDesc); - } else { - bufferDesc.mappedAtCreation = true; - buffer = gpu->device().CreateBuffer(&bufferDesc); - mapPtr = buffer.GetMappedRange(); - if (!mapPtr) { - SkDebugf("GrDawnBuffer: failed to map buffer at creation\n"); - return nullptr; - } - } - - return sk_sp(new GrDawnBuffer( - gpu, sizeInBytes, type, pattern, label, mappable, std::move(buffer), mapPtr)); -} - -GrDawnBuffer::GrDawnBuffer(GrDawnGpu* gpu, - size_t sizeInBytes, - GrGpuBufferType type, - GrAccessPattern pattern, - std::string_view label, - Mappable mappable, - wgpu::Buffer buffer, - void* mapPtr) - : INHERITED(gpu, sizeInBytes, type, pattern, label) - , fBuffer(std::move(buffer)) - , fMappable(mappable) { - fMapPtr = mapPtr; - - // We want to make the blocking map in `onMap` available initially only for read-only buffers, - // which are not mapped at creation or backed by a staging buffer which gets mapped - // independently. Note that the blocking map procedure becomes available to both read-only and - // write-only buffers once they get explicitly unmapped. - fUnmapped = (mapPtr == nullptr && mappable == Mappable::kReadOnly); - this->registerWithCache(skgpu::Budgeted::kYes); -} - -void* GrDawnBuffer::internalMap(MapType type, size_t offset, size_t size) { - if (fUnmapped) { - SkASSERT(fMappable != Mappable::kNot); - void* ptr = this->blockingMap(offset, size); - if (!ptr) { - SkDebugf("GrDawnBuffer: failed to map buffer\n"); - return nullptr; - } - fUnmapped = false; - return SkTAddOffset(ptr, offset); - } - - if (fMappable == Mappable::kNot) { - // Dawn requires that the offset and size be 4 byte aligned. If the offset is not - // then we logically align the staging slice with the previous aligned value, adjust - // the pointer into the slice that we return. We'll do the same adjustment when issuing the - // transfer in internalUnmap so that the data winds up at the right offset. - size_t r = offset & 0x3; - size += r; - SkASSERT(type == MapType::kWriteDiscard); - GrStagingBufferManager::Slice slice = - this->getDawnGpu()->stagingBufferManager()->allocateStagingBufferSlice( - size, /*requiredAlignment=*/4); - fStagingBuffer = static_cast(slice.fBuffer)->get(); - fStagingOffset = slice.fOffset; - return SkTAddOffset(slice.fOffsetMapPtr, r); - } - - // We always create this buffers mapped or if they've been used on the gpu before we use the - // async map callback to know when it is safe to reuse them. Thus by the time we get here - // the buffer should always be mapped. - SkASSERT(this->isMapped()); - return SkTAddOffset(fMapPtr, offset); -} - -void GrDawnBuffer::internalUnmap(MapType type, size_t offset, size_t size) { - if (fMappable == Mappable::kNot) { - SkASSERT(type == MapType::kWriteDiscard); - // See comment in internalMap() about this adjustment. - size_t r = offset & 0x3; - offset -= r; - size = SkAlign4(size + r); - this->getDawnGpu()->getCopyEncoder().CopyBufferToBuffer(fStagingBuffer, fStagingOffset, - fBuffer, offset, size); - } else { - fBuffer.Unmap(); - fUnmapped = true; - } -} - -void GrDawnBuffer::onRelease() { - if (this->wasDestroyed()) { - return; - } - - if (fMapPtr && fMappable != Mappable::kNot) { - fBuffer.Unmap(); - fMapPtr = nullptr; - fUnmapped = true; - } - - this->GrGpuBuffer::onRelease(); -} - -bool GrDawnBuffer::onClearToZero() { - void* ptr = this->internalMap(MapType::kWriteDiscard, 0, this->size()); - if (!ptr) { - return false; - } - - std::memset(ptr, 0, this->size()); - - this->internalUnmap(MapType::kWriteDiscard, 0, this->size()); - - return true; -} - -void GrDawnBuffer::onMap(MapType type) { - fMapPtr = this->internalMap(type, 0, this->size()); -} - -void GrDawnBuffer::onUnmap(MapType type) { - this->internalUnmap(type, 0, this->size()); -} - -bool GrDawnBuffer::onUpdateData(const void* src, size_t offset, size_t size, bool /*preserve*/) { - // Note that this subclass's impl of kWriteDiscard never actually discards. - void* ptr = this->internalMap(MapType::kWriteDiscard, offset, size); - if (!ptr) { - return false; - } - - memcpy(ptr, src, size); - - this->internalUnmap(MapType::kWriteDiscard, offset, size); - - return true; -} - -GrDawnGpu* GrDawnBuffer::getDawnGpu() const { - SkASSERT(!this->wasDestroyed()); - return static_cast(this->getGpu()); -} - -void GrDawnBuffer::mapAsync(MapAsyncCallback callback) { - SkASSERT(fMappable != Mappable::kNot); - SkASSERT(!fMapAsyncCallback); - SkASSERT(!this->isMapped()); - - fMapAsyncCallback = std::move(callback); - fBuffer.MapAsync( - (fMappable == Mappable::kReadOnly) ? wgpu::MapMode::Read : wgpu::MapMode::Write, - 0, - wgpu::kWholeMapSize, - [](WGPUBufferMapAsyncStatus status, void* userData) { - static_cast(userData)->mapAsyncDone(status); - }, - this); -} - -void GrDawnBuffer::mapAsyncDone(WGPUBufferMapAsyncStatus status) { - SkASSERT(fMapAsyncCallback); - auto callback = std::move(fMapAsyncCallback); - - if (status != WGPUBufferMapAsyncStatus_Success) { - SkDebugf("GrDawnBuffer: failed to map buffer (status: %u)\n", status); - callback(false); - return; - } - - if (fMappable == Mappable::kReadOnly) { - fMapPtr = const_cast(fBuffer.GetConstMappedRange()); - } else { - fMapPtr = fBuffer.GetMappedRange(); - } - - if (this->isMapped()) { - fUnmapped = false; - } - - // Run the callback as the last step in this function since the callback can deallocate this - // GrDawnBuffer. - callback(this->isMapped()); -} - -void* GrDawnBuffer::blockingMap(size_t offset, size_t size) { - SkASSERT(fMappable != Mappable::kNot); - - struct Context { - GrDawnBuffer* buffer; - void* result; - GrDawnAsyncWait wait; - }; - - Context context{this, nullptr, GrDawnAsyncWait{this->getDawnGpu()->device()}}; - - // The offset must be a multiple of 8. If not back it up to the previous 8 byte multiple - // and compensate by extending the size. In either case size must be a multiple of 4. - SkASSERT(SkIsAlign4(offset)); - size_t r = offset & 0x7; - offset -= r; - size = SkAlign4(size + r); - - fBuffer.MapAsync( - (fMappable == Mappable::kReadOnly) ? wgpu::MapMode::Read : wgpu::MapMode::Write, - offset, - size, - [](WGPUBufferMapAsyncStatus status, void* userData) { - auto* context = static_cast(userData); - if (status != WGPUBufferMapAsyncStatus_Success) { - context->result = nullptr; - context->wait.signal(); - return; - } - auto* wgpuBuffer = &context->buffer->fBuffer; - if (context->buffer->fMappable == Mappable::kReadOnly) { - context->result = const_cast(wgpuBuffer->GetConstMappedRange()); - } else { - context->result = wgpuBuffer->GetMappedRange(); - } - if (context->result) { - context->buffer->fUnmapped = false; - } - context->wait.signal(); - }, - &context); - - context.wait.busyWait(); - - return context.result ? SkTAddOffset(context.result, r) : nullptr; -} diff --git a/src/gpu/ganesh/dawn/GrDawnBuffer.h b/src/gpu/ganesh/dawn/GrDawnBuffer.h deleted file mode 100644 index 8c7db5cdbba4..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnBuffer.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnBuffer_DEFINED -#define GrDawnBuffer_DEFINED - -#include "src/gpu/ganesh/GrGpuBuffer.h" -#include "webgpu/webgpu_cpp.h" - -#include - -class GrDawnGpu; - -// GrDawnBuffer is the GrGpuBuffer implementation for the Dawn backend. -// -// Some notes on the implementation: -// -// LIFETIME AND CREATION -// --------------------- -// When a GrDawnBuffer is constructed, it allocates a GPU buffer. Depending on the requested access -// pattern, the buffer is typically immediately mapped at creation (which happens synchronously and -// relatively fast). If a client requests to create a buffer with data, then it will be immediately -// unmapped after the data is copied into the buffer (see `GrDawnGpu::onCreateBuffer` and -// `GrDawnBuffer::onUpdateData`). -// -// Clients usually create buffers through a GrResourceProvider or a GrStagingBufferManager. These -// buffers are constructed in `GrDawnGpu::onCreateBuffer` and GrDawnGpu is involved in their -// lifetime and mapping. Depending on the requested buffer type, a GrDawnBuffer that is -// initialized as `Mappable::kNot` can itself be backed by another GrDawnBuffer that is owned by a -// GrStagingBufferManager. In this case the CPU mapping happens via the `fStagingBuffer` member -// instead of `fBuffer`. The backing `fStagingBuffer` is initialized in `GrDawnBuffer::onMap` and -// its contents are instructed to be copied into `fBuffer` in `GrDawnBuffer::onUnmap` (which does -// not take effect until the command is submitted to the GPU). -// -// ASYNC MAP/UNMAP -// --------------- -// The Dawn API provides two ways to map the CPU-accessible memory of a wgpu::Buffer: -// * wgpu::Device::CreateBuffer which can synchronously map the buffer at creation; -// * wgpu::Buffer::MapAsync which asynchronously maps a buffer at any time. -// -// When a GrDawnBuffer gets created it starts out as mapped (except it gets unmapped immediately if -// initialized with data). A buffer gets unmapped when its owner calls `GrGpuBuffer::unmap()`. A -// buffer that is managed by a GrStagingBufferManager is always unmapped before its ownership is -// passed to the associated GrDawnGpu. -// -// Dawn only provides an asynchronous API for mapping an unmapped buffer and `GrGpuBuffer::map()` -// must work synchronously. However, blocking in a busy-wait that yields to the underlying event -// loop can stall the calling thread in the order of milliseconds. We optimize this specifically -// for staging buffers: -// 1. GrStagingBufferManager first unmaps the buffer and passes its ownership to GrDawnBuffer; at -// this stage no client is expected to access the buffer and it can remain unmapped. -// 2. GrDawnBuffer requests to map the buffer asynchronously and does not return it back to the -// backing resource provider until the map finishes. Thus, the buffer is never handed back to -// clients in an unmapped state. -// 3. If a client needs a staging buffer before the map finishes, they will need to allocate a -// new buffer which can get mapped at creation and avoid an async map. -// -// For all other buffers, a blocking map procedure is provided which allows them to remap a buffer -// if needed. For instance, a write-only non-staging buffer can be safely unmapped and mapped by a -// client. -class GrDawnBuffer : public GrGpuBuffer { -public: - static sk_sp Make(GrDawnGpu* gpu, - size_t sizeInBytes, - GrGpuBufferType type, - GrAccessPattern pattern, - std::string_view label); - ~GrDawnBuffer() override = default; - - void onMap(MapType) override; - void onUnmap(MapType) override; - bool onClearToZero() override; - void onRelease() override; - bool onUpdateData(const void* src, size_t offset, size_t size, bool preserve) override; - - GrDawnGpu* getDawnGpu() const; - wgpu::Buffer get() const { return fBuffer; } - - // Map this buffer using the asynchronous map procedure. This function is intended to be used by - // the owning GrDawnGpu to manage the lifetime of this buffer and it has the following - // restrictions: - // - It must not be called while an async map is already in progress. - // - It must not be called on a buffer that is already mapped. - // - It must not be called on a buffer that is initialized as "unmappable". - // - // `callback` is called asynchronously with the result of this procedure once it's complete. - using MapAsyncCallback = std::function; - void mapAsync(MapAsyncCallback callback); - -private: - enum class Mappable { - // Corresponds to Vertex and Index buffers. When a mapping is requested, these buffers are - // always backed by a staging buffer. NOTE: Staging buffers that are created by - // GrStagingBufferManager themselves are always `Mappable::kWriteOnly`. - kNot, - - // Corresponds to `GrGpuBufferType::kXferGpuToCpu`. NOT mapped at creation. Will use a - // blocking-map if a mapping is requested. - kReadOnly, - - // Corresponds to `GrGpuBufferType::kXferCpuToGpu`. Always mapped at creation. Will use a - // blocking-map if a mapping is requested. IF this is a staging buffer, then it will be - // asynchronously mapped by GrDawnGpu. - kWriteOnly, - }; - - GrDawnBuffer(GrDawnGpu* gpu, - size_t sizeInBytes, - GrGpuBufferType type, - GrAccessPattern pattern, - std::string_view label, - Mappable mappable, - wgpu::Buffer buffer, - void* mapPtr); - - void* internalMap(MapType type, size_t offset, size_t size); - void internalUnmap(MapType type, size_t offset, size_t size); - - // Called to handle the asynchronous mapAsync callback. - void mapAsyncDone(WGPUBufferMapAsyncStatus status); - - // Map a buffer and busy-wait until the asynchronous mapping procedure completes. This function - // only needs to be called for a buffer that has been unmapped since buffers start out as mapped - // at creation. - // - // The blocking map incurs a cost in the form of yielding to the underlying event loop until the - // map finishes and can block the calling thread in the order of milliseconds. This might be - // undesirable for buffers that are mapped and unmapped frequently. - // - // This procedure is used to cover the case where a buffer that is not managed by a - // GrStagingBufferManager (and thus not asynchronously mapped by the owning GrDawnGpu) is - // unmapped and needs to get re-mapped for use (e.g. in onUpdateData()). - // - // Returns nullptr if the buffer fails to map. - void* blockingMap(size_t offset, size_t size); - - wgpu::Buffer fBuffer; - Mappable fMappable = Mappable::kNot; - bool fUnmapped; - - // A callback is only present when a request for MapAsync is pending. The callback is reset once - // the procedure is complete. - MapAsyncCallback fMapAsyncCallback; - - // Buffers that are of the "not mappable" type are backed by another GrDawnBuffer that is - // managed by a GrStagingBufferManager. - wgpu::Buffer fStagingBuffer; - size_t fStagingOffset = 0; - - using INHERITED = GrGpuBuffer; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnCaps.cpp b/src/gpu/ganesh/dawn/GrDawnCaps.cpp deleted file mode 100644 index f514fc2f19a9..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnCaps.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnCaps.h" - -#include "include/core/SkTextureCompressionType.h" -#include "src/gpu/KeyBuilder.h" -#include "src/gpu/ganesh/GrProgramDesc.h" -#include "src/gpu/ganesh/GrProgramInfo.h" -#include "src/gpu/ganesh/GrRenderTarget.h" -#include "src/gpu/ganesh/GrStencilSettings.h" -#include "src/gpu/ganesh/TestFormatColorTypeCombination.h" - -GrDawnCaps::GrDawnCaps(const GrContextOptions& contextOptions) : INHERITED(contextOptions) { - fMipmapSupport = true; - fAnisoSupport = true; - fBufferMapThreshold = SK_MaxS32; // FIXME: get this from Dawn? - fShaderCaps = std::make_unique(); - fMaxTextureSize = fMaxRenderTargetSize = 8192; // FIXME - fMaxVertexAttributes = 16; // FIXME - fClampToBorderSupport = false; - fPerformPartialClearsAsDraws = true; - fDynamicStateArrayGeometryProcessorTextureSupport = true; - fTwoSidedStencilRefsAndMasksMustMatch = true; - - // WebGPU zero-initializes resources. https://www.w3.org/TR/webgpu/#security-uninitialized - fBuffersAreInitiallyZero = true; - - fShaderCaps->fFlatInterpolationSupport = true; - fShaderCaps->fIntegerSupport = true; - // FIXME: each fragment sampler takes two binding slots in Dawn (sampler + texture). Limit to - // 6 * 2 = 12, since kMaxBindingsPerGroup is 16 in Dawn, and we need to keep a few for - // non-texture bindings. Eventually, we may be able to increase kMaxBindingsPerGroup in Dawn. - fShaderCaps->fMaxFragmentSamplers = 6; - fShaderCaps->fShaderDerivativeSupport = true; - fShaderCaps->fExplicitTextureLodSupport = true; - - // We haven't yet implemented GrGpu::transferFromBufferToBuffer for Dawn but GrDawnBuffer uses - // transfers to implement buffer mapping and updates and transfers must be 4 byte aligned. - fTransferFromBufferToBufferAlignment = 4; - // Buffer updates are sometimes implemented through transfers in GrDawnBuffer. - fBufferUpdateDataPreserveAlignment = 4; - - this->finishInitialization(contextOptions); -} - -bool GrDawnCaps::isFormatSRGB(const GrBackendFormat& format) const { - return false; -} - -bool GrDawnCaps::isFormatTexturable(const GrBackendFormat& format, GrTextureType) const { - // Currently, all the formats in GrDawnFormatToPixelConfig are texturable. - wgpu::TextureFormat dawnFormat; - return format.asDawnFormat(&dawnFormat); -} - -static skgpu::Swizzle get_swizzle(const GrBackendFormat& format, GrColorType colorType, - bool forOutput) { - switch (colorType) { - case GrColorType::kAlpha_8: // fall through - case GrColorType::kAlpha_F16: - if (forOutput) { - return skgpu::Swizzle("a000"); - } else { - return skgpu::Swizzle("000r"); - } - case GrColorType::kGray_8: - if (!forOutput) { - return skgpu::Swizzle::RRRA(); - } - break; - case GrColorType::kRGB_888x: - if (!forOutput) { - return skgpu::Swizzle::RGB1(); - } - break; - default: - return skgpu::Swizzle::RGBA(); - } - return skgpu::Swizzle::RGBA(); -} - -bool GrDawnCaps::isFormatRenderable(const GrBackendFormat& format, - int sampleCount) const { - wgpu::TextureFormat dawnFormat; - if (!format.isValid() || sampleCount > 1 || !format.asDawnFormat(&dawnFormat)) { - return false; - } - - return GrDawnFormatIsRenderable(dawnFormat); -} - -bool GrDawnCaps::isFormatAsColorTypeRenderable(GrColorType ct, const GrBackendFormat& format, - int sampleCount) const { - return isFormatRenderable(format, sampleCount); -} - -GrCaps::SurfaceReadPixelsSupport GrDawnCaps::surfaceSupportsReadPixels( - const GrSurface* surface) const { - // We currently support readbacks only from Textures and TextureRenderTargets. - return surface->asTexture() ? SurfaceReadPixelsSupport::kSupported - : SurfaceReadPixelsSupport::kUnsupported; -} - -bool GrDawnCaps::onSurfaceSupportsWritePixels(const GrSurface* surface) const { - // We currently support writePixels only to Textures and TextureRenderTargets. - return surface->asTexture() != nullptr; -} - -int GrDawnCaps::getRenderTargetSampleCount(int requestedCount, - const GrBackendFormat& backendFormat) const { - wgpu::TextureFormat dawnFormat; - if (!backendFormat.asDawnFormat(&dawnFormat)) { - return 0; - } - return GrDawnFormatIsRenderable(dawnFormat) ? 1 : 0; -} - -int GrDawnCaps::maxRenderTargetSampleCount(const GrBackendFormat& format) const { - return format.isValid() ? 1 : 0; -} - -GrBackendFormat GrDawnCaps::onGetDefaultBackendFormat(GrColorType ct) const { - wgpu::TextureFormat format; - if (!GrColorTypeToDawnFormat(ct, &format)) { - return {}; - } - return GrBackendFormat::MakeDawn(format); -} - -GrBackendFormat GrDawnCaps::getBackendFormatFromCompressionType(SkTextureCompressionType type) const -{ - return GrBackendFormat(); -} - -skgpu::Swizzle GrDawnCaps::onGetReadSwizzle(const GrBackendFormat& format, - GrColorType colorType) const { - return get_swizzle(format, colorType, false); -} - -skgpu::Swizzle GrDawnCaps::getWriteSwizzle(const GrBackendFormat& format, - GrColorType colorType) const { - return get_swizzle(format, colorType, true); -} - -uint64_t GrDawnCaps::computeFormatKey(const GrBackendFormat& format) const { - wgpu::TextureFormat dawnFormat; - SkAssertResult(format.asDawnFormat(&dawnFormat)); - - // Dawn max enum value should always fit in 32 bits. - - // disabled: no member named 'WGPUTextureFormat_Force32' in namespace 'wgpu' - //SkASSERT(dawnFormat <= wgpu::WGPUTextureFormat_Force32); - return (uint64_t)dawnFormat; -} - -bool GrDawnCaps::onAreColorTypeAndFormatCompatible(GrColorType ct, - const GrBackendFormat& format) const { - return true; -} - -// FIXME: taken from GrVkPipelineState; refactor. -static uint32_t get_blend_info_key(const GrPipeline& pipeline) { - skgpu::BlendInfo blendInfo = pipeline.getXferProcessor().getBlendInfo(); - - static const uint32_t kBlendWriteShift = 1; - static const uint32_t kBlendCoeffShift = 5; - static_assert((int)skgpu::BlendCoeff::kLast < (1 << kBlendCoeffShift)); - static_assert((int)skgpu::BlendEquation::kFirstAdvanced - 1 < 4); - - uint32_t key = blendInfo.fWritesColor; - key |= ((int)blendInfo.fSrcBlend << kBlendWriteShift); - key |= ((int)blendInfo.fDstBlend << (kBlendWriteShift + kBlendCoeffShift)); - key |= ((int)blendInfo.fEquation << (kBlendWriteShift + 2 * kBlendCoeffShift)); - - return key; -} - -GrProgramDesc GrDawnCaps::makeDesc(GrRenderTarget* rt, - const GrProgramInfo& programInfo, - ProgramDescOverrideFlags overrideFlags) const { - SkASSERT(overrideFlags == ProgramDescOverrideFlags::kNone); - GrProgramDesc desc; - GrProgramDesc::Build(&desc, programInfo, *this); - - wgpu::TextureFormat format; - if (!programInfo.backendFormat().asDawnFormat(&format)) { - desc.reset(); - SkASSERT(!desc.isValid()); - return desc; - } - - skgpu::KeyBuilder b(desc.key()); - GrStencilSettings stencil = programInfo.nonGLStencilSettings(); - stencil.genKey(&b, true); - - // TODO: remove this reliance on the renderTarget - bool hasDepthStencil = rt->getStencilAttachment() != nullptr; - - b.add32(static_cast(format)); - b.add32(static_cast(hasDepthStencil)); - b.add32(get_blend_info_key(programInfo.pipeline())); - b.add32(programInfo.primitiveTypeKey()); - - b.flush(); - return desc; -} - -#if GR_TEST_UTILS -std::vector GrDawnCaps::getTestingCombinations() const { - std::vector combos = { - { GrColorType::kAlpha_8, GrBackendFormat::MakeDawn(wgpu::TextureFormat::R8Unorm) }, - { GrColorType::kRGBA_8888, GrBackendFormat::MakeDawn(wgpu::TextureFormat::RGBA8Unorm) }, - { GrColorType::kRGBA_8888, GrBackendFormat::MakeDawn(wgpu::TextureFormat::BGRA8Unorm) }, - { GrColorType::kRGB_888x, GrBackendFormat::MakeDawn(wgpu::TextureFormat::RGBA8Unorm) }, - { GrColorType::kRGB_888x, GrBackendFormat::MakeDawn(wgpu::TextureFormat::BGRA8Unorm) }, - { GrColorType::kBGRA_8888, GrBackendFormat::MakeDawn(wgpu::TextureFormat::BGRA8Unorm) }, - { GrColorType::kBGRA_8888, GrBackendFormat::MakeDawn(wgpu::TextureFormat::RGBA8Unorm) }, - }; - -#ifdef SK_DEBUG - for (const GrTest::TestFormatColorTypeCombination& combo : combos) { - SkASSERT(this->onAreColorTypeAndFormatCompatible(combo.fColorType, combo.fFormat)); - } -#endif - return combos; -} -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnCaps.h b/src/gpu/ganesh/dawn/GrDawnCaps.h deleted file mode 100644 index 48f8082f3619..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnCaps.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnCaps_DEFINED -#define GrDawnCaps_DEFINED - -#include "include/gpu/GrBackendSurface.h" -#include "include/gpu/GrContextOptions.h" -#include "src/gpu/ganesh/GrCaps.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -enum class SkTextureCompressionType; - -class GrDawnCaps : public GrCaps { -public: - GrDawnCaps(const GrContextOptions& contextOptions); - - bool isFormatSRGB(const GrBackendFormat&) const override; - - bool isFormatRenderable(const GrBackendFormat& format, - int sampleCount = 1) const override; - bool isFormatAsColorTypeRenderable(GrColorType ct, const GrBackendFormat& format, - int sampleCount = 1) const override; - - - bool isFormatCopyable(const GrBackendFormat& format) const override { return true; } - - bool isFormatTexturable(const GrBackendFormat& format, GrTextureType) const override; - - SupportedWrite supportedWritePixelsColorType(GrColorType surfaceColorType, - const GrBackendFormat& surfaceFormat, - GrColorType srcColorType) const override { - return {surfaceColorType, GrColorTypeBytesPerPixel(surfaceColorType)}; - } - - SurfaceReadPixelsSupport surfaceSupportsReadPixels(const GrSurface*) const override; - - int getRenderTargetSampleCount(int requestedCount, - const GrBackendFormat&) const override; - - int maxRenderTargetSampleCount(const GrBackendFormat& format) const override; - - GrBackendFormat getBackendFormatFromCompressionType(SkTextureCompressionType) const override; - - skgpu::Swizzle getWriteSwizzle(const GrBackendFormat&, GrColorType) const override; - - uint64_t computeFormatKey(const GrBackendFormat&) const override; - - GrProgramDesc makeDesc(GrRenderTarget*, - const GrProgramInfo&, - ProgramDescOverrideFlags) const override; - -#if GR_TEST_UTILS - std::vector getTestingCombinations() const override; -#endif - -private: - bool onSurfaceSupportsWritePixels(const GrSurface* surface) const override; - bool onCanCopySurface(const GrSurfaceProxy* dst, const SkIRect& dstRect, - const GrSurfaceProxy* src, const SkIRect& srcRect) const override { - // Dawn does not support scaling copies - return srcRect.size() == dstRect.size(); - } - GrBackendFormat onGetDefaultBackendFormat(GrColorType) const override; - - bool onAreColorTypeAndFormatCompatible(GrColorType, const GrBackendFormat&) const override; - - SupportedRead onSupportedReadPixelsColorType(GrColorType srcColorType, - const GrBackendFormat& backendFormat, - GrColorType dstColorType) const override { - return { srcColorType, GrColorTypeBytesPerPixel(srcColorType) }; - } - - skgpu::Swizzle onGetReadSwizzle(const GrBackendFormat&, GrColorType) const override; - - using INHERITED = GrCaps; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnGpu.cpp b/src/gpu/ganesh/dawn/GrDawnGpu.cpp deleted file mode 100644 index ede8144a9449..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnGpu.cpp +++ /dev/null @@ -1,1042 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" - -#include "include/core/SkColorSpace.h" -#include "include/gpu/GrBackendSemaphore.h" -#include "include/gpu/GrBackendSurface.h" -#include "include/gpu/GrContextOptions.h" -#include "include/gpu/GrDirectContext.h" -#include "src/base/SkRectMemcpy.h" -#include "src/gpu/PipelineUtils.h" -#include "src/gpu/dawn/DawnUtilsPriv.h" -#include "src/gpu/ganesh/GrDataUtils.h" -#include "src/gpu/ganesh/GrDirectContextPriv.h" -#include "src/gpu/ganesh/GrGeometryProcessor.h" -#include "src/gpu/ganesh/GrGpuResourceCacheAccess.h" -#include "src/gpu/ganesh/GrPipeline.h" -#include "src/gpu/ganesh/GrRenderTarget.h" -#include "src/gpu/ganesh/GrSemaphore.h" -#include "src/gpu/ganesh/GrStencilSettings.h" -#include "src/gpu/ganesh/GrTexture.h" -#include "src/gpu/ganesh/GrThreadSafePipelineBuilder.h" -#include "src/gpu/ganesh/dawn/GrDawnAsyncWait.h" -#include "src/gpu/ganesh/dawn/GrDawnAttachment.h" -#include "src/gpu/ganesh/dawn/GrDawnBuffer.h" -#include "src/gpu/ganesh/dawn/GrDawnCaps.h" -#include "src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h" -#include "src/gpu/ganesh/dawn/GrDawnProgramBuilder.h" -#include "src/gpu/ganesh/dawn/GrDawnRenderTarget.h" -#include "src/gpu/ganesh/dawn/GrDawnTexture.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" -#include "src/sksl/SkSLProgramKind.h" -#include "src/sksl/SkSLProgramSettings.h" - -#include "src/base/SkAutoMalloc.h" -#include "src/core/SkMipmap.h" -#include "src/sksl/SkSLCompiler.h" - -#if !defined(SK_BUILD_FOR_WIN) -#include -#endif // !defined(SK_BUILD_FOR_WIN) - -using namespace skia_private; - -static const int kMaxRenderPipelineEntries = 1024; - -static wgpu::FilterMode to_dawn_filter_mode(GrSamplerState::Filter filter) { - switch (filter) { - case GrSamplerState::Filter::kNearest: - return wgpu::FilterMode::Nearest; - case GrSamplerState::Filter::kLinear: - return wgpu::FilterMode::Linear; - default: - SkDEBUGFAIL("unsupported filter mode"); - return wgpu::FilterMode::Nearest; - } -} - -static wgpu::MipmapFilterMode to_dawn_mipmap_mode(GrSamplerState::MipmapMode mode) { - switch (mode) { - case GrSamplerState::MipmapMode::kNone: - // Fall-through (Dawn does not have an equivalent for "None") - case GrSamplerState::MipmapMode::kNearest: - return wgpu::MipmapFilterMode::Nearest; - case GrSamplerState::MipmapMode::kLinear: - return wgpu::MipmapFilterMode::Linear; - default: - SkDEBUGFAIL("unsupported filter mode"); - return wgpu::MipmapFilterMode::Nearest; - } -} - -static wgpu::AddressMode to_dawn_address_mode(GrSamplerState::WrapMode wrapMode) { - switch (wrapMode) { - case GrSamplerState::WrapMode::kClamp: - return wgpu::AddressMode::ClampToEdge; - case GrSamplerState::WrapMode::kRepeat: - return wgpu::AddressMode::Repeat; - case GrSamplerState::WrapMode::kMirrorRepeat: - return wgpu::AddressMode::MirrorRepeat; - case GrSamplerState::WrapMode::kClampToBorder: - SkDEBUGFAIL("unsupported address mode"); - } - SkDEBUGFAIL("unsupported address mode"); - return wgpu::AddressMode::ClampToEdge; -} - -sk_sp GrDawnGpu::Make(const wgpu::Device& device, - const GrContextOptions& options, GrDirectContext* direct) { - if (!device) { - return nullptr; - } - - return sk_sp(new GrDawnGpu(direct, options, device)); -} - -//////////////////////////////////////////////////////////////////////////////// - -GrDawnGpu::PendingMapAsyncRequests::PendingMapAsyncRequests(const wgpu::Device& device) - : wait_(device) {} - -void GrDawnGpu::PendingMapAsyncRequests::addOne() { - if (fCount == 0) { - wait_.reset(); - } - fCount++; -} - -void GrDawnGpu::PendingMapAsyncRequests::completeOne() { - if (fCount == 1) { - wait_.signal(); - } - if (fCount > 0) { - fCount--; - } -} - -void GrDawnGpu::PendingMapAsyncRequests::waitUntilDone() const { - if (fCount == 0) { - return; - } - wait_.busyWait(); - SkASSERT(fCount == 0); -} - -GrDawnGpu::GrDawnGpu(GrDirectContext* direct, - const GrContextOptions& options, - const wgpu::Device& device) - : INHERITED(direct) - , fDevice(device) - , fQueue(device.GetQueue()) - , fUniformRingBuffer(this, wgpu::BufferUsage::Uniform) - , fStagingBufferManager(this) - , fPendingMapAsyncRequests(device) - , fRenderPipelineCache(kMaxRenderPipelineEntries) - , fFinishCallbacks(this) { - this->initCapsAndCompiler(sk_make_sp(options)); - device.SetUncapturedErrorCallback( - [](WGPUErrorType type, char const* message, void*) { - SkDebugf("GrDawnGpu: ERROR type %u, msg: %s", type, message); - }, - nullptr); -} - -GrDawnGpu::~GrDawnGpu() { this->finishOutstandingGpuWork(); } - -void GrDawnGpu::disconnect(DisconnectType type) { - if (DisconnectType::kCleanup == type) { - this->finishOutstandingGpuWork(); - } - fStagingBufferManager.reset(); - fQueue = nullptr; - fDevice = nullptr; - INHERITED::disconnect(type); -} - -GrThreadSafePipelineBuilder* GrDawnGpu::pipelineBuilder() { - return nullptr; -} - -sk_sp GrDawnGpu::refPipelineBuilder() { - return nullptr; -} - -/////////////////////////////////////////////////////////////////////////////// - -GrOpsRenderPass* GrDawnGpu::onGetOpsRenderPass( - GrRenderTarget* rt, - bool /*useMSAASurface*/, - GrAttachment*, - GrSurfaceOrigin origin, - const SkIRect& bounds, - const GrOpsRenderPass::LoadAndStoreInfo& colorInfo, - const GrOpsRenderPass::StencilLoadAndStoreInfo& stencilInfo, - const TArray& sampledProxies, - GrXferBarrierFlags renderPassXferBarriers) { - fOpsRenderPass.reset(new GrDawnOpsRenderPass(this, rt, origin, colorInfo, stencilInfo)); - return fOpsRenderPass.get(); -} - -/////////////////////////////////////////////////////////////////////////////// -sk_sp GrDawnGpu::onCreateBuffer(size_t size, - GrGpuBufferType type, - GrAccessPattern accessPattern) { - return GrDawnBuffer::Make(this, size, type, accessPattern, - /*label=*/"DawnGpu_GetOpsRenderPass"); -} - -//////////////////////////////////////////////////////////////////////////////// -bool GrDawnGpu::onWritePixels(GrSurface* surface, - SkIRect rect, - GrColorType surfaceColorType, - GrColorType srcColorType, - const GrMipLevel texels[], - int mipLevelCount, - bool prepForTexSampling) { - GrDawnTexture* texture = static_cast(surface->asTexture()); - if (!texture) { - return false; - } - this->uploadTextureData(srcColorType, texels, mipLevelCount, rect, texture->texture()); - if (mipLevelCount < texture->maxMipmapLevel() + 1) { - texture->markMipmapsDirty(); - } - return true; -} - -bool GrDawnGpu::onTransferFromBufferToBuffer(sk_sp src, - size_t srcOffset, - sk_sp dst, - size_t dstOffset, - size_t size) { - // skbug.com/13453 - SkDEBUGFAIL("unimplemented"); - return false; -} - -bool GrDawnGpu::onTransferPixelsTo(GrTexture* texture, - SkIRect rect, - GrColorType textureColorType, - GrColorType bufferColorType, - sk_sp transferBuffer, - size_t bufferOffset, - size_t rowBytes) { - // skbug.com/13453 - SkDEBUGFAIL("unimplemented"); - return false; -} - -bool GrDawnGpu::onTransferPixelsFrom(GrSurface* surface, - SkIRect rect, - GrColorType surfaceColorType, - GrColorType bufferColorType, - sk_sp transferBuffer, - size_t offset) { - // skbug.com/13453 - SkDEBUGFAIL("unimplemented"); - return false; -} - -//////////////////////////////////////////////////////////////////////////////// -sk_sp GrDawnGpu::onCreateTexture(SkISize dimensions, - const GrBackendFormat& backendFormat, - GrRenderable renderable, - int renderTargetSampleCnt, - skgpu::Budgeted budgeted, - GrProtected, - int mipLevelCount, - uint32_t levelClearMask, - std::string_view label) { - if (levelClearMask) { - return nullptr; - } - - wgpu::TextureFormat format; - if (!backendFormat.asDawnFormat(&format)) { - return nullptr; - } - - GrMipmapStatus mipmapStatus = - mipLevelCount > 1 ? GrMipmapStatus::kDirty : GrMipmapStatus::kNotAllocated; - - return GrDawnTexture::Make(this, dimensions, format, renderable, renderTargetSampleCnt, - budgeted, mipLevelCount, mipmapStatus, label); -} - -sk_sp GrDawnGpu::onCreateCompressedTexture(SkISize dimensions, - const GrBackendFormat&, - skgpu::Budgeted, - GrMipmapped, - GrProtected, - const void* data, - size_t dataSize) { - SkDEBUGFAIL("unimplemented"); - return nullptr; -} - -sk_sp GrDawnGpu::onWrapBackendTexture(const GrBackendTexture& backendTex, - GrWrapOwnership ownership, - GrWrapCacheable cacheable, - GrIOType ioType) { - GrDawnTextureInfo info; - if (!backendTex.getDawnTextureInfo(&info)) { - return nullptr; - } - - SkISize dimensions = { backendTex.width(), backendTex.height() }; - return GrDawnTexture::MakeWrapped(this, dimensions, GrRenderable::kNo, 1, cacheable, ioType, - info, backendTex.getLabel()); -} - -sk_sp GrDawnGpu::onWrapCompressedBackendTexture(const GrBackendTexture& backendTex, - GrWrapOwnership ownership, - GrWrapCacheable cacheable) { - return nullptr; -} - -sk_sp GrDawnGpu::onWrapRenderableBackendTexture(const GrBackendTexture& tex, - int sampleCnt, - GrWrapOwnership, - GrWrapCacheable cacheable) { - GrDawnTextureInfo info; - if (!tex.getDawnTextureInfo(&info) || !info.fTexture) { - return nullptr; - } - - SkISize dimensions = { tex.width(), tex.height() }; - sampleCnt = this->caps()->getRenderTargetSampleCount(sampleCnt, tex.getBackendFormat()); - if (sampleCnt < 1) { - return nullptr; - } - - sk_sp result = GrDawnTexture::MakeWrapped(this, dimensions, GrRenderable::kYes, - sampleCnt, cacheable, kRW_GrIOType, info, - tex.getLabel()); - result->markMipmapsDirty(); - return result; -} - -sk_sp GrDawnGpu::onWrapBackendRenderTarget(const GrBackendRenderTarget& rt) { - GrDawnRenderTargetInfo info; - if (!rt.getDawnRenderTargetInfo(&info) || !info.fTextureView) { - return nullptr; - } - - SkISize dimensions = { rt.width(), rt.height() }; - int sampleCnt = 1; - return GrDawnRenderTarget::MakeWrapped( - this, dimensions, sampleCnt, info, /*label=*/"DawnGpu_WrapBackendRenderTarget"); -} - -sk_sp GrDawnGpu::makeStencilAttachment(const GrBackendFormat& /*colorFormat*/, - SkISize dimensions, int numStencilSamples) { - fStats.incStencilAttachmentCreates(); - return GrDawnAttachment::MakeStencil(this, dimensions, numStencilSamples); -} - -GrBackendTexture GrDawnGpu::onCreateBackendTexture(SkISize dimensions, - const GrBackendFormat& backendFormat, - GrRenderable renderable, - GrMipmapped mipmapped, - GrProtected isProtected, - std::string_view label) { - wgpu::TextureFormat format; - if (!backendFormat.asDawnFormat(&format)) { - return GrBackendTexture(); - } - - wgpu::TextureDescriptor desc; - desc.usage = wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::CopySrc | - wgpu::TextureUsage::CopyDst; - - if (GrRenderable::kYes == renderable) { - desc.usage |= wgpu::TextureUsage::RenderAttachment; - } - - int numMipLevels = 1; - if (mipmapped == GrMipmapped::kYes) { - numMipLevels = SkMipmap::ComputeLevelCount(dimensions.width(), dimensions.height()) + 1; - } - - desc.size.width = dimensions.width(); - desc.size.height = dimensions.height(); - desc.size.depthOrArrayLayers = 1; - desc.format = format; - desc.mipLevelCount = numMipLevels; - - wgpu::Texture tex = this->device().CreateTexture(&desc); - - GrDawnTextureInfo info; - info.fTexture = tex; - info.fFormat = desc.format; - info.fLevelCount = desc.mipLevelCount; - return GrBackendTexture(dimensions.width(), dimensions.height(), info); -} - -void GrDawnGpu::uploadTextureData(GrColorType srcColorType, const GrMipLevel texels[], - int mipLevelCount, const SkIRect& rect, - wgpu::Texture texture) { - uint32_t x = rect.x(); - uint32_t y = rect.y(); - uint32_t width = rect.width(); - uint32_t height = rect.height(); - - for (int i = 0; i < mipLevelCount; i++) { - const void* src = texels[i].fPixels; - size_t srcRowBytes = texels[i].fRowBytes; - SkColorType colorType = GrColorTypeToSkColorType(srcColorType); - size_t trimRowBytes = width * SkColorTypeBytesPerPixel(colorType); - size_t dstRowBytes = GrDawnRoundRowBytes(trimRowBytes); - size_t size = dstRowBytes * height; - GrStagingBufferManager::Slice slice = - this->stagingBufferManager()->allocateStagingBufferSlice(size); - SkRectMemcpy(slice.fOffsetMapPtr, dstRowBytes, src, srcRowBytes, trimRowBytes, height); - - wgpu::ImageCopyBuffer srcBuffer = {}; - srcBuffer.buffer = static_cast(slice.fBuffer)->get(); - srcBuffer.layout.offset = slice.fOffset; - srcBuffer.layout.bytesPerRow = dstRowBytes; - srcBuffer.layout.rowsPerImage = height; - - wgpu::ImageCopyTexture dstTexture; - dstTexture.texture = texture; - dstTexture.mipLevel = i; - dstTexture.origin = {x, y, 0}; - - wgpu::Extent3D copySize = {width, height, 1}; - this->getCopyEncoder().CopyBufferToTexture(&srcBuffer, &dstTexture, ©Size); - x /= 2; - y /= 2; - width = std::max(1u, width / 2); - height = std::max(1u, height / 2); - } -} - -bool GrDawnGpu::onClearBackendTexture(const GrBackendTexture& backendTexture, - sk_sp finishedCallback, - std::array color) { - GrDawnTextureInfo info; - SkAssertResult(backendTexture.getDawnTextureInfo(&info)); - - GrColorType colorType; - if (!GrDawnFormatToGrColorType(info.fFormat, &colorType)) { - return false; - } - - size_t bpp = skgpu::DawnFormatBytesPerBlock(info.fFormat); - size_t baseLayerSize = bpp * backendTexture.width() * backendTexture.height(); - SkAutoMalloc defaultStorage(baseLayerSize); - GrImageInfo imageInfo(colorType, kUnpremul_SkAlphaType, nullptr, backendTexture.dimensions()); - GrClearImage(imageInfo, defaultStorage.get(), bpp * backendTexture.width(), color); - - wgpu::Device device = this->device(); - wgpu::CommandEncoder copyEncoder = this->getCopyEncoder(); - int w = backendTexture.width(), h = backendTexture.height(); - for (uint32_t i = 0; i < info.fLevelCount; i++) { - size_t origRowBytes = bpp * w; - size_t rowBytes = GrDawnRoundRowBytes(origRowBytes); - size_t size = rowBytes * h; - GrStagingBufferManager::Slice stagingBuffer = - this->stagingBufferManager()->allocateStagingBufferSlice(size); - if (rowBytes == origRowBytes) { - memcpy(stagingBuffer.fOffsetMapPtr, defaultStorage.get(), size); - } else { - const char* src = static_cast(defaultStorage.get()); - char* dst = static_cast(stagingBuffer.fOffsetMapPtr); - for (int row = 0; row < h; row++) { - memcpy(dst, src, origRowBytes); - dst += rowBytes; - src += origRowBytes; - } - } - wgpu::ImageCopyBuffer srcBuffer = {}; - srcBuffer.buffer = static_cast(stagingBuffer.fBuffer)->get(); - srcBuffer.layout.offset = stagingBuffer.fOffset; - srcBuffer.layout.bytesPerRow = rowBytes; - srcBuffer.layout.rowsPerImage = h; - wgpu::ImageCopyTexture dstTexture; - dstTexture.texture = info.fTexture; - dstTexture.mipLevel = i; - dstTexture.origin = {0, 0, 0}; - wgpu::Extent3D copySize = {(uint32_t)w, (uint32_t)h, 1}; - copyEncoder.CopyBufferToTexture(&srcBuffer, &dstTexture, ©Size); - w = std::max(1, w / 2); - h = std::max(1, h / 2); - } - return true; -} - -GrBackendTexture GrDawnGpu::onCreateCompressedBackendTexture( - SkISize dimensions, const GrBackendFormat&, GrMipmapped, GrProtected) { - return {}; -} - -bool GrDawnGpu::onUpdateCompressedBackendTexture(const GrBackendTexture&, - sk_sp finishedCallback, - const void* data, - size_t size) { - return false; -} - -void GrDawnGpu::deleteBackendTexture(const GrBackendTexture& tex) { - GrDawnTextureInfo info; - if (tex.getDawnTextureInfo(&info)) { - info.fTexture = nullptr; - } -} - -bool GrDawnGpu::compile(const GrProgramDesc&, const GrProgramInfo&) { - return false; -} - -#if GR_TEST_UTILS -bool GrDawnGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { - GrDawnTextureInfo info; - if (!tex.getDawnTextureInfo(&info)) { - return false; - } - - return info.fTexture.Get(); -} - -GrBackendRenderTarget GrDawnGpu::createTestingOnlyBackendRenderTarget(SkISize dimensions, - GrColorType colorType, - int sampleCnt, - GrProtected isProtected) { - if (dimensions.width() > this->caps()->maxTextureSize() || - dimensions.height() > this->caps()->maxTextureSize()) { - return {}; - } - - // We don't support MSAA in this backend yet. - if (sampleCnt != 1) { - return {}; - } - - if (isProtected == GrProtected::kYes) { - return {}; - } - - wgpu::TextureFormat format; - if (!GrColorTypeToDawnFormat(colorType, &format)) { - return {}; - } - - wgpu::TextureDescriptor desc; - desc.usage = - wgpu::TextureUsage::CopySrc | - wgpu::TextureUsage::RenderAttachment; - - desc.size.width = dimensions.width(); - desc.size.height = dimensions.height(); - desc.size.depthOrArrayLayers = 1; - desc.format = format; - - wgpu::Texture tex = this->device().CreateTexture(&desc); - - GrDawnRenderTargetInfo info; - info.fTextureView = tex.CreateView(); - info.fFormat = desc.format; - info.fLevelCount = desc.mipLevelCount; - - return GrBackendRenderTarget(dimensions.width(), dimensions.height(), 1, 0, info); -} - -void GrDawnGpu::deleteTestingOnlyBackendRenderTarget(const GrBackendRenderTarget& rt) { - GrDawnRenderTargetInfo info; - if (rt.getDawnRenderTargetInfo(&info)) { - info.fTextureView = nullptr; - } -} - -#endif - -void GrDawnGpu::addFinishedProc(GrGpuFinishedProc finishedProc, - GrGpuFinishedContext finishedContext) { - fFinishCallbacks.add(finishedProc, finishedContext); -} - -void GrDawnGpu::takeOwnershipOfBuffer(sk_sp buffer) { - fSubmittedStagingBuffers.push_back(std::move(buffer)); -} - -bool GrDawnGpu::onSubmitToGpu(bool syncCpu) { - this->flushCopyEncoder(); - - if (!fCommandBuffers.empty()) { - fQueue.Submit(fCommandBuffers.size(), &fCommandBuffers.front()); - fCommandBuffers.clear(); - } - - // Schedule the queue done callback if it hasn't been scheduled already and if we just submitted - // a new batch of recorded commands. If a callback was already registered in a prior call to - // onSubmitToGpu then it will include the commands we just submitted. - if (!fSubmittedWorkDoneCallbackPending) { - auto callback = [](WGPUQueueWorkDoneStatus status, void* userData) { - static_cast(userData)->onSubmittedWorkDone(status); - }; - fDevice.GetQueue().OnSubmittedWorkDone(0u, callback, this); - fSubmittedWorkDoneCallbackPending = true; - } - - this->mapPendingStagingBuffers(); - if (syncCpu) { - // If no callback was scheduled then there is no pending work and we don't need to spin on a - // fence. - if (fSubmittedWorkDoneCallbackPending) { - GrDawnAsyncWait* fence = this->createFence(); - fence->busyWait(); - this->destroyFence(fence); - } - fFinishCallbacks.callAll(true); - } - - return true; -} - -void GrDawnGpu::onSubmittedWorkDone(WGPUQueueWorkDoneStatus status) { - fSubmittedWorkDoneCallbackPending = false; - fQueueFences.foreach([](GrDawnAsyncWait* fence) { - fence->signal(); - }); -} - -void GrDawnGpu::mapPendingStagingBuffers() { - // Request to asynchronously map the submitted staging buffers. Dawn will ensure that these - // buffers are not mapped until the pending submitted queue work is done at which point they - // are free for re-use. - for (unsigned i = 0; i < fSubmittedStagingBuffers.size(); i++) { - fPendingMapAsyncRequests.addOne(); - sk_sp buffer = std::move(fSubmittedStagingBuffers[i]); - static_cast(buffer.get()) - ->mapAsync( - // We capture `buffer` into the callback which ensures that it stays alive - // until mapAsync completes. - [this, buffer = std::move(buffer)](bool success) { - fPendingMapAsyncRequests.completeOne(); - if (!success) { - SkDebugf( - "Failed to map staging buffer before making it available " - "again"); - } - // When this callback returns, the captured `buffer` will be dropped and - // returned back to its backing resource pool. - }); - } - fSubmittedStagingBuffers.clear(); -} - -GrDawnAsyncWait* GrDawnGpu::createFence() { - auto* fence = new GrDawnAsyncWait(fDevice); - fQueueFences.add(fence); - return fence; -} - -void GrDawnGpu::destroyFence(GrDawnAsyncWait* fence) { - fQueueFences.remove(fence); - delete fence; -} - -static wgpu::Texture get_dawn_texture_from_surface(GrSurface* src) { - if (auto t = static_cast(src->asTexture())) { - return t->texture(); - } else { - return nullptr; - } -} - -bool GrDawnGpu::onCopySurface(GrSurface* dst, const SkIRect& dstRect, - GrSurface* src, const SkIRect& srcRect, - GrSamplerState::Filter) { - wgpu::Texture srcTexture = get_dawn_texture_from_surface(src); - wgpu::Texture dstTexture = get_dawn_texture_from_surface(dst); - if (!srcTexture || !dstTexture) { - return false; - } - if (srcRect.size() != dstRect.size()) { - return false; - } - - uint32_t width = srcRect.width(), height = srcRect.height(); - - wgpu::ImageCopyTexture srcTextureView, dstTextureView; - srcTextureView.texture = srcTexture; - srcTextureView.origin = {(uint32_t) srcRect.x(), (uint32_t) srcRect.y(), 0}; - dstTextureView.texture = dstTexture; - dstTextureView.origin = {(uint32_t) dstRect.x(), (uint32_t) dstRect.y(), 0}; - - wgpu::Extent3D copySize = {width, height, 1}; - this->getCopyEncoder().CopyTextureToTexture(&srcTextureView, &dstTextureView, ©Size); - return true; -} - -bool GrDawnGpu::onReadPixels(GrSurface* surface, - SkIRect rect, - GrColorType surfaceColorType, - GrColorType dstColorType, - void* buffer, - size_t rowBytes) { - wgpu::Texture tex = get_dawn_texture_from_surface(surface); - - if (!tex || 0 == rowBytes) { - return false; - } - size_t origRowBytes = rowBytes; - int origSizeInBytes = origRowBytes*rect.height(); - rowBytes = GrDawnRoundRowBytes(rowBytes); - int sizeInBytes = rowBytes*rect.height(); - - sk_sp dawnBuffer = GrDawnBuffer::Make(this, - sizeInBytes, - GrGpuBufferType::kXferGpuToCpu, - kStatic_GrAccessPattern, - "onReadPixels"); - if (!dawnBuffer) { - SkDebugf("onReadPixels: failed to create GPU buffer"); - return false; - } - - wgpu::ImageCopyTexture srcTexture; - srcTexture.texture = tex; - srcTexture.origin = {(uint32_t) rect.left(), (uint32_t) rect.top(), 0}; - - wgpu::ImageCopyBuffer dstBuffer = {}; - dstBuffer.buffer = dawnBuffer->get(); - dstBuffer.layout.offset = 0; - dstBuffer.layout.bytesPerRow = rowBytes; - dstBuffer.layout.rowsPerImage = rect.height(); - - wgpu::Extent3D copySize = {(uint32_t) rect.width(), (uint32_t) rect.height(), 1}; - this->getCopyEncoder().CopyTextureToBuffer(&srcTexture, &dstBuffer, ©Size); - this->submitToGpu(true); - - const void* readPixelsPtr = dawnBuffer->map(); - if (!readPixelsPtr) { - SkDebugf("onReadPixels: failed to map GPU buffer"); - return false; - } - - if (rowBytes == origRowBytes) { - memcpy(buffer, readPixelsPtr, origSizeInBytes); - } else { - const char* src = static_cast(readPixelsPtr); - char* dst = static_cast(buffer); - for (int row = 0; row < rect.height(); row++) { - memcpy(dst, src, origRowBytes); - dst += origRowBytes; - src += rowBytes; - } - } - - dawnBuffer->unmap(); - return true; -} - -bool GrDawnGpu::onRegenerateMipMapLevels(GrTexture* tex) { - this->flushCopyEncoder(); - GrDawnTexture* src = static_cast(tex); - int srcWidth = tex->width(); - int srcHeight = tex->height(); - - // SkMipmap doesn't include the base level in the level count so we have to add 1 - uint32_t levelCount = SkMipmap::ComputeLevelCount(tex->width(), tex->height()) + 1; - - // Create a temporary texture for mipmap generation, then copy to source. - // We have to do this even for renderable textures, since GrDawnRenderTarget currently only - // contains a view, not a texture. - wgpu::TextureDescriptor texDesc; - texDesc.usage = wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::CopySrc | - wgpu::TextureUsage::RenderAttachment; - texDesc.size.width = (tex->width() + 1) / 2; - texDesc.size.height = (tex->height() + 1) / 2; - texDesc.size.depthOrArrayLayers = 1; - texDesc.mipLevelCount = levelCount - 1; - texDesc.format = src->format(); - wgpu::Texture dstTexture = fDevice.CreateTexture(&texDesc); - - const char* vs = - "layout(spirv, location = 0) out float2 texCoord;" - "float2 positions[4] = float2[4](float2(-1.0, 1.0)," - "float2(1.0, 1.0)," - "float2(-1.0, -1.0)," - "float2(1.0, -1.0));" - "float2 texCoords[4] = float2[4](float2(0.0, 0.0)," - "float2(1.0, 0.0)," - "float2(0.0, 1.0)," - "float2(1.0, 1.0));" - "void main() {" - "sk_Position = float4(positions[sk_VertexID], 0.0, 1.0);" - "texCoord = texCoords[sk_VertexID];" - "}"; - std::string vsSPIRV = this->SkSLToSPIRV(vs, - SkSL::ProgramKind::kVertex, - /*rtFlipOffset*/ 0, - nullptr); - - const char* fs = - "layout(spirv, set = 0, binding = 0) uniform sampler samp;" - "layout(spirv, set = 0, binding = 1) uniform texture2D tex;" - "layout(location = 0) in float2 texCoord;" - "void main() {" - "sk_FragColor = sample(makeSampler2D(tex, samp), texCoord);" - "}"; - std::string fsSPIRV = this->SkSLToSPIRV(fs, - SkSL::ProgramKind::kFragment, - /*rtFlipOffset=*/ 0, - nullptr); - - wgpu::VertexState vertexState; - vertexState.module = this->createShaderModule(vsSPIRV); - vertexState.entryPoint = "main"; - vertexState.bufferCount = 0; - - wgpu::ColorTargetState colorTargetState; - colorTargetState.format = static_cast(tex)->format(); - - wgpu::FragmentState fragmentState; - fragmentState.module = this->createShaderModule(fsSPIRV); - fragmentState.entryPoint = "main"; - fragmentState.targetCount = 1; - fragmentState.targets = &colorTargetState; - - wgpu::RenderPipelineDescriptor renderPipelineDesc; - renderPipelineDesc.vertex = vertexState; - renderPipelineDesc.primitive.topology = wgpu::PrimitiveTopology::TriangleStrip; - renderPipelineDesc.primitive.stripIndexFormat = wgpu::IndexFormat::Uint16; - renderPipelineDesc.fragment = &fragmentState; - wgpu::RenderPipeline pipeline = fDevice.CreateRenderPipeline(&renderPipelineDesc); - - wgpu::BindGroupLayout bgl = pipeline.GetBindGroupLayout(0); - wgpu::TextureViewDescriptor srcViewDesc; - srcViewDesc.mipLevelCount = 1; - wgpu::TextureView srcView = src->texture().CreateView(&srcViewDesc); - wgpu::SamplerDescriptor samplerDesc; - samplerDesc.minFilter = wgpu::FilterMode::Linear; - wgpu::Sampler sampler = fDevice.CreateSampler(&samplerDesc); - wgpu::CommandEncoder commandEncoder = fDevice.CreateCommandEncoder(); - for (uint32_t mipLevel = 0; mipLevel < texDesc.mipLevelCount; mipLevel++) { - int dstWidth = std::max(1, srcWidth / 2); - int dstHeight = std::max(1, srcHeight / 2); - wgpu::TextureViewDescriptor dstViewDesc; - dstViewDesc.format = static_cast(tex)->format(); - dstViewDesc.dimension = wgpu::TextureViewDimension::e2D; - dstViewDesc.baseMipLevel = mipLevel; - dstViewDesc.mipLevelCount = 1; - wgpu::TextureView dstView = dstTexture.CreateView(&dstViewDesc); - wgpu::BindGroupEntry bge[2]; - bge[0].binding = 0; - bge[0].sampler = sampler; - bge[1].binding = 1; - bge[1].textureView = srcView; - wgpu::BindGroupDescriptor bgDesc; - bgDesc.layout = bgl; - bgDesc.entryCount = 2; - bgDesc.entries = bge; - wgpu::BindGroup bindGroup = fDevice.CreateBindGroup(&bgDesc); - wgpu::RenderPassColorAttachment colorAttachment; - colorAttachment.view = dstView; - colorAttachment.clearValue = {0.0f, 0.0f, 0.0f, 0.0f}; - colorAttachment.loadOp = wgpu::LoadOp::Load; - colorAttachment.storeOp = wgpu::StoreOp::Store; - wgpu::RenderPassColorAttachment* colorAttachments = { &colorAttachment }; - wgpu::RenderPassDescriptor renderPassDesc; - renderPassDesc.colorAttachmentCount = 1; - renderPassDesc.colorAttachments = colorAttachments; - wgpu::RenderPassEncoder rpe = commandEncoder.BeginRenderPass(&renderPassDesc); - rpe.SetPipeline(pipeline); - rpe.SetBindGroup(0, bindGroup); - rpe.Draw(4, 1, 0, 0); - rpe.End(); - - wgpu::Extent3D copySize = {(uint32_t)dstWidth, (uint32_t)dstHeight, 1}; - wgpu::ImageCopyTexture srcCopyView; - srcCopyView.texture = dstTexture; - srcCopyView.mipLevel = mipLevel; - wgpu::ImageCopyTexture dstCopyView; - dstCopyView.mipLevel = mipLevel + 1; - dstCopyView.texture = src->texture(); - commandEncoder.CopyTextureToTexture(&srcCopyView, &dstCopyView, ©Size); - - srcHeight = dstHeight; - srcWidth = dstWidth; - srcView = dstView; - } - fCommandBuffers.push_back(commandEncoder.Finish()); - return true; -} - -void GrDawnGpu::submit(GrOpsRenderPass* renderPass) { - this->flushCopyEncoder(); - static_cast(renderPass)->submit(); -} - -[[nodiscard]] GrFence GrDawnGpu::insertFence() { - return reinterpret_cast(this->createFence()); -} - -bool GrDawnGpu::waitFence(GrFence fence) { - return reinterpret_cast(fence)->yieldAndCheck(); -} - -void GrDawnGpu::deleteFence(GrFence fence) { - this->destroyFence(reinterpret_cast(fence)); -} - -[[nodiscard]] std::unique_ptr GrDawnGpu::makeSemaphore(bool isOwned) { - SkDEBUGFAIL("unimplemented"); - return nullptr; -} - -std::unique_ptr GrDawnGpu::wrapBackendSemaphore(const GrBackendSemaphore& /* sema */, - GrSemaphoreWrapType /* wrapType */, - GrWrapOwnership /* ownership */) { - SkDEBUGFAIL("unimplemented"); - return nullptr; -} - -void GrDawnGpu::insertSemaphore(GrSemaphore* semaphore) { - SkDEBUGFAIL("unimplemented"); -} - -void GrDawnGpu::waitSemaphore(GrSemaphore* semaphore) { - SkDEBUGFAIL("unimplemented"); -} - -void GrDawnGpu::checkFinishProcs() { - fFinishCallbacks.check(); -} - -void GrDawnGpu::finishOutstandingGpuWork() { - // If a callback is pending then any fence added here is guaranteed to get signaled when the - // callback eventually runs. - if (fSubmittedWorkDoneCallbackPending) { - GrDawnAsyncWait* fence = this->createFence(); - fence->busyWait(); - this->destroyFence(fence); - } - - // Make sure all pending mapAsync requests on staging buffers are complete before shutting down. - fPendingMapAsyncRequests.waitUntilDone(); -} - -std::unique_ptr GrDawnGpu::prepareTextureForCrossContextUsage(GrTexture* texture) { - SkDEBUGFAIL("unimplemented"); - return nullptr; -} - -sk_sp GrDawnGpu::getOrCreateRenderPipeline( - GrRenderTarget* rt, - const GrProgramInfo& programInfo) { - GrProgramDesc desc = this->caps()->makeDesc(rt, programInfo); - if (!desc.isValid()) { - return nullptr; - } - - if (sk_sp* program = fRenderPipelineCache.find(desc)) { - return *program; - } - - wgpu::TextureFormat colorFormat; - SkAssertResult(programInfo.backendFormat().asDawnFormat(&colorFormat)); - - wgpu::TextureFormat stencilFormat = wgpu::TextureFormat::Depth24PlusStencil8; - bool hasDepthStencil = rt->getStencilAttachment() != nullptr; - - sk_sp program = GrDawnProgramBuilder::Build( - this, rt, programInfo, colorFormat, - hasDepthStencil, stencilFormat, &desc); - fRenderPipelineCache.insert(desc, program); - return program; -} - -wgpu::Sampler GrDawnGpu::getOrCreateSampler(GrSamplerState samplerState) { - auto i = fSamplers.find(samplerState); - if (i != fSamplers.end()) { - return i->second; - } - wgpu::SamplerDescriptor desc; - desc.addressModeU = to_dawn_address_mode(samplerState.wrapModeX()); - desc.addressModeV = to_dawn_address_mode(samplerState.wrapModeY()); - desc.addressModeW = wgpu::AddressMode::ClampToEdge; - desc.maxAnisotropy = samplerState.maxAniso(); - if (samplerState.isAniso()) { - // WebGPU requires these to be linear when maxAnisotropy is > 1. - desc.magFilter = desc.minFilter = wgpu::FilterMode::Linear; - desc.mipmapFilter = wgpu::MipmapFilterMode::Linear; - } else { - desc.magFilter = desc.minFilter = to_dawn_filter_mode(samplerState.filter()); - desc.mipmapFilter = to_dawn_mipmap_mode(samplerState.mipmapMode()); - } - wgpu::Sampler sampler = device().CreateSampler(&desc); - fSamplers.insert(std::pair(samplerState, sampler)); - return sampler; -} - -GrDawnRingBuffer::Slice GrDawnGpu::allocateUniformRingBufferSlice(int size) { - return fUniformRingBuffer.allocate(size); -} - -void GrDawnGpu::appendCommandBuffer(wgpu::CommandBuffer commandBuffer) { - if (commandBuffer) { - fCommandBuffers.push_back(commandBuffer); - } -} - -wgpu::CommandEncoder GrDawnGpu::getCopyEncoder() { - if (!fCopyEncoder) { - fCopyEncoder = fDevice.CreateCommandEncoder(); - } - return fCopyEncoder; -} - -void GrDawnGpu::flushCopyEncoder() { - if (fCopyEncoder) { - fCommandBuffers.push_back(fCopyEncoder.Finish()); - fCopyEncoder = nullptr; - } -} - -std::string GrDawnGpu::SkSLToSPIRV(const char* shaderString, - SkSL::ProgramKind kind, - uint32_t rtFlipOffset, - SkSL::Program::Interface* interface) { - SkSL::ProgramSettings settings; - settings.fRTFlipOffset = rtFlipOffset; - settings.fRTFlipBinding = 0; - settings.fRTFlipSet = 0; - std::string outSPIRV; - if (!skgpu::SkSLToSPIRV(this->shaderCompiler(), - {shaderString}, - kind, - settings, - &outSPIRV, - interface, - this->getContext()->priv().getShaderErrorHandler())) { - return ""; - } - return outSPIRV; -} - -wgpu::ShaderModule GrDawnGpu::createShaderModule(const std::string& spirvSource) { - wgpu::ShaderModuleSPIRVDescriptor spirvDesc; - spirvDesc.codeSize = spirvSource.size() / 4; - spirvDesc.code = reinterpret_cast(spirvSource.c_str()); - - // Skia often generates shaders that select a texture/sampler conditionally based on an - // attribute (specifically in the case of texture atlas indexing). We disable derivative - // uniformity warnings as we expect Skia's behavior to result in well-defined values. - wgpu::DawnShaderModuleSPIRVOptionsDescriptor dawnSpirvOptions; - dawnSpirvOptions.allowNonUniformDerivatives = true; - - wgpu::ShaderModuleDescriptor desc; - desc.nextInChain = &spirvDesc; - spirvDesc.nextInChain = &dawnSpirvOptions; - - return fDevice.CreateShaderModule(&desc); -} diff --git a/src/gpu/ganesh/dawn/GrDawnGpu.h b/src/gpu/ganesh/dawn/GrDawnGpu.h deleted file mode 100644 index c9c03791502c..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnGpu.h +++ /dev/null @@ -1,305 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnGpu_DEFINED -#define GrDawnGpu_DEFINED - -#include "src/gpu/ganesh/GrGpu.h" - -#include "src/core/SkChecksum.h" -#include "src/core/SkLRUCache.h" -#include "src/core/SkTHash.h" -#include "src/gpu/ganesh/GrFinishCallbacks.h" -#include "src/gpu/ganesh/GrProgramDesc.h" -#include "src/gpu/ganesh/GrStagingBufferManager.h" -#include "src/gpu/ganesh/dawn/GrDawnAsyncWait.h" -#include "src/gpu/ganesh/dawn/GrDawnRingBuffer.h" -#include "src/sksl/ir/SkSLProgram.h" -#include "webgpu/webgpu_cpp.h" - -#include - -class GrDawnOpsRenderPass; -class GrDawnStagingBuffer; -class GrDirectContext; -class GrPipeline; -struct GrDawnProgram; - -class GrDawnGpu : public GrGpu { -public: - static sk_sp Make(const wgpu::Device&, const GrContextOptions&, GrDirectContext*); - - ~GrDawnGpu() override; - - void disconnect(DisconnectType) override; - - GrThreadSafePipelineBuilder* pipelineBuilder() override; - sk_sp refPipelineBuilder() override; - - GrStagingBufferManager* stagingBufferManager() override { return &fStagingBufferManager; } - void takeOwnershipOfBuffer(sk_sp) override; - - const wgpu::Device& device() const { return fDevice; } - const wgpu::Queue& queue() const { return fQueue; } - - void xferBarrier(GrRenderTarget*, GrXferBarrierType) override {} - - void deleteBackendTexture(const GrBackendTexture&) override; - - bool compile(const GrProgramDesc&, const GrProgramInfo&) override; - -#if GR_TEST_UTILS - bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; - - GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, - GrColorType, - int sampleCnt, - GrProtected) override; - void deleteTestingOnlyBackendRenderTarget(const GrBackendRenderTarget&) override; -#endif - - sk_sp makeStencilAttachment(const GrBackendFormat& /*colorFormat*/, - SkISize dimensions, int numStencilSamples) override; - - GrBackendFormat getPreferredStencilFormat(const GrBackendFormat&) override { - return GrBackendFormat::MakeDawn(wgpu::TextureFormat::Depth24PlusStencil8); - } - - sk_sp makeMSAAAttachment(SkISize dimensions, - const GrBackendFormat& format, - int numSamples, - GrProtected isProtected, - GrMemoryless isMemoryless) override { - return nullptr; - } - - void submit(GrOpsRenderPass*) override; - - [[nodiscard]] GrFence insertFence() override; - bool waitFence(GrFence) override; - void deleteFence(GrFence) override; - - [[nodiscard]] std::unique_ptr makeSemaphore(bool isOwned = true) override; - std::unique_ptr wrapBackendSemaphore(const GrBackendSemaphore&, - GrSemaphoreWrapType, - GrWrapOwnership) override; - void insertSemaphore(GrSemaphore* semaphore) override; - void waitSemaphore(GrSemaphore* semaphore) override; - void checkFinishProcs() override; - void finishOutstandingGpuWork() override; - - std::unique_ptr prepareTextureForCrossContextUsage(GrTexture*) override; - - sk_sp getOrCreateRenderPipeline(GrRenderTarget*, const GrProgramInfo&); - - wgpu::Sampler getOrCreateSampler(GrSamplerState samplerState); - - GrDawnRingBuffer::Slice allocateUniformRingBufferSlice(int size); - wgpu::CommandEncoder getCopyEncoder(); - void flushCopyEncoder(); - void appendCommandBuffer(wgpu::CommandBuffer commandBuffer); - - std::string SkSLToSPIRV(const char* shaderString, - SkSL::ProgramKind, - uint32_t rtFlipOffset, - SkSL::Program::Interface*); - wgpu::ShaderModule createShaderModule(const std::string& spirvSource); - -private: - GrDawnGpu(GrDirectContext*, const GrContextOptions&, const wgpu::Device&); - - sk_sp onCreateTexture(SkISize, - const GrBackendFormat&, - GrRenderable, - int renderTargetSampleCnt, - skgpu::Budgeted, - GrProtected, - int mipLevelCount, - uint32_t levelClearMask, - std::string_view label) override; - - sk_sp onCreateCompressedTexture(SkISize dimensions, - const GrBackendFormat&, - skgpu::Budgeted, - GrMipmapped, - GrProtected, - const void* data, - size_t dataSize) override; - - sk_sp onWrapBackendTexture(const GrBackendTexture&, - GrWrapOwnership, - GrWrapCacheable, - GrIOType) override; - sk_sp onWrapCompressedBackendTexture(const GrBackendTexture&, - GrWrapOwnership, - GrWrapCacheable) override; - sk_sp onWrapRenderableBackendTexture(const GrBackendTexture&, - int sampleCnt, - GrWrapOwnership, - GrWrapCacheable) override; - sk_sp onWrapBackendRenderTarget(const GrBackendRenderTarget&) override; - - GrBackendTexture onCreateBackendTexture(SkISize dimensions, - const GrBackendFormat&, - GrRenderable, - GrMipmapped, - GrProtected, - std::string_view label) override; - - bool onClearBackendTexture(const GrBackendTexture&, - sk_sp finishedCallback, - std::array color) override; - - GrBackendTexture onCreateCompressedBackendTexture(SkISize dimensions, - const GrBackendFormat&, - GrMipmapped, - GrProtected) override; - - bool onUpdateCompressedBackendTexture(const GrBackendTexture&, - sk_sp finishedCallback, - const void* data, - size_t size) override; - - sk_sp onCreateBuffer(size_t size, GrGpuBufferType type, GrAccessPattern) override; - - bool onReadPixels(GrSurface*, - SkIRect, - GrColorType surfaceColorType, - GrColorType dstColorType, - void*, - size_t rowBytes) override; - - bool onWritePixels(GrSurface*, - SkIRect, - GrColorType surfaceColorType, - GrColorType srcColorType, - const GrMipLevel[], - int mipLevelCount, - bool) override; - - bool onTransferFromBufferToBuffer(sk_sp src, - size_t srcOffset, - sk_sp dst, - size_t dstOffset, - size_t size) override; - - bool onTransferPixelsTo(GrTexture*, - SkIRect, - GrColorType textureColorType, - GrColorType bufferColorType, - sk_sp, - size_t offset, - size_t rowBytes) override; - - bool onTransferPixelsFrom(GrSurface*, - SkIRect, - GrColorType surfaceColorType, - GrColorType bufferColorType, - sk_sp, - size_t offset) override; - - void onResolveRenderTarget(GrRenderTarget*, const SkIRect&) override {} - - bool onRegenerateMipMapLevels(GrTexture*) override; - - bool onCopySurface(GrSurface* dst, const SkIRect& dstRect, - GrSurface* src, const SkIRect& srcRect, - GrSamplerState::Filter) override; - - void addFinishedProc(GrGpuFinishedProc finishedProc, - GrGpuFinishedContext finishedContext) override; - - GrOpsRenderPass* onGetOpsRenderPass( - GrRenderTarget*, - bool useMSAASurface, - GrAttachment*, - GrSurfaceOrigin, - const SkIRect&, - const GrOpsRenderPass::LoadAndStoreInfo&, - const GrOpsRenderPass::StencilLoadAndStoreInfo&, - const skia_private::TArray& sampledProxies, - GrXferBarrierFlags renderPassXferBarriers) override; - - bool onSubmitToGpu(bool syncCpu) override; - void onSubmittedWorkDone(WGPUQueueWorkDoneStatus status); - void mapPendingStagingBuffers(); - - GrDawnAsyncWait* createFence(); - void destroyFence(GrDawnAsyncWait* fence); - - void uploadTextureData(GrColorType srcColorType, const GrMipLevel texels[], int mipLevelCount, - const SkIRect& rect, wgpu::Texture texture); - - wgpu::Device fDevice; - wgpu::Queue fQueue; - std::unique_ptr fOpsRenderPass; - GrDawnRingBuffer fUniformRingBuffer; - wgpu::CommandEncoder fCopyEncoder; - std::vector fCommandBuffers; - GrStagingBufferManager fStagingBufferManager; - - // Temporary array of staging buffers to hold refs on the staging buffers after detaching - // from the GrStagingManager. During submission, the buffers are requested to asynchronously map - // (which Dawn will ensure will happen after the submitted work completes) and this list gets - // cleared. The buffers are returned to their backing resource provider by dropping their - // reference once the map request completes asynchronously. - // - // NOTE: In general operation the buffers will be mapped to memory when they are made available. - // However, it is possible for the map operation to fail (e.g. due to a lost connection to the - // GPU), in which case the buffers will still be made available but in an unmapped state. If a - // client requests to map such a buffer, GrDawnBuffer will try to map itself again if necessary. - std::vector> fSubmittedStagingBuffers; - - // Fence that tracks the completion of all outstanding asynchronous buffer mapping requests. - // This is necessary to ensure a clean shut down since we need to ensure that buffers are not - // returned to the resource provider AFTER the provider is destroyed. - class PendingMapAsyncRequests { - public: - explicit PendingMapAsyncRequests(const wgpu::Device& device); - void addOne(); - void completeOne(); - void waitUntilDone() const; - - private: - int fCount = 0; - GrDawnAsyncWait wait_; - }; - PendingMapAsyncRequests fPendingMapAsyncRequests; - - // Every time command buffers are submitted to the queue (in onSubmitToGpu) we register a single - // OnSubmittedWorkDone callback which is responsible for signaling all fences added via - // `insertFence`. - // - // NOTE: We use this approach instead of registering an individual callback for each - // fence because Dawn currently does not support unregistering a callback to prevent a potential - // use-after-free. - bool fSubmittedWorkDoneCallbackPending = false; - skia_private::THashSet fQueueFences; - - struct ProgramDescHash { - uint32_t operator()(const GrProgramDesc& desc) const { - return SkChecksum::Hash32(desc.asKey(), desc.keyLength()); - } - }; - - struct SamplerHash { - size_t operator()(GrSamplerState samplerState) const { - // In WebGPU it is required that minFilter, magFilter, and mipmapFilter are all - // "linear" when maxAnisotropy is > 1. - return samplerState.asKey(/*anisoIsOrthogonal=*/false); - } - }; - - SkLRUCache, ProgramDescHash> fRenderPipelineCache; - std::unordered_map fSamplers; - - GrFinishCallbacks fFinishCallbacks; - - using INHERITED = GrGpu; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.cpp b/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.cpp deleted file mode 100644 index 53923046fbfe..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h" - -#include "src/gpu/ganesh/GrNativeRect.h" -#include "src/gpu/ganesh/GrOpFlushState.h" -#include "src/gpu/ganesh/GrPipeline.h" -#include "src/gpu/ganesh/GrRenderTarget.h" -#include "src/gpu/ganesh/GrStencilSettings.h" -#include "src/gpu/ganesh/GrTexture.h" -#include "src/gpu/ganesh/dawn/GrDawnAttachment.h" -#include "src/gpu/ganesh/dawn/GrDawnBuffer.h" -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnProgramBuilder.h" -#include "src/gpu/ganesh/dawn/GrDawnRenderTarget.h" -#include "src/gpu/ganesh/dawn/GrDawnTexture.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" -#include "src/sksl/SkSLCompiler.h" - -//////////////////////////////////////////////////////////////////////////////// - -static wgpu::LoadOp to_dawn_load_op(GrLoadOp loadOp) { - switch (loadOp) { - case GrLoadOp::kLoad: - return wgpu::LoadOp::Load; - case GrLoadOp::kDiscard: - // Use LoadOp::Load to emulate DontCare. - // Dawn doesn't have DontCare, for security reasons. - // Load should be equivalent to DontCare for desktop; Clear would - // probably be better for tilers. If Dawn does add DontCare - // as an extension, use it here. - return wgpu::LoadOp::Load; - case GrLoadOp::kClear: - return wgpu::LoadOp::Clear; - default: - SK_ABORT("Invalid LoadOp"); - } -} - -GrDawnOpsRenderPass::GrDawnOpsRenderPass(GrDawnGpu* gpu, GrRenderTarget* rt, GrSurfaceOrigin origin, - const LoadAndStoreInfo& colorInfo, - const StencilLoadAndStoreInfo& stencilInfo) - : INHERITED(rt, origin) - , fGpu(gpu) - , fColorInfo(colorInfo) { - fEncoder = fGpu->device().CreateCommandEncoder(); - wgpu::LoadOp colorOp = to_dawn_load_op(colorInfo.fLoadOp); - wgpu::LoadOp stencilOp = to_dawn_load_op(stencilInfo.fLoadOp); - fPassEncoder = beginRenderPass(colorOp, stencilOp); -} - -wgpu::RenderPassEncoder GrDawnOpsRenderPass::beginRenderPass(wgpu::LoadOp colorOp, - wgpu::LoadOp stencilOp) { - if (GrTexture* tex = fRenderTarget->asTexture()) { - tex->markMipmapsDirty(); - } - auto stencilAttachment = static_cast(fRenderTarget->getStencilAttachment()); - - const float* c = fColorInfo.fClearColor.data(); - - wgpu::RenderPassColorAttachment colorAttachment; - colorAttachment.view = static_cast(fRenderTarget)->textureView(); - colorAttachment.resolveTarget = nullptr; - colorAttachment.clearValue = {c[0], c[1], c[2], c[3]}; - colorAttachment.loadOp = colorOp; - colorAttachment.storeOp = wgpu::StoreOp::Store; - wgpu::RenderPassColorAttachment* colorAttachments = { &colorAttachment }; - wgpu::RenderPassDescriptor renderPassDescriptor; - renderPassDescriptor.colorAttachmentCount = 1; - renderPassDescriptor.colorAttachments = colorAttachments; - - wgpu::RenderPassDepthStencilAttachment depthStencilAttachment; - if (stencilAttachment) { - depthStencilAttachment.view = stencilAttachment->view(); - depthStencilAttachment.depthLoadOp = stencilOp; - depthStencilAttachment.stencilLoadOp = stencilOp; - depthStencilAttachment.depthClearValue = 1.0f; - depthStencilAttachment.stencilClearValue = 0; - depthStencilAttachment.depthStoreOp = wgpu::StoreOp::Store; - depthStencilAttachment.stencilStoreOp = wgpu::StoreOp::Store; - renderPassDescriptor.depthStencilAttachment = &depthStencilAttachment; - } else { - renderPassDescriptor.depthStencilAttachment = nullptr; - } - - return fEncoder.BeginRenderPass(&renderPassDescriptor); -} - -GrDawnOpsRenderPass::~GrDawnOpsRenderPass() { -} - -GrGpu* GrDawnOpsRenderPass::gpu() { return fGpu; } - -void GrDawnOpsRenderPass::submit() { - fGpu->appendCommandBuffer(fEncoder.Finish()); -} - -void GrDawnOpsRenderPass::onClearStencilClip(const GrScissorState& scissor, - bool insideStencilMask) { - SkASSERT(!scissor.enabled()); - fPassEncoder.End(); - fPassEncoder = beginRenderPass(wgpu::LoadOp::Load, wgpu::LoadOp::Clear); -} - -void GrDawnOpsRenderPass::onClear(const GrScissorState& scissor, std::array color) { - SkASSERT(!scissor.enabled()); - fPassEncoder.End(); - fPassEncoder = beginRenderPass(wgpu::LoadOp::Clear, wgpu::LoadOp::Load); -} - -//////////////////////////////////////////////////////////////////////////////// - -void GrDawnOpsRenderPass::inlineUpload(GrOpFlushState* state, - GrDeferredTextureUploadFn& upload) { - fGpu->submitToGpu(false); - state->doUpload(upload); -} - -//////////////////////////////////////////////////////////////////////////////// - -// Our caps require there to be a single reference value for both faces. However, our stencil -// object asserts if the correct face getter is not queried. -static uint16_t get_stencil_ref(const GrProgramInfo& info) { - GrStencilSettings stencilSettings = info.nonGLStencilSettings(); - if (stencilSettings.isTwoSided()) { - SkASSERT(stencilSettings.postOriginCCWFace(info.origin()).fRef == - stencilSettings.postOriginCWFace(info.origin()).fRef); - return stencilSettings.postOriginCCWFace(info.origin()).fRef; - } else { - return stencilSettings.singleSidedFace().fRef; - } -} - -void GrDawnOpsRenderPass::applyState(GrDawnProgram* program, const GrProgramInfo& programInfo) { - auto bindGroup = program->setUniformData(fGpu, fRenderTarget, programInfo); - fPassEncoder.SetPipeline(program->fRenderPipeline); - fPassEncoder.SetBindGroup(0, bindGroup, 0, nullptr); - if (programInfo.isStencilEnabled()) { - fPassEncoder.SetStencilReference(get_stencil_ref(programInfo)); - } - const GrPipeline& pipeline = programInfo.pipeline(); - skgpu::BlendInfo blendInfo = pipeline.getXferProcessor().getBlendInfo(); - const float* c = blendInfo.fBlendConstant.vec(); - wgpu::Color color{c[0], c[1], c[2], c[3]}; - fPassEncoder.SetBlendConstant(&color); - if (!programInfo.pipeline().isScissorTestEnabled()) { - // "Disable" scissor by setting it to the full pipeline bounds. - SkIRect rect = SkIRect::MakeWH(fRenderTarget->width(), fRenderTarget->height()); - fPassEncoder.SetScissorRect(rect.x(), rect.y(), rect.width(), rect.height()); - } -} - -void GrDawnOpsRenderPass::onEnd() { fPassEncoder.End(); } - -bool GrDawnOpsRenderPass::onBindPipeline(const GrProgramInfo& programInfo, - const SkRect& drawBounds) { - fCurrentProgram = fGpu->getOrCreateRenderPipeline(fRenderTarget, programInfo); - if (!fCurrentProgram) { - return false; - } - this->applyState(fCurrentProgram.get(), programInfo); - return true; -} - -void GrDawnOpsRenderPass::onSetScissorRect(const SkIRect& scissor) { - // Higher-level skgpu::ganesh::SurfaceDrawContext and clips should have already ensured draw - // bounds are restricted to the render target. - SkASSERT(SkIRect::MakeSize(fRenderTarget->dimensions()).contains(scissor)); - auto nativeScissorRect = - GrNativeRect::MakeRelativeTo(fOrigin, fRenderTarget->height(), scissor); - fPassEncoder.SetScissorRect(nativeScissorRect.fX, nativeScissorRect.fY, - nativeScissorRect.fWidth, nativeScissorRect.fHeight); -} - -bool GrDawnOpsRenderPass::onBindTextures(const GrGeometryProcessor& geomProc, - const GrSurfaceProxy* const geomProcTextures[], - const GrPipeline& pipeline) { - auto bindGroup = fCurrentProgram->setTextures(fGpu, geomProc, pipeline, geomProcTextures); - if (bindGroup) { - fPassEncoder.SetBindGroup(1, bindGroup, 0, nullptr); - } - return true; -} - -void GrDawnOpsRenderPass::onBindBuffers(sk_sp indexBuffer, - sk_sp instanceBuffer, - sk_sp vertexBuffer, - GrPrimitiveRestart) { - if (vertexBuffer) { - wgpu::Buffer vertex = static_cast(vertexBuffer.get())->get(); - fPassEncoder.SetVertexBuffer(0, vertex); - } - if (instanceBuffer) { - wgpu::Buffer instance = static_cast(instanceBuffer.get())->get(); - fPassEncoder.SetVertexBuffer(1, instance); - } - if (indexBuffer) { - wgpu::Buffer index = static_cast(indexBuffer.get())->get(); - fPassEncoder.SetIndexBuffer(index, wgpu::IndexFormat::Uint16); - } -} - -void GrDawnOpsRenderPass::onDraw(int vertexCount, int baseVertex) { - this->onDrawInstanced(1, 0, vertexCount, baseVertex); -} - -void GrDawnOpsRenderPass::onDrawInstanced(int instanceCount, int baseInstance, - int vertexCount, int baseVertex) { - fPassEncoder.Draw(vertexCount, instanceCount, baseVertex, baseInstance); - fGpu->stats()->incNumDraws(); -} - -void GrDawnOpsRenderPass::onDrawIndexed(int indexCount, int baseIndex, uint16_t minIndexValue, - uint16_t maxIndexValue, int baseVertex) { - this->onDrawIndexedInstanced(indexCount, baseIndex, 1, 0, baseVertex); -} - -void GrDawnOpsRenderPass::onDrawIndexedInstanced(int indexCount, int baseIndex, int instanceCount, - int baseInstance, int baseVertex) { - fPassEncoder.DrawIndexed(indexCount, instanceCount, baseIndex, baseVertex, baseInstance); - fGpu->stats()->incNumDraws(); -} diff --git a/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h b/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h deleted file mode 100644 index 40b0c6ebd4e7..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnOpsRenderPass.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnOpsRenderPass_DEFINED -#define GrDawnOpsRenderPass_DEFINED - -#include "src/gpu/ganesh/GrOpsRenderPass.h" - -#include "include/gpu/GrTypes.h" -#include "src/gpu/ganesh/GrColor.h" -#include "webgpu/webgpu_cpp.h" - -class GrDawnGpu; -class GrDawnRenderTarget; -struct GrDawnProgram; - -class GrDawnOpsRenderPass : public GrOpsRenderPass { -public: - GrDawnOpsRenderPass(GrDawnGpu*, GrRenderTarget*, GrSurfaceOrigin, - const LoadAndStoreInfo&, const StencilLoadAndStoreInfo&); - - ~GrDawnOpsRenderPass() override; - - wgpu::RenderPassEncoder beginRenderPass(wgpu::LoadOp colorOp, wgpu::LoadOp stencilOp); - - void inlineUpload(GrOpFlushState* state, GrDeferredTextureUploadFn& upload) override; - - void submit(); - -private: - GrGpu* gpu() override; - - void applyState(GrDawnProgram*, const GrProgramInfo& programInfo); - - void onEnd() override; - bool onBindPipeline(const GrProgramInfo& programInfo, const SkRect& drawBounds) override; - void onSetScissorRect(const SkIRect&) override; - bool onBindTextures(const GrGeometryProcessor&, - const GrSurfaceProxy* const geomProcTextures[], - const GrPipeline&) override; - void onBindBuffers(sk_sp indexBuffer, sk_sp instanceBuffer, - sk_sp vertexBuffer, GrPrimitiveRestart) override; - void onDraw(int vertexCount, int baseVertex) override; - void onDrawIndexed(int indexCount, int baseIndex, uint16_t minIndexValue, - uint16_t maxIndexValue, int baseVertex) override; - void onDrawInstanced(int instanceCount, int baseInstance, int vertexCount, - int baseVertex) override; - void onDrawIndexedInstanced(int indexCount, int baseIndex, int instanceCount, int baseInstance, - int baseVertex) override; - - void onClear(const GrScissorState& scissor, std::array color) override; - - void onClearStencilClip(const GrScissorState& scissor, bool insideStencilMask) override; - - struct InlineUploadInfo { - InlineUploadInfo(GrOpFlushState* state, const GrDeferredTextureUploadFn& upload) - : fFlushState(state), fUpload(upload) {} - - GrOpFlushState* fFlushState; - GrDeferredTextureUploadFn fUpload; - }; - - GrDawnGpu* fGpu; - wgpu::CommandEncoder fEncoder; - wgpu::RenderPassEncoder fPassEncoder; - sk_sp fCurrentProgram; - LoadAndStoreInfo fColorInfo; - - using INHERITED = GrOpsRenderPass ; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnProgramBuilder.cpp b/src/gpu/ganesh/dawn/GrDawnProgramBuilder.cpp deleted file mode 100644 index 87d1aec213ed..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnProgramBuilder.cpp +++ /dev/null @@ -1,547 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnProgramBuilder.h" - -#include "src/gpu/ganesh/GrAutoLocaleSetter.h" -#include "src/gpu/ganesh/GrRenderTarget.h" -#include "src/gpu/ganesh/GrStencilSettings.h" -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnTexture.h" -#include "src/gpu/ganesh/effects/GrTextureEffect.h" -#include "src/sksl/SkSLCompiler.h" -#include "src/sksl/SkSLProgramKind.h" -#include "src/utils/SkShaderUtils.h" - -static wgpu::BlendFactor to_dawn_blend_factor(skgpu::BlendCoeff coeff) { - switch (coeff) { - case skgpu::BlendCoeff::kZero: - return wgpu::BlendFactor::Zero; - case skgpu::BlendCoeff::kOne: - return wgpu::BlendFactor::One; - case skgpu::BlendCoeff::kSC: - return wgpu::BlendFactor::Src; - case skgpu::BlendCoeff::kISC: - return wgpu::BlendFactor::OneMinusSrc; - case skgpu::BlendCoeff::kDC: - return wgpu::BlendFactor::Dst; - case skgpu::BlendCoeff::kIDC: - return wgpu::BlendFactor::OneMinusDst; - case skgpu::BlendCoeff::kSA: - return wgpu::BlendFactor::SrcAlpha; - case skgpu::BlendCoeff::kISA: - return wgpu::BlendFactor::OneMinusSrcAlpha; - case skgpu::BlendCoeff::kDA: - return wgpu::BlendFactor::DstAlpha; - case skgpu::BlendCoeff::kIDA: - return wgpu::BlendFactor::OneMinusDstAlpha; - case skgpu::BlendCoeff::kConstC: - return wgpu::BlendFactor::Constant; - case skgpu::BlendCoeff::kIConstC: - return wgpu::BlendFactor::OneMinusConstant; - case skgpu::BlendCoeff::kS2C: - case skgpu::BlendCoeff::kIS2C: - case skgpu::BlendCoeff::kS2A: - case skgpu::BlendCoeff::kIS2A: - default: - SkDEBUGFAIL("unsupported blend coefficient"); - return wgpu::BlendFactor::One; - } -} - -static wgpu::BlendFactor to_dawn_blend_factor_for_alpha(skgpu::BlendCoeff coeff) { - switch (coeff) { - // Force all srcColor used in alpha slot to alpha version. - case skgpu::BlendCoeff::kSC: - return wgpu::BlendFactor::SrcAlpha; - case skgpu::BlendCoeff::kISC: - return wgpu::BlendFactor::OneMinusSrcAlpha; - case skgpu::BlendCoeff::kDC: - return wgpu::BlendFactor::DstAlpha; - case skgpu::BlendCoeff::kIDC: - return wgpu::BlendFactor::OneMinusDstAlpha; - default: - return to_dawn_blend_factor(coeff); - } -} - -static wgpu::BlendOperation to_dawn_blend_operation(skgpu::BlendEquation equation) { - switch (equation) { - case skgpu::BlendEquation::kAdd: - return wgpu::BlendOperation::Add; - case skgpu::BlendEquation::kSubtract: - return wgpu::BlendOperation::Subtract; - case skgpu::BlendEquation::kReverseSubtract: - return wgpu::BlendOperation::ReverseSubtract; - default: - SkDEBUGFAIL("unsupported blend equation"); - return wgpu::BlendOperation::Add; - } -} - -static wgpu::CompareFunction to_dawn_compare_function(GrStencilTest test) { - switch (test) { - case GrStencilTest::kAlways: - return wgpu::CompareFunction::Always; - case GrStencilTest::kNever: - return wgpu::CompareFunction::Never; - case GrStencilTest::kGreater: - return wgpu::CompareFunction::Greater; - case GrStencilTest::kGEqual: - return wgpu::CompareFunction::GreaterEqual; - case GrStencilTest::kLess: - return wgpu::CompareFunction::Less; - case GrStencilTest::kLEqual: - return wgpu::CompareFunction::LessEqual; - case GrStencilTest::kEqual: - return wgpu::CompareFunction::Equal; - case GrStencilTest::kNotEqual: - return wgpu::CompareFunction::NotEqual; - default: - SkDEBUGFAIL("unsupported stencil test"); - return wgpu::CompareFunction::Always; - } -} - -static wgpu::StencilOperation to_dawn_stencil_operation(GrStencilOp op) { - switch (op) { - case GrStencilOp::kKeep: - return wgpu::StencilOperation::Keep; - case GrStencilOp::kZero: - return wgpu::StencilOperation::Zero; - case GrStencilOp::kReplace: - return wgpu::StencilOperation::Replace; - case GrStencilOp::kInvert: - return wgpu::StencilOperation::Invert; - case GrStencilOp::kIncClamp: - return wgpu::StencilOperation::IncrementClamp; - case GrStencilOp::kDecClamp: - return wgpu::StencilOperation::DecrementClamp; - case GrStencilOp::kIncWrap: - return wgpu::StencilOperation::IncrementWrap; - case GrStencilOp::kDecWrap: - return wgpu::StencilOperation::DecrementWrap; - default: - SkDEBUGFAIL("unsupported stencil function"); - return wgpu::StencilOperation::Keep; - } -} - -static wgpu::PrimitiveTopology to_dawn_primitive_topology(GrPrimitiveType primitiveType) { - switch (primitiveType) { - case GrPrimitiveType::kTriangles: - return wgpu::PrimitiveTopology::TriangleList; - case GrPrimitiveType::kTriangleStrip: - return wgpu::PrimitiveTopology::TriangleStrip; - case GrPrimitiveType::kPoints: - return wgpu::PrimitiveTopology::PointList; - case GrPrimitiveType::kLines: - return wgpu::PrimitiveTopology::LineList; - case GrPrimitiveType::kLineStrip: - return wgpu::PrimitiveTopology::LineStrip; - } - SkUNREACHABLE; -} - -static wgpu::VertexFormat to_dawn_vertex_format(GrVertexAttribType type) { - switch (type) { - case kFloat_GrVertexAttribType: - case kHalf_GrVertexAttribType: - return wgpu::VertexFormat::Float32; - case kFloat2_GrVertexAttribType: - case kHalf2_GrVertexAttribType: - return wgpu::VertexFormat::Float32x2; - case kFloat3_GrVertexAttribType: - return wgpu::VertexFormat::Float32x3; - case kFloat4_GrVertexAttribType: - case kHalf4_GrVertexAttribType: - return wgpu::VertexFormat::Float32x4; - case kUShort2_GrVertexAttribType: - return wgpu::VertexFormat::Uint16x2; - case kInt_GrVertexAttribType: - return wgpu::VertexFormat::Sint32; - case kUByte4_norm_GrVertexAttribType: - return wgpu::VertexFormat::Unorm8x4; - default: - SkDEBUGFAIL("unsupported vertex format"); - return wgpu::VertexFormat::Float32x4; - } -} - -static wgpu::BlendState create_blend_state(const GrDawnGpu* gpu, const GrPipeline& pipeline) { - skgpu::BlendInfo blendInfo = pipeline.getXferProcessor().getBlendInfo(); - skgpu::BlendEquation equation = blendInfo.fEquation; - skgpu::BlendCoeff srcCoeff = blendInfo.fSrcBlend; - skgpu::BlendCoeff dstCoeff = blendInfo.fDstBlend; - - wgpu::BlendFactor srcFactor = to_dawn_blend_factor(srcCoeff); - wgpu::BlendFactor dstFactor = to_dawn_blend_factor(dstCoeff); - wgpu::BlendFactor srcFactorAlpha = to_dawn_blend_factor_for_alpha(srcCoeff); - wgpu::BlendFactor dstFactorAlpha = to_dawn_blend_factor_for_alpha(dstCoeff); - wgpu::BlendOperation operation = to_dawn_blend_operation(equation); - - wgpu::BlendState blendState; - blendState.color = {operation, srcFactor, dstFactor}; - blendState.alpha = {operation, srcFactorAlpha, dstFactorAlpha}; - - return blendState; -} - -static wgpu::StencilFaceState to_stencil_state_face(const GrStencilSettings::Face& face) { - wgpu::StencilFaceState desc; - desc.compare = to_dawn_compare_function(face.fTest); - desc.failOp = desc.depthFailOp = to_dawn_stencil_operation(face.fFailOp); - desc.passOp = to_dawn_stencil_operation(face.fPassOp); - return desc; -} - -static wgpu::DepthStencilState create_depth_stencil_state( - const GrProgramInfo& programInfo, - wgpu::TextureFormat depthStencilFormat) { - GrStencilSettings stencilSettings = programInfo.nonGLStencilSettings(); - GrSurfaceOrigin origin = programInfo.origin(); - - wgpu::DepthStencilState state; - state.format = depthStencilFormat; - state.depthWriteEnabled = false; - state.depthCompare = wgpu::CompareFunction::Always; - if (!stencilSettings.isDisabled()) { - if (stencilSettings.isTwoSided()) { - auto front = stencilSettings.postOriginCCWFace(origin); - auto back = stencilSettings.postOriginCWFace(origin); - state.stencilFront = to_stencil_state_face(front); - state.stencilBack = to_stencil_state_face(back); - state.stencilReadMask = front.fTestMask; - state.stencilWriteMask = front.fWriteMask; - } else { - auto frontAndBack = stencilSettings.singleSidedFace(); - state.stencilBack = state.stencilFront = to_stencil_state_face(frontAndBack); - state.stencilReadMask = frontAndBack.fTestMask; - state.stencilWriteMask = frontAndBack.fWriteMask; - } - } - return state; -} - -static wgpu::BindGroupEntry make_bind_group_entry(uint32_t binding, - const wgpu::Sampler& sampler, - const wgpu::TextureView& textureView) { - wgpu::BindGroupEntry result; - result.binding = binding; - result.buffer = nullptr; - result.offset = 0; - result.size = 0; - result.sampler = sampler; - result.textureView = textureView; - return result; -} - -static wgpu::BindGroupEntry make_bind_group_entry(uint32_t binding, - const wgpu::Sampler& sampler) { - return make_bind_group_entry(binding, sampler, nullptr); -} - -static wgpu::BindGroupEntry make_bind_group_entry(uint32_t binding, - const wgpu::TextureView& textureView) { - return make_bind_group_entry(binding, nullptr, textureView); -} - -sk_sp GrDawnProgramBuilder::Build(GrDawnGpu* gpu, - GrRenderTarget* renderTarget, - const GrProgramInfo& programInfo, - wgpu::TextureFormat colorFormat, - bool hasDepthStencil, - wgpu::TextureFormat depthStencilFormat, - GrProgramDesc* desc) { - GrAutoLocaleSetter als("C"); - - GrDawnProgramBuilder builder(gpu, programInfo, desc); - if (!builder.emitAndInstallProcs()) { - return nullptr; - } - - builder.finalizeShaders(); - - SkSL::Program::Interface vertInterface, fragInterface; - bool flipY = programInfo.origin() != kTopLeft_GrSurfaceOrigin; - auto vsModule = builder.createShaderModule(builder.fVS, SkSL::ProgramKind::kVertex, flipY, - &vertInterface); - auto fsModule = builder.createShaderModule(builder.fFS, SkSL::ProgramKind::kFragment, flipY, - &fragInterface); - GrSPIRVUniformHandler::UniformInfoArray& uniforms = builder.fUniformHandler.fUniforms; - uint32_t uniformBufferSize = builder.fUniformHandler.fCurrentUBOOffset; - sk_sp result(new GrDawnProgram(uniforms, uniformBufferSize)); - result->fGPImpl = std::move(builder.fGPImpl); - result->fXPImpl = std::move(builder.fXPImpl); - result->fFPImpls = std::move(builder.fFPImpls); - std::vector uniformLayoutEntries; - if (0 != uniformBufferSize) { - wgpu::BindGroupLayoutEntry entry; - entry.binding = GrSPIRVUniformHandler::kUniformBinding; - entry.visibility = wgpu::ShaderStage::Vertex | wgpu::ShaderStage::Fragment; - entry.buffer.type = wgpu::BufferBindingType::Uniform; - uniformLayoutEntries.push_back(std::move(entry)); - } - wgpu::BindGroupLayoutDescriptor uniformBindGroupLayoutDesc; - uniformBindGroupLayoutDesc.entryCount = uniformLayoutEntries.size(); - uniformBindGroupLayoutDesc.entries = uniformLayoutEntries.data(); - result->fBindGroupLayouts.push_back( - gpu->device().CreateBindGroupLayout(&uniformBindGroupLayoutDesc)); - uint32_t binding = 0; - std::vector textureLayoutEntries; - int textureCount = builder.fUniformHandler.fSamplers.count(); - if (textureCount > 0) { - for (int i = 0; i < textureCount; ++i) { - { - wgpu::BindGroupLayoutEntry entry; - entry.binding = binding++; - entry.visibility = wgpu::ShaderStage::Fragment; - entry.sampler.type = wgpu::SamplerBindingType::Filtering; - textureLayoutEntries.push_back(std::move(entry)); - } - { - wgpu::BindGroupLayoutEntry entry; - entry.binding = binding++; - entry.visibility = wgpu::ShaderStage::Fragment; - entry.texture.sampleType = wgpu::TextureSampleType::Float; - entry.texture.viewDimension = wgpu::TextureViewDimension::e2D; - textureLayoutEntries.push_back(std::move(entry)); - } - } - wgpu::BindGroupLayoutDescriptor textureBindGroupLayoutDesc; - textureBindGroupLayoutDesc.entryCount = textureLayoutEntries.size(); - textureBindGroupLayoutDesc.entries = textureLayoutEntries.data(); - result->fBindGroupLayouts.push_back( - gpu->device().CreateBindGroupLayout(&textureBindGroupLayoutDesc)); - } - wgpu::PipelineLayoutDescriptor pipelineLayoutDesc; - pipelineLayoutDesc.bindGroupLayoutCount = result->fBindGroupLayouts.size(); - pipelineLayoutDesc.bindGroupLayouts = result->fBindGroupLayouts.data(); - auto pipelineLayout = gpu->device().CreatePipelineLayout(&pipelineLayoutDesc); - result->fBuiltinUniformHandles = builder.fUniformHandles; - const GrPipeline& pipeline = programInfo.pipeline(); - wgpu::DepthStencilState depthStencilState; - -#ifdef SK_DEBUG - if (programInfo.isStencilEnabled()) { - SkASSERT(renderTarget->numStencilBits(renderTarget->numSamples() > 1) == 8); - } -#endif - depthStencilState = create_depth_stencil_state(programInfo, depthStencilFormat); - - std::vector inputs; - - std::vector vertexAttributes; - const GrGeometryProcessor& geomProc = programInfo.geomProc(); - int i = 0; - if (geomProc.numVertexAttributes() > 0) { - for (auto attrib : geomProc.vertexAttributes()) { - wgpu::VertexAttribute attribute; - attribute.shaderLocation = i; - attribute.offset = *attrib.offset(); - attribute.format = to_dawn_vertex_format(attrib.cpuType()); - vertexAttributes.push_back(attribute); - i++; - } - wgpu::VertexBufferLayout input; - input.arrayStride = geomProc.vertexStride(); - input.stepMode = wgpu::VertexStepMode::Vertex; - input.attributeCount = vertexAttributes.size(); - input.attributes = &vertexAttributes.front(); - inputs.push_back(input); - } - std::vector instanceAttributes; - if (geomProc.numInstanceAttributes() > 0) { - for (auto attrib : geomProc.instanceAttributes()) { - wgpu::VertexAttribute attribute; - attribute.shaderLocation = i; - attribute.offset = *attrib.offset(); - attribute.format = to_dawn_vertex_format(attrib.cpuType()); - instanceAttributes.push_back(attribute); - i++; - } - wgpu::VertexBufferLayout input; - input.arrayStride = geomProc.instanceStride(); - input.stepMode = wgpu::VertexStepMode::Instance; - input.attributeCount = instanceAttributes.size(); - input.attributes = &instanceAttributes.front(); - inputs.push_back(input); - } - wgpu::VertexState vertexState; - vertexState.module = vsModule; - vertexState.entryPoint = "main"; - vertexState.bufferCount = inputs.size(); - vertexState.buffers = &inputs.front(); - - wgpu::BlendState blendState = create_blend_state(gpu, pipeline); - - wgpu::ColorTargetState colorTargetState; - colorTargetState.format = colorFormat; - colorTargetState.blend = &blendState; - - bool writesColor = pipeline.getXferProcessor().getBlendInfo().fWritesColor; - colorTargetState.writeMask = writesColor ? wgpu::ColorWriteMask::All - : wgpu::ColorWriteMask::None; - - wgpu::FragmentState fragmentState; - fragmentState.module = fsModule; - fragmentState.entryPoint = "main"; - fragmentState.targetCount = 1; - fragmentState.targets = &colorTargetState; - - wgpu::RenderPipelineDescriptor rpDesc; - rpDesc.layout = pipelineLayout; - rpDesc.vertex = vertexState; - rpDesc.primitive.topology = to_dawn_primitive_topology(programInfo.primitiveType()); - GrPrimitiveType primitiveType = programInfo.primitiveType(); - if (primitiveType == GrPrimitiveType::kTriangleStrip || - primitiveType == GrPrimitiveType::kLineStrip) { - rpDesc.primitive.stripIndexFormat = wgpu::IndexFormat::Uint16; - } - if (hasDepthStencil) { - rpDesc.depthStencil = &depthStencilState; - } - rpDesc.fragment = &fragmentState; - result->fRenderPipeline = gpu->device().CreateRenderPipeline(&rpDesc); - return result; -} - -GrDawnProgramBuilder::GrDawnProgramBuilder(GrDawnGpu* gpu, - const GrProgramInfo& programInfo, - GrProgramDesc* desc) - : INHERITED(*desc, programInfo) - , fGpu(gpu) - , fVaryingHandler(this) - , fUniformHandler(this) { -} - -wgpu::ShaderModule GrDawnProgramBuilder::createShaderModule(const GrGLSLShaderBuilder& builder, - SkSL::ProgramKind kind, - bool flipY, - SkSL::Program::Interface* interface) { - wgpu::Device device = fGpu->device(); - SkString source(builder.fCompilerString.c_str()); - -#if 0 - std::string sksl = SkShaderUtils::PrettyPrint(builder.fCompilerString); - printf("converting program:\n%s\n", sksl.c_str()); -#endif - - std::string spirvSource = fGpu->SkSLToSPIRV(source.c_str(), - kind, - fUniformHandler.getRTFlipOffset(), - interface); - if (interface->fUseFlipRTUniform) { - this->addRTFlipUniform(SKSL_RTFLIP_NAME); - } - - return fGpu->createShaderModule(spirvSource); -} - -const GrCaps* GrDawnProgramBuilder::caps() const { - return fGpu->caps(); -} - -SkSL::Compiler* GrDawnProgramBuilder::shaderCompiler() const { - return fGpu->shaderCompiler(); -} - -void GrDawnProgram::setRenderTargetState(const GrRenderTarget* rt, GrSurfaceOrigin origin) { - // Set RT adjustment and RT flip - SkISize dimensions = rt->dimensions(); - SkASSERT(fBuiltinUniformHandles.fRTAdjustmentUni.isValid()); - if (fRenderTargetState.fRenderTargetOrigin != origin || - fRenderTargetState.fRenderTargetSize != dimensions) { - fRenderTargetState.fRenderTargetSize = dimensions; - fRenderTargetState.fRenderTargetOrigin = origin; - - // The client will mark a swap buffer as kTopLeft when making a SkSurface because - // Dawn'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 when origin is kTopLeft. - bool flip = (origin == kTopLeft_GrSurfaceOrigin); - std::array v = SkSL::Compiler::GetRTAdjustVector(dimensions, flip); - fDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, v.data()); - if (fBuiltinUniformHandles.fRTFlipUni.isValid()) { - // Note above that framebuffer space has origin top left. So we need !flip here. - std::array d = SkSL::Compiler::GetRTFlipVector(rt->height(), !flip); - fDataManager.set2fv(fBuiltinUniformHandles.fRTFlipUni, 1, d.data()); - } - } -} - -static void set_texture(GrDawnGpu* gpu, GrSamplerState state, GrTexture* texture, - std::vector* bindings, int* binding) { - // FIXME: could probably cache samplers in GrDawnProgram - wgpu::Sampler sampler = gpu->getOrCreateSampler(state); - bindings->push_back(make_bind_group_entry((*binding)++, sampler)); - GrDawnTexture* tex = static_cast(texture); - wgpu::TextureViewDescriptor viewDesc; - // Note that a mipLevelCount == WGPU_MIP_LEVEL_COUNT_UNDEFINED here means to expose all - // available levels. - viewDesc.mipLevelCount = GrSamplerState::MipmapMode::kNone == state.mipmapMode() - ? 1 - : WGPU_MIP_LEVEL_COUNT_UNDEFINED; - wgpu::TextureView textureView = tex->texture().CreateView(&viewDesc); - bindings->push_back(make_bind_group_entry((*binding)++, textureView)); -} - -wgpu::BindGroup GrDawnProgram::setUniformData(GrDawnGpu* gpu, const GrRenderTarget* renderTarget, - const GrProgramInfo& programInfo) { - if (0 == fDataManager.uniformBufferSize()) { - return nullptr; - } - this->setRenderTargetState(renderTarget, programInfo.origin()); - const GrPipeline& pipeline = programInfo.pipeline(); - const GrGeometryProcessor& geomProc = programInfo.geomProc(); - fGPImpl->setData(fDataManager, *gpu->caps()->shaderCaps(), geomProc); - - for (int i = 0; i < programInfo.pipeline().numFragmentProcessors(); ++i) { - const auto& fp = programInfo.pipeline().getFragmentProcessor(i); - fp.visitWithImpls([&](const GrFragmentProcessor& fp, - GrFragmentProcessor::ProgramImpl& impl) { - impl.setData(fDataManager, fp); - }, *fFPImpls[i]); - } - - programInfo.pipeline().setDstTextureUniforms(fDataManager, &fBuiltinUniformHandles); - fXPImpl->setData(fDataManager, pipeline.getXferProcessor()); - - return fDataManager.uploadUniformBuffers(gpu, fBindGroupLayouts[0]); -} - -wgpu::BindGroup GrDawnProgram::setTextures(GrDawnGpu* gpu, - const GrGeometryProcessor& geomProc, - const GrPipeline& pipeline, - const GrSurfaceProxy* const geomProcTextures[]) { - if (fBindGroupLayouts.size() < 2) { - return nullptr; - } - std::vector bindings; - int binding = 0; - if (geomProcTextures) { - for (int i = 0; i < geomProc.numTextureSamplers(); ++i) { - SkASSERT(geomProcTextures[i]->asTextureProxy()); - auto& sampler = geomProc.textureSampler(i); - set_texture(gpu, sampler.samplerState(), geomProcTextures[i]->peekTexture(), &bindings, - &binding); - } - } - - if (GrTexture* dstTexture = pipeline.peekDstTexture()) { - set_texture(gpu, GrSamplerState::Filter::kNearest, dstTexture, &bindings, &binding); - } - - pipeline.visitTextureEffects([&](const GrTextureEffect& te) { - set_texture(gpu, te.samplerState(), te.texture(), &bindings, &binding); - }); - - wgpu::BindGroupDescriptor descriptor; - descriptor.layout = fBindGroupLayouts[1]; - descriptor.entryCount = bindings.size(); - descriptor.entries = bindings.data(); - return gpu->device().CreateBindGroup(&descriptor); -} diff --git a/src/gpu/ganesh/dawn/GrDawnProgramBuilder.h b/src/gpu/ganesh/dawn/GrDawnProgramBuilder.h deleted file mode 100644 index 3c93d91a9c65..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnProgramBuilder.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnProgramBuilder_DEFINED -#define GrDawnProgramBuilder_DEFINED - -#include "src/gpu/ganesh/GrSPIRVUniformHandler.h" -#include "src/gpu/ganesh/GrSPIRVVaryingHandler.h" -#include "src/gpu/ganesh/dawn/GrDawnProgramDataManager.h" -#include "src/sksl/ir/SkSLProgram.h" -#include "webgpu/webgpu_cpp.h" -#include "src/gpu/ganesh/glsl/GrGLSLProgramBuilder.h" - -#include - -class GrPipeline; - -namespace SkSL { class Compiler; } - -struct GrDawnProgram : public SkRefCnt { - struct RenderTargetState { - SkISize fRenderTargetSize; - GrSurfaceOrigin fRenderTargetOrigin; - - RenderTargetState() { this->invalidate(); } - void invalidate() { - fRenderTargetSize.fWidth = -1; - fRenderTargetSize.fHeight = -1; - fRenderTargetOrigin = (GrSurfaceOrigin) -1; - } - }; - typedef GrGLSLBuiltinUniformHandles BuiltinUniformHandles; - GrDawnProgram(const GrSPIRVUniformHandler::UniformInfoArray& uniforms, - uint32_t uniformBufferSize) - : fDataManager(uniforms, uniformBufferSize) { - } - std::unique_ptr fGPImpl; - std::unique_ptr fXPImpl; - std::vector> fFPImpls; - std::vector fBindGroupLayouts; - wgpu::RenderPipeline fRenderPipeline; - GrDawnProgramDataManager fDataManager; - RenderTargetState fRenderTargetState; - BuiltinUniformHandles fBuiltinUniformHandles; - - void setRenderTargetState(const GrRenderTarget*, GrSurfaceOrigin); - wgpu::BindGroup setUniformData(GrDawnGpu*, const GrRenderTarget*, const GrProgramInfo&); - wgpu::BindGroup setTextures(GrDawnGpu*, - const GrGeometryProcessor&, - const GrPipeline&, - const GrSurfaceProxy* const geomProcTextures[]); -}; - -class GrDawnProgramBuilder : public GrGLSLProgramBuilder { -public: - static sk_sp Build(GrDawnGpu*, - GrRenderTarget*, - const GrProgramInfo&, - wgpu::TextureFormat colorFormat, - bool hasDepthStencil, - wgpu::TextureFormat depthStencilFormat, - GrProgramDesc*); - const GrCaps* caps() const override; - GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; } - const GrGLSLUniformHandler* uniformHandler() const override { return &fUniformHandler; } - GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } - - GrDawnGpu* gpu() const { return fGpu; } - - SkSL::Compiler* shaderCompiler() const override; - -private: - GrDawnProgramBuilder(GrDawnGpu*, - const GrProgramInfo&, - GrProgramDesc*); - wgpu::ShaderModule createShaderModule(const GrGLSLShaderBuilder&, - SkSL::ProgramKind, - bool flipY, - SkSL::Program::Interface*); - GrDawnGpu* fGpu; - GrSPIRVVaryingHandler fVaryingHandler; - GrSPIRVUniformHandler fUniformHandler; - - using INHERITED = GrGLSLProgramBuilder; -}; -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnProgramDataManager.cpp b/src/gpu/ganesh/dawn/GrDawnProgramDataManager.cpp deleted file mode 100644 index 1352f96a6518..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnProgramDataManager.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnProgramDataManager.h" - -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" - -GrDawnProgramDataManager::GrDawnProgramDataManager(const UniformInfoArray& uniforms, - uint32_t uniformBufferSize) - : GrUniformDataManager( - uniforms.count(), - // Dawn uses a std140-like layout for uniform data which requires certain types to - // have an alignment of 16. This layout will often involve padding to be inserted - // at the end of data last uniform entry as described in - // https://www.w3.org/TR/WGSL/#alignment-and-size. - // - // Dawn enforces buffers to appropriately sized to accommodate such padding, even - // if it involves trailing bytes that will never get written or read. We make sure - // that the buffers we bind for uniforms abide by this validation rule. - SkAlignTo(uniformBufferSize, 16)) { - memset(fUniformData.get(), 0, uniformBufferSize); - // We must add uniforms in same order is the UniformInfoArray so that UniformHandles already - // owned by other objects will still match up here. - int i = 0; - for (const auto& uniformInfo : uniforms.items()) { - Uniform& uniform = fUniforms[i]; - SkDEBUGCODE( - uniform.fArrayCount = uniformInfo.fVariable.getArrayCount(); - uniform.fType = uniformInfo.fVariable.getType(); - ) - uniform.fOffset = uniformInfo.fUBOOffset; - ++i; - } -} - -static wgpu::BindGroupEntry make_bind_group_entry(uint32_t binding, const wgpu::Buffer& buffer, - uint32_t offset, uint32_t size) { - wgpu::BindGroupEntry result; - result.binding = binding; - result.buffer = buffer; - result.offset = offset; - result.size = size; - result.sampler = nullptr; - result.textureView = nullptr; - return result; -} - -wgpu::BindGroup GrDawnProgramDataManager::uploadUniformBuffers(GrDawnGpu* gpu, - wgpu::BindGroupLayout layout) { - if (fUniformsDirty && 0 != fUniformSize) { - std::vector bindings; - GrDawnRingBuffer::Slice slice; - slice = gpu->allocateUniformRingBufferSlice(fUniformSize); - gpu->queue().WriteBuffer(slice.fBuffer, slice.fOffset, fUniformData.get(), fUniformSize); - bindings.push_back(make_bind_group_entry(GrSPIRVUniformHandler::kUniformBinding, - slice.fBuffer, slice.fOffset, - fUniformSize)); - wgpu::BindGroupDescriptor descriptor; - descriptor.layout = layout; - descriptor.entryCount = bindings.size(); - descriptor.entries = bindings.data(); - fBindGroup = gpu->device().CreateBindGroup(&descriptor); - fUniformsDirty = false; - } - return fBindGroup; -} diff --git a/src/gpu/ganesh/dawn/GrDawnProgramDataManager.h b/src/gpu/ganesh/dawn/GrDawnProgramDataManager.h deleted file mode 100644 index f96d63c6bbe6..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnProgramDataManager.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnProgramDataManager_DEFINED -#define GrDawnProgramDataManager_DEFINED - -#include "src/gpu/ganesh/GrUniformDataManager.h" - -#include "src/gpu/ganesh/GrSPIRVUniformHandler.h" -#include "src/gpu/ganesh/dawn/GrDawnRingBuffer.h" -#include "webgpu/webgpu_cpp.h" - -#include "src/base/SkAutoMalloc.h" - -class GrDawnGpu; -class GrDawnUniformBuffer; - -class GrDawnProgramDataManager : public GrUniformDataManager { -public: - typedef GrSPIRVUniformHandler::UniformInfoArray UniformInfoArray; - - GrDawnProgramDataManager(const UniformInfoArray&, uint32_t uniformBufferSize); - - uint32_t uniformBufferSize() const { return fUniformSize; } - - wgpu::BindGroup uploadUniformBuffers(GrDawnGpu* gpu, wgpu::BindGroupLayout layout); - -private: - wgpu::BindGroup fBindGroup; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnRenderTarget.cpp b/src/gpu/ganesh/dawn/GrDawnRenderTarget.cpp deleted file mode 100644 index 5195c8f23a58..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnRenderTarget.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnRenderTarget.h" - -#include "include/gpu/GrBackendSurface.h" -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -GrDawnRenderTarget::GrDawnRenderTarget(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt, - const GrDawnRenderTargetInfo& info, - std::string_view label) - : GrSurface(gpu, dimensions, GrProtected::kNo, label) - , GrRenderTarget(gpu, dimensions, sampleCnt, GrProtected::kNo, label) - , fInfo(info) {} - -sk_sp GrDawnRenderTarget::MakeWrapped(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt, - const GrDawnRenderTargetInfo& info, - std::string_view label) { - sk_sp rt( - new GrDawnRenderTarget(gpu, dimensions, sampleCnt, info, label)); - rt->registerWithCacheWrapped(GrWrapCacheable::kNo); - return rt; -} - -size_t GrDawnRenderTarget::onGpuMemorySize() const { - // The plus 1 is to account for the resolve texture or if not using msaa the RT itself - int numSamples = this->numSamples() + 1; - return GrSurface::ComputeSize(this->backendFormat(), this->dimensions(), numSamples, - GrMipmapped::kNo); -} - -bool GrDawnRenderTarget::completeStencilAttachment(GrAttachment* stencil, bool useMSAASurface) { - SkASSERT(useMSAASurface == (this->numSamples() > 1)); - return true; -} - -GrDawnRenderTarget::~GrDawnRenderTarget() { -} - -void GrDawnRenderTarget::onRelease() { - INHERITED::onRelease(); -} - -void GrDawnRenderTarget::onAbandon() { - INHERITED::onAbandon(); -} - -GrBackendRenderTarget GrDawnRenderTarget::getBackendRenderTarget() const { - return GrBackendRenderTarget(this->width(), this->height(), this->numSamples(), - this->numSamples(), fInfo); -} - -GrBackendFormat GrDawnRenderTarget::backendFormat() const { - return GrBackendFormat::MakeDawn(fInfo.fFormat); -} diff --git a/src/gpu/ganesh/dawn/GrDawnRenderTarget.h b/src/gpu/ganesh/dawn/GrDawnRenderTarget.h deleted file mode 100644 index 4d29f2b952cc..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnRenderTarget.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnRenderTarget_DEFINED -#define GrDawnRenderTarget_DEFINED - -#include "include/gpu/dawn/GrDawnTypes.h" -#include "src/gpu/ganesh/GrRenderTarget.h" - -class GrDawnGpu; - -class GrDawnRenderTarget: public GrRenderTarget { -public: - static sk_sp MakeWrapped(GrDawnGpu*, - SkISize dimensions, - int sampleCnt, - const GrDawnRenderTargetInfo&, - std::string_view label); - - ~GrDawnRenderTarget() override; - - bool canAttemptStencilAttachment(bool useMSAASurface) const override { - SkASSERT(useMSAASurface == (this->numSamples() > 1)); - return true; - } - - GrBackendRenderTarget getBackendRenderTarget() const override; - GrBackendFormat backendFormat() const override; - wgpu::TextureView textureView() const { return fInfo.fTextureView; } - -protected: - GrDawnRenderTarget(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt, - const GrDawnRenderTargetInfo& info, - std::string_view label); - - void onAbandon() override; - void onRelease() override; - - // This accounts for the texture's memory and any MSAA renderbuffer's memory. - size_t onGpuMemorySize() const override; - - void onSetLabel() override{} - - bool completeStencilAttachment(GrAttachment* stencil, bool useMSAASurface) override; - GrDawnRenderTargetInfo fInfo; - using INHERITED = GrRenderTarget; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnRingBuffer.cpp b/src/gpu/ganesh/dawn/GrDawnRingBuffer.cpp deleted file mode 100644 index 35c048ad4fbc..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnRingBuffer.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnRingBuffer.h" - -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -namespace { - const int kDefaultSize = 64 * 1024; -} - -GrDawnRingBuffer::GrDawnRingBuffer(GrDawnGpu* gpu, wgpu::BufferUsage usage) - : fGpu(gpu) , fUsage(usage) { -} - -GrDawnRingBuffer::~GrDawnRingBuffer() { -} - -GrDawnRingBuffer::Slice GrDawnRingBuffer::allocate(int size) { - if (!fBuffer || fOffset + size > kDefaultSize) { - wgpu::BufferDescriptor desc; - desc.usage = fUsage | wgpu::BufferUsage::CopyDst; - desc.size = kDefaultSize; - fBuffer = fGpu->device().CreateBuffer(&desc); - fOffset = 0; - } - - size_t offset = fOffset; - fOffset += size; - fOffset = GrDawnRoundRowBytes(fOffset); - return Slice(fBuffer, offset); -} diff --git a/src/gpu/ganesh/dawn/GrDawnRingBuffer.h b/src/gpu/ganesh/dawn/GrDawnRingBuffer.h deleted file mode 100644 index 954138c2b161..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnRingBuffer.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnRingBuffer_DEFINED -#define GrDawnRingBuffer_DEFINED - -#include "src/gpu/ganesh/dawn/GrDawnBuffer.h" - -class GrDawnGpu; - -class GrDawnRingBuffer : public SkRefCnt { -public: - GrDawnRingBuffer(GrDawnGpu* gpu, wgpu::BufferUsage usage); - ~GrDawnRingBuffer() override; - - struct Slice { - Slice(wgpu::Buffer buffer, int offset) - : fBuffer(buffer), fOffset(offset) {} - Slice() - : fBuffer(nullptr), fOffset(0) {} - Slice(const Slice& other) - : fBuffer(other.fBuffer), fOffset(other.fOffset) {} - Slice& operator=(const Slice& other) { - fBuffer = other.fBuffer; - fOffset = other.fOffset; - return *this; - } - wgpu::Buffer fBuffer; - int fOffset; - }; - Slice allocate(int size); - -private: - GrDawnGpu* fGpu; - wgpu::BufferUsage fUsage; - wgpu::Buffer fBuffer; - int fOffset = 0; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnTexture.cpp b/src/gpu/ganesh/dawn/GrDawnTexture.cpp deleted file mode 100644 index bae54e8ca17b..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnTexture.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnTexture.h" - -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" -#include "src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h" -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -GrDawnTexture::GrDawnTexture(GrDawnGpu* gpu, - SkISize dimensions, - const GrDawnTextureInfo& info, - GrMipmapStatus mipmapStatus, - std::string_view label) - : GrSurface(gpu, dimensions, GrProtected::kNo, label) - , GrTexture(gpu, dimensions, GrProtected::kNo, GrTextureType::k2D, mipmapStatus, label) - , fInfo(info) {} - -sk_sp GrDawnTexture::Make(GrDawnGpu* gpu, - SkISize dimensions, - wgpu::TextureFormat format, - GrRenderable renderable, - int sampleCnt, - skgpu::Budgeted budgeted, - int mipLevels, - GrMipmapStatus status, - std::string_view label) { - bool renderTarget = renderable == GrRenderable::kYes; - wgpu::TextureDescriptor textureDesc; - - textureDesc.usage = wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::CopySrc | - wgpu::TextureUsage::CopyDst; - - if (renderTarget) { - textureDesc.usage |= wgpu::TextureUsage::RenderAttachment; - } - - textureDesc.size.width = dimensions.fWidth; - textureDesc.size.height = dimensions.fHeight; - textureDesc.size.depthOrArrayLayers = 1; - textureDesc.format = format; - textureDesc.mipLevelCount = std::max(mipLevels, 1); - textureDesc.sampleCount = sampleCnt; - - wgpu::Texture tex = gpu->device().CreateTexture(&textureDesc); - - if (!tex) { - return nullptr; - } - - GrDawnTextureInfo info; - info.fTexture = tex; - info.fFormat = textureDesc.format; - info.fLevelCount = mipLevels; - sk_sp result; - if (renderTarget) { - result = sk_sp(new GrDawnTextureRenderTarget( - gpu, dimensions, sampleCnt, info, status, label)); - } else { - result = sk_sp( - new GrDawnTexture(gpu, dimensions, info, status, label)); - } - result->registerWithCache(budgeted); - return result; -} - -GrBackendFormat GrDawnTexture::backendFormat() const { - return GrBackendFormat::MakeDawn(fInfo.fFormat); -} - -sk_sp GrDawnTexture::MakeWrapped(GrDawnGpu* gpu, SkISize dimensions, - GrRenderable renderable, int sampleCnt, - GrWrapCacheable cacheable, GrIOType ioType, - const GrDawnTextureInfo& info, - std::string_view label) { - sk_sp tex; - GrMipmapStatus status = info.fLevelCount > 1 ? GrMipmapStatus::kValid - : GrMipmapStatus::kNotAllocated; - if (GrRenderable::kYes == renderable) { - tex = sk_sp(new GrDawnTextureRenderTarget( - gpu, dimensions, sampleCnt, info, status, label)); - } else { - tex = sk_sp(new GrDawnTexture(gpu, dimensions, info, status, label)); - } - tex->registerWithCacheWrapped(cacheable); - if (ioType == kRead_GrIOType) { - tex->setReadOnly(); - } - return tex; -} - -GrDawnTexture::~GrDawnTexture() { -} - -GrDawnGpu* GrDawnTexture::getDawnGpu() const { - SkASSERT(!this->wasDestroyed()); - return static_cast(this->getGpu()); -} - -void GrDawnTexture::onRelease() { - INHERITED::onRelease(); -} - -void GrDawnTexture::onAbandon() { - INHERITED::onAbandon(); -} - -GrBackendTexture GrDawnTexture::getBackendTexture() const { - return GrBackendTexture(this->width(), this->height(), fInfo); -} diff --git a/src/gpu/ganesh/dawn/GrDawnTexture.h b/src/gpu/ganesh/dawn/GrDawnTexture.h deleted file mode 100644 index 6fdfefa7bb1e..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnTexture.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnTexture_DEFINED -#define GrDawnTexture_DEFINED - -#include "include/gpu/ganesh/SkImageGanesh.h" -#include "src/gpu/ganesh/GrTexture.h" -#include "webgpu/webgpu_cpp.h" - -class GrDawnGpu; - -class GrDawnTexture : public GrTexture { -public: - static sk_sp Make(GrDawnGpu*, - SkISize dimensions, - wgpu::TextureFormat format, - GrRenderable, - int sampleCnt, - skgpu::Budgeted, - int mipLevels, - GrMipmapStatus, - std::string_view label); - - static sk_sp MakeWrapped(GrDawnGpu*, SkISize dimensions, GrRenderable, - int sampleCnt, GrWrapCacheable, GrIOType, - const GrDawnTextureInfo&, std::string_view label); - - ~GrDawnTexture() override; - - GrBackendTexture getBackendTexture() const override; - GrBackendFormat backendFormat() const override; - - void textureParamsModified() override {} - - wgpu::Texture texture() const { return fInfo.fTexture; } - wgpu::TextureFormat format() const { return fInfo.fFormat; } -protected: - GrDawnTexture(GrDawnGpu*, - SkISize dimensions, - const GrDawnTextureInfo&, - GrMipmapStatus, - std::string_view label); - - GrDawnGpu* getDawnGpu() const; - - void onAbandon() override; - void onRelease() override; - - bool onStealBackendTexture(GrBackendTexture*, SkImages::BackendTextureReleaseProc*) override { - return false; - } - -private: - GrDawnTextureInfo fInfo; - - void onSetLabel() override{} - - using INHERITED = GrTexture; -}; - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.cpp b/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.cpp deleted file mode 100644 index e4187dea1281..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h" - -#include "include/core/SkTraceMemoryDump.h" -#include "src/gpu/ganesh/GrTexture.h" -#include "src/gpu/ganesh/dawn/GrDawnGpu.h" - -GrDawnTextureRenderTarget::GrDawnTextureRenderTarget(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt, - const GrDawnTextureInfo& textureInfo, - GrMipmapStatus mipmapStatus, - std::string_view label) - : GrSurface(gpu, dimensions, GrProtected::kNo, label) - , GrDawnTexture(gpu, dimensions, textureInfo, mipmapStatus, label) - , GrDawnRenderTarget( - gpu, dimensions, sampleCnt, GrDawnRenderTargetInfo(textureInfo), label) {} - -bool GrDawnTextureRenderTarget::canAttemptStencilAttachment(bool useMSAASurface) const { - SkASSERT(useMSAASurface == (this->numSamples() > 1)); - return true; -} - -size_t GrDawnTextureRenderTarget::onGpuMemorySize() const { - return GrSurface::ComputeSize(this->backendFormat(), this->dimensions(), - 1, // FIXME: for MSAA - this->mipmapped()); -} diff --git a/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h b/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h deleted file mode 100644 index 319787311a7b..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnTextureRenderTarget.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnTextureRenderTarget_DEFINED -#define GrDawnTextureRenderTarget_DEFINED - -#include "src/gpu/ganesh/dawn/GrDawnRenderTarget.h" -#include "src/gpu/ganesh/dawn/GrDawnTexture.h" - -class GrDawnGpu; - -#ifdef SK_BUILD_FOR_WIN -// Windows gives bogus warnings about inheriting asTexture/asRenderTarget via dominance. -#pragma warning(push) -#pragma warning(disable: 4250) -#endif - -class GrDawnTextureRenderTarget : public GrDawnTexture, public GrDawnRenderTarget { -public: - GrDawnTextureRenderTarget(GrDawnGpu* gpu, - SkISize dimensions, - int sampleCnt, - const GrDawnTextureInfo& textureInfo, - GrMipmapStatus mipmapStatus, - std::string_view label); - - bool canAttemptStencilAttachment(bool useMSAASurface) const override; - - GrBackendFormat backendFormat() const override { return GrDawnTexture::backendFormat(); } - -protected: - void onAbandon() override { - GrDawnRenderTarget::onAbandon(); - GrDawnTexture::onAbandon(); - } - - void onRelease() override { - GrDawnRenderTarget::onRelease(); - GrDawnTexture::onRelease(); - } - -private: - size_t onGpuMemorySize() const override; - - void onSetLabel() override{} -}; - -#ifdef SK_BUILD_FOR_WIN -#pragma warning(pop) -#endif - -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnTypesPriv.cpp b/src/gpu/ganesh/dawn/GrDawnTypesPriv.cpp deleted file mode 100644 index 84e6d8e6c79e..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnTypesPriv.cpp +++ /dev/null @@ -1,24 +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 "include/private/gpu/ganesh/GrDawnTypesPriv.h" - -GrDawnSurfaceInfo GrDawnTextureSpecToSurfaceInfo(const GrDawnTextureSpec& dawnSpec, - uint32_t sampleCount, - uint32_t levelCount, - skgpu::Protected isProtected) { - GrDawnSurfaceInfo info; - // Shared info - info.fSampleCount = sampleCount; - info.fLevelCount = levelCount; - info.fProtected = isProtected; - - // Dawn info - info.fFormat = dawnSpec.fFormat; - - return info; -} diff --git a/src/gpu/ganesh/dawn/GrDawnUtil.cpp b/src/gpu/ganesh/dawn/GrDawnUtil.cpp deleted file mode 100644 index 0a1a034b2ac0..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnUtil.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/dawn/GrDawnUtil.h" - -int GrDawnFormatStencilBits(wgpu::TextureFormat format) { - switch (format) { - case wgpu::TextureFormat::RGBA8Unorm: - case wgpu::TextureFormat::BGRA8Unorm: - case wgpu::TextureFormat::R8Unorm: - return 0; - case wgpu::TextureFormat::Depth24PlusStencil8: - return 8; - default: - SkUNREACHABLE; - } -} - -bool GrDawnFormatIsRenderable(wgpu::TextureFormat format) { - // For now, all the formats above are renderable. If a non-renderable format is added - // (see dawn/src/dawn_native/Format.cpp), an exception should be added here. - return true; -} - -bool GrColorTypeToDawnFormat(GrColorType ct, wgpu::TextureFormat* format) { - switch (ct) { - case GrColorType::kRGBA_8888: - *format = wgpu::TextureFormat::RGBA8Unorm; - return true; - case GrColorType::kBGRA_8888: - *format = wgpu::TextureFormat::BGRA8Unorm; - return true; - case GrColorType::kAlpha_8: - case GrColorType::kGray_8: - *format = wgpu::TextureFormat::R8Unorm; - return true; - default: - return false; - } -} - -bool GrDawnFormatToGrColorType(wgpu::TextureFormat format, GrColorType* colorType) { - switch (format) { - case wgpu::TextureFormat::RGBA8Unorm: - *colorType = GrColorType::kRGBA_8888; - return true; - case wgpu::TextureFormat::BGRA8Unorm: - *colorType = GrColorType::kBGRA_8888; - return true; - case wgpu::TextureFormat::R8Unorm: - *colorType = GrColorType::kR_8; - return true; - default: - return false; - } -} - -size_t GrDawnRoundRowBytes(size_t rowBytes) { - // Dawn requires that rowBytes be a multiple of 256. (This is actually imposed by D3D12.) - return (rowBytes + 0xFF) & ~0xFF; -} - -#if defined(SK_DEBUG) || GR_TEST_UTILS -const char* GrDawnFormatToStr(wgpu::TextureFormat format) { - switch (format) { - case wgpu::TextureFormat::RGBA8Unorm: - return "RGBA8Unorm"; - case wgpu::TextureFormat::BGRA8Unorm: - return "BGRA8Unorm"; - case wgpu::TextureFormat::R8Unorm: - return "R8Unorm"; - case wgpu::TextureFormat::Depth24PlusStencil8: - return "Depth24PlusStencil8"; - default: - SkUNREACHABLE; - } -} -#endif diff --git a/src/gpu/ganesh/dawn/GrDawnUtil.h b/src/gpu/ganesh/dawn/GrDawnUtil.h deleted file mode 100644 index 072e8db17ef0..000000000000 --- a/src/gpu/ganesh/dawn/GrDawnUtil.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrDawnUtil_DEFINED -#define GrDawnUtil_DEFINED - -#include "include/private/gpu/ganesh/GrTypesPriv.h" -#include "webgpu/webgpu_cpp.h" - -int GrDawnFormatStencilBits(wgpu::TextureFormat format); -bool GrDawnFormatIsRenderable(wgpu::TextureFormat format); -bool GrColorTypeToDawnFormat(GrColorType colorType, wgpu::TextureFormat* format); -bool GrDawnFormatToGrColorType(wgpu::TextureFormat format, GrColorType* colorType); -size_t GrDawnRoundRowBytes(size_t rowBytes); -#if defined(SK_DEBUG) || GR_TEST_UTILS -const char* GrDawnFormatToStr(wgpu::TextureFormat format); -#endif - -static constexpr GrColorFormatDesc GrDawnFormatDesc(wgpu::TextureFormat format) { - switch (format) { - case wgpu::TextureFormat::RGBA8Unorm: - return GrColorFormatDesc::MakeRGBA(8, GrColorTypeEncoding::kUnorm); - case wgpu::TextureFormat::BGRA8Unorm: - return GrColorFormatDesc::MakeRGBA(8, GrColorTypeEncoding::kUnorm); - case wgpu::TextureFormat::R8Unorm: - return GrColorFormatDesc::MakeR(8, GrColorTypeEncoding::kUnorm); - - default: - return GrColorFormatDesc::MakeInvalid(); - } -} - -#endif // GrDawnUtil_DEFINED diff --git a/src/gpu/ganesh/effects/BUILD.bazel b/src/gpu/ganesh/effects/BUILD.bazel index d9c8224e2a6d..d6362f46526d 100644 --- a/src/gpu/ganesh/effects/BUILD.bazel +++ b/src/gpu/ganesh/effects/BUILD.bazel @@ -26,10 +26,6 @@ EFFECTS_FILES = [ "GrDisableColorXP.h", "GrDistanceFieldGeoProc.cpp", "GrDistanceFieldGeoProc.h", - "GrGaussianConvolutionFragmentProcessor.cpp", - "GrGaussianConvolutionFragmentProcessor.h", - "GrMatrixConvolutionEffect.cpp", - "GrMatrixConvolutionEffect.h", "GrMatrixEffect.cpp", "GrMatrixEffect.h", "GrModulateAtlasCoverageEffect.cpp", diff --git a/src/gpu/ganesh/effects/GrBezierEffect.cpp b/src/gpu/ganesh/effects/GrBezierEffect.cpp index a012aba43ec2..8481b0827b38 100644 --- a/src/gpu/ganesh/effects/GrBezierEffect.cpp +++ b/src/gpu/ganesh/effects/GrBezierEffect.cpp @@ -190,7 +190,7 @@ GrConicEffect::GrConicEffect(const SkPMColor4f& color, const SkMatrix& viewMatri GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrConicEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrConicEffect::TestCreate(GrProcessorTestData* d) { GrColor color = GrTest::RandomColor(d->fRandom); SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); @@ -343,7 +343,7 @@ GrQuadEffect::GrQuadEffect(const SkPMColor4f& color, const SkMatrix& viewMatrix, GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrQuadEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrQuadEffect::TestCreate(GrProcessorTestData* d) { GrColor color = GrTest::RandomColor(d->fRandom); SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); diff --git a/src/gpu/ganesh/effects/GrBicubicEffect.cpp b/src/gpu/ganesh/effects/GrBicubicEffect.cpp index 78d321b528a2..8b7e7822577c 100644 --- a/src/gpu/ganesh/effects/GrBicubicEffect.cpp +++ b/src/gpu/ganesh/effects/GrBicubicEffect.cpp @@ -248,7 +248,7 @@ SkPMColor4f GrBicubicEffect::constantOutputForConstantInput(const SkPMColor4f& i GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrBicubicEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr GrBicubicEffect::TestCreate(GrProcessorTestData* d) { Direction direction = Direction::kX; switch (d->fRandom->nextULessThan(3)) { diff --git a/src/gpu/ganesh/effects/GrBitmapTextGeoProc.cpp b/src/gpu/ganesh/effects/GrBitmapTextGeoProc.cpp index 9d260e7cc29c..e88ba82d425c 100644 --- a/src/gpu/ganesh/effects/GrBitmapTextGeoProc.cpp +++ b/src/gpu/ganesh/effects/GrBitmapTextGeoProc.cpp @@ -212,7 +212,7 @@ std::unique_ptr GrBitmapTextGeoProc::makeProgr GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrBitmapTextGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrBitmapTextGeoProc::TestCreate(GrProcessorTestData* d) { auto [view, ct, at] = d->randomView(); diff --git a/src/gpu/ganesh/effects/GrBlendFragmentProcessor.cpp b/src/gpu/ganesh/effects/GrBlendFragmentProcessor.cpp index 411e3f441df9..15543e728042 100644 --- a/src/gpu/ganesh/effects/GrBlendFragmentProcessor.cpp +++ b/src/gpu/ganesh/effects/GrBlendFragmentProcessor.cpp @@ -68,7 +68,7 @@ class BlendFragmentProcessor : public GrFragmentProcessor { , fMode(that.fMode) , fShareBlendLogic(that.fShareBlendLogic) {} -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { return SkStringPrintf("(fMode=%s)", SkBlendMode_Name(fMode)); } @@ -201,7 +201,7 @@ class BlendFragmentProcessor : public GrFragmentProcessor { GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BlendFragmentProcessor) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr BlendFragmentProcessor::TestCreate(GrProcessorTestData* d) { // Create one or two random fragment processors. std::unique_ptr src(GrProcessorUnitTest::MakeOptionalChildFP(d)); diff --git a/src/gpu/ganesh/effects/GrColorTableEffect.cpp b/src/gpu/ganesh/effects/GrColorTableEffect.cpp index 095b29e0fae2..6d5845133783 100644 --- a/src/gpu/ganesh/effects/GrColorTableEffect.cpp +++ b/src/gpu/ganesh/effects/GrColorTableEffect.cpp @@ -96,7 +96,7 @@ std::unique_ptr ColorTableEffect::Make( GR_DEFINE_FRAGMENT_PROCESSOR_TEST(ColorTableEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr ColorTableEffect::TestCreate(GrProcessorTestData* d) { int flags = 0; uint8_t luts[256][4]; diff --git a/src/gpu/ganesh/effects/GrConvexPolyEffect.cpp b/src/gpu/ganesh/effects/GrConvexPolyEffect.cpp index 7836e24266c3..70aaf1216e02 100644 --- a/src/gpu/ganesh/effects/GrConvexPolyEffect.cpp +++ b/src/gpu/ganesh/effects/GrConvexPolyEffect.cpp @@ -206,7 +206,7 @@ bool GrConvexPolyEffect::onIsEqual(const GrFragmentProcessor& other) const { GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrConvexPolyEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr GrConvexPolyEffect::TestCreate(GrProcessorTestData* d) { int count = d->fRandom->nextULessThan(kMaxEdges) + 1; SkScalar edges[kMaxEdges * 3]; diff --git a/src/gpu/ganesh/effects/GrCoverageSetOpXP.cpp b/src/gpu/ganesh/effects/GrCoverageSetOpXP.cpp index 5e1221420df2..f59db62d15c7 100644 --- a/src/gpu/ganesh/effects/GrCoverageSetOpXP.cpp +++ b/src/gpu/ganesh/effects/GrCoverageSetOpXP.cpp @@ -184,7 +184,7 @@ sk_sp GrCoverageSetOpXPFactory::makeXferProcessor( GR_DEFINE_XP_FACTORY_TEST(GrCoverageSetOpXPFactory) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrXPFactory* GrCoverageSetOpXPFactory::TestGet(GrProcessorTestData* d) { SkRegion::Op regionOp = SkRegion::Op(d->fRandom->nextULessThan(SkRegion::kLastOp + 1)); bool invertCoverage = d->fRandom->nextBool(); diff --git a/src/gpu/ganesh/effects/GrCustomXfermode.cpp b/src/gpu/ganesh/effects/GrCustomXfermode.cpp index ef42ef40632b..4b9f04c2fdb0 100644 --- a/src/gpu/ganesh/effects/GrCustomXfermode.cpp +++ b/src/gpu/ganesh/effects/GrCustomXfermode.cpp @@ -365,7 +365,7 @@ GrXPFactory::AnalysisProperties CustomXPFactory::analysisProperties( } GR_DEFINE_XP_FACTORY_TEST(CustomXPFactory) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrXPFactory* CustomXPFactory::TestGet(GrProcessorTestData* d) { int mode = d->fRandom->nextRangeU((int)SkBlendMode::kLastCoeffMode + 1, (int)SkBlendMode::kLastSeparableMode); diff --git a/src/gpu/ganesh/effects/GrDisableColorXP.cpp b/src/gpu/ganesh/effects/GrDisableColorXP.cpp index 61a2ef639353..aca1823ade2d 100644 --- a/src/gpu/ganesh/effects/GrDisableColorXP.cpp +++ b/src/gpu/ganesh/effects/GrDisableColorXP.cpp @@ -71,7 +71,7 @@ sk_sp GrDisableColorXPFactory::MakeXferProcessor() { GR_DEFINE_XP_FACTORY_TEST(GrDisableColorXPFactory) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrXPFactory* GrDisableColorXPFactory::TestGet(GrProcessorTestData*) { return GrDisableColorXPFactory::Get(); } diff --git a/src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp index 9d31ea838ab0..74003f918320 100644 --- a/src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp +++ b/src/gpu/ganesh/effects/GrDistanceFieldGeoProc.cpp @@ -298,7 +298,7 @@ std::unique_ptr GrDistanceFieldA8TextGeoProc:: GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrDistanceFieldA8TextGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrDistanceFieldA8TextGeoProc::TestCreate(GrProcessorTestData* d) { auto [view, ct, at] = d->randomAlphaOnlyView(); @@ -552,7 +552,7 @@ std::unique_ptr GrDistanceFieldPathGeoProc::ma GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrDistanceFieldPathGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrDistanceFieldPathGeoProc::TestCreate(GrProcessorTestData* d) { auto [view, ct, at] = d->randomAlphaOnlyView(); @@ -865,7 +865,7 @@ std::unique_ptr GrDistanceFieldLCDTextGeoProc: GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrDistanceFieldLCDTextGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrDistanceFieldLCDTextGeoProc::TestCreate(GrProcessorTestData* d) { auto [view, ct, at] = d->randomView(); diff --git a/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.cpp b/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.cpp deleted file mode 100644 index 43195ffaed43..000000000000 --- a/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h" - -#include "include/core/SkMatrix.h" -#include "include/core/SkRect.h" -#include "include/core/SkSamplingOptions.h" -#include "include/private/SkSLSampleUsage.h" -#include "include/private/base/SkAssert.h" -#include "include/private/gpu/ganesh/GrTypesPriv.h" -#include "src/base/SkRandom.h" -#include "src/core/SkSLTypeShared.h" -#include "src/gpu/KeyBuilder.h" -#include "src/gpu/ganesh/GrBlurUtils.h" -#include "src/gpu/ganesh/GrCaps.h" -#include "src/gpu/ganesh/GrShaderCaps.h" -#include "src/gpu/ganesh/GrShaderVar.h" -#include "src/gpu/ganesh/GrSurfaceProxyView.h" -#include "src/gpu/ganesh/effects/GrTextureEffect.h" -#include "src/gpu/ganesh/glsl/GrGLSLFragmentShaderBuilder.h" -#include "src/gpu/ganesh/glsl/GrGLSLProgramDataManager.h" -#include "src/gpu/ganesh/glsl/GrGLSLUniformHandler.h" -#include "src/sksl/SkSLGLSL.h" -#include "src/sksl/SkSLString.h" - -#include -#include -#include -#include - -enum SkAlphaType : int; - -// For brevity -using UniformHandle = GrGLSLProgramDataManager::UniformHandle; -using Direction = GrGaussianConvolutionFragmentProcessor::Direction; - -class GrGaussianConvolutionFragmentProcessor::Impl : public ProgramImpl { -public: - void emitCode(EmitArgs&) override; - -private: - void onSetData(const GrGLSLProgramDataManager&, const GrFragmentProcessor&) override; - - UniformHandle fOffsetsAndKernelUni; - UniformHandle fKernelWidthUni; - UniformHandle fIncrementUni; -}; - -static bool should_use_variable_length_loop(const GrShaderCaps& caps) { - // If we're in reduced-shader mode, and we can use variable length loops, then use a uniform to - // limit the number of iterations, so we don't need a code variation for each width. - return (caps.fGLSLGeneration >= SkSL::GLSLGeneration::k300es && caps.fReducedShaderMode); -} - -void GrGaussianConvolutionFragmentProcessor::Impl::emitCode(EmitArgs& args) { - const GrGaussianConvolutionFragmentProcessor& ce = - args.fFp.cast(); - - GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; - - const char* increment; - fIncrementUni = uniformHandler->addUniform(&ce, kFragment_GrShaderFlag, SkSLType::kHalf2, - "Increment", &increment); - - // For variable-length loops, size the kernel uniform for the maximum width so we can reuse the - // same code for any kernel width. - bool variableLengthLoop = should_use_variable_length_loop(*args.fShaderCaps); - int width = GrBlurUtils::LinearKernelWidth(ce.fRadius); - int arrayCount = variableLengthLoop ? GrBlurUtils::LinearKernelWidth(kMaxKernelRadius) - : width; - - const char* offsetsAndKernel; - fOffsetsAndKernelUni = uniformHandler->addUniformArray(&ce, kFragment_GrShaderFlag, - SkSLType::kHalf2, "OffsetsAndKernel", - arrayCount, &offsetsAndKernel); - - GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; - - // Create a "Smooth" helper function that computes one sample from the child using the kernel. - SkString smoothFuncName = fragBuilder->getMangledFunctionName("Smooth"); - const GrShaderVar smoothArgs[] = {{args.fInputColor, SkSLType::kHalf4}, - {"coord", SkSLType::kFloat2}, - {"offsetAndKernel", SkSLType::kHalf2}}; - - std::string childCoord = SkSL::String::printf("(coord + offsetAndKernel.x * %s)", increment); - SkString sample = this->invokeChild(/*childIndex=*/0, args, childCoord); - - std::string smoothBody = SkSL::String::printf("return %s * offsetAndKernel.y;", sample.c_str()); - fragBuilder->emitFunction(SkSLType::kHalf4, smoothFuncName.c_str(), - {smoothArgs, std::size(smoothArgs)}, - smoothBody.c_str()); - - // Implement the main() function. - fragBuilder->codeAppendf("half4 color = half4(0);" - "float2 coord = %s;", args.fSampleCoord); - if (variableLengthLoop) { - const char* kernelWidth; - fKernelWidthUni = uniformHandler->addUniform(&ce, kFragment_GrShaderFlag, SkSLType::kInt, - "KernelWidth", &kernelWidth); - fragBuilder->codeAppendf("for (int i=0; i<%s; ++i) {" - " color += %s(%s, coord, %s[i]);" - "}", - kernelWidth, smoothFuncName.c_str(), - args.fInputColor, offsetsAndKernel); - } else { - fragBuilder->codeAppendf("for (int i=0; i<%d; ++i) {" - " color += %s(%s, coord, %s[i]);" - "}", - width, smoothFuncName.c_str(), - args.fInputColor, offsetsAndKernel); - } - fragBuilder->codeAppendf("return color;\n"); -} - -void GrGaussianConvolutionFragmentProcessor::Impl::onSetData(const GrGLSLProgramDataManager& pdman, - const GrFragmentProcessor& processor) { - const auto& conv = processor.cast(); - - float increment[2] = {}; - increment[static_cast(conv.fDirection)] = 1; - pdman.set2fv(fIncrementUni, 1, increment); - - int kernelWidth = GrBlurUtils::LinearKernelWidth(conv.fRadius); - SkASSERT(kernelWidth <= kMaxKernelWidth); - pdman.set2fv(fOffsetsAndKernelUni, kernelWidth, conv.fOffsetsAndKernel[0].ptr()); - if (fKernelWidthUni.isValid()) { - pdman.set1i(fKernelWidthUni, kernelWidth); - } -} - -/////////////////////////////////////////////////////////////////////////////// - -std::unique_ptr GrGaussianConvolutionFragmentProcessor::Make( - GrSurfaceProxyView view, - SkAlphaType alphaType, - Direction dir, - int halfWidth, - float gaussianSigma, - GrSamplerState::WrapMode wm, - const SkIRect& subset, - const SkIRect* pixelDomain, - const GrCaps& caps) { - std::unique_ptr child; - bool is_zero_sigma = GrBlurUtils::IsEffectivelyZeroSigma(gaussianSigma); - // We should sample as nearest if there will be no shader to preserve existing behaviour, but - // the linear blur requires a linear sample. - GrSamplerState::Filter filter = is_zero_sigma ? - GrSamplerState::Filter::kNearest : GrSamplerState::Filter::kLinear; - GrSamplerState sampler(wm, filter); - if (is_zero_sigma) { - halfWidth = 0; - } - // It's pretty common to blur a subset of an input texture. In reduced shader mode we always - // apply the wrap mode in the shader. - bool alwaysUseShaderTileMode = caps.reducedShaderMode(); - if (pixelDomain && !alwaysUseShaderTileMode) { - // Inset because we expect to be invoked at pixel centers. - SkRect domain = SkRect::Make(*pixelDomain).makeInset(0.5, 0.5f); - switch (dir) { - case Direction::kX: domain.outset(halfWidth, 0); break; - case Direction::kY: domain.outset(0, halfWidth); break; - } - child = GrTextureEffect::MakeSubset(std::move(view), - alphaType, - SkMatrix::I(), - sampler, - SkRect::Make(subset), - domain, - caps, - GrTextureEffect::kDefaultBorder); - } else { - child = GrTextureEffect::MakeSubset(std::move(view), - alphaType, - SkMatrix::I(), - sampler, - SkRect::Make(subset), - caps, - GrTextureEffect::kDefaultBorder, - alwaysUseShaderTileMode); - } - - if (is_zero_sigma) { - return child; - } - return std::unique_ptr(new GrGaussianConvolutionFragmentProcessor( - std::move(child), dir, halfWidth, gaussianSigma)); -} - -GrGaussianConvolutionFragmentProcessor::GrGaussianConvolutionFragmentProcessor( - std::unique_ptr child, - Direction direction, - int radius, - float gaussianSigma) - : INHERITED(kGrGaussianConvolutionFragmentProcessor_ClassID, - ProcessorOptimizationFlags(child.get())) - , fRadius(radius) - , fDirection(direction) { - this->registerChild(std::move(child), SkSL::SampleUsage::Explicit()); - SkASSERT(radius <= kMaxKernelRadius); - this->setUsesSampleCoordsDirectly(); - - // Assemble a gaussian kernel and offset list. - float kernel[kMaxKernelWidth] = {}; - float offsets[kMaxKernelWidth] = {}; - GrBlurUtils::Compute1DLinearGaussianKernel(kernel, offsets, gaussianSigma, fRadius); - - // Interleave the kernel and offset values into an array of SkV2s. - for (int index = 0; index < kMaxKernelWidth; ++index) { - fOffsetsAndKernel[index] = {offsets[index], kernel[index]}; - } -} - -GrGaussianConvolutionFragmentProcessor::GrGaussianConvolutionFragmentProcessor( - const GrGaussianConvolutionFragmentProcessor& that) - : INHERITED(that) - , fRadius(that.fRadius) - , fDirection(that.fDirection) { - memcpy(fOffsetsAndKernel, that.fOffsetsAndKernel, sizeof(fOffsetsAndKernel)); -} - -void GrGaussianConvolutionFragmentProcessor::onAddToKey(const GrShaderCaps& shaderCaps, - skgpu::KeyBuilder* b) const { - if (!should_use_variable_length_loop(shaderCaps)) { - b->add32(fRadius); - } -} - -std::unique_ptr -GrGaussianConvolutionFragmentProcessor::onMakeProgramImpl() const { - return std::make_unique(); -} - -bool GrGaussianConvolutionFragmentProcessor::onIsEqual(const GrFragmentProcessor& sBase) const { - const auto& that = sBase.cast(); - return fRadius == that.fRadius && fDirection == that.fDirection && - std::equal(fOffsetsAndKernel, - fOffsetsAndKernel + GrBlurUtils::LinearKernelWidth(fRadius), - that.fOffsetsAndKernel); -} - -/////////////////////////////////////////////////////////////////////////////// - -GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrGaussianConvolutionFragmentProcessor) - -#if GR_TEST_UTILS -std::unique_ptr GrGaussianConvolutionFragmentProcessor::TestCreate( - GrProcessorTestData* d) { - auto [view, ct, at] = d->randomView(); - - Direction dir = d->fRandom->nextBool() ? Direction::kY : Direction::kX; - SkIRect subset{ - static_cast(d->fRandom->nextRangeU(0, view.width() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.height() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.width() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.height() - 1)), - }; - subset.sort(); - - auto wm = static_cast( - d->fRandom->nextULessThan(GrSamplerState::kWrapModeCount)); - int radius = d->fRandom->nextRangeU(1, kMaxKernelRadius); - float sigma = radius / 3.f; - SkIRect temp; - SkIRect* domain = nullptr; - if (d->fRandom->nextBool()) { - temp = { - static_cast(d->fRandom->nextRangeU(0, view.width() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.height() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.width() - 1)), - static_cast(d->fRandom->nextRangeU(0, view.height() - 1)), - }; - temp.sort(); - domain = &temp; - } - - return GrGaussianConvolutionFragmentProcessor::Make(std::move(view), at, dir, radius, sigma, wm, - subset, domain, *d->caps()); -} -#endif diff --git a/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h b/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h deleted file mode 100644 index 867804b8dbc6..000000000000 --- a/src/gpu/ganesh/effects/GrGaussianConvolutionFragmentProcessor.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrGaussianConvolutionFragmentProcessor_DEFINED -#define GrGaussianConvolutionFragmentProcessor_DEFINED - -#include "include/core/SkM44.h" -#include "include/core/SkString.h" -#include "src/gpu/ganesh/GrCaps.h" -#include "src/gpu/ganesh/GrFragmentProcessor.h" -#include "src/gpu/ganesh/GrProcessorUnitTest.h" -#include "src/gpu/ganesh/GrSamplerState.h" - -#include - -class GrSurfaceProxyView; -enum SkAlphaType : int; -namespace skgpu { class KeyBuilder; } -struct GrShaderCaps; -struct SkIRect; - -/** - * A 1D Gaussian convolution effect. The kernel is computed as an array of 2 * half-width weights. - * Each texel is multiplied by it's weight and summed to determine the filtered color. The output - * color is set to a modulation of the filtered and input colors. - */ -class GrGaussianConvolutionFragmentProcessor : public GrFragmentProcessor { -public: - enum class Direction { kX, kY }; - - /** - * Convolve with a Gaussian kernel. Bounds limits the coords sampled by the effect along the - * axis indicated by Direction. The WrapMode is applied to the subset. If present, the - * pixelDomain indicates the domain of pixels that this effect will be called with. It should - * not account for outsetting due to the filter radius, this effect will handle that. It is - * assumed that the effect is only invoked at pixel centers within the pixelDomain, the - * effect will optimize for that, and may produce incorrect results if it is not the case. If - * pixelDomain is null then the effect will work correctly with any sample coordinates. - */ - static std::unique_ptr Make(GrSurfaceProxyView, - SkAlphaType, - Direction, - int halfWidth, - float gaussianSigma, - GrSamplerState::WrapMode, - const SkIRect& subset, - const SkIRect* pixelDomain, - const GrCaps&); - - const char* name() const override { return "GaussianConvolution"; } - - std::unique_ptr clone() const override { - return std::unique_ptr( - new GrGaussianConvolutionFragmentProcessor(*this)); - } - - // This was decided based on the min allowed value for the max texture - // samples per fragment program run in DX9SM2 (32). A sigma param of 4.0 - // on a blur filter gives a kernel width of 25 while a sigma of 5.0 - // would exceed a 32 wide kernel. - inline static constexpr int kMaxKernelRadius = 12; - -private: - class Impl; - - GrGaussianConvolutionFragmentProcessor(std::unique_ptr, - Direction, - int halfWidth, - float gaussianSigma); - - explicit GrGaussianConvolutionFragmentProcessor(const GrGaussianConvolutionFragmentProcessor&); - -#if GR_TEST_UTILS - SkString onDumpInfo() const override { - return SkStringPrintf("(dir=%s, radius=%d)", - Direction::kX == fDirection ? "X" : "Y", fRadius); - } -#endif - - std::unique_ptr onMakeProgramImpl() const override; - - void onAddToKey(const GrShaderCaps&, skgpu::KeyBuilder*) const override; - - bool onIsEqual(const GrFragmentProcessor&) const override; - - GR_DECLARE_FRAGMENT_PROCESSOR_TEST - - inline static const constexpr int kMaxKernelWidth = kMaxKernelRadius + 1; - - SkV2 fOffsetsAndKernel[kMaxKernelWidth]; - int fRadius; - Direction fDirection; - - using INHERITED = GrFragmentProcessor; -}; - -#endif diff --git a/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.cpp deleted file mode 100644 index 3052b00c2bc8..000000000000 --- a/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.cpp +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright 2014 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h" - -#include "include/core/SkAlphaType.h" -#include "include/core/SkBitmap.h" -#include "include/core/SkColorType.h" -#include "include/core/SkImageInfo.h" -#include "include/core/SkMatrix.h" -#include "include/core/SkRect.h" -#include "include/core/SkSamplingOptions.h" -#include "include/core/SkString.h" -#include "include/gpu/GpuTypes.h" -#include "include/gpu/GrBackendSurface.h" -#include "include/gpu/GrRecordingContext.h" -#include "include/gpu/GrTypes.h" -#include "include/private/SkSLSampleUsage.h" -#include "include/private/gpu/ganesh/GrTypesPriv.h" -#include "src/base/SkHalf.h" -#include "src/base/SkRandom.h" -#include "src/core/SkSLTypeShared.h" -#include "src/gpu/KeyBuilder.h" -#include "src/gpu/ResourceKey.h" -#include "src/gpu/ganesh/GrRecordingContextPriv.h" -#include "src/gpu/ganesh/GrSurfaceProxyView.h" -#include "src/gpu/ganesh/GrThreadSafeCache.h" -#include "src/gpu/ganesh/SkGr.h" -#include "src/gpu/ganesh/effects/GrTextureEffect.h" -#include "src/gpu/ganesh/glsl/GrGLSLFragmentShaderBuilder.h" -#include "src/gpu/ganesh/glsl/GrGLSLProgramDataManager.h" -#include "src/gpu/ganesh/glsl/GrGLSLShaderBuilder.h" -#include "src/gpu/ganesh/glsl/GrGLSLUniformHandler.h" - -#include -#include -#include -#include - -class GrCaps; -struct GrShaderCaps; - -class GrMatrixConvolutionEffect::Impl : public ProgramImpl { -public: - void emitCode(EmitArgs&) override; - -private: - void onSetData(const GrGLSLProgramDataManager&, const GrFragmentProcessor&) override; - - typedef GrGLSLProgramDataManager::UniformHandle UniformHandle; - - void emitKernelBlock(EmitArgs&, SkIPoint); - - UniformHandle fKernelUni; - UniformHandle fKernelOffsetUni; - UniformHandle fGainUni; - UniformHandle fBiasUni; - UniformHandle fKernelBiasUni; - - using INHERITED = ProgramImpl; -}; - -GrMatrixConvolutionEffect::KernelWrapper::MakeResult -GrMatrixConvolutionEffect::KernelWrapper::Make(GrRecordingContext* rContext, - SkISize size, - const GrCaps& caps, - const SkScalar* values) { - if (!rContext || !values || size.isEmpty()) { - return {}; - } - - const int length = size.area(); - // Small kernel -> just fill the array. - KernelWrapper result(size); - if (length <= kMaxUniformSize) { - for (int i = 0; i < length; i++) { - result.fArray[i] = SkScalarToFloat(values[i]); - } - return {result, nullptr}; - } - - BiasAndGain& scalableSampler = result.fBiasAndGain; - bool useA16 = - rContext->defaultBackendFormat(kA16_float_SkColorType, GrRenderable::kNo).isValid(); - SkScalar min = values[0]; - if (!useA16) { - // Determine min and max values to figure out inner gain & bias. - SkScalar max = values[0]; - for (int i = 1; i < length; i++) { - if (values[i] < min) { - min = values[i]; - } - if (values[i] > max) { - max = values[i]; - } - } - // Treat near-0 gain (i.e. box blur) as 1, and let the kernelBias - // move everything up to the final value. - const SkScalar computedGain = max - min; - scalableSampler.fGain = - SkScalarNearlyZero(computedGain) ? 1.0f : SkScalarToFloat(computedGain); - // Inner bias is pre-inner-gain so we divide that out. - scalableSampler.fBias = SkScalarToFloat(min) / scalableSampler.fGain; - } - - // TODO: Pick cache or dont-cache based on observed perf. - static constexpr bool kCacheKernelTexture = true; - - skgpu::UniqueKey key; - if (kCacheKernelTexture) { - static const skgpu::UniqueKey::Domain kDomain = skgpu::UniqueKey::GenerateDomain(); - skgpu::UniqueKey::Builder builder(&key, kDomain, length, "Matrix Convolution Kernel"); - // Texture cache key is the exact content of the kernel. - static_assert(sizeof(float) == 4); - for (int i = 0; i < length; i++) { - builder[i] = *(const uint32_t*)&values[i]; - } - builder.finish(); - } - - // Find or create a texture. - auto threadSafeCache = rContext->priv().threadSafeCache(); - - SkColorType colorType = useA16 ? kA16_float_SkColorType : kAlpha_8_SkColorType; - - GrSurfaceProxyView view; - if (kCacheKernelTexture && (view = threadSafeCache->find(key))) { - SkASSERT(view.origin() == kTopLeft_GrSurfaceOrigin); - auto kernelFP = GrTextureEffect::Make(std::move(view), kUnknown_SkAlphaType); - return {result, std::move(kernelFP)}; - } - - SkBitmap bm; - auto info = SkImageInfo::Make({length, 1}, colorType, kPremul_SkAlphaType); - if (!bm.tryAllocPixels(info)) { - return {}; - } - for (int i = 0; i < length; i++) { - if (useA16) { - *bm.getAddr16(i, 0) = SkFloatToHalf(values[i]); - } else { - *bm.getAddr8(i, 0) = - SkScalarRoundToInt((values[i] - min) / scalableSampler.fGain * 255); - } - } - bm.setImmutable(); - - view = std::get<0>(GrMakeUncachedBitmapProxyView(rContext, bm)); - if (!view) { - return {}; - } - - if (kCacheKernelTexture) { - view = threadSafeCache->add(key, view); - } - - SkASSERT(view.origin() == kTopLeft_GrSurfaceOrigin); - auto kernelFP = GrTextureEffect::Make(std::move(view), kUnknown_SkAlphaType); - return {result, std::move(kernelFP)}; -} - -bool GrMatrixConvolutionEffect::KernelWrapper::operator==(const KernelWrapper& k) const { - if (fSize != k.fSize) { - return false; - } else if (this->isSampled()) { - return fBiasAndGain == k.fBiasAndGain; - } else { - return std::equal(fArray.begin(), fArray.begin() + fSize.area(), k.fArray.begin()); - } -} - -bool GrMatrixConvolutionEffect::KernelWrapper::BiasAndGain::operator==( - const BiasAndGain& k) const { - return fGain == k.fGain && fBias == k.fBias; -} - -// For sampled kernels, emit a for loop that does all the kernel accumulation. -// For uniform kernels, emit a single iteration. Function is called repeatedly in a for loop. -// loc is ignored for sampled kernels. -void GrMatrixConvolutionEffect::Impl::emitKernelBlock(EmitArgs& args, SkIPoint loc) { - const GrMatrixConvolutionEffect& mce = args.fFp.cast(); - GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; - GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; - int kernelWidth = mce.fKernel.size().width(); - int kernelHeight = mce.fKernel.size().height(); - int kernelArea = kernelWidth * kernelHeight; - - if (mce.fKernel.isSampled()) { - fragBuilder->codeAppendf("for (int i = 0; i < %d; ++i)", (int)kernelArea); - } - - GrGLSLShaderBuilder::ShaderBlock block(fragBuilder); - - fragBuilder->codeAppend("half k;"); - fragBuilder->codeAppend("half2 sourceOffset;"); - if (mce.fKernel.isSampled()) { - const char* kernelBias = uniformHandler->getUniformCStr(fKernelBiasUni); - SkString kernelSample = this->invokeChild(1, args, "float2(float(i) + 0.5, 0.5)"); - fragBuilder->codeAppendf("k = %s.w + %s;", kernelSample.c_str(), kernelBias); - fragBuilder->codeAppendf("sourceOffset.y = floor(half(i) / %d);", kernelWidth); - fragBuilder->codeAppendf("sourceOffset.x = half(i) - sourceOffset.y * %d;", kernelWidth); - } else { - fragBuilder->codeAppendf("sourceOffset = half2(%d, %d);", loc.x(), loc.y()); - int offset = loc.y() * kernelWidth + loc.x(); - const char* kernel = uniformHandler->getUniformCStr(fKernelUni); - fragBuilder->codeAppendf("k = %s[%d][%d];", kernel, offset / 4, offset & 0x3); - } - - auto sample = this->invokeChild(0, args, "coord + sourceOffset"); - fragBuilder->codeAppendf("half4 c = %s;", sample.c_str()); - if (!mce.fConvolveAlpha) { - fragBuilder->codeAppend("c = unpremul(c);"); - fragBuilder->codeAppend("c.rgb = saturate(c.rgb);"); - } - fragBuilder->codeAppend("sum += c * k;"); -} - -void GrMatrixConvolutionEffect::Impl::emitCode(EmitArgs& args) { - const GrMatrixConvolutionEffect& mce = args.fFp.cast(); - - int kernelWidth = mce.fKernel.size().width(); - int kernelHeight = mce.fKernel.size().height(); - - int arrayCount = (kernelWidth * kernelHeight + 3) / 4; - SkASSERT(4 * arrayCount >= kernelWidth * kernelHeight); - - GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; - if (mce.fKernel.isSampled()) { - fKernelBiasUni = uniformHandler->addUniform(&mce, kFragment_GrShaderFlag, - SkSLType::kHalf, "KernelBias"); - } else { - fKernelUni = uniformHandler->addUniformArray(&mce, kFragment_GrShaderFlag, - SkSLType::kHalf4, "Kernel", arrayCount); - } - fKernelOffsetUni = uniformHandler->addUniform(&mce, kFragment_GrShaderFlag, SkSLType::kHalf2, - "KernelOffset"); - fGainUni = uniformHandler->addUniform(&mce, kFragment_GrShaderFlag, SkSLType::kHalf, "Gain"); - fBiasUni = uniformHandler->addUniform(&mce, kFragment_GrShaderFlag, SkSLType::kHalf, "Bias"); - - const char* kernelOffset = uniformHandler->getUniformCStr(fKernelOffsetUni); - const char* gain = uniformHandler->getUniformCStr(fGainUni); - const char* bias = uniformHandler->getUniformCStr(fBiasUni); - - GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; - fragBuilder->codeAppend("half4 sum = half4(0);"); - fragBuilder->codeAppendf("float2 coord = %s - %s;", args.fSampleCoord, kernelOffset); - - if (mce.fKernel.isSampled()) { - this->emitKernelBlock(args, {}); - } else { - for (int x = 0; x < kernelWidth; ++x) { - for (int y = 0; y < kernelHeight; ++y) { - this->emitKernelBlock(args, SkIPoint::Make(x, y)); - } - } - } - - fragBuilder->codeAppendf("half4 color;"); - if (mce.fConvolveAlpha) { - fragBuilder->codeAppendf("color = sum * %s + %s;", gain, bias); - fragBuilder->codeAppendf("color.a = saturate(color.a);"); - fragBuilder->codeAppendf("color.rgb = clamp(color.rgb, 0.0, color.a);"); - } else { - auto sample = this->invokeChild(0, args); - fragBuilder->codeAppendf("half4 c = %s;", sample.c_str()); - fragBuilder->codeAppendf("color.a = c.a;"); - fragBuilder->codeAppendf("color.rgb = saturate(sum.rgb * %s + %s);", gain, bias); - fragBuilder->codeAppendf("color.rgb *= color.a;"); - } - fragBuilder->codeAppendf("return color;"); -} - -void GrMatrixConvolutionEffect::Impl::onSetData(const GrGLSLProgramDataManager& pdman, - const GrFragmentProcessor& processor) { - const GrMatrixConvolutionEffect& conv = processor.cast(); - pdman.set2f(fKernelOffsetUni, conv.fKernelOffset.fX, conv.fKernelOffset.fY); - float totalGain = conv.fGain; - if (conv.fKernel.isSampled()) { - totalGain *= conv.fKernel.biasAndGain().fGain; - pdman.set1f(fKernelBiasUni, conv.fKernel.biasAndGain().fBias); - } else { - int kernelCount = conv.fKernel.size().area(); - int arrayCount = (kernelCount + 3) / 4; - SkASSERT(4 * arrayCount >= kernelCount); - pdman.set4fv(fKernelUni, arrayCount, conv.fKernel.array().data()); - } - pdman.set1f(fBiasUni, conv.fBias); - pdman.set1f(fGainUni, totalGain); -} - -GrMatrixConvolutionEffect::GrMatrixConvolutionEffect(std::unique_ptr child, - const KernelWrapper& kernel, - std::unique_ptr kernelFP, - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - bool convolveAlpha) - // To advertise either the modulation or opaqueness optimizations we'd have to examine the - // parameters. - : INHERITED(kGrMatrixConvolutionEffect_ClassID, kNone_OptimizationFlags) - , fKernel(kernel) - , fGain(SkScalarToFloat(gain)) - , fBias(SkScalarToFloat(bias) / 255.0f) - , fConvolveAlpha(convolveAlpha) { - this->registerChild(std::move(child), SkSL::SampleUsage::Explicit()); - this->registerChild(std::move(kernelFP), SkSL::SampleUsage::Explicit()); - fKernelOffset = {static_cast(kernelOffset.x()), - static_cast(kernelOffset.y())}; - this->setUsesSampleCoordsDirectly(); -} - -GrMatrixConvolutionEffect::GrMatrixConvolutionEffect(const GrMatrixConvolutionEffect& that) - : INHERITED(that) - , fKernel(that.fKernel) - , fGain(that.fGain) - , fBias(that.fBias) - , fKernelOffset(that.fKernelOffset) - , fConvolveAlpha(that.fConvolveAlpha) {} - -std::unique_ptr GrMatrixConvolutionEffect::clone() const { - return std::unique_ptr(new GrMatrixConvolutionEffect(*this)); -} - -void GrMatrixConvolutionEffect::onAddToKey(const GrShaderCaps& caps, - skgpu::KeyBuilder* b) const { - SkASSERT(this->fKernel.size().width() <= 0x7FFF && this->fKernel.size().height() <= 0xFFFF); - uint32_t key = this->fKernel.size().width() << 16 | this->fKernel.size().height(); - key |= fConvolveAlpha ? 1U << 31 : 0; - b->add32(key); -} - -std::unique_ptr -GrMatrixConvolutionEffect::onMakeProgramImpl() const { - return std::make_unique(); -} - -bool GrMatrixConvolutionEffect::onIsEqual(const GrFragmentProcessor& sBase) const { - const GrMatrixConvolutionEffect& s = sBase.cast(); - return fKernel == s.fKernel && - fGain == s.fGain && - fBias == s.fBias && - fKernelOffset == s.fKernelOffset && - fConvolveAlpha == s.fConvolveAlpha; -} - -std::unique_ptr GrMatrixConvolutionEffect::Make(GrRecordingContext* context, - GrSurfaceProxyView srcView, - const SkIRect& srcBounds, - const SkISize& kernelSize, - const SkScalar* kernel, - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - GrSamplerState::WrapMode wm, - bool convolveAlpha, - const GrCaps& caps) { - auto [kernelWrapper, kernelFP] = KernelWrapper::Make(context, kernelSize, caps, kernel); - if (!kernelWrapper.isValid()) { - return nullptr; - } - GrSamplerState sampler(wm, GrSamplerState::Filter::kNearest); - auto child = GrTextureEffect::MakeSubset(std::move(srcView), kPremul_SkAlphaType, SkMatrix::I(), - sampler, SkRect::Make(srcBounds), caps); - return std::unique_ptr( - new GrMatrixConvolutionEffect(std::move(child), kernelWrapper, std::move(kernelFP), - gain, bias, kernelOffset, convolveAlpha)); -} - -GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrMatrixConvolutionEffect) - -#if GR_TEST_UTILS -std::unique_ptr GrMatrixConvolutionEffect::TestCreate(GrProcessorTestData* d) { - auto [view, ct, at] = d->randomView(); - - static constexpr size_t kMaxTestKernelSize = 2 * kMaxUniformSize; - int width = d->fRandom->nextRangeU(1, kMaxTestKernelSize); - int height = d->fRandom->nextRangeU(1, kMaxTestKernelSize / width); - SkISize kernelSize = SkISize::Make(width, height); - std::unique_ptr kernel(new SkScalar[width * height]); - for (int i = 0; i < width * height; i++) { - kernel.get()[i] = d->fRandom->nextSScalar1(); - } - SkScalar gain = d->fRandom->nextSScalar1(); - SkScalar bias = d->fRandom->nextSScalar1(); - - uint32_t kernalOffsetX = d->fRandom->nextRangeU(0, kernelSize.width()); - uint32_t kernalOffsetY = d->fRandom->nextRangeU(0, kernelSize.height()); - SkIPoint kernelOffset = SkIPoint::Make(kernalOffsetX, kernalOffsetY); - - uint32_t boundsX = d->fRandom->nextRangeU(0, view.width()); - uint32_t boundsY = d->fRandom->nextRangeU(0, view.height()); - uint32_t boundsW = d->fRandom->nextRangeU(0, view.width()); - uint32_t boundsH = d->fRandom->nextRangeU(0, view.height()); - SkIRect bounds = SkIRect::MakeXYWH(boundsX, boundsY, boundsW, boundsH); - - auto wm = static_cast( - d->fRandom->nextULessThan(GrSamplerState::kWrapModeCount)); - bool convolveAlpha = d->fRandom->nextBool(); - return GrMatrixConvolutionEffect::Make(d->context(), - std::move(view), - bounds, - kernelSize, - kernel.get(), - gain, - bias, - kernelOffset, - wm, - convolveAlpha, - *d->caps()); -} -#endif diff --git a/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h b/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h deleted file mode 100644 index b0654d4fe2e5..000000000000 --- a/src/gpu/ganesh/effects/GrMatrixConvolutionEffect.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2014 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrMatrixConvolutionEffect_DEFINED -#define GrMatrixConvolutionEffect_DEFINED - -#include "include/core/SkPoint.h" -#include "include/core/SkScalar.h" -#include "include/core/SkSize.h" -#include "include/private/base/SkAssert.h" -#include "src/gpu/ganesh/GrFragmentProcessor.h" -#include "src/gpu/ganesh/GrProcessorUnitTest.h" -#include "src/gpu/ganesh/GrSamplerState.h" - -#include -#include -#include -#include - -class GrCaps; -class GrRecordingContext; -class GrSurfaceProxyView; -namespace skgpu { class KeyBuilder; } -struct GrShaderCaps; -struct SkIRect; - -class GrMatrixConvolutionEffect : public GrFragmentProcessor { -public: - // A little bit less than the minimum # uniforms required by DX9SM2 (32). - // Allows for a 5x5 kernel (or 28x1, for that matter). - // Must be a multiple of 4, since we upload these in vec4s. - inline static constexpr int kMaxUniformSize = 28; - - static std::unique_ptr Make(GrRecordingContext*, - GrSurfaceProxyView srcView, - const SkIRect& srcBounds, - const SkISize& kernelSize, - const SkScalar* kernel, - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - GrSamplerState::WrapMode, - bool convolveAlpha, - const GrCaps&); - - const char* name() const override { return "MatrixConvolution"; } - - std::unique_ptr clone() const override; - -private: - class Impl; - - /** - * Small kernels are represented as float-arrays and uploaded as uniforms. - * Large kernels go over the uniform limit and are uploaded as textures and sampled. - * If Float16 textures are supported, we use those. Otherwise we use A8. - */ - class KernelWrapper { - public: - struct BiasAndGain { - // Only used in A8 mode. Applied before any other math. - float fBias; - // Only used in A8 mode. Premultiplied in with user gain to save time. - float fGain; - bool operator==(const BiasAndGain&) const; - }; - using MakeResult = std::tuple>; - static MakeResult Make(GrRecordingContext*, SkISize, const GrCaps&, const float* values); - - KernelWrapper() = default; - KernelWrapper(const KernelWrapper& that) : fSize(that.fSize) { - if (that.isSampled()) { - fBiasAndGain = that.fBiasAndGain; - } else { - new (&fArray) std::array(that.fArray); - } - } - - bool isValid() const { return !fSize.isEmpty(); } - SkISize size() const { return fSize; } - bool isSampled() const { return fSize.area() > kMaxUniformSize; } - const std::array& array() const { - SkASSERT(!this->isSampled()); - return fArray; - } - const BiasAndGain& biasAndGain() const { - SkASSERT(this->isSampled()); - return fBiasAndGain; - } - bool operator==(const KernelWrapper&) const; - - private: - KernelWrapper(SkISize size) : fSize(size) { - if (this->isSampled()) { - fBiasAndGain = {0.f , 1.f}; - } - } - - SkISize fSize = {}; - union { - std::array fArray; - BiasAndGain fBiasAndGain; - }; - }; - - GrMatrixConvolutionEffect(std::unique_ptr child, - const KernelWrapper& kernel, - std::unique_ptr kernelFP, - SkScalar gain, - SkScalar bias, - const SkIPoint& kernelOffset, - bool convolveAlpha); - - explicit GrMatrixConvolutionEffect(const GrMatrixConvolutionEffect&); - - std::unique_ptr onMakeProgramImpl() const override; - - void onAddToKey(const GrShaderCaps&, skgpu::KeyBuilder*) const override; - - bool onIsEqual(const GrFragmentProcessor&) const override; - - KernelWrapper fKernel; - float fGain; - float fBias; - SkVector fKernelOffset; - bool fConvolveAlpha; - - GR_DECLARE_FRAGMENT_PROCESSOR_TEST - - using INHERITED = GrFragmentProcessor; -}; - -#endif diff --git a/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp b/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp index 394f3a48dc8c..f49ac28e7e9d 100644 --- a/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp +++ b/src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp @@ -33,7 +33,7 @@ class SkShader; ///////////////////////////////////////////////////////////////////// GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrPerlinNoise2Effect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr GrPerlinNoise2Effect::TestCreate(GrProcessorTestData* d) { int numOctaves = d->fRandom->nextRangeU(2, 10); bool stitchTiles = d->fRandom->nextBool(); diff --git a/src/gpu/ganesh/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/ganesh/effects/GrPorterDuffXferProcessor.cpp index 898c5c9a5867..970db18991e1 100644 --- a/src/gpu/ganesh/effects/GrPorterDuffXferProcessor.cpp +++ b/src/gpu/ganesh/effects/GrPorterDuffXferProcessor.cpp @@ -466,7 +466,7 @@ GrXPFactory::AnalysisProperties GrPorterDuffXPFactory::analysisProperties( GR_DEFINE_XP_FACTORY_TEST(GrPorterDuffXPFactory) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const GrXPFactory* GrPorterDuffXPFactory::TestGet(GrProcessorTestData* d) { SkBlendMode mode = SkBlendMode(d->fRandom->nextULessThan((int)SkBlendMode::kLastCoeffMode)); return GrPorterDuffXPFactory::Get(mode); diff --git a/src/gpu/ganesh/effects/GrRRectEffect.cpp b/src/gpu/ganesh/effects/GrRRectEffect.cpp index ac92f8243f36..684686f44e6e 100644 --- a/src/gpu/ganesh/effects/GrRRectEffect.cpp +++ b/src/gpu/ganesh/effects/GrRRectEffect.cpp @@ -135,7 +135,7 @@ bool CircularRRectEffect::onIsEqual(const GrFragmentProcessor& other) const { GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircularRRectEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr CircularRRectEffect::TestCreate(GrProcessorTestData* d) { SkScalar w = d->fRandom->nextRangeScalar(20.f, 1000.f); SkScalar h = d->fRandom->nextRangeScalar(20.f, 1000.f); @@ -469,7 +469,7 @@ bool EllipticalRRectEffect::onIsEqual(const GrFragmentProcessor& other) const { GR_DEFINE_FRAGMENT_PROCESSOR_TEST(EllipticalRRectEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr EllipticalRRectEffect::TestCreate(GrProcessorTestData* d) { SkScalar w = d->fRandom->nextRangeScalar(20.f, 1000.f); SkScalar h = d->fRandom->nextRangeScalar(20.f, 1000.f); diff --git a/src/gpu/ganesh/effects/GrShadowGeoProc.cpp b/src/gpu/ganesh/effects/GrShadowGeoProc.cpp index 47df9de56368..63522072dda6 100644 --- a/src/gpu/ganesh/effects/GrShadowGeoProc.cpp +++ b/src/gpu/ganesh/effects/GrShadowGeoProc.cpp @@ -81,7 +81,7 @@ std::unique_ptr GrRRectShadowGeoProc::makeProg GR_DEFINE_GEOMETRY_PROCESSOR_TEST(GrRRectShadowGeoProc) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* GrRRectShadowGeoProc::TestCreate(GrProcessorTestData* d) { auto [view, ct, at] = d->randomAlphaOnlyView(); diff --git a/src/gpu/ganesh/effects/GrSkSLFP.cpp b/src/gpu/ganesh/effects/GrSkSLFP.cpp index 0522d35c60e3..2f874fafb855 100644 --- a/src/gpu/ganesh/effects/GrSkSLFP.cpp +++ b/src/gpu/ganesh/effects/GrSkSLFP.cpp @@ -497,7 +497,7 @@ SkPMColor4f GrSkSLFP::constantOutputForConstantInput(const SkPMColor4f& inputCol GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSkSLFP) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr GrSkSLFP::TestCreate(GrProcessorTestData* d) { SkColor colors[SkOverdrawColorFilter::kNumColors]; diff --git a/src/gpu/ganesh/effects/GrSkSLFP.h b/src/gpu/ganesh/effects/GrSkSLFP.h index cbf792c1aa31..e72c4330221a 100644 --- a/src/gpu/ganesh/effects/GrSkSLFP.h +++ b/src/gpu/ganesh/effects/GrSkSLFP.h @@ -32,6 +32,7 @@ class SkData; class SkM44; namespace skgpu { class KeyBuilder; } struct GrShaderCaps; +struct SkISize; struct SkRect; struct SkV2; struct SkV4; @@ -60,6 +61,7 @@ UNIFORM_TYPE(kFloat4, SkV4); UNIFORM_TYPE(kFloat4, skvx::Vec<4, float>); UNIFORM_TYPE(kFloat4x4, SkM44); UNIFORM_TYPE(kInt, int); +UNIFORM_TYPE(kInt2, SkISize); #undef UNIFORM_TYPE #endif diff --git a/src/gpu/ganesh/effects/GrTextureEffect.cpp b/src/gpu/ganesh/effects/GrTextureEffect.cpp index 36b3f8988253..99d25e92ba89 100644 --- a/src/gpu/ganesh/effects/GrTextureEffect.cpp +++ b/src/gpu/ganesh/effects/GrTextureEffect.cpp @@ -851,7 +851,7 @@ std::unique_ptr GrTextureEffect::clone() const { } GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrTextureEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr GrTextureEffect::TestCreate(GrProcessorTestData* testData) { auto [view, ct, at] = testData->randomView(); Wrap wrapModes[2]; diff --git a/src/gpu/ganesh/effects/GrYUVtoRGBEffect.cpp b/src/gpu/ganesh/effects/GrYUVtoRGBEffect.cpp index 92aea1717c97..66360330a3aa 100644 --- a/src/gpu/ganesh/effects/GrYUVtoRGBEffect.cpp +++ b/src/gpu/ganesh/effects/GrYUVtoRGBEffect.cpp @@ -247,7 +247,7 @@ GrYUVtoRGBEffect::GrYUVtoRGBEffect(std::unique_ptr planeFPs } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString GrYUVtoRGBEffect::onDumpInfo() const { SkString str("("); for (int i = 0; i < SkYUVAInfo::kYUVAChannelCount; ++i) { diff --git a/src/gpu/ganesh/effects/GrYUVtoRGBEffect.h b/src/gpu/ganesh/effects/GrYUVtoRGBEffect.h index 77afd9932739..35ec9b538b8b 100644 --- a/src/gpu/ganesh/effects/GrYUVtoRGBEffect.h +++ b/src/gpu/ganesh/effects/GrYUVtoRGBEffect.h @@ -46,7 +46,7 @@ class GrYUVtoRGBEffect : public GrFragmentProcessor { GrYUVtoRGBEffect(const GrYUVtoRGBEffect& src); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override; #endif diff --git a/src/gpu/ganesh/geometry/GrTriangulator.cpp b/src/gpu/ganesh/geometry/GrTriangulator.cpp index 441881554e0f..bb6a238cd6e6 100644 --- a/src/gpu/ganesh/geometry/GrTriangulator.cpp +++ b/src/gpu/ganesh/geometry/GrTriangulator.cpp @@ -768,6 +768,9 @@ static bool rewind_if_necessary(Edge* edge, EdgeList* activeEdges, Vertex** curr if (!activeEdges || !current) { return true; } + if (!edge) { + return false; + } Vertex* top = edge->fTop; Vertex* bottom = edge->fBottom; if (edge->fLeft) { @@ -853,6 +856,9 @@ bool GrTriangulator::setBottom(Edge* edge, Vertex* v, EdgeList* activeEdges, Ver bool GrTriangulator::mergeEdgesAbove(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current, const Comparator& c) const { + if (!edge || !other) { + return false; + } if (coincident(edge->fTop->fPoint, other->fTop->fPoint)) { TESS_LOG("merging coincident above edges (%g, %g) -> (%g, %g)\n", edge->fTop->fPoint.fX, edge->fTop->fPoint.fY, @@ -885,6 +891,9 @@ bool GrTriangulator::mergeEdgesAbove(Edge* edge, Edge* other, EdgeList* activeEd bool GrTriangulator::mergeEdgesBelow(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current, const Comparator& c) const { + if (!edge || !other) { + return false; + } if (coincident(edge->fBottom->fPoint, other->fBottom->fPoint)) { TESS_LOG("merging coincident below edges (%g, %g) -> (%g, %g)\n", edge->fTop->fPoint.fX, edge->fTop->fPoint.fY, diff --git a/src/gpu/ganesh/gl/AHardwareBufferGL.cpp b/src/gpu/ganesh/gl/AHardwareBufferGL.cpp index 2489c3004891..8d555fc24590 100644 --- a/src/gpu/ganesh/gl/AHardwareBufferGL.cpp +++ b/src/gpu/ganesh/gl/AHardwareBufferGL.cpp @@ -167,6 +167,7 @@ static GrBackendTexture make_gl_backend_texture( SkASSERT(backendFormat.isValid()); textureInfo.fTarget = target; textureInfo.fFormat = GrBackendFormats::AsGLFormatEnum(backendFormat); + textureInfo.fProtected = skgpu::Protected(isProtectedContent); *deleteProc = delete_gl_texture; *updateProc = update_gl_texture; diff --git a/src/gpu/ganesh/gl/GrGLAssembleGLESInterfaceAutogen.cpp b/src/gpu/ganesh/gl/GrGLAssembleGLESInterfaceAutogen.cpp index ec8ca38dddd5..4f1e1d18079e 100644 --- a/src/gpu/ganesh/gl/GrGLAssembleGLESInterfaceAutogen.cpp +++ b/src/gpu/ganesh/gl/GrGLAssembleGLESInterfaceAutogen.cpp @@ -432,7 +432,7 @@ sk_sp GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc } if (glVer >= GR_GL_VER(3,0)) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GET_PROC(BeginQuery); GET_PROC(DeleteQueries); GET_PROC(EndQuery); @@ -441,7 +441,7 @@ sk_sp GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc GET_PROC(GetQueryiv); #endif } else if (extensions.has("GL_EXT_occlusion_query_boolean")) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GET_PROC_SUFFIX(BeginQuery, EXT); GET_PROC_SUFFIX(DeleteQueries, EXT); GET_PROC_SUFFIX(EndQuery, EXT); diff --git a/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutogen.cpp b/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutogen.cpp index a80519d34d2b..bbc15630d119 100644 --- a/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutogen.cpp +++ b/src/gpu/ganesh/gl/GrGLAssembleGLInterfaceAutogen.cpp @@ -438,7 +438,7 @@ sk_sp GrGLMakeAssembledGLInterface(void *ctx, GrGLGetProc g GET_PROC(GetQueryObjectiv); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GET_PROC(BeginQuery); GET_PROC(DeleteQueries); GET_PROC(EndQuery); diff --git a/src/gpu/ganesh/gl/GrGLBackendSurface.cpp b/src/gpu/ganesh/gl/GrGLBackendSurface.cpp index 59922d55906b..748f764b3f04 100644 --- a/src/gpu/ganesh/gl/GrGLBackendSurface.cpp +++ b/src/gpu/ganesh/gl/GrGLBackendSurface.cpp @@ -12,9 +12,9 @@ #include "include/gpu/GrTypes.h" #include "include/gpu/gl/GrGLTypes.h" #include "include/private/base/SkAssert.h" -#include "include/private/base/SkTo.h" #include "include/private/gpu/ganesh/GrGLTypesPriv.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" +#include "src/gpu/MutableTextureStateRef.h" // IWYU pragma: keep #include "src/gpu/ganesh/GrBackendSurfacePriv.h" #include "src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h" #include "src/gpu/ganesh/gl/GrGLDefines.h" @@ -23,9 +23,7 @@ #include #include #include -#include #include -#include class GrGLBackendFormatData final : public GrBackendFormatData { public: @@ -73,14 +71,16 @@ class GrGLBackendFormatData final : public GrBackendFormatData { } std::string toString() const override { -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) return GrGLFormatToStr(fGLFormat); #else return ""; #endif } - GrBackendFormatData* copy() const override { return new GrGLBackendFormatData(fGLFormat); } + void copyTo(AnyFormatData& formatData) const override { + formatData.emplace(fGLFormat); + } #if defined(SK_DEBUG) GrBackendApi type() const override { return GrBackendApi::kOpenGL; } @@ -112,10 +112,8 @@ static const GrGLBackendFormatData* get_and_cast_data(const GrBackendFormat& for namespace GrBackendFormats { GrBackendFormat MakeGL(GrGLenum format, GrGLenum target) { - auto newData = std::make_unique(format); - return GrBackendSurfacePriv::MakeGrBackendFormat( - gl_target_to_gr_target(target), GrBackendApi::kOpenGL, std::move(newData)); + gl_target_to_gr_target(target), GrBackendApi::kOpenGL, GrGLBackendFormatData(format)); } GrGLFormat AsGLFormat(const GrBackendFormat& format) { @@ -141,8 +139,8 @@ GrGLBackendTextureData::GrGLBackendTextureData(const GrGLTextureInfo& info, sk_sp params) : fGLInfo(info, params) {} -GrBackendTextureData* GrGLBackendTextureData::copy() const { - return new GrGLBackendTextureData(fGLInfo.info(), fGLInfo.refParameters()); +void GrGLBackendTextureData::copyTo(AnyTextureData& textureData) const { + textureData.emplace(fGLInfo.info(), fGLInfo.refParameters()); } bool GrGLBackendTextureData::isProtected() const { return fGLInfo.isProtected(); } @@ -167,10 +165,10 @@ GrBackendFormat GrGLBackendTextureData::getBackendFormat() const { return GrBackendFormats::MakeGL(fGLInfo.info().fFormat, fGLInfo.info().fTarget); } -static GrGLBackendTextureData* get_and_cast_data(const GrBackendTexture& texture) { +static const GrGLBackendTextureData* get_and_cast_data(const GrBackendTexture& texture) { auto data = GrBackendSurfacePriv::GetBackendData(texture); SkASSERT(!data || data->type() == GrBackendApi::kOpenGL); - return static_cast(data); + return static_cast(data); } static GrGLBackendTextureData* get_and_cast_data(GrBackendTexture* texture) { @@ -185,15 +183,14 @@ GrBackendTexture MakeGL(int width, skgpu::Mipmapped mipped, const GrGLTextureInfo& glInfo, std::string_view label) { - auto newData = - std::make_unique(glInfo, sk_make_sp()); - auto tex = GrBackendSurfacePriv::MakeGrBackendTexture(width, - height, - label, - mipped, - GrBackendApi::kOpenGL, - gl_target_to_gr_target(glInfo.fTarget), - std::move(newData)); + auto tex = GrBackendSurfacePriv::MakeGrBackendTexture( + width, + height, + label, + mipped, + GrBackendApi::kOpenGL, + gl_target_to_gr_target(glInfo.fTarget), + GrGLBackendTextureData(glInfo, sk_make_sp())); // Make no assumptions about client's texture's parameters. GLTextureParametersModified(&tex); return tex; @@ -205,14 +202,13 @@ GrBackendTexture MakeGL(int width, const GrGLTextureInfo& glInfo, sk_sp params, std::string_view label) { - auto newData = std::make_unique(glInfo, params); return GrBackendSurfacePriv::MakeGrBackendTexture(width, height, label, mipped, GrBackendApi::kOpenGL, gl_target_to_gr_target(glInfo.fTarget), - std::move(newData)); + GrGLBackendTextureData(glInfo, params)); } bool GetGLTextureInfo(const GrBackendTexture& tex, GrGLTextureInfo* outInfo) { @@ -241,11 +237,6 @@ class GrGLBackendRenderTargetData final : public GrBackendRenderTargetData { GrGLFramebufferInfo info() const { return fGLInfo; } private: - bool isValid() const override { - // the glInfo must have a valid format - return SkToBool(fGLInfo.fFormat); - } - GrBackendFormat getBackendFormat() const override { return GrBackendFormats::MakeGL(fGLInfo.fFormat, GR_GL_TEXTURE_NONE); } @@ -260,8 +251,8 @@ class GrGLBackendRenderTargetData final : public GrBackendRenderTargetData { return false; } - GrBackendRenderTargetData* copy() const override { - return new GrGLBackendRenderTargetData(fGLInfo); + void copyTo(AnyRenderTargetData& rtData) const override { + rtData.emplace(fGLInfo); } #if defined(SK_DEBUG) @@ -282,14 +273,13 @@ namespace GrBackendRenderTargets { // stencil bits to be either 0, 8 or 16. SK_API GrBackendRenderTarget MakeGL(int width, int height, int sampleCnt, int stencilBits, const GrGLFramebufferInfo& glInfo) { - auto newData = std::make_unique(glInfo); return GrBackendSurfacePriv::MakeGrBackendRenderTarget(width, height, std::max(1, sampleCnt), stencilBits, GrBackendApi::kOpenGL, /*framebufferOnly=*/false, - std::move(newData)); + GrGLBackendRenderTargetData(glInfo)); } SK_API bool GetGLFramebufferInfo(const GrBackendRenderTarget& rt, GrGLFramebufferInfo* outInfo) { @@ -303,61 +293,3 @@ SK_API bool GetGLFramebufferInfo(const GrBackendRenderTarget& rt, GrGLFramebuffe } } // namespace GrBackendRenderTargets - -#if !defined(SK_DISABLE_LEGACY_GL_BACKEND_SURFACE) && defined(SK_GL) -GrBackendFormat GrBackendFormat::MakeGL(GrGLenum format, GrGLenum target) { - return GrBackendFormats::MakeGL(format, target); -} - -GrGLFormat GrBackendFormat::asGLFormat() const { - return GrBackendFormats::AsGLFormat(*this); -} - -GrGLenum GrBackendFormat::asGLFormatEnum() const { - return GrBackendFormats::AsGLFormatEnum(*this); -} - - -GrBackendTexture::GrBackendTexture(int width, - int height, - skgpu::Mipmapped mipped, - const GrGLTextureInfo& glInfo, - std::string_view label) : - GrBackendTexture(width, - height, - label, - mipped, - GrBackendApi::kOpenGL, - gl_target_to_gr_target(glInfo.fTarget), - std::make_unique(glInfo, - sk_make_sp())) -{ - // Make no assumptions about client's texture's parameters. - GrBackendTextures::GLTextureParametersModified(this); -} - -bool GrBackendTexture::getGLTextureInfo(GrGLTextureInfo* outInfo) const { - return GrBackendTextures::GetGLTextureInfo(*this, outInfo); -} - -void GrBackendTexture::glTextureParametersModified() { - GrBackendTextures::GLTextureParametersModified(this); -} - -GrBackendRenderTarget::GrBackendRenderTarget(int width, - int height, - int sampleCnt, - int stencilBits, - const GrGLFramebufferInfo& glInfo): - GrBackendRenderTarget(width, - height, - std::max(1, sampleCnt), - stencilBits, - GrBackendApi::kOpenGL, - /*framebufferOnly=*/false, - std::make_unique(glInfo)) {} - -bool GrBackendRenderTarget::getGLFramebufferInfo(GrGLFramebufferInfo* outInfo) const { - return GrBackendRenderTargets::GetGLFramebufferInfo(*this, outInfo); -} -#endif diff --git a/src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h b/src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h index 8f0a4e79a4e2..b796644a1451 100644 --- a/src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h +++ b/src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h @@ -36,7 +36,7 @@ class GrGLBackendTextureData final : public GrBackendTextureData { const GrGLBackendTextureInfo& info() const { return fGLInfo; } private: - GrBackendTextureData* copy() const override; + void copyTo(AnyTextureData&) const override; bool isProtected() const override; bool equal(const GrBackendTextureData* that) const override; bool isSameTexture(const GrBackendTextureData* that) const override; diff --git a/src/gpu/ganesh/gl/GrGLCaps.cpp b/src/gpu/ganesh/gl/GrGLCaps.cpp index 176b4a141278..542d029c2567 100644 --- a/src/gpu/ganesh/gl/GrGLCaps.cpp +++ b/src/gpu/ganesh/gl/GrGLCaps.cpp @@ -62,6 +62,7 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions, fNeverDisableColorWrites = false; fMustSetAnyTexParameterToEnableMipmapping = false; fAllowBGRA8CopyTexSubImage = false; + fAllowSRGBCopyTexSubImage = false; fDisallowDynamicMSAA = false; fMustResetBlendFuncBetweenDualSourceAndDisable = false; fBindTexture0WhenChangingTextureFBOMultisampleCount = false; @@ -77,7 +78,6 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions, fFBFetchRequiresEnablePerSample = false; fSRGBWriteControl = false; fSkipErrorChecks = false; - fSupportsProtected = false; fShaderCaps = std::make_unique(); @@ -362,7 +362,7 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, // When we are abandoning the context we cannot call into GL thus we should skip any sync work. fMustSyncGpuDuringAbandon = false; - fSupportsProtected = [&]() { + fSupportsProtectedContent = [&]() { if (!ctxInfo.hasExtension("GL_EXT_protected_textures")) { return false; } @@ -372,7 +372,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, return SkToBool(contextFlags & GR_GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT); }(); - /************************************************************************** * GrShaderCaps fields **************************************************************************/ @@ -444,6 +443,8 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, ctxInfo.glslGeneration() < SkSL::GLSLGeneration::k300es; // introduced in GLSL ES3 } else if (GR_IS_GR_WEBGL(standard)) { shaderCaps->fRewriteSwitchStatements = version < GR_GL_VER(2, 0); // introduced in WebGL 2 + shaderCaps->fCanUseVoidInSequenceExpressions = + false; // removed in WebGL 2, use workaround in all versions for safety } // Protect ourselves against tracking huge amounts of texture state. @@ -3472,6 +3473,15 @@ bool GrGLCaps::canCopyTexSubImage(GrGLFormat dstFormat, bool dstHasMSAARenderBuf return false; } + // Table 3.9 of the ES2 spec indicates the supported formats with CopyTexSubImage + // and SRGB isn't in the spec. There doesn't appear to be any extension that adds it. + // ANGLE, for one, does not allow it. However, we've found it works on some drivers and + // avoids bugs with using glBlitFramebuffer. + if ((GrGLFormatIsSRGB(dstFormat) || GrGLFormatIsSRGB(srcFormat)) && + !fAllowSRGBCopyTexSubImage) { + return false; + } + // Table 3.9 of the ES2 spec and 3.16 of ES3 spec indicates the supported internal base // formats with CopyTexSubImage. Each base format can be copied to itself or formats with // less channels. @@ -3756,6 +3766,12 @@ void GrGLCaps::applyDriverCorrectnessWorkarounds(const GrGLContextInfo& ctxInfo, ctxInfo.renderer() == GrGLRenderer::kTegra_PreK1) { fAllowBGRA8CopyTexSubImage = true; } + // glCopyTexSubImage2D works for sRGB with GLES 3.0 and on some GPUs with GLES 2.0 + if (ctxInfo.version() >= GR_GL_VER(3, 0) || + ctxInfo.renderer() == GrGLRenderer::kMali4xx || + ctxInfo.renderer() == GrGLRenderer::kTegra_PreK1) { + fAllowSRGBCopyTexSubImage = true; + } // http://anglebug.com/6030 if (fMSFBOType == kES_EXT_MsToTexture_MSFBOType && @@ -4394,7 +4410,9 @@ void GrGLCaps::applyDriverCorrectnessWorkarounds(const GrGLContextInfo& ctxInfo, // We allow the client to pass in a GrContextOption flag to say they prefer having tex storage // support regadless of memory usage impacts. This is important for supporting Protected // textures as they require tex storage support. - if (ctxInfo.vendor() == GrGLVendor::kARM && !contextOptions.fAlwaysUseTexStorageWhenAvailable) { + if (ctxInfo.vendor() == GrGLVendor::kARM && + !contextOptions.fAlwaysUseTexStorageWhenAvailable && + !fSupportsProtectedContent) { formatWorkarounds->fDisableTexStorage = true; } #endif @@ -5035,7 +5053,7 @@ GrProgramDesc GrGLCaps::makeDesc(GrRenderTarget* /* rt */, return desc; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector GrGLCaps::getTestingCombinations() const { std::vector combos = { { GrColorType::kAlpha_8, diff --git a/src/gpu/ganesh/gl/GrGLCaps.h b/src/gpu/ganesh/gl/GrGLCaps.h index d19206680b33..651b599d9350 100644 --- a/src/gpu/ganesh/gl/GrGLCaps.h +++ b/src/gpu/ganesh/gl/GrGLCaps.h @@ -494,8 +494,6 @@ class GrGLCaps : public GrCaps { */ bool skipErrorChecks() const { return fSkipErrorChecks; } - bool supportsProtected() const { return fSupportsProtected; } - bool clientCanDisableMultisample() const { return fClientCanDisableMultisample; } GrBackendFormat getBackendFormatFromCompressionType(SkTextureCompressionType) const override; @@ -508,7 +506,7 @@ class GrGLCaps : public GrCaps { const GrProgramInfo&, ProgramDescOverrideFlags) const override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGLStandard standard() const { return fStandard; } std::vector getTestingCombinations() const override; @@ -612,7 +610,6 @@ class GrGLCaps : public GrCaps { bool fSRGBWriteControl : 1; bool fSkipErrorChecks : 1; bool fClientCanDisableMultisample : 1; - bool fSupportsProtected : 1; // Driver workarounds bool fDoManualMipmapping : 1; @@ -625,6 +622,7 @@ class GrGLCaps : public GrCaps { bool fNeverDisableColorWrites : 1; bool fMustSetAnyTexParameterToEnableMipmapping : 1; bool fAllowBGRA8CopyTexSubImage : 1; + bool fAllowSRGBCopyTexSubImage : 1; bool fDisallowDynamicMSAA : 1; bool fMustResetBlendFuncBetweenDualSourceAndDisable : 1; bool fBindTexture0WhenChangingTextureFBOMultisampleCount : 1; diff --git a/src/gpu/ganesh/gl/GrGLGpu.cpp b/src/gpu/ganesh/gl/GrGLGpu.cpp index a891e0dfc5bc..9b662bc0379b 100644 --- a/src/gpu/ganesh/gl/GrGLGpu.cpp +++ b/src/gpu/ganesh/gl/GrGLGpu.cpp @@ -7,51 +7,75 @@ #include "src/gpu/ganesh/gl/GrGLGpu.h" +#include "include/core/SkAlphaType.h" +#include "include/core/SkColor.h" #include "include/core/SkColorSpace.h" -#include "include/core/SkPixmap.h" +#include "include/core/SkData.h" +#include "include/core/SkRect.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" #include "include/core/SkTextureCompressionType.h" #include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" #include "include/gpu/GrBackendSemaphore.h" #include "include/gpu/GrBackendSurface.h" +#include "include/gpu/GrContextOptions.h" #include "include/gpu/GrDirectContext.h" +#include "include/gpu/GrDriverBugWorkarounds.h" #include "include/gpu/GrTypes.h" +#include "include/gpu/gl/GrGLConfig.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkMath.h" +#include "include/private/base/SkPoint_impl.h" #include "include/private/base/SkTemplates.h" #include "include/private/base/SkTo.h" -#include "src/base/SkAutoMalloc.h" -#include "src/base/SkHalf.h" #include "src/base/SkScopeExit.h" #include "src/core/SkCompressedDataUtils.h" #include "src/core/SkLRUCache.h" #include "src/core/SkMipmap.h" +#include "src/core/SkSLTypeShared.h" #include "src/core/SkTraceEvent.h" +#include "src/gpu/PipelineUtils.h" #include "src/gpu/SkRenderEngineAbortf.h" +#include "src/gpu/Swizzle.h" +#include "src/gpu/ganesh/GrAttachment.h" #include "src/gpu/ganesh/GrBackendSurfacePriv.h" #include "src/gpu/ganesh/GrBackendUtils.h" -#include "src/gpu/ganesh/GrCpuBuffer.h" +#include "src/gpu/ganesh/GrBuffer.h" #include "src/gpu/ganesh/GrDataUtils.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" -#include "src/gpu/ganesh/GrGpuResourcePriv.h" +#include "src/gpu/ganesh/GrGpuBuffer.h" +#include "src/gpu/ganesh/GrImageInfo.h" #include "src/gpu/ganesh/GrPipeline.h" #include "src/gpu/ganesh/GrProgramInfo.h" #include "src/gpu/ganesh/GrRenderTarget.h" +#include "src/gpu/ganesh/GrSemaphore.h" #include "src/gpu/ganesh/GrShaderCaps.h" +#include "src/gpu/ganesh/GrShaderVar.h" #include "src/gpu/ganesh/GrStagingBufferManager.h" -#include "src/gpu/ganesh/GrSurfaceProxyPriv.h" +#include "src/gpu/ganesh/GrSurface.h" #include "src/gpu/ganesh/GrTexture.h" #include "src/gpu/ganesh/GrUtil.h" +#include "src/gpu/ganesh/GrWindowRectangles.h" #include "src/gpu/ganesh/gl/GrGLAttachment.h" #include "src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h" #include "src/gpu/ganesh/gl/GrGLBuffer.h" #include "src/gpu/ganesh/gl/GrGLOpsRenderPass.h" +#include "src/gpu/ganesh/gl/GrGLProgram.h" #include "src/gpu/ganesh/gl/GrGLSemaphore.h" #include "src/gpu/ganesh/gl/GrGLTextureRenderTarget.h" #include "src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.h" -#include "src/sksl/SkSLCompiler.h" #include "src/sksl/SkSLProgramKind.h" #include "src/sksl/SkSLProgramSettings.h" +#include "src/sksl/ir/SkSLProgram.h" +#include +#include #include +#include #include +#include +#include using namespace skia_private; @@ -709,7 +733,7 @@ static bool check_backend_texture(const GrBackendTexture& backendTex, } else if (GR_GL_TEXTURE_2D != desc->fTarget) { return false; } - if (desc->fIsProtected == skgpu::Protected::kYes && !caps.supportsProtected()) { + if (desc->fIsProtected == skgpu::Protected::kYes && !caps.supportsProtectedContent()) { return false; } @@ -717,8 +741,8 @@ static bool check_backend_texture(const GrBackendTexture& backendTex, } static sk_sp get_gl_texture_params(const GrBackendTexture& backendTex) { - GrBackendTextureData* btd = GrBackendSurfacePriv::GetBackendData(backendTex); - auto glTextureData = static_cast(btd); + const GrBackendTextureData* btd = GrBackendSurfacePriv::GetBackendData(backendTex); + auto glTextureData = static_cast(btd); SkASSERT(glTextureData); return glTextureData->info().refParameters(); } @@ -776,7 +800,7 @@ static bool check_compressed_backend_texture(const GrBackendTexture& backendTex, if (GR_GL_TEXTURE_2D != desc->fTarget) { return false; } - if (desc->fIsProtected == skgpu::Protected::kYes && !caps.supportsProtected()) { + if (desc->fIsProtected == skgpu::Protected::kYes && !caps.supportsProtectedContent()) { return false; } @@ -864,7 +888,7 @@ sk_sp GrGLGpu::onWrapBackendRenderTarget(const GrBackendRenderTa return nullptr; } - if (backendRT.isProtected() && !this->glCaps().supportsProtected()) { + if (backendRT.isProtected() && !this->glCaps().supportsProtectedContent()) { return nullptr; } @@ -1485,7 +1509,7 @@ sk_sp GrGLGpu::onCreateTexture(SkISize dimensions, int mipLevelCount, uint32_t levelClearMask, std::string_view label) { - if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtected()) { + if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtectedContent()) { return nullptr; } SkASSERT(GrGLCaps::kNone_MSFBOType != this->glCaps().msFBOType() || renderTargetSampleCnt == 1); @@ -1594,7 +1618,7 @@ sk_sp GrGLGpu::onCreateCompressedTexture(SkISize dimensions, GrProtected isProtected, const void* data, size_t dataSize) { - if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtected()) { + if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtectedContent()) { return nullptr; } SkTextureCompressionType compression = GrBackendFormatToCompressionType(format); @@ -1638,7 +1662,7 @@ sk_sp GrGLGpu::onCreateCompressedTexture(SkISize dimensions, GrBackendTexture GrGLGpu::onCreateCompressedBackendTexture( SkISize dimensions, const GrBackendFormat& format, GrMipmapped mipmapped, GrProtected isProtected) { - if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtected()) { + if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtectedContent()) { return {}; } @@ -1837,7 +1861,7 @@ GrGLuint GrGLGpu::createCompressedTexture2D( GR_GL_TEXTURE_2D); if (GrProtected::kYes == isProtected) { - if (this->glCaps().supportsProtected()) { + if (this->glCaps().supportsProtectedContent()) { GL_CALL(TexParameteri(GR_GL_TEXTURE_2D, GR_GL_TEXTURE_PROTECTED_EXT, GR_GL_TRUE)); } else { GL_CALL(DeleteTextures(1, &id)); @@ -1882,7 +1906,7 @@ GrGLuint GrGLGpu::createTexture(SkISize dimensions, } if (GrProtected::kYes == isProtected) { - if (this->glCaps().supportsProtected()) { + if (this->glCaps().supportsProtectedContent()) { GL_CALL(TexParameteri(target, GR_GL_TEXTURE_PROTECTED_EXT, GR_GL_TRUE)); } else { GL_CALL(DeleteTextures(1, &id)); @@ -3260,7 +3284,7 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) { GrShaderVar uTexCoordXform("u_texCoordXform", SkSLType::kHalf4, GrShaderVar::TypeModifier::Uniform); GrShaderVar uPosXform("u_posXform", SkSLType::kHalf4, GrShaderVar::TypeModifier::Uniform); - GrShaderVar uTexture("u_texture", samplerType, GrShaderVar::TypeModifier::Uniform); + GrShaderVar uTexture("u_texture", samplerType); GrShaderVar vTexCoord("v_texCoord", SkSLType::kHalf2, GrShaderVar::TypeModifier::Out); GrShaderVar oFragColor("o_FragColor", SkSLType::kHalf4, GrShaderVar::TypeModifier::Out); @@ -3313,31 +3337,31 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) { auto errorHandler = this->getContext()->priv().getShaderErrorHandler(); std::string glsl[kGrShaderTypeCount]; SkSL::ProgramSettings settings; - std::unique_ptr program = - GrSkSLtoGLSL(this, SkSL::ProgramKind::kVertex, vertexSkSL, settings, - &glsl[kVertex_GrShaderType], errorHandler); + SkSL::Program::Interface interface; + SkSLToGLSL(this->shaderCompiler(), vertexSkSL, SkSL::ProgramKind::kVertex, settings, + &glsl[kVertex_GrShaderType], &interface, errorHandler); GrGLuint vshader = GrGLCompileAndAttachShader(*fGLContext, fCopyPrograms[progIdx].fProgram, GR_GL_VERTEX_SHADER, glsl[kVertex_GrShaderType], fProgramCache->stats(), errorHandler); - SkASSERT(program->fInterface == SkSL::Program::Interface()); + SkASSERT(interface == SkSL::Program::Interface()); if (!vshader) { // Just delete the program, no shaders to delete cleanup_program(this, &fCopyPrograms[progIdx].fProgram, nullptr, nullptr); return false; } - program = GrSkSLtoGLSL(this, SkSL::ProgramKind::kFragment, fragmentSkSL, settings, - &glsl[kFragment_GrShaderType], errorHandler); + SkSLToGLSL(this->shaderCompiler(), fragmentSkSL, SkSL::ProgramKind::kFragment, settings, + &glsl[kFragment_GrShaderType], &interface, errorHandler); GrGLuint fshader = GrGLCompileAndAttachShader(*fGLContext, fCopyPrograms[progIdx].fProgram, GR_GL_FRAGMENT_SHADER, glsl[kFragment_GrShaderType], fProgramCache->stats(), errorHandler); - SkASSERT(program->fInterface == SkSL::Program::Interface()); + SkASSERT(interface == SkSL::Program::Interface()); if (!fshader) { // Delete the program and previously compiled vertex shader cleanup_program(this, &fCopyPrograms[progIdx].fProgram, &vshader, nullptr); @@ -3383,8 +3407,7 @@ bool GrGLGpu::createMipmapProgram(int progIdx) { GrShaderVar aVertex("a_vertex", SkSLType::kHalf2, GrShaderVar::TypeModifier::In); GrShaderVar uTexCoordXform("u_texCoordXform", SkSLType::kHalf4, GrShaderVar::TypeModifier::Uniform); - GrShaderVar uTexture("u_texture", SkSLType::kTexture2DSampler, - GrShaderVar::TypeModifier::Uniform); + GrShaderVar uTexture("u_texture", SkSLType::kTexture2DSampler); // We need 1, 2, or 4 texture coordinates (depending on parity of each dimension): GrShaderVar vTexCoords[] = { GrShaderVar("v_texCoord0", SkSLType::kHalf2, GrShaderVar::TypeModifier::Out), @@ -3491,31 +3514,31 @@ bool GrGLGpu::createMipmapProgram(int progIdx) { auto errorHandler = this->getContext()->priv().getShaderErrorHandler(); std::string glsl[kGrShaderTypeCount]; SkSL::ProgramSettings settings; + SkSL::Program::Interface interface; - std::unique_ptr program = - GrSkSLtoGLSL(this, SkSL::ProgramKind::kVertex, vertexSkSL, settings, - &glsl[kVertex_GrShaderType], errorHandler); + SkSLToGLSL(this->shaderCompiler(), vertexSkSL, SkSL::ProgramKind::kVertex, settings, + &glsl[kVertex_GrShaderType], &interface, errorHandler); GrGLuint vshader = GrGLCompileAndAttachShader(*fGLContext, fMipmapPrograms[progIdx].fProgram, GR_GL_VERTEX_SHADER, glsl[kVertex_GrShaderType], fProgramCache->stats(), errorHandler); - SkASSERT(program->fInterface == SkSL::Program::Interface()); + SkASSERT(interface == SkSL::Program::Interface()); if (!vshader) { cleanup_program(this, &fMipmapPrograms[progIdx].fProgram, nullptr, nullptr); return false; } - program = GrSkSLtoGLSL(this, SkSL::ProgramKind::kFragment, fragmentSkSL, settings, - &glsl[kFragment_GrShaderType], errorHandler); + SkSLToGLSL(this->shaderCompiler(), fragmentSkSL, SkSL::ProgramKind::kFragment, settings, + &glsl[kFragment_GrShaderType], &interface, errorHandler); GrGLuint fshader = GrGLCompileAndAttachShader(*fGLContext, fMipmapPrograms[progIdx].fProgram, GR_GL_FRAGMENT_SHADER, glsl[kFragment_GrShaderType], fProgramCache->stats(), errorHandler); - SkASSERT(program->fInterface == SkSL::Program::Interface()); + SkASSERT(interface == SkSL::Program::Interface()); if (!fshader) { cleanup_program(this, &fMipmapPrograms[progIdx].fProgram, &vshader, nullptr); return false; @@ -3977,7 +4000,7 @@ bool GrGLGpu::compile(const GrProgramDesc& desc, const GrProgramInfo& programInf return stat != GrThreadSafePipelineBuilder::Stats::ProgramCacheResult::kHit; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrGLGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { SkASSERT(GrBackendApi::kOpenGL == tex.backend()); @@ -4001,7 +4024,7 @@ GrBackendRenderTarget GrGLGpu::createTestingOnlyBackendRenderTarget(SkISize dime dimensions.height() > this->caps()->maxRenderTargetSize()) { return {}; } - if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtected()) { + if (isProtected == GrProtected::kYes && !this->glCaps().supportsProtectedContent()) { return {}; } diff --git a/src/gpu/ganesh/gl/GrGLGpu.h b/src/gpu/ganesh/gl/GrGLGpu.h index 86639b583576..0a89fca9bfd2 100644 --- a/src/gpu/ganesh/gl/GrGLGpu.h +++ b/src/gpu/ganesh/gl/GrGLGpu.h @@ -8,32 +8,81 @@ #ifndef GrGLGpu_DEFINED #define GrGLGpu_DEFINED +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" #include "include/core/SkTypes.h" +#include "include/gpu/GrBackendSurface.h" +#include "include/gpu/GrTypes.h" #include "include/gpu/ganesh/gl/GrGLBackendSurface.h" +#include "include/gpu/gl/GrGLFunctions.h" +#include "include/gpu/gl/GrGLInterface.h" +#include "include/gpu/gl/GrGLTypes.h" +#include "include/private/SkColorData.h" +#include "include/private/base/SkDebug.h" #include "include/private/base/SkTArray.h" +#include "include/private/base/SkTemplates.h" +#include "include/private/base/SkTo.h" +#include "include/private/gpu/ganesh/GrGLTypesPriv.h" +#include "include/private/gpu/ganesh/GrTypesPriv.h" #include "src/core/SkChecksum.h" #include "src/core/SkLRUCache.h" +#include "src/gpu/Blend.h" +#include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrFinishCallbacks.h" #include "src/gpu/ganesh/GrGpu.h" +#include "src/gpu/ganesh/GrGpuResource.h" #include "src/gpu/ganesh/GrNativeRect.h" +#include "src/gpu/ganesh/GrOpsRenderPass.h" #include "src/gpu/ganesh/GrProgramDesc.h" +#include "src/gpu/ganesh/GrSamplerState.h" +#include "src/gpu/ganesh/GrScissorState.h" +#include "src/gpu/ganesh/GrShaderCaps.h" +#include "src/gpu/ganesh/GrStencilSettings.h" #include "src/gpu/ganesh/GrThreadSafePipelineBuilder.h" #include "src/gpu/ganesh/GrWindowRectsState.h" #include "src/gpu/ganesh/GrXferProcessor.h" -#include "src/gpu/ganesh/gl/GrGLAttachment.h" +#include "src/gpu/ganesh/gl/GrGLCaps.h" #include "src/gpu/ganesh/gl/GrGLContext.h" -#include "src/gpu/ganesh/gl/GrGLProgram.h" +#include "src/gpu/ganesh/gl/GrGLDefines.h" #include "src/gpu/ganesh/gl/GrGLRenderTarget.h" #include "src/gpu/ganesh/gl/GrGLTexture.h" +#include "src/gpu/ganesh/gl/GrGLUtil.h" #include "src/gpu/ganesh/gl/GrGLVertexArray.h" +#include +#include +#include +#include +#include + +class GrAttachment; +class GrBackendSemaphore; +class GrBuffer; +class GrDirectContext; class GrGLBuffer; class GrGLOpsRenderPass; -class GrPipeline; +class GrGLProgram; +class GrGpuBuffer; +class GrProgramInfo; +class GrRenderTarget; +class GrSemaphore; +class GrStagingBufferManager; +class GrSurface; +class GrSurfaceProxy; +class GrTexture; +class SkData; enum class SkTextureCompressionType; +struct GrContextOptions; +struct SkIPoint; +struct SkIRect; +struct SkISize; + +namespace SkSL { enum class GLSLGeneration; } namespace skgpu { +class RefCntedCallback; class Swizzle; +enum class Budgeted : bool; } class GrGLGpu final : public GrGpu { @@ -171,7 +220,7 @@ class GrGLGpu final : public GrGpu { return fProgramCache->precompileShader(this->getContext(), key, data); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, diff --git a/src/gpu/ganesh/gl/GrGLInterfaceAutogen.cpp b/src/gpu/ganesh/gl/GrGLInterfaceAutogen.cpp index 64c53a61b229..5d8bd80f6024 100644 --- a/src/gpu/ganesh/gl/GrGLInterfaceAutogen.cpp +++ b/src/gpu/ganesh/gl/GrGLInterfaceAutogen.cpp @@ -711,7 +711,7 @@ bool GrGLInterface::validate() const { (GR_IS_GR_GL_ES(fStandard) && ( (glVer >= GR_GL_VER(3,0)) || fExtensions.has("GL_EXT_occlusion_query_boolean")))) { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (!fFunctions.fBeginQuery || !fFunctions.fDeleteQueries || !fFunctions.fEndQuery || @@ -794,10 +794,10 @@ bool GrGLInterface::validate() const { return true; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrGLInterface::abandon() const { const_cast(this)->fFunctions = GrGLInterface::Functions(); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/gl/GrGLOpsRenderPass.cpp b/src/gpu/ganesh/gl/GrGLOpsRenderPass.cpp index 35b86a6839f8..b86f3a70bf93 100644 --- a/src/gpu/ganesh/gl/GrGLOpsRenderPass.cpp +++ b/src/gpu/ganesh/gl/GrGLOpsRenderPass.cpp @@ -9,6 +9,7 @@ #include "src/gpu/ganesh/GrProgramInfo.h" #include "src/gpu/ganesh/GrRenderTarget.h" +#include "src/gpu/ganesh/gl/GrGLProgram.h" #ifdef SK_DEBUG #include "include/gpu/GrDirectContext.h" diff --git a/src/gpu/ganesh/gl/GrGLTypesPriv.cpp b/src/gpu/ganesh/gl/GrGLTypesPriv.cpp index 1e229dd07afe..8cdf0205d065 100644 --- a/src/gpu/ganesh/gl/GrGLTypesPriv.cpp +++ b/src/gpu/ganesh/gl/GrGLTypesPriv.cpp @@ -57,11 +57,6 @@ void GrGLTextureParameters::set(const SamplerOverriddenState* samplerState, fResetTimestamp = currTimestamp; } -void GrGLBackendTextureInfo::assign(const GrGLBackendTextureInfo& that, bool thisIsValid) { - fInfo = that.fInfo; - fParams = that.fParams; -} - GrGLSurfaceInfo GrGLTextureSpecToSurfaceInfo(const GrGLTextureSpec& glSpec, uint32_t sampleCount, uint32_t levelCount, diff --git a/src/gpu/ganesh/gl/GrGLUniformHandler.cpp b/src/gpu/ganesh/gl/GrGLUniformHandler.cpp index 3b691a545a4b..65ce005d62d1 100644 --- a/src/gpu/ganesh/gl/GrGLUniformHandler.cpp +++ b/src/gpu/ganesh/gl/GrGLUniformHandler.cpp @@ -69,8 +69,11 @@ GrGLSLUniformHandler::UniformHandle GrGLUniformHandler::internalAddUniformArray( } GrGLSLUniformHandler::SamplerHandle GrGLUniformHandler::addSampler( - const GrBackendFormat& backendFormat, GrSamplerState, const skgpu::Swizzle& swizzle, - const char* name, const GrShaderCaps* shaderCaps) { + const GrBackendFormat& backendFormat, + GrSamplerState, + const skgpu::Swizzle& swizzle, + const char* name, + const GrShaderCaps* shaderCaps) { SkASSERT(name && strlen(name)); constexpr char prefix = 'u'; @@ -80,8 +83,7 @@ GrGLSLUniformHandler::SamplerHandle GrGLUniformHandler::addSampler( GLUniformInfo tempInfo; tempInfo.fVariable = GrShaderVar{std::move(mangleName), - SkSLCombinedSamplerTypeForTextureType(type), - GrShaderVar::TypeModifier::Uniform}; + SkSLCombinedSamplerTypeForTextureType(type)}; tempInfo.fVisibility = kFragment_GrShaderFlag; tempInfo.fOwner = nullptr; diff --git a/src/gpu/ganesh/gl/GrGLUtil.h b/src/gpu/ganesh/gl/GrGLUtil.h index a25dc201332a..799efd4d98c0 100644 --- a/src/gpu/ganesh/gl/GrGLUtil.h +++ b/src/gpu/ganesh/gl/GrGLUtil.h @@ -617,7 +617,7 @@ static constexpr bool GrGLFormatIsSRGB(GrGLFormat format) { SkUNREACHABLE; } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) static constexpr const char* GrGLFormatToStr(GrGLenum glFormat) { switch (glFormat) { case GR_GL_RGBA8: return "RGBA8"; diff --git a/src/gpu/ganesh/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/ganesh/gl/builders/GrGLProgramBuilder.cpp index 4d227655c5d2..e6c38061fac0 100644 --- a/src/gpu/ganesh/gl/builders/GrGLProgramBuilder.cpp +++ b/src/gpu/ganesh/gl/builders/GrGLProgramBuilder.cpp @@ -12,6 +12,7 @@ #include "src/core/SkReadBuffer.h" #include "src/core/SkTraceEvent.h" #include "src/core/SkWriteBuffer.h" +#include "src/gpu/PipelineUtils.h" #include "src/gpu/Swizzle.h" #include "src/gpu/ganesh/GrAutoLocaleSetter.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" @@ -327,17 +328,16 @@ sk_sp GrGLProgramBuilder::finalize(const GrGLPrecompiledProgram* pr if (fFS.fForceHighPrecision) { settings.fForceHighPrecision = true; } - std::unique_ptr fs = GrSkSLtoGLSL(this->gpu(), - SkSL::ProgramKind::kFragment, - *sksl[kFragment_GrShaderType], - settings, - &glsl[kFragment_GrShaderType], - errorHandler); - if (!fs) { + if (!SkSLToGLSL(this->gpu()->shaderCompiler(), + *sksl[kFragment_GrShaderType], + SkSL::ProgramKind::kFragment, + settings, + &glsl[kFragment_GrShaderType], + &interface, + errorHandler)) { cleanup_program(fGpu, programID, shadersToDelete); return nullptr; } - interface = fs->fInterface; } this->addInputVars(interface); @@ -352,13 +352,14 @@ sk_sp GrGLProgramBuilder::finalize(const GrGLPrecompiledProgram* pr */ if (glsl[kVertex_GrShaderType].empty()) { // Don't have cached GLSL, need to compile SkSL->GLSL - std::unique_ptr vs = GrSkSLtoGLSL(this->gpu(), - SkSL::ProgramKind::kVertex, - *sksl[kVertex_GrShaderType], - settings, - &glsl[kVertex_GrShaderType], - errorHandler); - if (!vs) { + SkSL::Program::Interface unusedInterface; + if (!SkSLToGLSL(this->gpu()->shaderCompiler(), + *sksl[kVertex_GrShaderType], + SkSL::ProgramKind::kVertex, + settings, + &glsl[kVertex_GrShaderType], + &unusedInterface, + errorHandler)) { cleanup_program(fGpu, programID, shadersToDelete); return nullptr; } @@ -474,8 +475,9 @@ bool GrGLProgramBuilder::PrecompileProgram(GrDirectContext* dContext, auto compileShader = [&](SkSL::ProgramKind kind, const std::string& sksl, GrGLenum type) { std::string glsl; - auto program = GrSkSLtoGLSL(glGpu, kind, sksl, settings, &glsl, errorHandler); - if (!program) { + SkSL::Program::Interface unusedInterface; + if (!SkSLToGLSL(glGpu->shaderCompiler(), sksl, kind, settings, &glsl, &unusedInterface, + errorHandler)) { return false; } diff --git a/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.cpp b/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.cpp index 6398840b70bd..161187ba7dc2 100644 --- a/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.cpp +++ b/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.cpp @@ -16,40 +16,6 @@ #include "src/sksl/ir/SkSLProgram.h" #include "src/utils/SkShaderUtils.h" -std::unique_ptr GrSkSLtoGLSL(const GrGLGpu* gpu, - SkSL::ProgramKind programKind, - const std::string& sksl, - const SkSL::ProgramSettings& settings, - std::string* glsl, - GrContextOptions::ShaderErrorHandler* errorHandler) { - SkSL::Compiler* compiler = gpu->shaderCompiler(); - std::unique_ptr program; -#ifdef SK_DEBUG - std::string src = SkShaderUtils::PrettyPrint(sksl); -#else - const std::string& src = sksl; -#endif - program = compiler->convertProgram(programKind, src, settings); - if (!program || !compiler->toGLSL(*program, glsl)) { - errorHandler->compileError(src.c_str(), compiler->errorText().c_str()); - return nullptr; - } - - if (skgpu::gPrintSKSL || skgpu::gPrintBackendSL) { - SkShaderUtils::PrintShaderBanner(programKind); - if (skgpu::gPrintSKSL) { - SkDebugf("SKSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(sksl)); - } - if (skgpu::gPrintBackendSL) { - SkDebugf("GLSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(*glsl)); - } - } - - return program; -} - GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, GrGLuint programId, GrGLenum type, diff --git a/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.h b/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.h index dbd401a07121..8f57f27e5879 100644 --- a/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.h +++ b/src/gpu/ganesh/gl/builders/GrGLShaderStringBuilder.h @@ -14,13 +14,6 @@ #include "src/gpu/ganesh/gl/GrGLContext.h" #include "src/sksl/codegen/SkSLGLSLCodeGenerator.h" -std::unique_ptr GrSkSLtoGLSL(const GrGLGpu* gpu, - SkSL::ProgramKind programKind, - const std::string& sksl, - const SkSL::ProgramSettings& settings, - std::string* glsl, - GrContextOptions::ShaderErrorHandler* errorHandler); - GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, GrGLuint programId, GrGLenum type, diff --git a/src/gpu/ganesh/gradients/GrGradientShader.cpp b/src/gpu/ganesh/gradients/GrGradientShader.cpp index e79472588f57..2b76c3e28834 100644 --- a/src/gpu/ganesh/gradients/GrGradientShader.cpp +++ b/src/gpu/ganesh/gradients/GrGradientShader.cpp @@ -946,7 +946,7 @@ std::unique_ptr MakeLinear(const SkLinearGradient& shader, return MakeGradientFP(shader, args, mRec, std::move(fp)); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) RandomParams::RandomParams(SkRandom* random) { // Set color count to min of 2 so that we don't trigger the const color optimization and make // a non-gradient processor. diff --git a/src/gpu/ganesh/gradients/GrGradientShader.h b/src/gpu/ganesh/gradients/GrGradientShader.h index ad7d15163d66..52ed65ba1460 100644 --- a/src/gpu/ganesh/gradients/GrGradientShader.h +++ b/src/gpu/ganesh/gradients/GrGradientShader.h @@ -13,7 +13,7 @@ #include "src/shaders/gradients/SkGradientBaseShader.h" #include "src/shaders/gradients/SkLinearGradient.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/base/SkRandom.h" #endif @@ -28,7 +28,7 @@ std::unique_ptr MakeLinear(const SkLinearGradient& shader, const GrFPArgs& args, const SkShaders::MatrixRec&); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) /** Helper struct that stores (and populates) parameters to construct a random gradient. If fUseColors4f is true, then the SkColor4f factory should be called, with fColors4f and fColorSpace. Otherwise, the SkColor factory should be called, with fColors. fColorCount diff --git a/src/gpu/ganesh/image/GrImageUtils.cpp b/src/gpu/ganesh/image/GrImageUtils.cpp index b95ec2eb12ba..ebdb14fd3e48 100644 --- a/src/gpu/ganesh/image/GrImageUtils.cpp +++ b/src/gpu/ganesh/image/GrImageUtils.cpp @@ -9,16 +9,16 @@ #include "include/core/SkAlphaType.h" #include "include/core/SkBitmap.h" -#include "include/core/SkCanvas.h" -#include "include/core/SkColor.h" #include "include/core/SkColorSpace.h" #include "include/core/SkImage.h" #include "include/core/SkImageInfo.h" #include "include/core/SkPixmap.h" +#include "include/core/SkPoint.h" #include "include/core/SkRect.h" #include "include/core/SkSamplingOptions.h" #include "include/core/SkSize.h" #include "include/core/SkSurface.h" +#include "include/core/SkTileMode.h" #include "include/core/SkTypes.h" #include "include/core/SkYUVAInfo.h" #include "include/core/SkYUVAPixmaps.h" @@ -41,6 +41,7 @@ #include "src/gpu/ResourceKey.h" #include "src/gpu/SkBackingFit.h" #include "src/gpu/Swizzle.h" +#include "src/gpu/ganesh/GrBlurUtils.h" #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrColorSpaceXform.h" #include "src/gpu/ganesh/GrFragmentProcessor.h" @@ -54,6 +55,7 @@ #include "src/gpu/ganesh/GrThreadSafeCache.h" #include "src/gpu/ganesh/GrYUVATextureProxies.h" #include "src/gpu/ganesh/SkGr.h" +#include "src/gpu/ganesh/SurfaceDrawContext.h" #include "src/gpu/ganesh/SurfaceFillContext.h" #include "src/gpu/ganesh/effects/GrBicubicEffect.h" #include "src/gpu/ganesh/effects/GrTextureEffect.h" @@ -73,7 +75,6 @@ class SkMatrix; class SkSurfaceProps; -enum class SkTileMode; enum SkColorType : int; namespace skgpu::ganesh { @@ -240,9 +241,6 @@ static GrSurfaceProxyView generate_picture_texture(GrRecordingContext* ctx, SkASSERT(ctx); SkASSERT(img); - auto sharedGenerator = img->generator(); - SkAutoMutexExclusive mutex(sharedGenerator->fMutex); - skgpu::Budgeted budgeted = texGenPolicy == GrImageTexGenPolicy::kNew_Uncached_Unbudgeted ? skgpu::Budgeted::kNo : skgpu::Budgeted::kYes; @@ -257,8 +255,8 @@ static GrSurfaceProxyView generate_picture_texture(GrRecordingContext* ctx, return {}; } - surface->getCanvas()->clear(SkColors::kTransparent); - surface->getCanvas()->drawPicture(img->picture(), img->matrix(), img->paint()); + img->replay(surface->getCanvas()); + sk_sp image(surface->makeImageSnapshot()); if (!image) { return {}; @@ -727,11 +725,8 @@ SkYUVAPixmapInfo::SupportedDataTypes SupportedTextureFormats(const GrImageContex } // namespace skgpu::ganesh namespace skif { -Context MakeGaneshContext(GrRecordingContext* context, - GrSurfaceOrigin origin, - const ContextInfo& info) { +Functors MakeGaneshFunctors(GrRecordingContext* context, GrSurfaceOrigin origin) { SkASSERT(context); - SkASSERT(!info.fSource.image() || info.fSource.image()->isGaneshBacked()); auto makeSurfaceFunctor = [context, origin](const SkImageInfo& imageInfo, const SkSurfaceProps* props) { @@ -771,7 +766,56 @@ Context MakeGaneshContext(GrRecordingContext* context, data.info().colorInfo()); }; - return Context(info, context, makeSurfaceFunctor, makeImageFunctor, makeCachedBitmapFunctor); + auto blurImageFunctor = [context](SkSize sigma, + sk_sp input, + SkIRect srcRect, + SkIRect dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps) -> sk_sp { + GrSurfaceProxyView inputView = SkSpecialImages::AsView(context, input); + if (!inputView.proxy()) { + return nullptr; + } + SkASSERT(inputView.asTextureProxy()); + + // Update srcRect and dstRect to be relative to the underlying texture proxy of 'input'. + auto proxyOffset = input->subset().topLeft() - srcRect.topLeft(); + srcRect.offset(proxyOffset); + dstRect.offset(proxyOffset); + auto sdc = GrBlurUtils::GaussianBlur( + context, + std::move(inputView), + SkColorTypeToGrColorType(input->colorType()), + input->alphaType(), + std::move(outCS), + dstRect, + srcRect, + sigma.width(), + sigma.height(), + SkTileMode::kDecal); // TODO: Have the blur image functor take a tile mode + if (!sdc) { + return nullptr; + } + + return SkSpecialImages::MakeDeferredFromGpu(context, + SkIRect::MakeSize(dstRect.size()), + kNeedNewImageUniqueID_SpecialImage, + sdc->readSurfaceView(), + sdc->colorInfo(), + outProps); + }; + + return Functors(makeSurfaceFunctor, makeImageFunctor, makeCachedBitmapFunctor, + blurImageFunctor, context); +} + +Context MakeGaneshContext(GrRecordingContext* context, + GrSurfaceOrigin origin, + const ContextInfo& info) { + SkASSERT(context); + SkASSERT(!info.fSource.image() || info.fSource.image()->isGaneshBacked()); + + return Context(info, MakeGaneshFunctors(context, origin)); } } // namespace skif diff --git a/src/gpu/ganesh/image/GrImageUtils.h b/src/gpu/ganesh/image/GrImageUtils.h index 86d4e5425fc9..2a255d659f47 100644 --- a/src/gpu/ganesh/image/GrImageUtils.h +++ b/src/gpu/ganesh/image/GrImageUtils.h @@ -134,6 +134,8 @@ SkYUVAPixmapInfo::SupportedDataTypes SupportedTextureFormats(const GrImageContex namespace skif { class Context; struct ContextInfo; +struct Functors; +Functors MakeGaneshFunctors(GrRecordingContext* context, GrSurfaceOrigin origin); Context MakeGaneshContext(GrRecordingContext* context, GrSurfaceOrigin origin, const ContextInfo& info); diff --git a/src/gpu/ganesh/image/SkImage_Ganesh.cpp b/src/gpu/ganesh/image/SkImage_Ganesh.cpp index 19bb2ffbf281..7ec905dc46eb 100644 --- a/src/gpu/ganesh/image/SkImage_Ganesh.cpp +++ b/src/gpu/ganesh/image/SkImage_Ganesh.cpp @@ -133,6 +133,15 @@ inline GrMipmapped SkImage_Ganesh::ProxyChooser::mipmapped() const { return mipmapped; } +inline skgpu::Protected SkImage_Ganesh::ProxyChooser::isProtected() const { + SkAutoSpinlock hold(fLock); + skgpu::Protected isProtected = fStableProxy->asTextureProxy()->isProtected(); + if (fVolatileProxy) { + SkASSERT(fVolatileProxy->asTextureProxy()->isProtected() == isProtected); + } + return isProtected; +} + #ifdef SK_DEBUG inline const GrBackendFormat& SkImage_Ganesh::ProxyChooser::backendFormat() { SkAutoSpinlock hold(fLock); @@ -233,6 +242,10 @@ bool SkImage_Ganesh::surfaceMustCopyOnWrite(GrSurfaceProxy* surfaceProxy) const bool SkImage_Ganesh::onHasMipmaps() const { return fChooser.mipmapped() == GrMipmapped::kYes; } +bool SkImage_Ganesh::onIsProtected() const { + return fChooser.isProtected() == skgpu::Protected::kYes; +} + GrSemaphoresSubmitted SkImage_Ganesh::flush(GrDirectContext* dContext, const GrFlushInfo& info) const { if (!fContext->priv().matches(dContext) || dContext->abandoned()) { @@ -300,11 +313,13 @@ sk_sp SkImage_Ganesh::onMakeColorTypeAndColorSpace(SkColorType targetCT return nullptr; } + sk_sp proxy = fChooser.chooseProxy(dContext); + auto sfc = dContext->priv().makeSFCWithFallback(GrImageInfo(info, this->dimensions()), SkBackingFit::kExact, /* sampleCount= */ 1, skgpu::Mipmapped::kNo, - skgpu::Protected::kNo); + proxy->isProtected()); if (!sfc) { return nullptr; } @@ -413,11 +428,6 @@ std::tuple SkImage_Ganesh::asView( return {std::move(view), ct}; } -skif::Context SkImage_Ganesh::onCreateFilterContext(GrRecordingContext* rContext, - const skif::ContextInfo& ctxInfo) const { - return skif::MakeGaneshContext(rContext, fOrigin, ctxInfo); -} - std::unique_ptr SkImage_Ganesh::asFragmentProcessor( GrRecordingContext* rContext, SkSamplingOptions sampling, diff --git a/src/gpu/ganesh/image/SkImage_Ganesh.h b/src/gpu/ganesh/image/SkImage_Ganesh.h index cd1905bca4a8..2700505d1fc3 100644 --- a/src/gpu/ganesh/image/SkImage_Ganesh.h +++ b/src/gpu/ganesh/image/SkImage_Ganesh.h @@ -12,7 +12,6 @@ #include "include/core/SkSamplingOptions.h" #include "include/private/base/SkThreadAnnotations.h" #include "src/base/SkSpinlock.h" -#include "src/core/SkImageFilterTypes.h" #include "src/gpu/Swizzle.h" #include "src/gpu/ganesh/GrSurfaceProxyView.h" #include "src/gpu/ganesh/image/SkImage_GaneshBase.h" @@ -50,6 +49,7 @@ struct SkRect; namespace skgpu { enum class Mipmapped : bool; +enum class Protected : bool; } class SkImage_Ganesh final : public SkImage_GaneshBase { @@ -72,6 +72,7 @@ class SkImage_Ganesh final : public SkImage_GaneshBase { SkImage_Base::Type type() const override { return SkImage_Base::Type::kGanesh; } bool onHasMipmaps() const override; + bool onIsProtected() const override; using SkImage_GaneshBase::onMakeColorTypeAndColorSpace; sk_sp onMakeColorTypeAndColorSpace(SkColorType, @@ -99,9 +100,6 @@ class SkImage_Ganesh final : public SkImage_GaneshBase { void generatingSurfaceIsDeleted() override; - skif::Context onCreateFilterContext(GrRecordingContext* rContext, - const skif::ContextInfo& ctxInfo) const override; - // From SkImage_GaneshBase.h GrSemaphoresSubmitted flush(GrDirectContext*, const GrFlushInfo&) const override; @@ -125,6 +123,8 @@ class SkImage_Ganesh final : public SkImage_GaneshBase { bool flushPendingGrContextIO, GrSurfaceOrigin* origin) const; + GrSurfaceOrigin origin() const override { return fOrigin; } + private: SkImage_Ganesh(sk_sp, GrSurfaceProxyView volatileSrc, @@ -164,6 +164,7 @@ class SkImage_Ganesh final : public SkImage_GaneshBase { // Queries that should be independent of which proxy is in use. size_t gpuMemorySize() const SK_EXCLUDES(fLock); skgpu::Mipmapped mipmapped() const SK_EXCLUDES(fLock); + skgpu::Protected isProtected() const SK_EXCLUDES(fLock); #ifdef SK_DEBUG const GrBackendFormat& backendFormat() SK_EXCLUDES(fLock); #endif diff --git a/src/gpu/ganesh/image/SkImage_GaneshBase.cpp b/src/gpu/ganesh/image/SkImage_GaneshBase.cpp index 25b4cbff29dd..8043fa025ebf 100644 --- a/src/gpu/ganesh/image/SkImage_GaneshBase.cpp +++ b/src/gpu/ganesh/image/SkImage_GaneshBase.cpp @@ -21,11 +21,14 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrRecordingContext.h" +#include "include/gpu/GrTypes.h" #include "include/gpu/ganesh/SkImageGanesh.h" #include "include/private/chromium/GrPromiseImageTexture.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "src/core/SkBitmapCache.h" #include "src/core/SkColorSpacePriv.h" +#include "src/core/SkImageFilterTypes.h" +#include "src/core/SkImageFilter_Base.h" #include "src/core/SkImageInfoPriv.h" #include "src/gpu/RefCntedCallback.h" #include "src/gpu/SkBackingFit.h" @@ -51,6 +54,8 @@ #include class GrContextThreadSafeProxy; +class SkImageFilter; +struct SkIPoint; SkImage_GaneshBase::SkImage_GaneshBase(sk_sp context, SkImageInfo info, @@ -412,4 +417,29 @@ sk_sp SubsetTextureFrom(GrDirectContext* context, return SkImages::TextureFromImage(context, subsetImg.get()); } +sk_sp MakeWithFilter(GrRecordingContext* rContext, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) { + if (!rContext || !src || !filter) { + return nullptr; + } + + GrSurfaceOrigin origin = kTopLeft_GrSurfaceOrigin; + if (as_IB(src)->isGaneshBacked()) { + SkImage_GaneshBase* base = static_cast(src.get()); + origin = base->origin(); + } + + return as_IFB(filter)->makeImageWithFilter(skif::MakeGaneshFunctors(rContext, origin), + std::move(src), + subset, + clipBounds, + outSubset, + offset); } + +} // namespace SkImages diff --git a/src/gpu/ganesh/image/SkImage_GaneshBase.h b/src/gpu/ganesh/image/SkImage_GaneshBase.h index 2fc8764454a1..bf566c8f4636 100644 --- a/src/gpu/ganesh/image/SkImage_GaneshBase.h +++ b/src/gpu/ganesh/image/SkImage_GaneshBase.h @@ -32,6 +32,7 @@ class SkBitmap; class SkColorSpace; class SkImage; class SkMatrix; +enum GrSurfaceOrigin : int; enum SkAlphaType : int; enum SkColorType : int; enum class GrColorType; @@ -109,6 +110,8 @@ class SkImage_GaneshBase : public SkImage_Base { const SkRect*, const SkRect*) const = 0; + virtual GrSurfaceOrigin origin() const = 0; + protected: SkImage_GaneshBase(sk_sp, SkImageInfo, uint32_t uniqueID); diff --git a/src/gpu/ganesh/image/SkImage_GaneshYUVA.cpp b/src/gpu/ganesh/image/SkImage_GaneshYUVA.cpp index caa07debc960..cdeab06530e1 100644 --- a/src/gpu/ganesh/image/SkImage_GaneshYUVA.cpp +++ b/src/gpu/ganesh/image/SkImage_GaneshYUVA.cpp @@ -51,7 +51,6 @@ #include "src/gpu/ganesh/SurfaceFillContext.h" #include "src/gpu/ganesh/effects/GrBicubicEffect.h" #include "src/gpu/ganesh/effects/GrYUVtoRGBEffect.h" -#include "src/gpu/ganesh/image/GrImageUtils.h" #include "src/image/SkImage_Base.h" #include @@ -154,6 +153,19 @@ bool SkImage_GaneshYUVA::onHasMipmaps() const { return fYUVAProxies.mipmapped() == GrMipmapped::kYes; } +bool SkImage_GaneshYUVA::onIsProtected() const { + skgpu::Protected isProtected = fYUVAProxies.proxy(0)->isProtected(); + +#if defined(SK_DEBUG) + for (int i = 1; i < fYUVAProxies.numPlanes(); ++i) { + SkASSERT(isProtected == fYUVAProxies.proxy(i)->isProtected()); + } +#endif + + return isProtected == skgpu::Protected::kYes; +} + + size_t SkImage_GaneshYUVA::textureSize() const { size_t size = 0; for (int i = 0; i < fYUVAProxies.numPlanes(); ++i) { @@ -217,11 +229,6 @@ std::tuple SkImage_GaneshYUVA::asView( return {sfc->readSurfaceView(), sfc->colorInfo().colorType()}; } -skif::Context SkImage_GaneshYUVA::onCreateFilterContext(GrRecordingContext* rContext, - const skif::ContextInfo& ctxInfo) const { - return skif::MakeGaneshContext(rContext, fYUVAProxies.textureOrigin(), ctxInfo); -} - std::unique_ptr SkImage_GaneshYUVA::asFragmentProcessor( GrRecordingContext* context, SkSamplingOptions sampling, diff --git a/src/gpu/ganesh/image/SkImage_GaneshYUVA.h b/src/gpu/ganesh/image/SkImage_GaneshYUVA.h index 637e99ab7ea9..1e6a5be874d0 100644 --- a/src/gpu/ganesh/image/SkImage_GaneshYUVA.h +++ b/src/gpu/ganesh/image/SkImage_GaneshYUVA.h @@ -12,7 +12,6 @@ #include "include/core/SkImage.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSamplingOptions.h" -#include "src/core/SkImageFilterTypes.h" #include "src/gpu/ganesh/GrYUVATextureProxies.h" #include "src/gpu/ganesh/image/SkImage_GaneshBase.h" #include "src/image/SkImage_Base.h" @@ -32,6 +31,7 @@ enum SkColorType : int; enum class GrColorType; enum class GrImageTexGenPolicy : int; enum class GrSemaphoresSubmitted : bool; +enum GrSurfaceOrigin : int; enum class SkTileMode; struct GrFlushInfo; struct SkRect; @@ -57,6 +57,7 @@ class SkImage_GaneshYUVA final : public SkImage_GaneshBase { // From SkImage_Base.h SkImage_Base::Type type() const override { return SkImage_Base::Type::kGaneshYUVA; } bool onHasMipmaps() const override; + bool onIsProtected() const override; using SkImage_GaneshBase::onMakeColorTypeAndColorSpace; sk_sp onMakeColorTypeAndColorSpace(SkColorType, @@ -65,9 +66,6 @@ class SkImage_GaneshYUVA final : public SkImage_GaneshBase { sk_sp onReinterpretColorSpace(sk_sp) const final; - skif::Context onCreateFilterContext(GrRecordingContext* rContext, - const skif::ContextInfo& ctxInfo) const override; - // From SkImage_GaneshBase.h GrSemaphoresSubmitted flush(GrDirectContext*, const GrFlushInfo&) const override; @@ -84,6 +82,8 @@ class SkImage_GaneshYUVA final : public SkImage_GaneshBase { bool setupMipmapsForPlanes(GrRecordingContext*) const; + GrSurfaceOrigin origin() const override { return fYUVAProxies.textureOrigin(); } + private: enum class ColorSpaceMode { kConvert, diff --git a/src/gpu/ganesh/mock/GrMockCaps.cpp b/src/gpu/ganesh/mock/GrMockCaps.cpp index 0115a6d83355..9afd5f6281ef 100644 --- a/src/gpu/ganesh/mock/GrMockCaps.cpp +++ b/src/gpu/ganesh/mock/GrMockCaps.cpp @@ -43,7 +43,7 @@ uint64_t GrMockCaps::computeFormatKey(const GrBackendFormat& format) const { return (uint64_t)ct; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector GrMockCaps::getTestingCombinations() const { // TODO: need to add compressed formats to this list std::vector combos = { diff --git a/src/gpu/ganesh/mock/GrMockCaps.h b/src/gpu/ganesh/mock/GrMockCaps.h index cf27ace14f21..62629ffc24c5 100644 --- a/src/gpu/ganesh/mock/GrMockCaps.h +++ b/src/gpu/ganesh/mock/GrMockCaps.h @@ -28,6 +28,7 @@ class GrMockCaps : public GrCaps { fMaxPreferredRenderTargetSize = fMaxRenderTargetSize; fMaxVertexAttributes = options.fMaxVertexAttributes; fSampleLocationsSupport = true; + fSupportsProtectedContent = true; fShaderCaps = std::make_unique(); fShaderCaps->fIntegerSupport = options.fIntegerSupport; @@ -142,7 +143,7 @@ class GrMockCaps : public GrCaps { const GrProgramInfo&, ProgramDescOverrideFlags) const override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector getTestingCombinations() const override; #endif diff --git a/src/gpu/ganesh/mock/GrMockGpu.cpp b/src/gpu/ganesh/mock/GrMockGpu.cpp index 0c3d8ff94b7a..75bf33f68570 100644 --- a/src/gpu/ganesh/mock/GrMockGpu.cpp +++ b/src/gpu/ganesh/mock/GrMockGpu.cpp @@ -297,7 +297,7 @@ void GrMockGpu::deleteBackendTexture(const GrBackendTexture& tex) { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrMockGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { SkASSERT(GrBackendApi::kMock == tex.backend()); diff --git a/src/gpu/ganesh/mock/GrMockGpu.h b/src/gpu/ganesh/mock/GrMockGpu.h index df69eaac748c..e2aaef189960 100644 --- a/src/gpu/ganesh/mock/GrMockGpu.h +++ b/src/gpu/ganesh/mock/GrMockGpu.h @@ -215,7 +215,7 @@ class GrMockGpu : public GrGpu { bool compile(const GrProgramDesc&, const GrProgramInfo&) override { return false; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, diff --git a/src/gpu/ganesh/mock/GrMockRenderTask.h b/src/gpu/ganesh/mock/GrMockRenderTask.h index 10d08df9c2c5..0d17fa1a4852 100644 --- a/src/gpu/ganesh/mock/GrMockRenderTask.h +++ b/src/gpu/ganesh/mock/GrMockRenderTask.h @@ -37,7 +37,7 @@ class GrMockRenderTask final : public GrRenderTask { } bool onExecute(GrOpFlushState*) override { return true; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) const char* name() const final { return "Mock"; } #endif diff --git a/src/gpu/ganesh/mtl/GrMtlCaps.h b/src/gpu/ganesh/mtl/GrMtlCaps.h index 28d3e793d6f6..c8169cf3be3c 100644 --- a/src/gpu/ganesh/mtl/GrMtlCaps.h +++ b/src/gpu/ganesh/mtl/GrMtlCaps.h @@ -96,7 +96,7 @@ class GrMtlCaps : public GrCaps { bool renderTargetSupportsDiscardableMSAA(const GrMtlRenderTarget*) const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector getTestingCombinations() const override; #endif void onDumpJSON(SkJSONWriter*) const override; diff --git a/src/gpu/ganesh/mtl/GrMtlCaps.mm b/src/gpu/ganesh/mtl/GrMtlCaps.mm index 91f220499d7e..eb1affd716fb 100644 --- a/src/gpu/ganesh/mtl/GrMtlCaps.mm +++ b/src/gpu/ganesh/mtl/GrMtlCaps.mm @@ -26,7 +26,7 @@ #include "src/gpu/ganesh/mtl/GrMtlUtil.h" #include "src/gpu/mtl/MtlUtilsPriv.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/TestFormatColorTypeCombination.h" #endif @@ -1232,7 +1232,7 @@ SkReadBuffer readBuffer(desc.asKey() + desc.initialKeyLength()/sizeof(uint32_t), (rt->numSamples() > 1 && this->preferDiscardableMSAAAttachment()); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector GrMtlCaps::getTestingCombinations() const { std::vector combos = { { GrColorType::kAlpha_8, GrBackendFormat::MakeMtl(MTLPixelFormatA8Unorm) }, diff --git a/src/gpu/ganesh/mtl/GrMtlCppUtil.h b/src/gpu/ganesh/mtl/GrMtlCppUtil.h index a3d97b2b773d..d8e4b9214404 100644 --- a/src/gpu/ganesh/mtl/GrMtlCppUtil.h +++ b/src/gpu/ganesh/mtl/GrMtlCppUtil.h @@ -32,7 +32,7 @@ SkTextureCompressionType GrMtlBackendFormatToCompressionType(const GrBackendForm */ int GrMtlTextureInfoSampleCount(const GrMtlTextureInfo&); -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) const char* GrMtlFormatToStr(GrMTLPixelFormat mtlFormat); bool GrMtlFormatIsBGRA8(GrMTLPixelFormat mtlFormat); #endif diff --git a/src/gpu/ganesh/mtl/GrMtlGpu.h b/src/gpu/ganesh/mtl/GrMtlGpu.h index 3d434005246a..167f0d489b5d 100644 --- a/src/gpu/ganesh/mtl/GrMtlGpu.h +++ b/src/gpu/ganesh/mtl/GrMtlGpu.h @@ -64,7 +64,7 @@ class GrMtlGpu : public GrGpu { bool precompileShader(const SkData& key, const SkData& data) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, @@ -297,7 +297,7 @@ class GrMtlGpu : public GrGpu { GrMipmapped, GrMtlTextureInfo*); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void testingOnly_startCapture() override; void testingOnly_stopCapture() override; #endif diff --git a/src/gpu/ganesh/mtl/GrMtlGpu.mm b/src/gpu/ganesh/mtl/GrMtlGpu.mm index a0715c9f5cb5..31b339f6d862 100644 --- a/src/gpu/ganesh/mtl/GrMtlGpu.mm +++ b/src/gpu/ganesh/mtl/GrMtlGpu.mm @@ -43,7 +43,7 @@ GR_NORETAIN_BEGIN -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // set to 1 if you want to do GPU capture of each commandBuffer #define GR_METAL_CAPTURE_COMMANDBUFFER 0 #endif @@ -1140,7 +1140,7 @@ void copy_src_data(char* dst, return this->resourceProvider().precompileShader(key, data); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrMtlGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { SkASSERT(GrBackendApi::kMetal == tex.backend()); @@ -1196,7 +1196,7 @@ void copy_src_data(char* dst, // is deleted. } } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) void GrMtlGpu::copySurfaceAsResolve(GrSurface* dst, GrSurface* src) { // TODO: Add support for subrectangles @@ -1755,7 +1755,7 @@ void copy_src_data(char* dst, return renderCmdEncoder; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrMtlGpu::testingOnly_startCapture() { if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { // TODO: add Metal 3 interface as well diff --git a/src/gpu/ganesh/mtl/GrMtlPipelineStateBuilder.mm b/src/gpu/ganesh/mtl/GrMtlPipelineStateBuilder.mm index 8f9f99a76387..f7d794f3d032 100644 --- a/src/gpu/ganesh/mtl/GrMtlPipelineStateBuilder.mm +++ b/src/gpu/ganesh/mtl/GrMtlPipelineStateBuilder.mm @@ -11,6 +11,7 @@ #include "src/core/SkReadBuffer.h" #include "src/core/SkTraceEvent.h" #include "src/core/SkWriteBuffer.h" +#include "src/gpu/PipelineUtils.h" #include "src/gpu/ganesh/GrAutoLocaleSetter.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrPersistentCacheUtils.h" diff --git a/src/gpu/ganesh/mtl/GrMtlResourceProvider.h b/src/gpu/ganesh/mtl/GrMtlResourceProvider.h index 8c35ac5d3b46..de38cac971d9 100644 --- a/src/gpu/ganesh/mtl/GrMtlResourceProvider.h +++ b/src/gpu/ganesh/mtl/GrMtlResourceProvider.h @@ -48,7 +48,7 @@ class GrMtlResourceProvider { // Destroy any cached resources. To be called before releasing the MtlDevice. void destroyResources(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void resetShaderCacheForTesting() const { fPipelineStateCache->release(); } #endif diff --git a/src/gpu/ganesh/mtl/GrMtlUniformHandler.mm b/src/gpu/ganesh/mtl/GrMtlUniformHandler.mm index 91d7668385cc..61c8b301f696 100644 --- a/src/gpu/ganesh/mtl/GrMtlUniformHandler.mm +++ b/src/gpu/ganesh/mtl/GrMtlUniformHandler.mm @@ -247,7 +247,7 @@ static uint32_t get_ubo_aligned_offset(uint32_t* currentOffset, MtlUniformInfo tempInfo; tempInfo.fVariable = GrShaderVar{std::move(mangleName), SkSLCombinedSamplerTypeForTextureType(type), - GrShaderVar::TypeModifier::Uniform, + GrShaderVar::TypeModifier::None, GrShaderVar::kNonArray, std::move(layoutQualifier), SkString()}; diff --git a/src/gpu/ganesh/mtl/GrMtlUtil.mm b/src/gpu/ganesh/mtl/GrMtlUtil.mm index 496bc893b1cb..90ac40d6543f 100644 --- a/src/gpu/ganesh/mtl/GrMtlUtil.mm +++ b/src/gpu/ganesh/mtl/GrMtlUtil.mm @@ -327,7 +327,7 @@ int GrMtlFormatStencilBits(MTLPixelFormat mtlFormat) { } } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) bool GrMtlFormatIsBGRA8(GrMTLPixelFormat mtlFormat) { return mtlFormat == MTLPixelFormatBGRA8Unorm; } diff --git a/src/gpu/ganesh/ops/AAConvexPathRenderer.cpp b/src/gpu/ganesh/ops/AAConvexPathRenderer.cpp index 74aeb5c73417..32c7d0f43c79 100644 --- a/src/gpu/ganesh/ops/AAConvexPathRenderer.cpp +++ b/src/gpu/ganesh/ops/AAConvexPathRenderer.cpp @@ -675,7 +675,7 @@ std::unique_ptr QuadEdgeEffect::makeProgramImp GR_DEFINE_GEOMETRY_PROCESSOR_TEST(QuadEdgeEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* QuadEdgeEffect::TestCreate(GrProcessorTestData* d) { SkMatrix localMatrix = GrTest::TestMatrix(d->fRandom); bool usesLocalCoords = d->fRandom->nextBool(); @@ -875,7 +875,7 @@ class AAConvexPathOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { return SkStringPrintf("Count: %d\n%s", fPaths.size(), fHelper.dumpInfo().c_str()); } @@ -936,7 +936,7 @@ bool AAConvexPathRenderer::onDrawPath(const DrawPathArgs& args) { } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(AAConvexPathOp) { SkMatrix viewMatrix = GrTest::TestMatrixInvertible(random); diff --git a/src/gpu/ganesh/ops/AAHairLinePathRenderer.cpp b/src/gpu/ganesh/ops/AAHairLinePathRenderer.cpp index ba601a76a460..360c5ec58ae5 100644 --- a/src/gpu/ganesh/ops/AAHairLinePathRenderer.cpp +++ b/src/gpu/ganesh/ops/AAHairLinePathRenderer.cpp @@ -932,7 +932,7 @@ class AAHairlineOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { return SkStringPrintf("Color: 0x%08x Coverage: 0x%02x, Count: %d\n%s", fColor.toBytes_RGBA(), fCoverage, fPaths.size(), @@ -1293,7 +1293,7 @@ void AAHairlineOp::onExecute(GrOpFlushState* flushState, const SkRect& chainBoun /////////////////////////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(AAHairlineOp) { SkMatrix viewMatrix = GrTest::TestMatrix(random); diff --git a/src/gpu/ganesh/ops/AALinearizingConvexPathRenderer.cpp b/src/gpu/ganesh/ops/AALinearizingConvexPathRenderer.cpp index 9ab917625866..34d9041ea86a 100644 --- a/src/gpu/ganesh/ops/AALinearizingConvexPathRenderer.cpp +++ b/src/gpu/ganesh/ops/AALinearizingConvexPathRenderer.cpp @@ -303,7 +303,7 @@ class AAFlatteningConvexPathOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (const auto& path : fPaths) { @@ -414,7 +414,7 @@ bool AALinearizingConvexPathRenderer::onDrawPath(const DrawPathArgs& args) { } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(AAFlatteningConvexPathOp) { SkMatrix viewMatrix = GrTest::TestMatrixPreservesRightAngles(random); diff --git a/src/gpu/ganesh/ops/AtlasPathRenderer.cpp b/src/gpu/ganesh/ops/AtlasPathRenderer.cpp index b0d0702e60cf..ba45f3550c1f 100644 --- a/src/gpu/ganesh/ops/AtlasPathRenderer.cpp +++ b/src/gpu/ganesh/ops/AtlasPathRenderer.cpp @@ -137,7 +137,7 @@ sk_sp AtlasPathRenderer::Make(GrRecordingContext* rContext) { AtlasPathRenderer::AtlasPathRenderer(GrDirectContext* dContext) { SkASSERT(IsSupported(dContext)); const GrCaps& caps = *dContext->priv().caps(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) fAtlasMaxSize = dContext->priv().options().fMaxTextureAtlasSize; #else fAtlasMaxSize = 2048; @@ -408,7 +408,7 @@ bool AtlasPathRenderer::preFlush(GrOnFlushResourceProvider* onFlushRP) { bool successful; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (onFlushRP->failFlushTimeCallbacks()) { successful = false; } else diff --git a/src/gpu/ganesh/ops/AtlasTextOp.cpp b/src/gpu/ganesh/ops/AtlasTextOp.cpp index 133bbd0d8e5e..9a9081c0c3e1 100644 --- a/src/gpu/ganesh/ops/AtlasTextOp.cpp +++ b/src/gpu/ganesh/ops/AtlasTextOp.cpp @@ -31,7 +31,7 @@ #include #include -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" #endif @@ -140,7 +140,7 @@ void AtlasTextOp::visitProxies(const GrVisitProxyFunc& func) const { fProcessors.visitProxies(func); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString AtlasTextOp::onDumpInfo() const { SkString str; int i = 0; @@ -515,7 +515,7 @@ GrGeometryProcessor* AtlasTextOp::setupDfProcessor(SkArenaAlloc* arena, } #endif // !defined(SK_DISABLE_SDF_TEXT) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrOp::Owner AtlasTextOp::CreateOpTestingOnly(skgpu::ganesh::SurfaceDrawContext* sdc, const SkPaint& skPaint, const SkFont& font, @@ -559,7 +559,7 @@ GrOp::Owner AtlasTextOp::CreateOpTestingOnly(skgpu::ganesh::SurfaceDrawContext* } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(AtlasTextOp) { SkMatrix ctm = GrTest::TestMatrixInvertible(random); diff --git a/src/gpu/ganesh/ops/AtlasTextOp.h b/src/gpu/ganesh/ops/AtlasTextOp.h index e8b46991746f..ba2f5a4d64c8 100644 --- a/src/gpu/ganesh/ops/AtlasTextOp.h +++ b/src/gpu/ganesh/ops/AtlasTextOp.h @@ -104,7 +104,7 @@ class AtlasTextOp final : public GrMeshDrawOp { }; inline static constexpr int kMaskTypeCount = static_cast(MaskType::kLast) + 1; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static GrOp::Owner CreateOpTestingOnly(skgpu::ganesh::SurfaceDrawContext*, const SkPaint&, const SkFont&, @@ -182,7 +182,7 @@ class AtlasTextOp final : public GrMeshDrawOp { void onPrepareDraws(GrMeshDrawTarget*) override; void onExecute(GrOpFlushState*, const SkRect& chainBounds) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override; #endif diff --git a/src/gpu/ganesh/ops/ClearOp.h b/src/gpu/ganesh/ops/ClearOp.h index f4842912d9a1..09c04ae8e32a 100644 --- a/src/gpu/ganesh/ops/ClearOp.h +++ b/src/gpu/ganesh/ops/ClearOp.h @@ -59,7 +59,7 @@ class ClearOp final : public GrOp { void onPrepare(GrOpFlushState*) override {} void onExecute(GrOpFlushState* state, const SkRect& chainBounds) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string("Scissor [ "); if (fScissor.enabled()) { diff --git a/src/gpu/ganesh/ops/DashOp.cpp b/src/gpu/ganesh/ops/DashOp.cpp index e0e380c8bd3e..6f12cc38aa36 100644 --- a/src/gpu/ganesh/ops/DashOp.cpp +++ b/src/gpu/ganesh/ops/DashOp.cpp @@ -37,7 +37,7 @@ using namespace skia_private; using AAMode = skgpu::ganesh::DashOp::AAMode; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) constexpr int kAAModeCnt = static_cast(skgpu::ganesh::DashOp::AAMode::kCoverageWithMSAA) + 1; #endif @@ -661,7 +661,7 @@ class DashOpImpl final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (const auto& geo : fLines) { @@ -873,7 +873,7 @@ DashingCircleEffect::DashingCircleEffect(const SkPMColor4f& color, GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DashingCircleEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* DashingCircleEffect::TestCreate(GrProcessorTestData* d) { AAMode aaMode = static_cast(d->fRandom->nextULessThan(kAAModeCnt)); GrColor color = GrTest::RandomColor(d->fRandom); @@ -1087,7 +1087,7 @@ DashingLineEffect::DashingLineEffect(const SkPMColor4f& color, GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DashingLineEffect) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* DashingLineEffect::TestCreate(GrProcessorTestData* d) { AAMode aaMode = static_cast(d->fRandom->nextULessThan(kAAModeCnt)); GrColor color = GrTest::RandomColor(d->fRandom); @@ -1226,7 +1226,7 @@ bool CanDrawDashLine(const SkPoint pts[2], const GrStyle& style, const SkMatrix& } // namespace skgpu::ganesh::DashOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" @@ -1304,4 +1304,4 @@ GR_DRAW_OP_TEST_DEFINE(DashOpImpl) { style, GrGetRandomStencil(random, context)); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/ops/DefaultPathRenderer.cpp b/src/gpu/ganesh/ops/DefaultPathRenderer.cpp index 2e099d2b13af..b9d78179b102 100644 --- a/src/gpu/ganesh/ops/DefaultPathRenderer.cpp +++ b/src/gpu/ganesh/ops/DefaultPathRenderer.cpp @@ -547,7 +547,7 @@ class DefaultPathOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string = SkStringPrintf("Color: 0x%08x Count: %d\n", fColor.toBytes_RGBA(), fPaths.size()); @@ -586,7 +586,7 @@ class DefaultPathOp final : public GrMeshDrawOp { /////////////////////////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(DefaultPathOp) { SkMatrix viewMatrix = GrTest::TestMatrix(random); diff --git a/src/gpu/ganesh/ops/DrawAtlasOp.cpp b/src/gpu/ganesh/ops/DrawAtlasOp.cpp index 10eb8b006e04..065011699f75 100644 --- a/src/gpu/ganesh/ops/DrawAtlasOp.cpp +++ b/src/gpu/ganesh/ops/DrawAtlasOp.cpp @@ -63,7 +63,7 @@ class DrawAtlasOpImpl final : public GrMeshDrawOp { void onPrepareDraws(GrMeshDrawTarget*) override; void onExecute(GrOpFlushState*, const SkRect& chainBounds) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override; #endif @@ -188,7 +188,7 @@ DrawAtlasOpImpl::DrawAtlasOpImpl(GrProcessorSet* processorSet, const SkPMColor4f this->setTransformedBounds(bounds, viewMatrix, HasAABloat::kNo, IsHairline::kNo); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString DrawAtlasOpImpl::onDumpInfo() const { SkString string; for (const auto& geo : fGeoData) { @@ -327,7 +327,7 @@ GrOp::Owner Make(GrRecordingContext* context, } // namespace skgpu::ganesh::DrawAtlasOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" static SkRSXform random_xform(SkRandom* random) { diff --git a/src/gpu/ganesh/ops/DrawMeshOp.cpp b/src/gpu/ganesh/ops/DrawMeshOp.cpp index 73af48cb5219..7e875af89287 100644 --- a/src/gpu/ganesh/ops/DrawMeshOp.cpp +++ b/src/gpu/ganesh/ops/DrawMeshOp.cpp @@ -508,7 +508,7 @@ class MeshOp final : public GrMeshDrawOp { void onPrepareDraws(GrMeshDrawTarget*) override; void onExecute(GrOpFlushState*, const SkRect& chainBounds) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override; #endif @@ -866,7 +866,7 @@ MeshOp::MeshOp(GrProcessorSet* processorSet, fIndexCount = fMeshes.back().indexCount(); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString MeshOp::onDumpInfo() const { return {}; } #endif @@ -1031,10 +1031,13 @@ GrOp::CombineResult MeshOp::onCombineIfPossible(GrOp* t, SkArenaAlloc*, const Gr return CombineResult::kCannotCombine; } + if (fVertexCount > INT32_MAX - that->fVertexCount) { + return CombineResult::kCannotCombine; + } if (SkToBool(fIndexCount) != SkToBool(that->fIndexCount)) { return CombineResult::kCannotCombine; } - if (SkToBool(fIndexCount) && fVertexCount + that->fVertexCount > SkToInt(UINT16_MAX)) { + if (SkToBool(fIndexCount) && fVertexCount > SkToInt(UINT16_MAX) - that->fVertexCount) { return CombineResult::kCannotCombine; } diff --git a/src/gpu/ganesh/ops/FillRRectOp.cpp b/src/gpu/ganesh/ops/FillRRectOp.cpp index da93ee1cbcbd..a5c48315efa7 100644 --- a/src/gpu/ganesh/ops/FillRRectOp.cpp +++ b/src/gpu/ganesh/ops/FillRRectOp.cpp @@ -96,7 +96,7 @@ class FillRRectOpImpl final : public GrMeshDrawOp { GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*, GrClampType) override; CombineResult onCombineIfPossible(GrOp*, SkArenaAlloc*, const GrCaps&) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override; #endif @@ -382,7 +382,7 @@ GrOp::CombineResult FillRRectOpImpl::onCombineIfPossible(GrOp* op, return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString FillRRectOpImpl::onDumpInfo() const { SkString str = SkStringPrintf("# instances: %u\n", fInstanceCount); str += fHelper.dumpInfo(); @@ -969,7 +969,7 @@ GrOp::Owner Make(GrRecordingContext* ctx, } // namespace skgpu::ganesh::FillRRectOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" diff --git a/src/gpu/ganesh/ops/FillRectOp.cpp b/src/gpu/ganesh/ops/FillRectOp.cpp index 1a1512e87c06..35316b76283f 100644 --- a/src/gpu/ganesh/ops/FillRectOp.cpp +++ b/src/gpu/ganesh/ops/FillRectOp.cpp @@ -31,7 +31,7 @@ using VertexSpec = skgpu::ganesh::QuadPerEdgeAA::VertexSpec; using ColorType = skgpu::ganesh::QuadPerEdgeAA::ColorType; using Subset = skgpu::ganesh::QuadPerEdgeAA::Subset; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString dump_quad_info(int index, const GrQuad* deviceQuad, const GrQuad* localQuad, const SkPMColor4f& color, GrQuadAAFlags aaFlags) { @@ -183,7 +183,7 @@ class FillRectOpImpl final : public GrMeshDrawOp { private: friend class skgpu::ganesh::FillRectOp; // for access to addQuad -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int numQuads() const final { return fQuads.count(); } #endif @@ -368,7 +368,7 @@ class FillRectOpImpl final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString str = SkStringPrintf("# draws: %u\n", fQuads.count()); str.appendf("Device quad type: %u, local quad type: %u\n", @@ -556,7 +556,7 @@ void FillRectOp::AddFillRectOps(skgpu::ganesh::SurfaceDrawContext* sdc, } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) uint32_t skgpu::ganesh::FillRectOp::ClassID() { return FillRectOpImpl::ClassID(); } diff --git a/src/gpu/ganesh/ops/FillRectOp.h b/src/gpu/ganesh/ops/FillRectOp.h index 6afc5c17b8fa..bd0be6a27535 100644 --- a/src/gpu/ganesh/ops/FillRectOp.h +++ b/src/gpu/ganesh/ops/FillRectOp.h @@ -64,7 +64,7 @@ class FillRectOp { int quadCount, const GrUserStencilSettings* = nullptr); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static uint32_t ClassID(); #endif diff --git a/src/gpu/ganesh/ops/GrDrawOp.h b/src/gpu/ganesh/ops/GrDrawOp.h index 0efaf1fe25a1..95191552455c 100644 --- a/src/gpu/ganesh/ops/GrDrawOp.h +++ b/src/gpu/ganesh/ops/GrDrawOp.h @@ -91,7 +91,7 @@ class GrDrawOp : public GrOp { } #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) // This is really only intended for TextureOp and FillRectOp to override virtual int numQuads() const { return -1; } #endif diff --git a/src/gpu/ganesh/ops/GrOp.h b/src/gpu/ganesh/ops/GrOp.h index 5b929c7d250f..e55f9d1a1d81 100644 --- a/src/gpu/ganesh/ops/GrOp.h +++ b/src/gpu/ganesh/ops/GrOp.h @@ -194,7 +194,7 @@ class GrOp : private SkNoncopyable { } /** Used for spewing information about ops when debugging. */ -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) virtual SkString dumpInfo() const final { return SkStringPrintf("%s\nOpBounds: [L: %.2f, T: %.2f, R: %.2f, B: %.2f]", this->onDumpInfo().c_str(), fBounds.fLeft, fBounds.fTop, @@ -317,7 +317,7 @@ class GrOp : private SkNoncopyable { // If this op is chained then chainBounds is the union of the bounds of all ops in the chain. // Otherwise, this op's bounds. virtual void onExecute(GrOpFlushState*, const SkRect& chainBounds) = 0; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) virtual SkString onDumpInfo() const { return SkString(); } #endif diff --git a/src/gpu/ganesh/ops/GrOvalOpFactory.cpp b/src/gpu/ganesh/ops/GrOvalOpFactory.cpp index 9fb182fa8c37..92b3003a2590 100644 --- a/src/gpu/ganesh/ops/GrOvalOpFactory.cpp +++ b/src/gpu/ganesh/ops/GrOvalOpFactory.cpp @@ -260,7 +260,7 @@ class CircleGeometryProcessor : public GrGeometryProcessor { GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleGeometryProcessor) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* CircleGeometryProcessor::TestCreate(GrProcessorTestData* d) { bool stroke = d->fRandom->nextBool(); bool roundCaps = stroke ? d->fRandom->nextBool() : false; @@ -512,7 +512,7 @@ class ButtCapDashedCircleGeometryProcessor : public GrGeometryProcessor { using INHERITED = GrGeometryProcessor; }; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* ButtCapDashedCircleGeometryProcessor::TestCreate(GrProcessorTestData* d) { bool wideColor = d->fRandom->nextBool(); const SkMatrix& matrix = GrTest::TestMatrix(d->fRandom); @@ -704,7 +704,7 @@ class EllipseGeometryProcessor : public GrGeometryProcessor { GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseGeometryProcessor) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* EllipseGeometryProcessor::TestCreate(GrProcessorTestData* d) { bool stroke = d->fRandom->nextBool(); bool wideColor = d->fRandom->nextBool(); @@ -894,7 +894,7 @@ class DIEllipseGeometryProcessor : public GrGeometryProcessor { GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseGeometryProcessor) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GrGeometryProcessor* DIEllipseGeometryProcessor::TestCreate(GrProcessorTestData* d) { bool wideColor = d->fRandom->nextBool(); bool useScale = d->fRandom->nextBool(); @@ -1449,7 +1449,7 @@ class CircleOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (int i = 0; i < fCircles.size(); ++i) { @@ -1772,7 +1772,7 @@ class ButtCapDashedCircleOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (int i = 0; i < fCircles.size(); ++i) { @@ -2069,7 +2069,7 @@ class EllipseOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string = SkStringPrintf("Stroked: %d\n", fStroked); for (const auto& geo : fEllipses) { @@ -2341,7 +2341,7 @@ class DIEllipseOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (const auto& geo : fEllipses) { @@ -2811,7 +2811,7 @@ class CircularRRectOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (int i = 0; i < fRRects.size(); ++i) { @@ -3131,7 +3131,7 @@ class EllipticalRRectOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string = SkStringPrintf("Stroked: %d\n", fStroked); for (const auto& geo : fRRects) { @@ -3410,7 +3410,7 @@ GrOp::Owner GrOvalOpFactory::MakeArcOp(GrRecordingContext* context, /////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(CircleOp) { if (numSamples > 1) { diff --git a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.cpp b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.cpp index 4e92a55af2f7..078be1bce13e 100644 --- a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.cpp +++ b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.cpp @@ -235,7 +235,7 @@ GrProgramInfo* GrSimpleMeshDrawOpHelper::createProgramInfo( this->pipelineFlags()); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static void dump_pipeline_flags(GrPipeline::InputFlags flags, SkString* result) { if (GrPipeline::InputFlags::kNone != flags) { if (flags & GrPipeline::InputFlags::kSnapVerticesToPixelCenters) { diff --git a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.h b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.h index 7339bd1b76d8..77bafad4c52b 100644 --- a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.h +++ b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelper.h @@ -101,7 +101,7 @@ class GrSimpleMeshDrawOpHelper { } } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString dumpInfo() const; #endif GrAAType aaType() const { return static_cast(fAAType); } diff --git a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp index 5ea0e201cb56..a2c969959548 100644 --- a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp +++ b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp @@ -68,7 +68,7 @@ GrProgramInfo* GrSimpleMeshDrawOpHelperWithStencil::createProgramInfoWithStencil this->stencilSettings()); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString GrSimpleMeshDrawOpHelperWithStencil::dumpInfo() const { SkString result = INHERITED::dumpInfo(); result.appendf("Stencil settings: %s\n", (fStencilSettings ? "yes" : "no")); diff --git a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.h b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.h index e178c17e5427..bfe354254da9 100644 --- a/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.h +++ b/src/gpu/ganesh/ops/GrSimpleMeshDrawOpHelperWithStencil.h @@ -70,7 +70,7 @@ class GrSimpleMeshDrawOpHelperWithStencil : private GrSimpleMeshDrawOpHelper { const SkRect& thisBounds, const SkRect& thatBounds, bool ignoreAAType = false) const; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString dumpInfo() const; #endif diff --git a/src/gpu/ganesh/ops/LatticeOp.cpp b/src/gpu/ganesh/ops/LatticeOp.cpp index b9cb45d833ff..001ec9f26ce9 100644 --- a/src/gpu/ganesh/ops/LatticeOp.cpp +++ b/src/gpu/ganesh/ops/LatticeOp.cpp @@ -360,7 +360,7 @@ class NonAALatticeOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString str; @@ -413,7 +413,7 @@ GrOp::Owner MakeNonAA(GrRecordingContext* context, } // namespace skgpu::ganesh::LatticeOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" #include "src/gpu/ganesh/GrProxyProvider.h" #include "src/gpu/ganesh/GrRecordingContextPriv.h" diff --git a/src/gpu/ganesh/ops/OpsTask.cpp b/src/gpu/ganesh/ops/OpsTask.cpp index b0949f22909d..48a5808a4fab 100644 --- a/src/gpu/ganesh/ops/OpsTask.cpp +++ b/src/gpu/ganesh/ops/OpsTask.cpp @@ -782,7 +782,7 @@ void OpsTask::discard() { //////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void OpsTask::dump(const SkString& label, SkString indent, bool printDependencies, diff --git a/src/gpu/ganesh/ops/OpsTask.h b/src/gpu/ganesh/ops/OpsTask.h index 09d1975047b5..ee81414e9349 100644 --- a/src/gpu/ganesh/ops/OpsTask.h +++ b/src/gpu/ganesh/ops/OpsTask.h @@ -106,7 +106,7 @@ class OpsTask : public GrRenderTask { void visitProxies_debugOnly(const GrVisitProxyFunc&) const override; #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void dump(const SkString& label, SkString indent, bool printDependencies, diff --git a/src/gpu/ganesh/ops/RegionOp.cpp b/src/gpu/ganesh/ops/RegionOp.cpp index 8dc59b55558f..eb4975052aee 100644 --- a/src/gpu/ganesh/ops/RegionOp.cpp +++ b/src/gpu/ganesh/ops/RegionOp.cpp @@ -170,7 +170,7 @@ class RegionOpImpl final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString str = SkStringPrintf("# combined: %d\n", fRegions.size()); for (int i = 0; i < fRegions.size(); ++i) { @@ -216,7 +216,7 @@ GrOp::Owner Make(GrRecordingContext* context, } // namespace skgpu::ganesh::RegionOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" @@ -253,4 +253,4 @@ GR_DRAW_OP_TEST_DEFINE(RegionOp) { GrGetRandomStencil(random, context)); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/ops/ShadowRRectOp.cpp b/src/gpu/ganesh/ops/ShadowRRectOp.cpp index 38687a5b3afb..6cfd75eef8c3 100644 --- a/src/gpu/ganesh/ops/ShadowRRectOp.cpp +++ b/src/gpu/ganesh/ops/ShadowRRectOp.cpp @@ -628,7 +628,7 @@ class ShadowCircularRRectOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (int i = 0; i < fGeoData.size(); ++i) { @@ -749,7 +749,7 @@ GrOp::Owner Make(GrRecordingContext* context, /////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" @@ -792,4 +792,4 @@ GR_DRAW_OP_TEST_DEFINE(ShadowRRectOp) { } while (true); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/ops/SmallPathAtlasMgr.h b/src/gpu/ganesh/ops/SmallPathAtlasMgr.h index 9433d8b1ed3c..c75f3fb0fc98 100644 --- a/src/gpu/ganesh/ops/SmallPathAtlasMgr.h +++ b/src/gpu/ganesh/ops/SmallPathAtlasMgr.h @@ -53,7 +53,7 @@ class SmallPathAtlasMgr final : public GrOnFlushCallbackObject, // GrOnFlushCallbackObject overrides bool preFlush(GrOnFlushResourceProvider* onFlushRP) override { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (onFlushRP->failFlushTimeCallbacks()) { return false; } diff --git a/src/gpu/ganesh/ops/SmallPathRenderer.cpp b/src/gpu/ganesh/ops/SmallPathRenderer.cpp index e2761dcd89e6..47ee5d95bf9e 100644 --- a/src/gpu/ganesh/ops/SmallPathRenderer.cpp +++ b/src/gpu/ganesh/ops/SmallPathRenderer.cpp @@ -634,7 +634,7 @@ class SmallPathOp final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (const auto& geo : fShapes) { @@ -729,7 +729,7 @@ bool SmallPathRenderer::onDrawPath(const DrawPathArgs& args) { } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(SmallPathOp) { SkMatrix viewMatrix = GrTest::TestMatrix(random); @@ -745,6 +745,6 @@ GR_DRAW_OP_TEST_DEFINE(SmallPathOp) { GrGetRandomStencil(random, context)); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) #endif // SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/gpu/ganesh/ops/StrokeRectOp.cpp b/src/gpu/ganesh/ops/StrokeRectOp.cpp index 758c17f141f0..6ebcec042e0c 100644 --- a/src/gpu/ganesh/ops/StrokeRectOp.cpp +++ b/src/gpu/ganesh/ops/StrokeRectOp.cpp @@ -254,7 +254,7 @@ class NonAAStrokeRectOp final : public GrMeshDrawOp { flushState->drawMesh(*fMesh); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { return SkStringPrintf("Color: 0x%08x, Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f], " "StrokeWidth: %.2f\n%s", @@ -533,7 +533,7 @@ class AAStrokeRectOp final : public GrMeshDrawOp { void onPrepareDraws(GrMeshDrawTarget*) override; void onExecute(GrOpFlushState*, const SkRect& chainBounds) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString string; for (const auto& info : fRects) { @@ -991,7 +991,7 @@ GrOp::Owner MakeNested(GrRecordingContext* context, } // namespace skgpu::ganesh::StrokeRectOp -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrDrawOpTest.h" diff --git a/src/gpu/ganesh/ops/TextureOp.cpp b/src/gpu/ganesh/ops/TextureOp.cpp index 740891fbaecd..a5896934f452 100644 --- a/src/gpu/ganesh/ops/TextureOp.cpp +++ b/src/gpu/ganesh/ops/TextureOp.cpp @@ -46,7 +46,7 @@ #include "src/gpu/ganesh/ops/QuadPerEdgeAA.h" #include "src/gpu/ganesh/ops/TextureOp.h" -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) #include "src/gpu/ganesh/GrProxyProvider.h" #endif @@ -812,7 +812,7 @@ class TextureOpImpl final : public GrMeshDrawOp { #endif -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) int numQuads() const final { return this->totNumQuads(); } #endif @@ -1090,7 +1090,7 @@ class TextureOpImpl final : public GrMeshDrawOp { return CombineResult::kMerged; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { SkString str = SkStringPrintf("# draws: %d\n", fQuads.count()); auto iter = fQuads.iterator(); @@ -1140,7 +1140,7 @@ class TextureOpImpl final : public GrMeshDrawOp { namespace skgpu::ganesh { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) uint32_t TextureOp::ClassID() { return TextureOpImpl::ClassID(); } @@ -1402,7 +1402,7 @@ void TextureOp::AddTextureSetOps(ganesh::SurfaceDrawContext* sdc, } // namespace skgpu::ganesh -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(TextureOpImpl) { SkISize dims; dims.fHeight = random->nextULessThan(90) + 10; @@ -1470,4 +1470,4 @@ GR_DRAW_OP_TEST_DEFINE(TextureOpImpl) { useSubset ? &srcRect : nullptr); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/src/gpu/ganesh/ops/TextureOp.h b/src/gpu/ganesh/ops/TextureOp.h index 0275fc983451..ca77b25c85ed 100644 --- a/src/gpu/ganesh/ops/TextureOp.h +++ b/src/gpu/ganesh/ops/TextureOp.h @@ -82,7 +82,7 @@ class TextureOp { const SkMatrix& viewMatrix, sk_sp textureXform); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static uint32_t ClassID(); #endif diff --git a/src/gpu/ganesh/ops/TriangulatingPathRenderer.cpp b/src/gpu/ganesh/ops/TriangulatingPathRenderer.cpp index ca8d1dec7692..1f5e1d87c455 100644 --- a/src/gpu/ganesh/ops/TriangulatingPathRenderer.cpp +++ b/src/gpu/ganesh/ops/TriangulatingPathRenderer.cpp @@ -525,7 +525,7 @@ class TriangulatingPathOp final : public GrMeshDrawOp { flushState->drawMesh(*fMesh); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) SkString onDumpInfo() const override { return SkStringPrintf("Color 0x%08x, aa: %d\n%s", fColor.toBytes_RGBA(), fAntiAlias, fHelper.dumpInfo().c_str()); @@ -551,7 +551,7 @@ class TriangulatingPathOp final : public GrMeshDrawOp { /////////////////////////////////////////////////////////////////////////////////////////////////// -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) GR_DRAW_OP_TEST_DEFINE(TriangulatingPathOp) { SkMatrix viewMatrix = GrTest::TestMatrixInvertible(random); diff --git a/src/gpu/ganesh/ops/TriangulatingPathRenderer.h b/src/gpu/ganesh/ops/TriangulatingPathRenderer.h index bce35a94e9ce..37f481defed1 100644 --- a/src/gpu/ganesh/ops/TriangulatingPathRenderer.h +++ b/src/gpu/ganesh/ops/TriangulatingPathRenderer.h @@ -21,7 +21,7 @@ namespace skgpu::ganesh { class TriangulatingPathRenderer final : public PathRenderer { public: TriangulatingPathRenderer(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void setMaxVerbCount(int maxVerbCount) { fMaxVerbCount = maxVerbCount; } #endif diff --git a/src/gpu/ganesh/surface/SkSurface_Ganesh.cpp b/src/gpu/ganesh/surface/SkSurface_Ganesh.cpp index 567e8ff9799d..26d863528d35 100644 --- a/src/gpu/ganesh/surface/SkSurface_Ganesh.cpp +++ b/src/gpu/ganesh/surface/SkSurface_Ganesh.cpp @@ -48,6 +48,11 @@ #include "src/gpu/ganesh/image/SkImage_Ganesh.h" #include "src/image/SkImage_Base.h" +#ifdef SK_IN_RENDERENGINE +#include "include/gpu/ganesh/gl/GrGLBackendSurface.h" +#include "include/gpu/gl/GrGLTypes.h" +#endif + #include #include #include @@ -132,8 +137,11 @@ sk_sp SkSurface_Ganesh::onNewSurface(const SkImageInfo& info) { GrSurfaceOrigin origin = targetView.origin(); // TODO: Make caller specify this (change virtual signature of onNewSurface). static const skgpu::Budgeted kBudgeted = skgpu::Budgeted::kNo; + + bool isProtected = targetView.asRenderTargetProxy()->isProtected() == GrProtected::kYes; return SkSurfaces::RenderTarget( - fDevice->recordingContext(), kBudgeted, info, sampleCount, origin, &this->props()); + fDevice->recordingContext(), kBudgeted, info, sampleCount, origin, &this->props(), + /* shouldCreateWithMips= */ false, isProtected); } sk_sp SkSurface_Ganesh::onNewImageSnapshot(const SkIRect* subset) { @@ -587,7 +595,8 @@ sk_sp RenderTarget(GrRecordingContext* rContext, int sampleCount, GrSurfaceOrigin origin, const SkSurfaceProps* props, - bool shouldCreateWithMips) { + bool shouldCreateWithMips, + bool isProtected) { if (!rContext) { return nullptr; } @@ -603,7 +612,7 @@ sk_sp RenderTarget(GrRecordingContext* rContext, SkBackingFit::kExact, sampleCount, mipmapped, - GrProtected::kNo, + GrProtected(isProtected), origin, SkSurfacePropsCopyOrDefault(props), skgpu::ganesh::Device::InitContents::kClear); @@ -647,9 +656,11 @@ sk_sp WrapBackendTexture(GrRecordingContext* rContext, GrWrapCacheable::kNo, std::move(releaseHelper))); if (!proxy) { + // TODO(scroggo,kjlubick) inline this into Android's AutoBackendTexture.cpp so we + // don't have a sometimes-dependency on the GL backend. #ifdef SK_IN_RENDERENGINE GrGLTextureInfo textureInfo; - bool retrievedTextureInfo = tex.getGLTextureInfo(&textureInfo); + bool retrievedTextureInfo = GrBackendTextures::GetGLTextureInfo(tex, &textureInfo); RENDERENGINE_ABORTF( "%s failed to wrap the texture into a renderable target " "\n\tGrBackendTexture: (%i x %i) hasMipmaps: %i isProtected: %i texType: %i" diff --git a/src/gpu/ganesh/text/GrAtlasManager.h b/src/gpu/ganesh/text/GrAtlasManager.h index 77b07083aa9e..38275b3412ba 100644 --- a/src/gpu/ganesh/text/GrAtlasManager.h +++ b/src/gpu/ganesh/text/GrAtlasManager.h @@ -88,7 +88,7 @@ class GrAtlasManager : public GrOnFlushCallbackObject, public skgpu::AtlasGenera // GrOnFlushCallbackObject overrides bool preFlush(GrOnFlushResourceProvider* onFlushRP) override { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (onFlushRP->failFlushTimeCallbacks()) { return false; } diff --git a/src/gpu/ganesh/vk/AHardwareBufferVk.cpp b/src/gpu/ganesh/vk/AHardwareBufferVk.cpp index 728a14d8fb0a..9063fa2d6579 100644 --- a/src/gpu/ganesh/vk/AHardwareBufferVk.cpp +++ b/src/gpu/ganesh/vk/AHardwareBufferVk.cpp @@ -11,6 +11,7 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/private/gpu/vk/SkiaVulkan.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/vk/GrVkCaps.h" @@ -31,20 +32,20 @@ GrBackendFormat GetVulkanBackendFormat(GrDirectContext* dContext, AHardwareBuffe } switch (bufferFormat) { case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); + return GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: - return GrBackendFormat::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT); + return GrBackendFormats::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT); case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_R5G6B5_UNORM_PACK16); + return GrBackendFormats::MakeVk(VK_FORMAT_R5G6B5_UNORM_PACK16); case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_A2B10G10R10_UNORM_PACK32); + return GrBackendFormats::MakeVk(VK_FORMAT_A2B10G10R10_UNORM_PACK32); case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); + return GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8_UNORM); + return GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8_UNORM); #if __ANDROID_API__ >= 33 case AHARDWAREBUFFER_FORMAT_R8_UNORM: - return GrBackendFormat::MakeVk(VK_FORMAT_R8_UNORM); + return GrBackendFormats::MakeVk(VK_FORMAT_R8_UNORM); #endif default: { if (requireKnownFormat) { @@ -92,7 +93,7 @@ GrBackendFormat GetVulkanBackendFormat(GrDirectContext* dContext, AHardwareBuffe ycbcrConversion.fChromaFilter = VK_FILTER_NEAREST; } - return GrBackendFormat::MakeVk(ycbcrConversion); + return GrBackendFormats::MakeVk(ycbcrConversion); } } } @@ -152,8 +153,8 @@ static GrBackendTexture make_vk_backend_texture( } VkFormat format; - if (!backendFormat.asVkFormat(&format)) { - SkDebugf("asVkFormat failed (valid: %d, backend: %u)", + if (!GrBackendFormats::AsVkFormat(backendFormat, &format)) { + SkDebugf("AsVkFormat failed (valid: %d, backend: %u)", backendFormat.isValid(), (unsigned)backendFormat.backend()); return GrBackendTexture(); @@ -186,7 +187,8 @@ static GrBackendTexture make_vk_backend_texture( externalFormat.pNext = nullptr; externalFormat.externalFormat = 0; // If this is zero it is as if we aren't using this struct. - const GrVkYcbcrConversionInfo* ycbcrConversion = backendFormat.getVkYcbcrConversionInfo(); + const GrVkYcbcrConversionInfo* ycbcrConversion = + GrBackendFormats::GetVkYcbcrConversionInfo(backendFormat); if (!ycbcrConversion) { return GrBackendTexture(); } @@ -356,7 +358,7 @@ static GrBackendTexture make_vk_backend_texture( *updateProc = update_vk_image; *imageCtx = new VulkanCleanupHelper(gpu, image, memory); - return GrBackendTexture(width, height, imageInfo); + return GrBackendTextures::MakeVk(width, height, imageInfo); } static bool can_import_protected_content(GrDirectContext* dContext) { diff --git a/src/gpu/ganesh/vk/BUILD.bazel b/src/gpu/ganesh/vk/BUILD.bazel index 8a3ec5cfc29c..d79828302e68 100644 --- a/src/gpu/ganesh/vk/BUILD.bazel +++ b/src/gpu/ganesh/vk/BUILD.bazel @@ -7,6 +7,8 @@ exports_files_legacy() VK_FILES = [ "AHardwareBufferVk.cpp", + "GrVkBackendSurface.cpp", + "GrVkBackendSurfacePriv.h", "GrVkBuffer.cpp", "GrVkBuffer.h", "GrVkCaps.cpp", diff --git a/src/gpu/ganesh/vk/GrVkBackendSurface.cpp b/src/gpu/ganesh/vk/GrVkBackendSurface.cpp new file mode 100644 index 000000000000..b38f6455e09c --- /dev/null +++ b/src/gpu/ganesh/vk/GrVkBackendSurface.cpp @@ -0,0 +1,492 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTextureCompressionType.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/GrBackendSurface.h" +#include "include/gpu/GrTypes.h" +#include "include/gpu/MutableTextureState.h" +#include "include/gpu/vk/GrVkTypes.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkTo.h" +#include "include/private/gpu/ganesh/GrTypesPriv.h" +#include "include/private/gpu/ganesh/GrVkTypesPriv.h" +#include "src/gpu/MutableTextureStateRef.h" +#include "src/gpu/ganesh/GrBackendSurfacePriv.h" +#include "src/gpu/ganesh/vk/GrVkUtil.h" +#include "src/gpu/vk/VulkanUtilsPriv.h" + +#include +#include +#include +#include + +class GrVkBackendFormatData final : public GrBackendFormatData { +public: + GrVkBackendFormatData(VkFormat format, const GrVkYcbcrConversionInfo& ycbcrInfo) + : fFormat(format), fYcbcrConversionInfo(ycbcrInfo) {} + + VkFormat asVkFormat() const { return fFormat; } + const GrVkYcbcrConversionInfo* getYcbcrConversionInfo() const { return &fYcbcrConversionInfo; } + +private: + SkTextureCompressionType compressionType() const override { + switch (fFormat) { + case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: + return SkTextureCompressionType::kETC2_RGB8_UNORM; + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + return SkTextureCompressionType::kBC1_RGB8_UNORM; + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + return SkTextureCompressionType::kBC1_RGBA8_UNORM; + default: + return SkTextureCompressionType::kNone; + } + } + + size_t bytesPerBlock() const override { + return skgpu::VkFormatBytesPerBlock(fFormat); + } + + int stencilBits() const override { + return skgpu::VkFormatStencilBits(fFormat); + } + + uint32_t channelMask() const override { + return skgpu::VkFormatChannels(fFormat); + } + + GrColorFormatDesc desc() const override { + return GrVkFormatDesc(fFormat); + } + + bool equal(const GrBackendFormatData* that) const override { + SkASSERT(!that || that->type() == GrBackendApi::kVulkan); + if (auto otherVk = static_cast(that)) { + return fFormat == otherVk->fFormat && + fYcbcrConversionInfo == otherVk->fYcbcrConversionInfo; + } + return false; + } + + std::string toString() const override { +#if defined(SK_DEBUG) || GR_TEST_UTILS + return skgpu::VkFormatToStr(fFormat); +#else + return ""; +#endif + } + + void copyTo(AnyFormatData& formatData) const override { + formatData.emplace(fFormat, fYcbcrConversionInfo); + } + + void makeTexture2D() override { + // If we have a ycbcr we remove it from the backend format and set the VkFormat to + // R8G8B8A8_UNORM + if (fYcbcrConversionInfo.isValid()) { + fYcbcrConversionInfo = GrVkYcbcrConversionInfo(); + fFormat = VK_FORMAT_R8G8B8A8_UNORM; + } + } + +#if defined(SK_DEBUG) + GrBackendApi type() const override { return GrBackendApi::kVulkan; } +#endif + + VkFormat fFormat; + GrVkYcbcrConversionInfo fYcbcrConversionInfo; +}; + +static const GrVkBackendFormatData* get_and_cast_data(const GrBackendFormat& format) { + auto data = GrBackendSurfacePriv::GetBackendData(format); + SkASSERT(!data || data->type() == GrBackendApi::kVulkan); + return static_cast(data); +} + +namespace GrBackendFormats { + +GrBackendFormat MakeVk(VkFormat format, bool willUseDRMFormatModifiers) { + return GrBackendSurfacePriv::MakeGrBackendFormat( + GrTextureType::k2D, + GrBackendApi::kVulkan, + GrVkBackendFormatData(format, GrVkYcbcrConversionInfo{})); +} + +GrBackendFormat MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, bool willUseDRMFormatModifiers) { + SkASSERT(ycbcrInfo.isValid()); + GrTextureType textureType = + ((ycbcrInfo.isValid() && ycbcrInfo.fExternalFormat) || willUseDRMFormatModifiers) + ? GrTextureType::kExternal + : GrTextureType::k2D; + return GrBackendSurfacePriv::MakeGrBackendFormat( + textureType, + GrBackendApi::kVulkan, + GrVkBackendFormatData(ycbcrInfo.fFormat, ycbcrInfo)); +} + +bool AsVkFormat(const GrBackendFormat& format, VkFormat* vkFormat) { + SkASSERT(vkFormat); + if (format.isValid() && format.backend() == GrBackendApi::kVulkan) { + const GrVkBackendFormatData* data = get_and_cast_data(format); + SkASSERT(data); + *vkFormat = data->asVkFormat(); + return true; + } + return false; +} + +const GrVkYcbcrConversionInfo* GetVkYcbcrConversionInfo(const GrBackendFormat& format) { + if (format.isValid() && format.backend() == GrBackendApi::kVulkan) { + const GrVkBackendFormatData* data = get_and_cast_data(format); + SkASSERT(data); + return data->getYcbcrConversionInfo(); + } + return nullptr; +} + +} // namespace GrBackendFormats + + +class GrVkBackendTextureData final : public GrBackendTextureData { +public: + GrVkBackendTextureData(const GrVkImageInfo& info, + sk_sp mutableState = nullptr) + : fVkInfo(info) + , fMutableState(mutableState ? std::move(mutableState) + : sk_make_sp( + info.fImageLayout, info.fCurrentQueueFamily)) {} + + const GrVkImageInfo& info() const { return fVkInfo; } + + sk_sp getMutableState() const override { + return fMutableState; + } + void setMutableState(const skgpu::MutableTextureState& state) override { + fMutableState->set(state); + } + + skgpu::MutableTextureStateRef* mutableState() { return fMutableState.get(); } + const skgpu::MutableTextureStateRef* mutableState() const { return fMutableState.get(); } + +private: + void copyTo(AnyTextureData& textureData) const override { + textureData.emplace(fVkInfo, fMutableState); + } + + bool isProtected() const override { return fVkInfo.fProtected == skgpu::Protected::kYes; } + + bool equal(const GrBackendTextureData* that) const override { + SkASSERT(!that || that->type() == GrBackendApi::kVulkan); + if (auto otherVk = static_cast(that)) { + // For our tests when checking equality we are assuming both backendTexture objects will + // be using the same mutable state object. + if (fMutableState != otherVk->fMutableState) { + return false; + } + return GrVkImageInfoWithMutableState(fVkInfo, fMutableState.get()) == + GrVkImageInfoWithMutableState(otherVk->fVkInfo, fMutableState.get()); + } + return false; + } + + bool isSameTexture(const GrBackendTextureData* that) const override { + SkASSERT(!that || that->type() == GrBackendApi::kVulkan); + if (auto otherVk = static_cast(that)) { + return fVkInfo.fImage == otherVk->fVkInfo.fImage; + } + return false; + + } + + GrBackendFormat getBackendFormat() const override { + auto info = GrVkImageInfoWithMutableState(fVkInfo, fMutableState.get()); + bool usesDRMModifier = info.fImageTiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT; + if (info.fYcbcrConversionInfo.isValid()) { + SkASSERT(info.fFormat == info.fYcbcrConversionInfo.fFormat); + return GrBackendFormats::MakeVk(info.fYcbcrConversionInfo, usesDRMModifier); + } + return GrBackendFormats::MakeVk(info.fFormat, usesDRMModifier); + } + +#if defined(SK_DEBUG) + GrBackendApi type() const override { return GrBackendApi::kVulkan; } +#endif + + GrVkImageInfo fVkInfo; + sk_sp fMutableState; +}; + +static const GrVkBackendTextureData* get_and_cast_data(const GrBackendTexture& texture) { + auto data = GrBackendSurfacePriv::GetBackendData(texture); + SkASSERT(!data || data->type() == GrBackendApi::kVulkan); + return static_cast(data); +} + +static GrVkBackendTextureData* get_and_cast_data(GrBackendTexture* texture) { + auto data = GrBackendSurfacePriv::GetBackendData(texture); + SkASSERT(!data || data->type() == GrBackendApi::kVulkan); + return static_cast(data); +} + +static GrTextureType vk_image_info_to_texture_type(const GrVkImageInfo& info) { + if ((info.fYcbcrConversionInfo.isValid() && info.fYcbcrConversionInfo.fExternalFormat != 0) || + info.fImageTiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) { + return GrTextureType::kExternal; + } + return GrTextureType::k2D; +} + +static const VkImageUsageFlags kDefaultUsageFlags = + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + +static const VkImageUsageFlags kDefaultRTUsageFlags = + kDefaultUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + +// We don't know if the backend texture is made renderable or not, so we default the usage flags +// to include color attachment as well. +static const VkImageUsageFlags kDefaultTexRTUsageFlags = + kDefaultUsageFlags | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + +static GrVkImageInfo apply_default_usage_flags(const GrVkImageInfo& info, + VkImageUsageFlags defaultFlags) { + if (info.fImageUsageFlags == 0) { + GrVkImageInfo newInfo = info; + newInfo.fImageUsageFlags = defaultFlags; + return newInfo; + } + return info; +} + +namespace GrBackendTextures { + +GrBackendTexture MakeVk(int width, + int height, + const GrVkImageInfo& vkInfo, + std::string_view label) { + return GrBackendSurfacePriv::MakeGrBackendTexture( + width, + height, + label, + skgpu::Mipmapped(vkInfo.fLevelCount > 1), + GrBackendApi::kVulkan, + vk_image_info_to_texture_type(vkInfo), + GrVkBackendTextureData(apply_default_usage_flags(vkInfo, kDefaultTexRTUsageFlags))); +} + +GrBackendTexture MakeVk(int width, + int height, + const GrVkImageInfo& vkInfo, + sk_sp mutableState) { + return GrBackendSurfacePriv::MakeGrBackendTexture( + width, + height, + /*label=*/{}, + skgpu::Mipmapped(vkInfo.fLevelCount > 1), + GrBackendApi::kVulkan, + vk_image_info_to_texture_type(vkInfo), + GrVkBackendTextureData(apply_default_usage_flags(vkInfo, kDefaultTexRTUsageFlags), + std::move(mutableState))); +} + +bool GetVkImageInfo(const GrBackendTexture& tex, GrVkImageInfo* outInfo) { + if (!tex.isValid() || tex.backend() != GrBackendApi::kVulkan) { + return false; + } + const GrVkBackendTextureData* data = get_and_cast_data(tex); + SkASSERT(data); + *outInfo = GrVkImageInfoWithMutableState(data->info(), data->mutableState()); + return true; +} + +void SetVkImageLayout(GrBackendTexture* tex, VkImageLayout layout) { + if (tex && tex->isValid() && tex->backend() == GrBackendApi::kVulkan) { + GrVkBackendTextureData* data = get_and_cast_data(tex); + SkASSERT(data); + data->mutableState()->setImageLayout(layout); + } +} + +} // namespace GrBackendTextures + + +class GrVkBackendRenderTargetData final : public GrBackendRenderTargetData { +public: + GrVkBackendRenderTargetData(const GrVkImageInfo& info, + sk_sp mutableState = nullptr) + : fVkInfo(info) + , fMutableState(mutableState ? std::move(mutableState) + : sk_make_sp( + info.fImageLayout, info.fCurrentQueueFamily)) {} + + const GrVkImageInfo& info() const { return fVkInfo; } + + sk_sp getMutableState() const override { + return fMutableState; + } + void setMutableState(const skgpu::MutableTextureState& state) override { + fMutableState->set(state); + } + + skgpu::MutableTextureStateRef* mutableState() { return fMutableState.get(); } + const skgpu::MutableTextureStateRef* mutableState() const { return fMutableState.get(); } + +private: + GrBackendFormat getBackendFormat() const override { + auto info = GrVkImageInfoWithMutableState(fVkInfo, fMutableState.get()); + if (info.fYcbcrConversionInfo.isValid()) { + SkASSERT(info.fFormat == info.fYcbcrConversionInfo.fFormat); + return GrBackendFormats::MakeVk(info.fYcbcrConversionInfo); + } + return GrBackendFormats::MakeVk(info.fFormat); + } + + bool isProtected() const override { return fVkInfo.fProtected == skgpu::Protected::kYes; } + + bool equal(const GrBackendRenderTargetData* that) const override { + SkASSERT(!that || that->type() == GrBackendApi::kVulkan); + if (auto otherVk = static_cast(that)) { + // For our tests when checking equality we are assuming both objects will be using the + // same mutable state object. + if (fMutableState != otherVk->fMutableState) { + return false; + } + return GrVkImageInfoWithMutableState(fVkInfo, fMutableState.get()) == + GrVkImageInfoWithMutableState(otherVk->fVkInfo, fMutableState.get()); + } + return false; + } + + void copyTo(AnyRenderTargetData& rtData) const override { + rtData.emplace(fVkInfo, fMutableState); + } + +#if defined(SK_DEBUG) + GrBackendApi type() const override { return GrBackendApi::kVulkan; } +#endif + + GrVkImageInfo fVkInfo; + sk_sp fMutableState; +}; + +static const GrVkBackendRenderTargetData* get_and_cast_data(const GrBackendRenderTarget& rt) { + auto data = GrBackendSurfacePriv::GetBackendData(rt); + SkASSERT(!data || data->type() == GrBackendApi::kVulkan); + return static_cast(data); +} + +static GrVkBackendRenderTargetData* get_and_cast_data(GrBackendRenderTarget* rt) { + auto data = GrBackendSurfacePriv::GetBackendData(rt); + SkASSERT(!data || data->type() == GrBackendApi::kVulkan); + return static_cast(data); +} + +namespace GrBackendRenderTargets { + +GrBackendRenderTarget MakeVk(int width, int height, const GrVkImageInfo& vkInfo) { + return GrBackendSurfacePriv::MakeGrBackendRenderTarget( + width, + height, + std::max(1U, vkInfo.fSampleCount), + /*stencilBits=*/0, + GrBackendApi::kVulkan, + /*framebufferOnly=*/false, + GrVkBackendRenderTargetData(apply_default_usage_flags(vkInfo, kDefaultRTUsageFlags))); +} + +GrBackendRenderTarget MakeVk(int width, + int height, + const GrVkImageInfo& vkInfo, + sk_sp mutableState) { + return GrBackendSurfacePriv::MakeGrBackendRenderTarget( + width, + height, + std::max(1U, vkInfo.fSampleCount), + /*stencilBits=*/0, + GrBackendApi::kVulkan, + /*framebufferOnly=*/false, + GrVkBackendRenderTargetData(apply_default_usage_flags(vkInfo, kDefaultRTUsageFlags), + std::move(mutableState))); +} + +bool GetVkImageInfo(const GrBackendRenderTarget& rt, GrVkImageInfo* outInfo) { + if (!rt.isValid() || rt.backend() != GrBackendApi::kVulkan) { + return false; + } + const GrVkBackendRenderTargetData* data = get_and_cast_data(rt); + SkASSERT(data); + *outInfo = GrVkImageInfoWithMutableState(data->info(), data->mutableState()); + return true; +} + +void SetVkImageLayout(GrBackendRenderTarget* rt, VkImageLayout layout) { + if (rt && rt->isValid() && rt->backend() == GrBackendApi::kVulkan) { + GrVkBackendRenderTargetData* data = get_and_cast_data(rt); + data->mutableState()->setImageLayout(layout); + } +} + +} // namespace GrBackendRenderTargets + + +#if !defined(SK_DISABLE_LEGACY_VK_BACKEND_SURFACE) && defined(SK_VULKAN) +GrBackendFormat GrBackendFormat::MakeVk(VkFormat format, bool willUseDRMFormatModifiers) { + return GrBackendFormats::MakeVk(format, willUseDRMFormatModifiers); +} + +GrBackendFormat GrBackendFormat::MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo, + bool willUseDRMFormatModifiers) { + return GrBackendFormats::MakeVk(ycbcrInfo, willUseDRMFormatModifiers); +} + +bool GrBackendFormat::asVkFormat(VkFormat* format) const { + return GrBackendFormats::AsVkFormat(*this, format); +} + +const GrVkYcbcrConversionInfo* GrBackendFormat::getVkYcbcrConversionInfo() const { + return GrBackendFormats::GetVkYcbcrConversionInfo(*this); +} + +GrBackendTexture::GrBackendTexture(int width, + int height, + const GrVkImageInfo& vkInfo, + std::string_view label) + : GrBackendTexture(width, + height, + label, + skgpu::Mipmapped(vkInfo.fLevelCount > 1), + GrBackendApi::kVulkan, + vk_image_info_to_texture_type(vkInfo), + GrVkBackendTextureData( + apply_default_usage_flags(vkInfo, kDefaultTexRTUsageFlags))) {} + +bool GrBackendTexture::getVkImageInfo(GrVkImageInfo* outInfo) const { + return GrBackendTextures::GetVkImageInfo(*this, outInfo); +} + +void GrBackendTexture::setVkImageLayout(VkImageLayout layout) { + GrBackendTextures::SetVkImageLayout(this, layout); +} + +GrBackendRenderTarget::GrBackendRenderTarget(int width, int height, const GrVkImageInfo& vkInfo) + : GrBackendRenderTarget(width, + height, + std::max(1U, vkInfo.fSampleCount), + /*stencilBits=*/0, + GrBackendApi::kVulkan, + /*framebufferOnly=*/false, + GrVkBackendRenderTargetData(vkInfo)) {} + +bool GrBackendRenderTarget::getVkImageInfo(GrVkImageInfo* outInfo) const { + return GrBackendRenderTargets::GetVkImageInfo(*this, outInfo); +} + +void GrBackendRenderTarget::setVkImageLayout(VkImageLayout layout) { + GrBackendRenderTargets::SetVkImageLayout(this, layout); +} +#endif diff --git a/src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h b/src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h new file mode 100644 index 000000000000..99a653d44fad --- /dev/null +++ b/src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkBackendSurfacePriv_DEFINED +#define GrVkBackendSurfacePriv_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/vk/GrVkTypes.h" +#include "include/private/base/SkAPI.h" + +class GrBackendTexture; +class GrBackendRenderTarget; + +namespace skgpu { +class MutableTextureStateRef; +} + +namespace GrBackendTextures { + +SK_API GrBackendTexture MakeVk(int width, + int height, + const GrVkImageInfo&, + sk_sp); + +} // namespace GrBackendTextures + + +namespace GrBackendRenderTargets { + +SK_API GrBackendRenderTarget MakeVk(int width, + int height, + const GrVkImageInfo&, + sk_sp); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/src/gpu/ganesh/vk/GrVkBuffer.cpp b/src/gpu/ganesh/vk/GrVkBuffer.cpp index 37c37fb4f2f3..7157ed9fd6d1 100644 --- a/src/gpu/ganesh/vk/GrVkBuffer.cpp +++ b/src/gpu/ganesh/vk/GrVkBuffer.cpp @@ -8,6 +8,7 @@ #include "src/gpu/ganesh/vk/GrVkBuffer.h" #include "include/gpu/GrDirectContext.h" +#include "include/private/base/SkDebug.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrResourceProvider.h" #include "src/gpu/ganesh/vk/GrVkDescriptorSet.h" @@ -135,11 +136,14 @@ sk_sp GrVkBuffer::Make(GrVkGpu* gpu, return nullptr; } - auto checkResult = [gpu](VkResult result) { + bool shouldPersistentlyMapCpuToGpu = gpu->vkCaps().shouldPersistentlyMapCpuToGpuBuffers(); + auto checkResult = [gpu, allocUsage, shouldPersistentlyMapCpuToGpu](VkResult result) { + GR_VK_LOG_IF_NOT_SUCCESS(gpu, result, "skgpu::VulkanMemory::AllocBufferMemory " + "(allocUsage:%d, shouldPersistentlyMapCpuToGpu:%d)", + (int)allocUsage, (int)shouldPersistentlyMapCpuToGpu); return gpu->checkVkResult(result); }; auto allocator = gpu->memoryAllocator(); - bool shouldPersistentlyMapCpuToGpu = gpu->vkCaps().shouldPersistentlyMapCpuToGpuBuffers(); if (!skgpu::VulkanMemory::AllocBufferMemory(allocator, buffer, allocUsage, @@ -189,19 +193,26 @@ void GrVkBuffer::vkMap(size_t readOffset, size_t readSize) { SkASSERT(fAlloc.fSize >= readOffset + readSize); GrVkGpu* gpu = this->getVkGpu(); - auto checkResult = [gpu](VkResult result) { + auto checkResult_mapAlloc = [gpu](VkResult result) { + GR_VK_LOG_IF_NOT_SUCCESS(gpu, result, "skgpu::VulkanMemory::MapAlloc"); return gpu->checkVkResult(result); }; auto allocator = gpu->memoryAllocator(); - fMapPtr = skgpu::VulkanMemory::MapAlloc(allocator, fAlloc, checkResult); + fMapPtr = skgpu::VulkanMemory::MapAlloc(allocator, fAlloc, checkResult_mapAlloc); if (fMapPtr && readSize != 0) { + auto checkResult_invalidateMapAlloc = [gpu, readOffset, readSize](VkResult result) { + GR_VK_LOG_IF_NOT_SUCCESS(gpu, result, "skgpu::VulkanMemory::InvalidateMappedAlloc " + "(readOffset:%zu, readSize:%zu)", + readOffset, readSize); + return gpu->checkVkResult(result); + }; // "Invalidate" here means make device writes visible to the host. That is, it makes // sure any GPU writes are finished in the range we might read from. skgpu::VulkanMemory::InvalidateMappedAlloc(allocator, fAlloc, readOffset, readSize, - checkResult); + checkResult_invalidateMapAlloc); } } } @@ -213,7 +224,10 @@ void GrVkBuffer::vkUnmap(size_t flushOffset, size_t flushSize) { SkASSERT(fAlloc.fSize >= flushOffset + flushSize); GrVkGpu* gpu = this->getVkGpu(); - auto checkResult = [gpu](VkResult result) { + auto checkResult = [gpu, flushOffset, flushSize](VkResult result) { + GR_VK_LOG_IF_NOT_SUCCESS(gpu, result, "skgpu::VulkanMemory::FlushMappedAlloc " + "(flushOffset:%zu, flushSize:%zu)", + flushOffset, flushSize); return gpu->checkVkResult(result); }; auto allocator = this->getVkGpu()->memoryAllocator(); diff --git a/src/gpu/ganesh/vk/GrVkCaps.cpp b/src/gpu/ganesh/vk/GrVkCaps.cpp index 9e19ec17418a..ec615e8f7bd4 100644 --- a/src/gpu/ganesh/vk/GrVkCaps.cpp +++ b/src/gpu/ganesh/vk/GrVkCaps.cpp @@ -12,6 +12,7 @@ #include "include/core/SkTextureCompressionType.h" #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrContextOptions.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkBackendContext.h" #include "include/gpu/vk/VulkanExtensions.h" #include "src/core/SkCompressedDataUtils.h" @@ -253,22 +254,22 @@ bool GrVkCaps::onCanCopySurface(const GrSurfaceProxy* dst, const SkIRect& dstRec SkASSERT((srcSampleCnt > 0) == SkToBool(src->asRenderTargetProxy())); bool dstHasYcbcr = false; - if (auto ycbcr = dst->backendFormat().getVkYcbcrConversionInfo()) { + if (auto ycbcr = GrBackendFormats::GetVkYcbcrConversionInfo(dst->backendFormat())) { if (ycbcr->isValid()) { dstHasYcbcr = true; } } bool srcHasYcbcr = false; - if (auto ycbcr = src->backendFormat().getVkYcbcrConversionInfo()) { + if (auto ycbcr = GrBackendFormats::GetVkYcbcrConversionInfo(src->backendFormat())) { if (ycbcr->isValid()) { srcHasYcbcr = true; } } VkFormat dstFormat, srcFormat; - SkAssertResult(dst->backendFormat().asVkFormat(&dstFormat)); - SkAssertResult(src->backendFormat().asVkFormat(&srcFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(dst->backendFormat(), &dstFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(src->backendFormat(), &srcFormat)); // Only blits support scaling, but since we've already clamped the src and dst rects, // the dimensions of the scaled blit aren't important to know if it's allowed. @@ -398,7 +399,7 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, if ((isProtected == GrProtected::kYes) && (physicalDeviceVersion >= VK_MAKE_VERSION(1, 1, 0))) { - fSupportsProtectedMemory = true; + fSupportsProtectedContent = true; fAvoidUpdateBuffers = true; fShouldAlwaysUseDedicatedImageMemory = true; } @@ -517,9 +518,9 @@ void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDevicePropertie #endif // Protected memory features have problems in Android P and earlier. - if (fSupportsProtectedMemory && (kQualcomm_VkVendor == properties.vendorID)) { + if (fSupportsProtectedContent && (kQualcomm_VkVendor == properties.vendorID)) { if (androidAPIVersion <= 28) { - fSupportsProtectedMemory = false; + fSupportsProtectedContent = false; } } @@ -1424,14 +1425,14 @@ void GrVkCaps::FormatInfo::init(const GrContextOptions& contextOptions, // external the VkFormat will be VK_NULL_HANDLE which is not handled by our various format // capability checks. static bool backend_format_is_external(const GrBackendFormat& format) { - const GrVkYcbcrConversionInfo* ycbcrInfo = format.getVkYcbcrConversionInfo(); + const GrVkYcbcrConversionInfo* ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(format); SkASSERT(ycbcrInfo); // All external formats have a valid ycbcrInfo used for sampling and a non zero external format. if (ycbcrInfo->isValid() && ycbcrInfo->fExternalFormat != 0) { #ifdef SK_DEBUG VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &vkFormat)); SkASSERT(vkFormat == VK_FORMAT_UNDEFINED); #endif return true; @@ -1441,7 +1442,7 @@ static bool backend_format_is_external(const GrBackendFormat& format) { bool GrVkCaps::isFormatSRGB(const GrBackendFormat& format) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return false; } if (backend_format_is_external(format)) { @@ -1453,7 +1454,7 @@ bool GrVkCaps::isFormatSRGB(const GrBackendFormat& format) const { bool GrVkCaps::isFormatTexturable(const GrBackendFormat& format, GrTextureType) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return false; } if (backend_format_is_external(format)) { @@ -1475,7 +1476,7 @@ bool GrVkCaps::isFormatAsColorTypeRenderable(GrColorType ct, const GrBackendForm return false; } VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return false; } const auto& info = this->getFormatInfo(vkFormat); @@ -1487,7 +1488,7 @@ bool GrVkCaps::isFormatAsColorTypeRenderable(GrColorType ct, const GrBackendForm bool GrVkCaps::isFormatRenderable(const GrBackendFormat& format, int sampleCount) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return false; } return this->isFormatRenderable(vkFormat, sampleCount); @@ -1500,7 +1501,7 @@ bool GrVkCaps::isFormatRenderable(VkFormat format, int sampleCount) const { int GrVkCaps::getRenderTargetSampleCount(int requestedCount, const GrBackendFormat& format) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return 0; } @@ -1533,7 +1534,7 @@ int GrVkCaps::getRenderTargetSampleCount(int requestedCount, VkFormat format) co int GrVkCaps::maxRenderTargetSampleCount(const GrBackendFormat& format) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return 0; } return this->maxRenderTargetSampleCount(vkFormat); @@ -1564,7 +1565,7 @@ GrCaps::SupportedWrite GrVkCaps::supportedWritePixelsColorType(GrColorType surfa const GrBackendFormat& surfaceFormat, GrColorType srcColorType) const { VkFormat vkFormat; - if (!surfaceFormat.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(surfaceFormat, &vkFormat)) { return {GrColorType::kUnknown, 0}; } @@ -1646,10 +1647,10 @@ bool GrVkCaps::onSurfaceSupportsWritePixels(const GrSurface* surface) const { bool GrVkCaps::onAreColorTypeAndFormatCompatible(GrColorType ct, const GrBackendFormat& format) const { VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return false; } - const GrVkYcbcrConversionInfo* ycbcrInfo = format.getVkYcbcrConversionInfo(); + const GrVkYcbcrConversionInfo* ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(format); SkASSERT(ycbcrInfo); if (ycbcrInfo->isValid() && !skgpu::VkFormatNeedsYcbcrSampler(vkFormat)) { @@ -1674,7 +1675,7 @@ GrBackendFormat GrVkCaps::onGetDefaultBackendFormat(GrColorType ct) const { if (format == VK_FORMAT_UNDEFINED) { return {}; } - return GrBackendFormat::MakeVk(format); + return GrBackendFormats::MakeVk(format); } bool GrVkCaps::onSupportsDynamicMSAA(const GrRenderTargetProxy* rtProxy) const { @@ -1707,17 +1708,17 @@ GrBackendFormat GrVkCaps::getBackendFormatFromCompressionType( return {}; case SkTextureCompressionType::kETC2_RGB8_UNORM: if (this->isVkFormatTexturable(VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK)) { - return GrBackendFormat::MakeVk(VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK); + return GrBackendFormats::MakeVk(VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK); } return {}; case SkTextureCompressionType::kBC1_RGB8_UNORM: if (this->isVkFormatTexturable(VK_FORMAT_BC1_RGB_UNORM_BLOCK)) { - return GrBackendFormat::MakeVk(VK_FORMAT_BC1_RGB_UNORM_BLOCK); + return GrBackendFormats::MakeVk(VK_FORMAT_BC1_RGB_UNORM_BLOCK); } return {}; case SkTextureCompressionType::kBC1_RGBA8_UNORM: if (this->isVkFormatTexturable(VK_FORMAT_BC1_RGBA_UNORM_BLOCK)) { - return GrBackendFormat::MakeVk(VK_FORMAT_BC1_RGBA_UNORM_BLOCK); + return GrBackendFormats::MakeVk(VK_FORMAT_BC1_RGBA_UNORM_BLOCK); } return {}; } @@ -1728,8 +1729,8 @@ GrBackendFormat GrVkCaps::getBackendFormatFromCompressionType( skgpu::Swizzle GrVkCaps::onGetReadSwizzle(const GrBackendFormat& format, GrColorType colorType) const { VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); - const auto* ycbcrInfo = format.getVkYcbcrConversionInfo(); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &vkFormat)); + const GrVkYcbcrConversionInfo* ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(format); SkASSERT(ycbcrInfo); if (ycbcrInfo->isValid() && ycbcrInfo->fExternalFormat != 0) { // We allow these to work with any color type and never swizzle. See @@ -1752,7 +1753,7 @@ skgpu::Swizzle GrVkCaps::onGetReadSwizzle(const GrBackendFormat& format, skgpu::Swizzle GrVkCaps::getWriteSwizzle(const GrBackendFormat& format, GrColorType colorType) const { VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &vkFormat)); const auto& info = this->getFormatInfo(vkFormat); for (int i = 0; i < info.fColorTypeInfoCount; ++i) { const auto& ctInfo = info.fColorTypeInfos[i]; @@ -1778,11 +1779,11 @@ GrDstSampleFlags GrVkCaps::onGetDstSampleFlagsForProxy(const GrRenderTargetProxy uint64_t GrVkCaps::computeFormatKey(const GrBackendFormat& format) const { VkFormat vkFormat; - SkAssertResult(format.asVkFormat(&vkFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &vkFormat)); #ifdef SK_DEBUG // We should never be trying to compute a key for an external format - const GrVkYcbcrConversionInfo* ycbcrInfo = format.getVkYcbcrConversionInfo(); + const GrVkYcbcrConversionInfo* ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(format); SkASSERT(ycbcrInfo); SkASSERT(!ycbcrInfo->isValid() || ycbcrInfo->fExternalFormat == 0); #endif @@ -1795,7 +1796,7 @@ GrCaps::SupportedRead GrVkCaps::onSupportedReadPixelsColorType( GrColorType srcColorType, const GrBackendFormat& srcBackendFormat, GrColorType dstColorType) const { VkFormat vkFormat; - if (!srcBackendFormat.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(srcBackendFormat, &vkFormat)) { return {GrColorType::kUnknown, 0}; } @@ -1833,7 +1834,7 @@ int GrVkCaps::getFragmentUniformSet() const { void GrVkCaps::addExtraSamplerKey(skgpu::KeyBuilder* b, GrSamplerState samplerState, const GrBackendFormat& format) const { - const GrVkYcbcrConversionInfo* ycbcrInfo = format.getVkYcbcrConversionInfo(); + const GrVkYcbcrConversionInfo* ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(format); if (!ycbcrInfo) { return; } @@ -2005,33 +2006,33 @@ GrVkCaps::IntelGPUType GrVkCaps::GetIntelGPUType(uint32_t deviceID) { return IntelGPUType::kOther; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector GrVkCaps::getTestingCombinations() const { std::vector combos = { - { GrColorType::kAlpha_8, GrBackendFormat::MakeVk(VK_FORMAT_R8_UNORM) }, - { GrColorType::kBGR_565, GrBackendFormat::MakeVk(VK_FORMAT_R5G6B5_UNORM_PACK16) }, - { GrColorType::kABGR_4444, GrBackendFormat::MakeVk(VK_FORMAT_R4G4B4A4_UNORM_PACK16)}, - { GrColorType::kABGR_4444, GrBackendFormat::MakeVk(VK_FORMAT_B4G4R4A4_UNORM_PACK16)}, - { GrColorType::kRGBA_8888, GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM) }, - { GrColorType::kRGBA_8888_SRGB, GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_SRGB) }, - { GrColorType::kRGB_888x, GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM) }, - { GrColorType::kRGB_888x, GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8_UNORM) }, - { GrColorType::kRG_88, GrBackendFormat::MakeVk(VK_FORMAT_R8G8_UNORM) }, - { GrColorType::kBGRA_8888, GrBackendFormat::MakeVk(VK_FORMAT_B8G8R8A8_UNORM) }, - { GrColorType::kRGBA_1010102, GrBackendFormat::MakeVk(VK_FORMAT_A2B10G10R10_UNORM_PACK32)}, - { GrColorType::kBGRA_1010102, GrBackendFormat::MakeVk(VK_FORMAT_A2R10G10B10_UNORM_PACK32)}, - { GrColorType::kGray_8, GrBackendFormat::MakeVk(VK_FORMAT_R8_UNORM) }, - { GrColorType::kAlpha_F16, GrBackendFormat::MakeVk(VK_FORMAT_R16_SFLOAT) }, - { GrColorType::kRGBA_F16, GrBackendFormat::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT) }, - { GrColorType::kRGBA_F16_Clamped, GrBackendFormat::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT) }, - { GrColorType::kAlpha_16, GrBackendFormat::MakeVk(VK_FORMAT_R16_UNORM) }, - { GrColorType::kRG_1616, GrBackendFormat::MakeVk(VK_FORMAT_R16G16_UNORM) }, - { GrColorType::kRGBA_16161616, GrBackendFormat::MakeVk(VK_FORMAT_R16G16B16A16_UNORM) }, - { GrColorType::kRG_F16, GrBackendFormat::MakeVk(VK_FORMAT_R16G16_SFLOAT) }, + { GrColorType::kAlpha_8, GrBackendFormats::MakeVk(VK_FORMAT_R8_UNORM) }, + { GrColorType::kBGR_565, GrBackendFormats::MakeVk(VK_FORMAT_R5G6B5_UNORM_PACK16) }, + { GrColorType::kABGR_4444, GrBackendFormats::MakeVk(VK_FORMAT_R4G4B4A4_UNORM_PACK16)}, + { GrColorType::kABGR_4444, GrBackendFormats::MakeVk(VK_FORMAT_B4G4R4A4_UNORM_PACK16)}, + { GrColorType::kRGBA_8888, GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_UNORM) }, + { GrColorType::kRGBA_8888_SRGB, GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_SRGB) }, + { GrColorType::kRGB_888x, GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_UNORM) }, + { GrColorType::kRGB_888x, GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8_UNORM) }, + { GrColorType::kRG_88, GrBackendFormats::MakeVk(VK_FORMAT_R8G8_UNORM) }, + { GrColorType::kBGRA_8888, GrBackendFormats::MakeVk(VK_FORMAT_B8G8R8A8_UNORM) }, + { GrColorType::kRGBA_1010102, GrBackendFormats::MakeVk(VK_FORMAT_A2B10G10R10_UNORM_PACK32)}, + { GrColorType::kBGRA_1010102, GrBackendFormats::MakeVk(VK_FORMAT_A2R10G10B10_UNORM_PACK32)}, + { GrColorType::kGray_8, GrBackendFormats::MakeVk(VK_FORMAT_R8_UNORM) }, + { GrColorType::kAlpha_F16, GrBackendFormats::MakeVk(VK_FORMAT_R16_SFLOAT) }, + { GrColorType::kRGBA_F16, GrBackendFormats::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT) }, + { GrColorType::kRGBA_F16_Clamped, GrBackendFormats::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT) }, + { GrColorType::kAlpha_16, GrBackendFormats::MakeVk(VK_FORMAT_R16_UNORM) }, + { GrColorType::kRG_1616, GrBackendFormats::MakeVk(VK_FORMAT_R16G16_UNORM) }, + { GrColorType::kRGBA_16161616, GrBackendFormats::MakeVk(VK_FORMAT_R16G16B16A16_UNORM) }, + { GrColorType::kRG_F16, GrBackendFormats::MakeVk(VK_FORMAT_R16G16_SFLOAT) }, // These two compressed formats both have an effective colorType of kRGB_888x - { GrColorType::kRGB_888x, GrBackendFormat::MakeVk(VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK)}, - { GrColorType::kRGB_888x, GrBackendFormat::MakeVk(VK_FORMAT_BC1_RGB_UNORM_BLOCK) }, - { GrColorType::kRGBA_8888, GrBackendFormat::MakeVk(VK_FORMAT_BC1_RGBA_UNORM_BLOCK) }, + { GrColorType::kRGB_888x, GrBackendFormats::MakeVk(VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK)}, + { GrColorType::kRGB_888x, GrBackendFormats::MakeVk(VK_FORMAT_BC1_RGB_UNORM_BLOCK) }, + { GrColorType::kRGBA_8888, GrBackendFormats::MakeVk(VK_FORMAT_BC1_RGBA_UNORM_BLOCK)}, }; return combos; diff --git a/src/gpu/ganesh/vk/GrVkCaps.h b/src/gpu/ganesh/vk/GrVkCaps.h index a6086eda64f3..1d0f2752d7d8 100644 --- a/src/gpu/ganesh/vk/GrVkCaps.h +++ b/src/gpu/ganesh/vk/GrVkCaps.h @@ -164,9 +164,6 @@ class GrVkCaps : public GrCaps { return 3; } - // Returns true if the device supports protected memory. - bool supportsProtectedMemory() const { return fSupportsProtectedMemory; } - // Returns true if the VK_EXT_image_drm_format_modifier is enabled. bool supportsDRMFormatModifiers() const { return fSupportsDRMFormatModifiers; } @@ -272,7 +269,7 @@ class GrVkCaps : public GrCaps { bool supportsMemorylessAttachments() const { return fSupportsMemorylessAttachments; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::vector getTestingCombinations() const override; #endif @@ -450,8 +447,6 @@ class GrVkCaps : public GrCaps { bool fSupportsYcbcrConversion = false; - bool fSupportsProtectedMemory = false; - bool fSupportsDRMFormatModifiers = false; bool fPreferPrimaryOverSecondaryCommandBuffers = true; diff --git a/src/gpu/ganesh/vk/GrVkCommandBuffer.cpp b/src/gpu/ganesh/vk/GrVkCommandBuffer.cpp index 84e7fcc9207c..0680356dd064 100644 --- a/src/gpu/ganesh/vk/GrVkCommandBuffer.cpp +++ b/src/gpu/ganesh/vk/GrVkCommandBuffer.cpp @@ -148,7 +148,7 @@ void GrVkCommandBuffer::submitPipelineBarriers(const GrVkGpu* gpu, bool forSelfD SkASSERT(fIsActive); // Currently we never submit a pipeline barrier without at least one memory barrier. - if (fBufferBarriers.size() || fImageBarriers.size()) { + if (fBufferBarriers.size() > 0 || fImageBarriers.size() > 0) { // For images we can have barriers inside of render passes but they require us to add more // support in subpasses which need self dependencies to have barriers inside them. Also, we // can never have buffer barriers inside of a render pass. For now we will just assert that @@ -157,6 +157,18 @@ void GrVkCommandBuffer::submitPipelineBarriers(const GrVkGpu* gpu, bool forSelfD SkASSERT(!this->isWrapped()); SkASSERT(fSrcStageMask && fDstStageMask); + // TODO(https://crbug.com/1469231): The linked bug references a crash report from calling + // CmdPipelineBarrier. The checks below were added to ensure that we are passing in buffer + // counts >= 0, and in the case of >0, that the buffers are non-null. Evaluate whether this + // change leads to a reduction in crash instances. If not, the issue may lie within the + // driver itself and these checks can be removed. + if (fBufferBarriers.size() > 0 && fBufferBarriers.begin() == nullptr) { + fBufferBarriers.clear(); // Sets the size to 0 + } + if (fImageBarriers.size() > 0 && fImageBarriers.begin() == nullptr) { + fImageBarriers.clear(); // Sets the size to 0 + } + VkDependencyFlags dependencyFlags = fBarriersByRegion ? VK_DEPENDENCY_BY_REGION_BIT : 0; GR_VK_CALL(gpu->vkInterface(), CmdPipelineBarrier( fCmdBuffer, fSrcStageMask, fDstStageMask, dependencyFlags, 0, nullptr, diff --git a/src/gpu/ganesh/vk/GrVkGpu.cpp b/src/gpu/ganesh/vk/GrVkGpu.cpp index b5e75101c7ec..bc9e706edec0 100644 --- a/src/gpu/ganesh/vk/GrVkGpu.cpp +++ b/src/gpu/ganesh/vk/GrVkGpu.cpp @@ -49,6 +49,7 @@ #include "src/gpu/vk/VulkanMemory.h" #include "src/gpu/vk/VulkanUtilsPriv.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/gpu/vk/VulkanExtensions.h" @@ -203,7 +204,7 @@ sk_sp GrVkGpu::Make(const GrVkBackendContext& backendContext, instanceVersion, physDevVersion, std::move(memoryAllocator))); if (backendContext.fProtectedContext == GrProtected::kYes && - !vkGpu->vkCaps().supportsProtectedMemory()) { + !vkGpu->vkCaps().supportsProtectedContent()) { return nullptr; } return std::move(vkGpu); @@ -1134,7 +1135,7 @@ sk_sp GrVkGpu::onCreateTexture(SkISize dimensions, uint32_t levelClearMask, std::string_view label) { VkFormat pixelFormat; - SkAssertResult(format.asVkFormat(&pixelFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &pixelFormat)); SkASSERT(!skgpu::VkFormatIsCompressed(pixelFormat)); SkASSERT(mipLevelCount > 0); @@ -1197,7 +1198,7 @@ sk_sp GrVkGpu::onCreateCompressedTexture(SkISize dimensions, const void* data, size_t dataSize) { VkFormat pixelFormat; - SkAssertResult(format.asVkFormat(&pixelFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &pixelFormat)); SkASSERT(skgpu::VkFormatIsCompressed(pixelFormat)); int numMipLevels = 1; @@ -1380,7 +1381,7 @@ sk_sp GrVkGpu::onWrapBackendTexture(const GrBackendTexture& backendTe GrWrapCacheable cacheable, GrIOType ioType) { GrVkImageInfo imageInfo; - if (!backendTex.getVkImageInfo(&imageInfo)) { + if (!GrBackendTextures::GetVkImageInfo(backendTex, &imageInfo)) { return nullptr; } @@ -1414,7 +1415,7 @@ sk_sp GrVkGpu::onWrapRenderableBackendTexture(const GrBackendTexture& GrWrapOwnership ownership, GrWrapCacheable cacheable) { GrVkImageInfo imageInfo; - if (!backendTex.getVkImageInfo(&imageInfo)) { + if (!GrBackendTextures::GetVkImageInfo(backendTex, &imageInfo)) { return nullptr; } @@ -1450,7 +1451,7 @@ sk_sp GrVkGpu::onWrapRenderableBackendTexture(const GrBackendTexture& sk_sp GrVkGpu::onWrapBackendRenderTarget(const GrBackendRenderTarget& backendRT) { GrVkImageInfo info; - if (!backendRT.getVkImageInfo(&info)) { + if (!GrBackendRenderTargets::GetVkImageInfo(backendRT, &info)) { return nullptr; } @@ -1490,7 +1491,7 @@ sk_sp GrVkGpu::onWrapVulkanSecondaryCBAsRenderTarget( return nullptr; } - GrBackendFormat backendFormat = GrBackendFormat::MakeVk(vkInfo.fFormat); + GrBackendFormat backendFormat = GrBackendFormats::MakeVk(vkInfo.fFormat); if (!backendFormat.isValid()) { return nullptr; } @@ -1617,7 +1618,7 @@ sk_sp GrVkGpu::makeMSAAAttachment(SkISize dimensions, GrProtected isProtected, GrMemoryless memoryless) { VkFormat pixelFormat; - SkAssertResult(format.asVkFormat(&pixelFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(format, &pixelFormat)); SkASSERT(!skgpu::VkFormatIsCompressed(pixelFormat)); SkASSERT(this->vkCaps().isFormatRenderable(pixelFormat, numSamples)); @@ -1720,7 +1721,7 @@ bool GrVkGpu::onClearBackendTexture(const GrBackendTexture& backendTexture, sk_sp finishedCallback, std::array color) { GrVkImageInfo info; - SkAssertResult(backendTexture.getVkImageInfo(&info)); + SkAssertResult(GrBackendTextures::GetVkImageInfo(backendTexture, &info)); sk_sp mutableState = backendTexture.getMutableState(); SkASSERT(mutableState); @@ -1787,7 +1788,7 @@ GrBackendTexture GrVkGpu::onCreateBackendTexture(SkISize dimensions, } VkFormat vkFormat; - if (!format.asVkFormat(&vkFormat)) { + if (!GrBackendFormats::AsVkFormat(format, &vkFormat)) { return {}; } @@ -1806,7 +1807,7 @@ GrBackendTexture GrVkGpu::onCreateBackendTexture(SkISize dimensions, return {}; } - return GrBackendTexture(dimensions.width(), dimensions.height(), info); + return GrBackendTextures::MakeVk(dimensions.width(), dimensions.height(), info); } GrBackendTexture GrVkGpu::onCreateCompressedBackendTexture( @@ -1825,7 +1826,7 @@ bool GrVkGpu::onUpdateCompressedBackendTexture(const GrBackendTexture& backendTe const void* data, size_t size) { GrVkImageInfo info; - SkAssertResult(backendTexture.getVkImageInfo(&info)); + SkAssertResult(GrBackendTextures::GetVkImageInfo(backendTexture, &info)); sk_sp mutableState = backendTexture.getMutableState(); SkASSERT(mutableState); @@ -1963,7 +1964,7 @@ bool GrVkGpu::setBackendTextureState(const GrBackendTexture& backendTeture, skgpu::MutableTextureState* previousState, sk_sp finishedCallback) { GrVkImageInfo info; - SkAssertResult(backendTeture.getVkImageInfo(&info)); + SkAssertResult(GrBackendTextures::GetVkImageInfo(backendTeture, &info)); sk_sp currentState = backendTeture.getMutableState(); SkASSERT(currentState); SkASSERT(newState.isValid() && newState.fBackend == skgpu::BackendApi::kVulkan); @@ -1977,7 +1978,7 @@ bool GrVkGpu::setBackendRenderTargetState(const GrBackendRenderTarget& backendRe skgpu::MutableTextureState* previousState, sk_sp finishedCallback) { GrVkImageInfo info; - SkAssertResult(backendRenderTarget.getVkImageInfo(&info)); + SkAssertResult(GrBackendRenderTargets::GetVkImageInfo(backendRenderTarget, &info)); sk_sp currentState = backendRenderTarget.getMutableState(); SkASSERT(currentState); SkASSERT(newState.fBackend == skgpu::BackendApi::kVulkan); @@ -2019,7 +2020,7 @@ void GrVkGpu::deleteBackendTexture(const GrBackendTexture& tex) { SkASSERT(GrBackendApi::kVulkan == tex.fBackend); GrVkImageInfo info; - if (tex.getVkImageInfo(&info)) { + if (GrBackendTextures::GetVkImageInfo(tex, &info)) { GrVkImage::DestroyImageInfo(this, const_cast(&info)); } } @@ -2063,12 +2064,12 @@ bool GrVkGpu::compile(const GrProgramDesc& desc, const GrProgramInfo& programInf return stat != GrThreadSafePipelineBuilder::Stats::ProgramCacheResult::kHit; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool GrVkGpu::isTestingOnlyBackendTexture(const GrBackendTexture& tex) const { SkASSERT(GrBackendApi::kVulkan == tex.fBackend); GrVkImageInfo backend; - if (!tex.getVkImageInfo(&backend)) { + if (!GrBackendTextures::GetVkImageInfo(tex, &backend)) { return false; } @@ -2103,14 +2104,14 @@ GrBackendRenderTarget GrVkGpu::createTestingOnlyBackendRenderTarget(SkISize dime isProtected)) { return {}; } - return GrBackendRenderTarget(dimensions.width(), dimensions.height(), 0, info); + return GrBackendRenderTargets::MakeVk(dimensions.width(), dimensions.height(), info); } void GrVkGpu::deleteTestingOnlyBackendRenderTarget(const GrBackendRenderTarget& rt) { SkASSERT(GrBackendApi::kVulkan == rt.fBackend); GrVkImageInfo info; - if (rt.getVkImageInfo(&info)) { + if (GrBackendRenderTargets::GetVkImageInfo(rt, &info)) { // something in the command buffer may still be using this, so force submit SkAssertResult(this->submitCommandBuffer(kForce_SyncQueue)); GrVkImage::DestroyImageInfo(this, const_cast(&info)); @@ -2277,7 +2278,7 @@ void GrVkGpu::copySurfaceAsCopyImage(GrSurface* dst, bool srcHasYcbcr = srcImage->ycbcrConversionInfo().isValid(); VkFormat dstFormat = dstImage->imageFormat(); VkFormat srcFormat; - SkAssertResult(dst->backendFormat().asVkFormat(&srcFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(dst->backendFormat(), &srcFormat)); SkASSERT(this->vkCaps().canCopyImage(dstFormat, dstSampleCnt, dstHasYcbcr, srcFormat, srcSampleCnt, srcHasYcbcr)); #endif @@ -2342,7 +2343,7 @@ void GrVkGpu::copySurfaceAsBlit(GrSurface* dst, bool srcHasYcbcr = srcImage->ycbcrConversionInfo().isValid(); VkFormat dstFormat = dstImage->imageFormat(); VkFormat srcFormat; - SkAssertResult(dst->backendFormat().asVkFormat(&srcFormat)); + SkAssertResult(GrBackendFormats::AsVkFormat(dst->backendFormat(), &srcFormat)); SkASSERT(this->vkCaps().canCopyAsBlit(dstFormat, dstSampleCnt, dstImage->isLinearTiled(), diff --git a/src/gpu/ganesh/vk/GrVkGpu.h b/src/gpu/ganesh/vk/GrVkGpu.h index 80567447902e..8d2e46821ccb 100644 --- a/src/gpu/ganesh/vk/GrVkGpu.h +++ b/src/gpu/ganesh/vk/GrVkGpu.h @@ -8,6 +8,7 @@ #ifndef GrVkGpu_DEFINED #define GrVkGpu_DEFINED +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkBackendContext.h" #include "include/gpu/vk/GrVkTypes.h" #include "src/gpu/ganesh/GrGpu.h" @@ -97,7 +98,7 @@ class GrVkGpu : public GrGpu { bool compile(const GrProgramDesc&, const GrProgramInfo&) override; -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, @@ -115,7 +116,7 @@ class GrVkGpu : public GrGpu { SkISize dimensions, int numStencilSamples) override; GrBackendFormat getPreferredStencilFormat(const GrBackendFormat&) override { - return GrBackendFormat::MakeVk(this->vkCaps().preferredStencilFormat()); + return GrBackendFormats::MakeVk(this->vkCaps().preferredStencilFormat()); } sk_sp makeMSAAAttachment(SkISize dimensions, diff --git a/src/gpu/ganesh/vk/GrVkImage.cpp b/src/gpu/ganesh/vk/GrVkImage.cpp index 2f76f03a71aa..e46ed962a3e6 100644 --- a/src/gpu/ganesh/vk/GrVkImage.cpp +++ b/src/gpu/ganesh/vk/GrVkImage.cpp @@ -470,7 +470,8 @@ bool GrVkImage::InitImageInfo(GrVkGpu* gpu, const ImageDesc& imageDesc, GrVkImag if (0 == imageDesc.fWidth || 0 == imageDesc.fHeight) { return false; } - if ((imageDesc.fIsProtected == GrProtected::kYes) && !gpu->vkCaps().supportsProtectedMemory()) { + if ((imageDesc.fIsProtected == GrProtected::kYes) && + !gpu->vkCaps().supportsProtectedContent()) { return false; } @@ -522,7 +523,12 @@ bool GrVkImage::InitImageInfo(GrVkGpu* gpu, const ImageDesc& imageDesc, GrVkImag bool useLazyAllocation = SkToBool(imageDesc.fUsageFlags & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT); - auto checkResult = [gpu](VkResult result) { + auto checkResult = [gpu, isProtected, forceDedicatedMemory, useLazyAllocation]( + VkResult result) { + GR_VK_LOG_IF_NOT_SUCCESS(gpu, result, "skgpu::VulkanMemory::AllocImageMemory" + " (isProtected:%d, forceDedicatedMemory:%d, useLazyAllocation:%d)", + (int)isProtected, (int)forceDedicatedMemory, + (int)useLazyAllocation); return gpu->checkVkResult(result); }; auto allocator = gpu->memoryAllocator(); @@ -706,9 +712,8 @@ GrVkGpu* GrVkImage::getVkGpu() const { return static_cast(this->getGpu()); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrVkImage::setCurrentQueueFamilyToGraphicsQueue(GrVkGpu* gpu) { fMutableState->setQueueFamilyIndex(gpu->queueIndex()); } #endif - diff --git a/src/gpu/ganesh/vk/GrVkImage.h b/src/gpu/ganesh/vk/GrVkImage.h index 38458439d449..7f728412f76c 100644 --- a/src/gpu/ganesh/vk/GrVkImage.h +++ b/src/gpu/ganesh/vk/GrVkImage.h @@ -10,6 +10,7 @@ #include "include/core/SkTypes.h" #include "include/gpu/GrBackendSurface.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "include/private/gpu/ganesh/GrVkTypesPriv.h" @@ -82,10 +83,10 @@ class GrVkImage : public GrAttachment { this->vkImageInfo().fImageTiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT; if (fResource && this->ycbcrConversionInfo().isValid()) { SkASSERT(this->imageFormat() == this->ycbcrConversionInfo().fFormat); - return GrBackendFormat::MakeVk(this->ycbcrConversionInfo(), usesDRMModifier); + return GrBackendFormats::MakeVk(this->ycbcrConversionInfo(), usesDRMModifier); } SkASSERT(this->imageFormat() != VK_FORMAT_UNDEFINED); - return GrBackendFormat::MakeVk(this->imageFormat(), usesDRMModifier); + return GrBackendFormats::MakeVk(this->imageFormat(), usesDRMModifier); } uint32_t mipLevels() const { return fInfo.fLevelCount; } const GrVkYcbcrConversionInfo& ycbcrConversionInfo() const { @@ -206,7 +207,7 @@ class GrVkImage : public GrAttachment { static VkPipelineStageFlags LayoutToPipelineSrcStageFlags(const VkImageLayout layout); static VkAccessFlags LayoutToSrcAccessMask(const VkImageLayout layout); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void setCurrentQueueFamilyToGraphicsQueue(GrVkGpu* gpu); #endif diff --git a/src/gpu/ganesh/vk/GrVkMSAALoadManager.cpp b/src/gpu/ganesh/vk/GrVkMSAALoadManager.cpp index c941595d015b..af50a4809995 100644 --- a/src/gpu/ganesh/vk/GrVkMSAALoadManager.cpp +++ b/src/gpu/ganesh/vk/GrVkMSAALoadManager.cpp @@ -34,7 +34,7 @@ bool GrVkMSAALoadManager::createMSAALoadProgram(GrVkGpu* gpu) { std::string vertShaderText; vertShaderText.append( - "layout(spirv, set=0, binding=0) uniform vertexUniformBuffer {" + "layout(vulkan, set=0, binding=0) uniform vertexUniformBuffer {" "half4 uPosXform;" "};" @@ -47,7 +47,7 @@ bool GrVkMSAALoadManager::createMSAALoadProgram(GrVkGpu* gpu) { std::string fragShaderText; fragShaderText.append( - "layout(spirv, input_attachment_index=0, set=2, binding=0) uniform subpassInput uInput;" + "layout(vulkan, input_attachment_index=0, set=2, binding=0) subpassInput uInput;" "// MSAA Load Program FS\n" "void main() {" diff --git a/src/gpu/ganesh/vk/GrVkPipelineStateCache.cpp b/src/gpu/ganesh/vk/GrVkPipelineStateCache.cpp index 1205f7e7c071..2b31b62d027f 100644 --- a/src/gpu/ganesh/vk/GrVkPipelineStateCache.cpp +++ b/src/gpu/ganesh/vk/GrVkPipelineStateCache.cpp @@ -7,7 +7,6 @@ #include "include/gpu/GrContextOptions.h" #include "include/gpu/GrDirectContext.h" -#include "src/core/SkOpts.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrFragmentProcessor.h" #include "src/gpu/ganesh/GrProcessor.h" diff --git a/src/gpu/ganesh/vk/GrVkRenderTarget.cpp b/src/gpu/ganesh/vk/GrVkRenderTarget.cpp index 2255afa4cf8e..9ceadd702c61 100644 --- a/src/gpu/ganesh/vk/GrVkRenderTarget.cpp +++ b/src/gpu/ganesh/vk/GrVkRenderTarget.cpp @@ -9,9 +9,12 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" +#include "include/private/base/SkAssert.h" #include "src/gpu/MutableTextureStateRef.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrResourceProvider.h" +#include "src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h" #include "src/gpu/ganesh/vk/GrVkCommandBuffer.h" #include "src/gpu/ganesh/vk/GrVkDescriptorSet.h" #include "src/gpu/ganesh/vk/GrVkFramebuffer.h" @@ -437,7 +440,7 @@ void GrVkRenderTarget::ReconstructAttachmentsDescriptor(const GrVkCaps& vkCaps, GrVkRenderPass::AttachmentsDescriptor* desc, GrVkRenderPass::AttachmentFlags* flags) { VkFormat format; - SkAssertResult(programInfo.backendFormat().asVkFormat(&format)); + SkAssertResult(GrBackendFormats::AsVkFormat(programInfo.backendFormat(), &format)); desc->fColor.fFormat = format; desc->fColor.fSamples = programInfo.numSamples(); @@ -511,8 +514,10 @@ GrBackendRenderTarget GrVkRenderTarget::getBackendRenderTarget() const { SkASSERT(!this->wasDestroyed()); // If we have a resolve attachment that is what we return for the backend render target const GrVkImage* beAttachment = this->externalAttachment(); - return GrBackendRenderTarget(beAttachment->width(), beAttachment->height(), - beAttachment->vkImageInfo(), beAttachment->getMutableState()); + return GrBackendRenderTargets::MakeVk(beAttachment->width(), + beAttachment->height(), + beAttachment->vkImageInfo(), + beAttachment->getMutableState()); } GrVkGpu* GrVkRenderTarget::getVkGpu() const { diff --git a/src/gpu/ganesh/vk/GrVkResourceProvider.h b/src/gpu/ganesh/vk/GrVkResourceProvider.h index eecbd3070bb7..13b51ddb2446 100644 --- a/src/gpu/ganesh/vk/GrVkResourceProvider.h +++ b/src/gpu/ganesh/vk/GrVkResourceProvider.h @@ -216,7 +216,7 @@ class GrVkResourceProvider { // objects from the cache are probably not worth the complexity of safely releasing them. void releaseUnlockedBackendObjects(); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void resetShaderCacheForTesting() const { fPipelineStateCache->release(); } #endif diff --git a/src/gpu/ganesh/vk/GrVkTexture.cpp b/src/gpu/ganesh/vk/GrVkTexture.cpp index 2dd4db2f9c22..fdd971f75213 100644 --- a/src/gpu/ganesh/vk/GrVkTexture.cpp +++ b/src/gpu/ganesh/vk/GrVkTexture.cpp @@ -9,6 +9,7 @@ #include "src/gpu/ganesh/vk/GrVkTexture.h" #include "src/gpu/ganesh/GrTexture.h" +#include "src/gpu/ganesh/vk/GrVkBackendSurfacePriv.h" #include "src/gpu/ganesh/vk/GrVkDescriptorSet.h" #include "src/gpu/ganesh/vk/GrVkGpu.h" #include "src/gpu/ganesh/vk/GrVkImageView.h" @@ -193,8 +194,10 @@ void GrVkTexture::onAbandon() { } GrBackendTexture GrVkTexture::getBackendTexture() const { - return GrBackendTexture(fTexture->width(), fTexture->height(), fTexture->vkImageInfo(), - fTexture->getMutableState()); + return GrBackendTextures::MakeVk(fTexture->width(), + fTexture->height(), + fTexture->vkImageInfo(), + fTexture->getMutableState()); } GrVkGpu* GrVkTexture::getVkGpu() const { diff --git a/src/gpu/ganesh/vk/GrVkTextureRenderTarget.cpp b/src/gpu/ganesh/vk/GrVkTextureRenderTarget.cpp index 696ff5a790d2..8b807e4c2b46 100644 --- a/src/gpu/ganesh/vk/GrVkTextureRenderTarget.cpp +++ b/src/gpu/ganesh/vk/GrVkTextureRenderTarget.cpp @@ -17,6 +17,7 @@ #include "src/core/SkMipmap.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #define VK_CALL(GPU, X) GR_VK_CALL(GPU->vkInterface(), X) @@ -70,7 +71,7 @@ bool create_rt_attachments(GrVkGpu* gpu, SkISize dimensions, VkFormat format, in if (sampleCnt > 1) { auto rp = gpu->getContext()->priv().resourceProvider(); sk_sp msaaAttachment = rp->makeMSAAAttachment( - dimensions, GrBackendFormat::MakeVk(format), sampleCnt, isProtected, + dimensions, GrBackendFormats::MakeVk(format), sampleCnt, isProtected, GrMemoryless::kNo); if (!msaaAttachment) { return false; diff --git a/src/gpu/ganesh/vk/GrVkTypesPriv.cpp b/src/gpu/ganesh/vk/GrVkTypesPriv.cpp index 93cba6b862e9..8d8cb61a64ca 100644 --- a/src/gpu/ganesh/vk/GrVkTypesPriv.cpp +++ b/src/gpu/ganesh/vk/GrVkTypesPriv.cpp @@ -10,16 +10,10 @@ #include "src/gpu/MutableTextureStateRef.h" #include "src/gpu/ganesh/vk/GrVkImageLayout.h" -void GrVkBackendSurfaceInfo::cleanup() {} - -void GrVkBackendSurfaceInfo::assign(const GrVkBackendSurfaceInfo& that, bool isThisValid) { - fImageInfo = that.fImageInfo; -} - -GrVkImageInfo GrVkBackendSurfaceInfo::snapImageInfo( - const skgpu::MutableTextureStateRef* mutableState) const { +GrVkImageInfo GrVkImageInfoWithMutableState(const GrVkImageInfo& info, + const skgpu::MutableTextureStateRef* mutableState) { SkASSERT(mutableState); - GrVkImageInfo newInfo = fImageInfo; + GrVkImageInfo newInfo = info; newInfo.fImageLayout = mutableState->getImageLayout(); newInfo.fCurrentQueueFamily = mutableState->getQueueFamilyIndex(); return newInfo; @@ -44,17 +38,3 @@ GrVkSurfaceInfo GrVkImageSpecToSurfaceInfo(const GrVkImageSpec& vkSpec, return info; } - -#if GR_TEST_UTILS -bool GrVkBackendSurfaceInfo::operator==(const GrVkBackendSurfaceInfo& that) const { - GrVkImageInfo cpyInfoThis = fImageInfo; - GrVkImageInfo cpyInfoThat = that.fImageInfo; - // We don't care about the fImageLayout or fCurrentQueueFamily here since we require they use - // the same mutableState. - cpyInfoThis.fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - cpyInfoThat.fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - cpyInfoThis.fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED; - cpyInfoThat.fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED; - return cpyInfoThis == cpyInfoThat; -} -#endif diff --git a/src/gpu/ganesh/vk/GrVkUniformHandler.cpp b/src/gpu/ganesh/vk/GrVkUniformHandler.cpp index c528de5040c6..ebe63be49f61 100644 --- a/src/gpu/ganesh/vk/GrVkUniformHandler.cpp +++ b/src/gpu/ganesh/vk/GrVkUniformHandler.cpp @@ -250,21 +250,24 @@ GrGLSLUniformHandler::UniformHandle GrVkUniformHandler::internalAddUniformArray( } GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addSampler( - const GrBackendFormat& backendFormat, GrSamplerState state, const skgpu::Swizzle& swizzle, - const char* name, const GrShaderCaps* shaderCaps) { + const GrBackendFormat& backendFormat, + GrSamplerState state, + const skgpu::Swizzle& swizzle, + const char* name, + const GrShaderCaps* shaderCaps) { SkASSERT(name && strlen(name)); const char prefix = 'u'; SkString mangleName = fProgramBuilder->nameVariable(prefix, name, /*mangle=*/true); SkString layoutQualifier; - layoutQualifier.appendf("set=%d, binding=%d", kSamplerDescSet, fSamplers.count()); + layoutQualifier.appendf("vulkan, set=%d, binding=%d", kSamplerDescSet, fSamplers.count()); VkUniformInfo tempInfo; tempInfo.fVariable = GrShaderVar{std::move(mangleName), SkSLCombinedSamplerTypeForTextureType(backendFormat.textureType()), - GrShaderVar::TypeModifier::Uniform, + GrShaderVar::TypeModifier::None, GrShaderVar::kNonArray, std::move(layoutQualifier), SkString()}; @@ -278,7 +281,7 @@ GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addSampler( fSamplers.push_back(tempInfo); // Check if we are dealing with an external texture and store the needed information if so. - auto ycbcrInfo = backendFormat.getVkYcbcrConversionInfo(); + auto ycbcrInfo = GrBackendFormats::GetVkYcbcrConversionInfo(backendFormat); if (ycbcrInfo && ycbcrInfo->isValid()) { GrVkGpu* gpu = static_cast(fProgramBuilder)->gpu(); GrVkSampler* sampler = gpu->resourceProvider().findOrCreateCompatibleSampler(state, @@ -306,10 +309,15 @@ GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addInputSampler( layoutQualifier.appendf("input_attachment_index=%d, set=%d, binding=%d", kDstInputAttachmentIndex, kInputDescSet, kInputBinding); - fInputUniform = { - GrShaderVar{std::move(mangleName), SkSLType::kInput, GrShaderVar::TypeModifier::Uniform, - GrShaderVar::kNonArray, std::move(layoutQualifier), SkString()}, - kFragment_GrShaderFlag, nullptr, SkString(name)}; + fInputUniform = {GrShaderVar{std::move(mangleName), + SkSLType::kInput, + GrShaderVar::TypeModifier::None, + GrShaderVar::kNonArray, + std::move(layoutQualifier), + SkString()}, + kFragment_GrShaderFlag, + nullptr, + SkString(name)}; fInputSwizzle = swizzle; return GrGLSLUniformHandler::SamplerHandle(0); } @@ -362,9 +370,9 @@ void GrVkUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString* if (!uniformsString.isEmpty()) { if (fUsePushConstants) { - out->append("layout (push_constant) "); + out->append("layout (vulkan, push_constant) "); } else { - out->appendf("layout (set=%d, binding=%d) ", + out->appendf("layout (vulkan, set=%d, binding=%d) ", kUniformBufferDescSet, kUniformBinding); } out->append("uniform uniformBuffer\n{\n"); diff --git a/src/gpu/ganesh/vk/GrVkUtil.h b/src/gpu/ganesh/vk/GrVkUtil.h index 51c230e4af49..a4f67110c139 100644 --- a/src/gpu/ganesh/vk/GrVkUtil.h +++ b/src/gpu/ganesh/vk/GrVkUtil.h @@ -22,13 +22,20 @@ class GrVkGpu; // makes a Vk call on the interface #define GR_VK_CALL(IFACE, X) (IFACE)->fFunctions.f##X +// Note: must be called before checkVkResult, since this does not log if the GPU is already +// considering the device to be lost. +#define GR_VK_LOG_IF_NOT_SUCCESS(GPU, RESULT, X, ...) \ + do { \ + if (RESULT != VK_SUCCESS && !GPU->isDeviceLost()) { \ + SkDebugf("Failed vulkan call. Error: %d, " X "\n", RESULT, ##__VA_ARGS__); \ + } \ + } while (false) + #define GR_VK_CALL_RESULT(GPU, RESULT, X) \ do { \ (RESULT) = GR_VK_CALL(GPU->vkInterface(), X); \ SkASSERT(VK_SUCCESS == RESULT || VK_ERROR_DEVICE_LOST == RESULT); \ - if (RESULT != VK_SUCCESS && !GPU->isDeviceLost()) { \ - SkDebugf("Failed vulkan call. Error: %d," #X "\n", RESULT); \ - } \ + GR_VK_LOG_IF_NOT_SUCCESS(GPU, RESULT, #X); \ GPU->checkVkResult(RESULT); \ } while (false) diff --git a/src/gpu/graphite/AtlasProvider.cpp b/src/gpu/graphite/AtlasProvider.cpp index 9734c3660672..804f90f50793 100644 --- a/src/gpu/graphite/AtlasProvider.cpp +++ b/src/gpu/graphite/AtlasProvider.cpp @@ -51,4 +51,8 @@ sk_sp AtlasProvider::getAtlasTexture(Recorder* recorder, return proxy; } +void AtlasProvider::clearTexturePool() { + fTexturePool.clear(); +} + } // namespace skgpu::graphite diff --git a/src/gpu/graphite/AtlasProvider.h b/src/gpu/graphite/AtlasProvider.h index ce4a94902fa3..400f029ba7d1 100644 --- a/src/gpu/graphite/AtlasProvider.h +++ b/src/gpu/graphite/AtlasProvider.h @@ -40,6 +40,8 @@ class AtlasProvider final { // Return an Alpha_8 TextureProxy with the given dimensions. sk_sp getAtlasTexture(Recorder*, uint32_t width, uint32_t height); + void clearTexturePool(); + private: std::unique_ptr fTextAtlasManager; diff --git a/src/gpu/graphite/AttachmentTypes.h b/src/gpu/graphite/AttachmentTypes.h index e17093c4a922..885a279e926a 100644 --- a/src/gpu/graphite/AttachmentTypes.h +++ b/src/gpu/graphite/AttachmentTypes.h @@ -69,6 +69,11 @@ struct RenderPassDesc { Swizzle fWriteSwizzle; + // This samples count usually matches fColorAttachment & fDepthStencilAttachment's samples + // count. The only exceptional case is when multisampled render to single sampled is used. In + // that case, the fColorAttachment's samples count will be 1 and fSampleCount will be > 1. + uint32_t fSampleCount; + // TODO: // * bounds (TBD whether exact bounds vs. granular) // * input attachments diff --git a/src/gpu/graphite/Caps.cpp b/src/gpu/graphite/Caps.cpp index 795947e99a22..fd197e36829b 100644 --- a/src/gpu/graphite/Caps.cpp +++ b/src/gpu/graphite/Caps.cpp @@ -35,7 +35,7 @@ void Caps::finishInitialization(const ContextOptions& options) { fShaderErrorHandler = DefaultShaderErrorHandler(); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) fMaxTextureSize = std::min(fMaxTextureSize, options.fMaxTextureSizeOverride); fMaxTextureAtlasSize = options.fMaxTextureAtlasSize; #endif diff --git a/src/gpu/graphite/Caps.h b/src/gpu/graphite/Caps.h index 370f031e3cc7..9b746b329017 100644 --- a/src/gpu/graphite/Caps.h +++ b/src/gpu/graphite/Caps.h @@ -73,6 +73,9 @@ class Caps { Protected, Renderable) const = 0; + virtual TextureInfo getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const = 0; + virtual TextureInfo getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const = 0; @@ -94,6 +97,7 @@ class Caps { virtual bool isStorage(const TextureInfo&) const = 0; int maxTextureSize() const { return fMaxTextureSize; } + int defaultMSAASamplesCount() const { return fDefaultMSAASamples; } virtual void buildKeyForTexture(SkISize dimensions, const TextureInfo&, @@ -180,6 +184,9 @@ class Caps { // Returns whether a draw buffer can be mapped. bool drawBufferCanBeMapped() const { return fDrawBufferCanBeMapped; } + // Returns whether multisampled render to single sampled is supported. + bool msaaRenderToSingleSampledSupport() const { return fMSAARenderToSingleSampledSupport; } + // Returns whether compute shaders are supported. bool computeSupport() const { return fComputeSupport; } @@ -264,6 +271,7 @@ class Caps { bool fStorageBufferSupport = false; bool fStorageBufferPreferred = false; bool fDrawBufferCanBeMapped = true; + bool fMSAARenderToSingleSampledSupport = false; bool fComputeSupport = false; @@ -278,7 +286,7 @@ class Caps { */ ShaderErrorHandler* fShaderErrorHandler = nullptr; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int fMaxTextureAtlasSize = 2048; #endif size_t fGlyphCacheTextureMaximumBytes = 2048 * 1024 * 4; diff --git a/src/gpu/graphite/CommandBuffer.cpp b/src/gpu/graphite/CommandBuffer.cpp index 5235be3870ec..9e679a175bd5 100644 --- a/src/gpu/graphite/CommandBuffer.cpp +++ b/src/gpu/graphite/CommandBuffer.cpp @@ -161,7 +161,8 @@ bool CommandBuffer::copyBufferToTexture(const Buffer* buffer, bool CommandBuffer::copyTextureToTexture(sk_sp src, SkIRect srcRect, sk_sp dst, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int mipLevel) { SkASSERT(src); SkASSERT(dst); if (src->textureInfo().isProtected() == Protected::kYes && @@ -170,7 +171,7 @@ bool CommandBuffer::copyTextureToTexture(sk_sp src, return false; } - if (!this->onCopyTextureToTexture(src.get(), srcRect, dst.get(), dstPoint)) { + if (!this->onCopyTextureToTexture(src.get(), srcRect, dst.get(), dstPoint, mipLevel)) { return false; } diff --git a/src/gpu/graphite/CommandBuffer.h b/src/gpu/graphite/CommandBuffer.h index 5b045cdf005a..0508e7d4fae8 100644 --- a/src/gpu/graphite/CommandBuffer.h +++ b/src/gpu/graphite/CommandBuffer.h @@ -91,7 +91,8 @@ class CommandBuffer { bool copyTextureToTexture(sk_sp src, SkIRect srcRect, sk_sp dst, - SkIPoint dstPoint); + SkIPoint dstPoint, + int mipLevel); bool synchronizeBufferToCpu(sk_sp); bool clearBuffer(const Buffer* buffer, size_t offset, size_t size); @@ -138,7 +139,8 @@ class CommandBuffer { virtual bool onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) = 0; + SkIPoint dstPoint, + int mipLevel) = 0; virtual bool onSynchronizeBufferToCpu(const Buffer*, bool* outDidResultInWork) = 0; virtual bool onClearBuffer(const Buffer*, size_t offset, size_t size) = 0; diff --git a/src/gpu/graphite/Context.cpp b/src/gpu/graphite/Context.cpp index 4e560617f6f4..a7676bfdaadb 100644 --- a/src/gpu/graphite/Context.cpp +++ b/src/gpu/graphite/Context.cpp @@ -66,19 +66,21 @@ Context::Context(sk_sp sharedContext, const ContextOptions& options) : fSharedContext(std::move(sharedContext)) , fQueueManager(std::move(queueManager)) -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) , fStoreContextRefInRecorder(options.fStoreContextRefInRecorder) #endif , fContextID(ContextID::Next()) { // We have to create this outside the initializer list because we need to pass in the Context's // SingleOwner object and it is declared last - fResourceProvider = fSharedContext->makeResourceProvider(&fSingleOwner, SK_InvalidGenID); + fResourceProvider = fSharedContext->makeResourceProvider(&fSingleOwner, + SK_InvalidGenID, + options.fGpuBudgetInBytes); fMappedBufferManager = std::make_unique(this->contextID()); fPlotUploadTracker = std::make_unique(); } Context::~Context() { -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) ASSERT_SINGLE_OWNER for (auto& recorder : fTrackedRecorders) { recorder->priv().setContext(nullptr); @@ -114,7 +116,7 @@ std::unique_ptr Context::makeRecorder(const RecorderOptions& options) ASSERT_SINGLE_OWNER auto recorder = std::unique_ptr(new Recorder(fSharedContext, options)); -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) if (fStoreContextRefInRecorder) { recorder->priv().setContext(this); } @@ -161,7 +163,7 @@ void Context::asyncRescaleAndReadPixels(const SkImage* image, if (srcRect.size() == dstImageInfo.bounds().size()) { // No need for rescale auto graphiteImage = reinterpret_cast(image); - TextureProxyView proxyView = graphiteImage->textureProxyView(); + const TextureProxyView& proxyView = graphiteImage->textureProxyView(); return this->asyncReadPixels(proxyView.proxy(), image->imageInfo(), dstImageInfo.colorInfo(), @@ -200,7 +202,7 @@ void Context::asyncRescaleAndReadPixels(const SkImage* image, SkASSERT(scaledImage->imageInfo() == dstImageInfo); auto scaledGraphiteImage = reinterpret_cast(scaledImage.get()); - TextureProxyView scaledProxyView = scaledGraphiteImage->textureProxyView(); + const TextureProxyView& scaledProxyView = scaledGraphiteImage->textureProxyView(); this->asyncReadPixels(scaledProxyView.proxy(), dstImageInfo, @@ -735,9 +737,26 @@ void Context::deleteBackendTexture(BackendTexture& texture) { fResourceProvider->deleteBackendTexture(texture); } +void Context::freeGpuResources() { + ASSERT_SINGLE_OWNER + + this->checkAsyncWorkCompletion(); + + fResourceProvider->freeGpuResources(); +} + +void Context::performDeferredCleanup(std::chrono::milliseconds msNotUsed) { + ASSERT_SINGLE_OWNER + + this->checkAsyncWorkCompletion(); + + auto purgeTime = skgpu::StdSteadyClock::now() - msNotUsed; + fResourceProvider->purgeResourcesNotUsedSince(purgeTime); +} + /////////////////////////////////////////////////////////////////////////////////// -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) bool ContextPriv::readPixels(const SkPixmap& pm, const TextureProxy* textureProxy, const SkImageInfo& srcImageInfo, diff --git a/src/gpu/graphite/ContextPriv.h b/src/gpu/graphite/ContextPriv.h index 7442986f1eea..da2f8835623d 100644 --- a/src/gpu/graphite/ContextPriv.h +++ b/src/gpu/graphite/ContextPriv.h @@ -49,7 +49,7 @@ class ContextPriv { return fContext->fPlotUploadTracker.get(); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void startCapture() { fContext->fQueueManager->startCapture(); } diff --git a/src/gpu/graphite/ContextUtils.cpp b/src/gpu/graphite/ContextUtils.cpp index 3a651b9d3f4b..9b8667f9464f 100644 --- a/src/gpu/graphite/ContextUtils.cpp +++ b/src/gpu/graphite/ContextUtils.cpp @@ -84,17 +84,21 @@ std::tuple ExtractRenderStepDa DstReadRequirement GetDstReadRequirement(const Caps* caps, std::optional blendMode, - bool hasCoverage) { + Coverage coverage) { // If the blend mode is absent, this is assumed to be for a runtime blender, for which we always // do a dst read. if (!blendMode || *blendMode > SkBlendMode::kLastCoeffMode) { return caps->getDstReadRequirement(); } - BlendFormula blendFormula = skgpu::GetBlendFormula(false, hasCoverage, *blendMode); + const bool isLCD = coverage == Coverage::kLCD; + const bool hasCoverage = coverage != Coverage::kNone; + BlendFormula blendFormula = isLCD ? skgpu::GetLCDBlendFormula(*blendMode) + : skgpu::GetBlendFormula(false, hasCoverage, *blendMode); if (blendFormula.hasSecondaryOutput() && !caps->shaderCaps()->fDualSourceBlendingSupport) { return caps->getDstReadRequirement(); } + return DstReadRequirement::kNone; } @@ -189,7 +193,7 @@ std::string get_node_texture_samplers(const ResourceBindingRequirements& binding for (const TextureAndSampler& t : samplers) { result += EmitSamplerLayout(bindingReqs, binding); - SkSL::String::appendf(&result, " uniform sampler2D %s_%d;\n", + SkSL::String::appendf(&result, " sampler2D %s_%d;\n", t.name(), node->keyIndex()); } } @@ -281,7 +285,7 @@ std::string EmitSamplerLayout(const ResourceBindingRequirements& bindingReqs, in if (bindingReqs.fSeparateTextureAndSamplerBinding) { int samplerIndex = (*binding)++; int textureIndex = (*binding)++; - result = SkSL::String::printf("layout(wgsl, %ssampler=%d, texture=%d)", + result = SkSL::String::printf("layout(webgpu, %ssampler=%d, texture=%d)", distinctIndexRange, samplerIndex, textureIndex); @@ -446,7 +450,58 @@ std::string BuildComputeSkSL(const Caps* caps, const ComputeStep* step) { step->localDispatchSize().fWidth, step->localDispatchSize().fHeight, step->localDispatchSize().fDepth); - sksl += step->computeSkSL(caps->resourceBindingRequirements(), /*nextBindingIndex=*/0); + + const auto& bindingReqs = caps->resourceBindingRequirements(); + bool distinctRanges = bindingReqs.fDistinctIndexRanges; + bool separateSampler = bindingReqs.fSeparateTextureAndSamplerBinding; + + int index = 0; + int texIdx = 0; + // NOTE: SkSL Metal codegen always assigns the same binding index to a texture and its sampler. + // TODO: This could cause sampler indices to not be tightly packed if the sampler2D declaration + // comes after 1 or more storage texture declarations (which don't have samplers). An optional + // "layout(msl, sampler=T, texture=T)" syntax to count them separately (like we do for WGSL) + // could come in handy here but it's not supported in MSL codegen yet. + + for (const ComputeStep::ResourceDesc& r : step->resources()) { + using Type = ComputeStep::ResourceType; + switch (r.fType) { + case Type::kUniformBuffer: + SkSL::String::appendf(&sksl, "layout(binding=%d) uniform ", index++); + sksl += r.fSkSL; + break; + case Type::kStorageBuffer: + SkSL::String::appendf(&sksl, "layout(binding=%d) buffer ", index++); + sksl += r.fSkSL; + break; + case Type::kWriteOnlyStorageTexture: + SkSL::String::appendf(&sksl, "layout(binding=%d) writeonly texture2D ", + distinctRanges ? texIdx++ : index++); + sksl += r.fSkSL; + break; + case Type::kReadOnlyTexture: + SkSL::String::appendf(&sksl, "layout(binding=%d) readonly texture2D ", + distinctRanges ? texIdx++ : index++); + sksl += r.fSkSL; + break; + case Type::kSampledTexture: + if (distinctRanges) { + SkSL::String::appendf(&sksl, "layout(metal, binding=%d) ", texIdx++); + } else if (separateSampler) { + SkSL::String::appendf( + &sksl, "layout(webgpu, sampler=%d, texture=%d) ", index, index + 1); + index += 2; + } else { + SkSL::String::appendf(&sksl, "layout(binding=%d) ", index++); + } + sksl += "sampler2D "; + sksl += r.fSkSL; + break; + } + sksl += ";\n"; + } + + sksl += step->computeSkSL(); return sksl; } diff --git a/src/gpu/graphite/ContextUtils.h b/src/gpu/graphite/ContextUtils.h index ccbafe0e4d98..c03f95ab7932 100644 --- a/src/gpu/graphite/ContextUtils.h +++ b/src/gpu/graphite/ContextUtils.h @@ -26,6 +26,7 @@ class Swizzle; namespace skgpu::graphite { class ComputeStep; +enum class Coverage; class DrawParams; enum class DstReadRequirement; class GraphicsPipelineDesc; @@ -65,7 +66,7 @@ std::tuple ExtractRenderStepDa const RenderStep* step, const DrawParams& params); -DstReadRequirement GetDstReadRequirement(const Caps*, std::optional, bool hasCoverage); +DstReadRequirement GetDstReadRequirement(const Caps*, std::optional, Coverage); std::string BuildVertexSkSL(const ResourceBindingRequirements&, const RenderStep* step, diff --git a/src/gpu/graphite/CopyTask.cpp b/src/gpu/graphite/CopyTask.cpp index 13885512e1a8..d1feadf7653f 100644 --- a/src/gpu/graphite/CopyTask.cpp +++ b/src/gpu/graphite/CopyTask.cpp @@ -109,22 +109,25 @@ bool CopyTextureToBufferTask::addCommands(Context*, sk_sp CopyTextureToTextureTask::Make(sk_sp srcProxy, SkIRect srcRect, sk_sp dstProxy, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int dstLevel) { return sk_sp(new CopyTextureToTextureTask(std::move(srcProxy), srcRect, std::move(dstProxy), - dstPoint)); + dstPoint, + dstLevel)); } CopyTextureToTextureTask::CopyTextureToTextureTask(sk_sp srcProxy, SkIRect srcRect, sk_sp dstProxy, - SkIPoint dstPoint) + SkIPoint dstPoint, + int dstLevel) : fSrcProxy(std::move(srcProxy)) , fSrcRect(srcRect) , fDstProxy(std::move(dstProxy)) - , fDstPoint(dstPoint) { -} + , fDstPoint(dstPoint) + , fDstLevel(dstLevel) {} CopyTextureToTextureTask::~CopyTextureToTextureTask() {} @@ -155,7 +158,8 @@ bool CopyTextureToTextureTask::addCommands(Context*, return commandBuffer->copyTextureToTexture(fSrcProxy->refTexture(), fSrcRect, fDstProxy->refTexture(), - fDstPoint); + fDstPoint, + fDstLevel); } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/CopyTask.h b/src/gpu/graphite/CopyTask.h index f99e0f7d683a..d410c8176719 100644 --- a/src/gpu/graphite/CopyTask.h +++ b/src/gpu/graphite/CopyTask.h @@ -78,7 +78,8 @@ class CopyTextureToTextureTask final : public Task { static sk_sp Make(sk_sp srcProxy, SkIRect srcRect, sk_sp dstProxy, - SkIPoint dstPoint); + SkIPoint dstPoint, + int dstLevel = 0); ~CopyTextureToTextureTask() override; @@ -90,12 +91,14 @@ class CopyTextureToTextureTask final : public Task { CopyTextureToTextureTask(sk_sp srcProxy, SkIRect srcRect, sk_sp dstProxy, - SkIPoint dstPoint); + SkIPoint dstPoint, + int dstLevel); sk_sp fSrcProxy; SkIRect fSrcRect; sk_sp fDstProxy; SkIPoint fDstPoint; + int fDstLevel; }; } // namespace skgpu::graphite diff --git a/src/gpu/graphite/Device.cpp b/src/gpu/graphite/Device.cpp index a98440b42cb7..cc2c6a0005cd 100644 --- a/src/gpu/graphite/Device.cpp +++ b/src/gpu/graphite/Device.cpp @@ -21,7 +21,6 @@ #include "src/gpu/graphite/DrawContext.h" #include "src/gpu/graphite/DrawList.h" #include "src/gpu/graphite/DrawParams.h" -#include "src/gpu/graphite/ImageUtils.h" #include "src/gpu/graphite/Image_Graphite.h" #include "src/gpu/graphite/Log.h" #include "src/gpu/graphite/PathAtlas.h" @@ -291,7 +290,9 @@ sk_sp Device::Make(Recorder* recorder, if (!recorder) { return nullptr; } - if (colorInfo.alphaType() != kPremul_SkAlphaType) { + // We don't render to unknown or unpremul alphatypes + if (colorInfo.alphaType() == kUnknown_SkAlphaType || + colorInfo.alphaType() == kUnpremul_SkAlphaType) { return nullptr; } @@ -403,13 +404,11 @@ TextureProxyView TextureProxyView::Copy(Recorder* recorder, SkASSERT(srcView.proxy()->isFullyLazy() || SkIRect::MakeSize(srcView.proxy()->dimensions()).contains(srcRect)); - sk_sp dest = TextureProxy::Make(recorder->priv().caps(), - srcRect.size(), - srcColorInfo.colorType(), - mipmapped, - srcView.proxy()->textureInfo().isProtected(), - Renderable::kNo, - skgpu::Budgeted::kNo); + skgpu::graphite::TextureInfo textureInfo = + recorder->priv().caps()->getTextureInfoForSampledCopy(srcView.proxy()->textureInfo(), + mipmapped); + sk_sp dest = TextureProxy::Make( + recorder->priv().caps(), srcRect.size(), textureInfo, skgpu::Budgeted::kNo); if (!dest) { return {}; } @@ -424,11 +423,17 @@ TextureProxyView TextureProxyView::Copy(Recorder* recorder, recorder->priv().add(std::move(copyTask)); + if (mipmapped == Mipmapped::kYes) { + if (!GenerateMipmaps(recorder, dest, srcColorInfo)) { + SKGPU_LOG_W("TextureProxyView::Copy: Failed to generate mipmaps"); + } + } + return { std::move(dest), srcView.swizzle() }; } bool Device::onReadPixels(const SkPixmap& pm, int srcX, int srcY) { -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) if (Context* context = fRecorder->priv().context()) { this->flushPendingWorkToRecorder(); // Add all previous commands generated to the command buffer. @@ -980,10 +985,10 @@ void Device::drawGeometry(const Transform& localToDevice, // Figure out what dst color requirements we have, if any. DstReadRequirement dstReadReq = DstReadRequirement::kNone; const SkBlenderBase* blender = as_BB(paint.getBlender()); - if (blender) { - dstReadReq = GetDstReadRequirement( - recorder()->priv().caps(), blender->asBlendMode(), renderer->emitsCoverage()); - } + const std::optional blendMode = blender ? blender->asBlendMode() + : SkBlendMode::kSrcOver; + const Coverage rendererCoverage = renderer->coverage(); + dstReadReq = GetDstReadRequirement(recorder()->priv().caps(), blendMode, rendererCoverage); // When using a tessellating path renderer a stroke-and-fill is rendered using two draws. When // drawing from an atlas we issue a single draw as the atlas mask covers both styles. @@ -1075,7 +1080,7 @@ void Device::drawGeometry(const Transform& localToDevice, // 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, std::move(primitiveBlender), dstReadReq, skipColorXform}; - const bool dependsOnDst = renderer->emitsCoverage() || paint_depends_on_dst(shading); + const bool dependsOnDst = rendererCoverage != Coverage::kNone || paint_depends_on_dst(shading); CompressedPaintersOrder prevDraw = fColorDepthBoundsManager->getMostRecentDraw(clip.drawBounds()); if (dependsOnDst) { @@ -1156,7 +1161,7 @@ void Device::drawClipShape(const Transform& localToDevice, // Anti-aliased clipping requires the renderer to use MSAA to modify the depth per sample, so // analytic coverage renderers cannot be used. - SkASSERT(!renderer->emitsCoverage() && renderer->requiresMSAA()); + SkASSERT(renderer->coverage() == Coverage::kNone && renderer->requiresMSAA()); SkASSERT(pathAtlas == nullptr); // Clips draws are depth-only (null PaintParams), and filled (null StrokeStyle). @@ -1190,7 +1195,7 @@ std::pair Device::chooseRenderer(const Transform& l SkASSERT(!requireMSAA); sktext::gpu::RendererData rendererData = geometry.subRunData().rendererData(); if (!rendererData.isSDF) { - return {renderers->bitmapText(), nullptr}; + return {renderers->bitmapText(rendererData.isLCD), nullptr}; } return {renderers->sdfText(rendererData.isLCD), nullptr}; } else if (geometry.isVertices()) { diff --git a/src/gpu/graphite/DrawAtlas.cpp b/src/gpu/graphite/DrawAtlas.cpp index 675096770fc8..93bcd4a6f077 100644 --- a/src/gpu/graphite/DrawAtlas.cpp +++ b/src/gpu/graphite/DrawAtlas.cpp @@ -15,7 +15,6 @@ #include "include/private/base/SkTPin.h" #include "src/base/SkMathPriv.h" -#include "src/core/SkOpts.h" #include "src/core/SkTraceEvent.h" #include "src/gpu/AtlasTypes.h" #include "src/gpu/graphite/Caps.h" diff --git a/src/gpu/graphite/DrawContext.cpp b/src/gpu/graphite/DrawContext.cpp index 46653d9a743a..f9d820e88477 100644 --- a/src/gpu/graphite/DrawContext.cpp +++ b/src/gpu/graphite/DrawContext.cpp @@ -167,34 +167,44 @@ RenderPassDesc RenderPassDesc::Make(const Caps* caps, Swizzle writeSwizzle) { RenderPassDesc desc; desc.fWriteSwizzle = writeSwizzle; + desc.fSampleCount = 1; // It doesn't make sense to have a storeOp for our main target not be store. Why are we doing // this DrawPass then SkASSERT(storeOp == StoreOp::kStore); if (requiresMSAA) { - // TODO: If the resolve texture isn't readable, the MSAA color attachment will need to be - // persistently associated with the framebuffer, in which case it's not discardable. - desc.fColorAttachment.fTextureInfo = caps->getDefaultMSAATextureInfo(targetInfo, - Discardable::kYes); - if (desc.fColorAttachment.fTextureInfo.isValid()) { - if (loadOp != LoadOp::kClear) { - desc.fColorAttachment.fLoadOp = LoadOp::kDiscard; - } else { - desc.fColorAttachment.fLoadOp = LoadOp::kClear; - } - desc.fColorAttachment.fStoreOp = StoreOp::kDiscard; - - desc.fColorResolveAttachment.fTextureInfo = targetInfo; - if (loadOp != LoadOp::kLoad) { - desc.fColorResolveAttachment.fLoadOp = LoadOp::kDiscard; - } else { - desc.fColorResolveAttachment.fLoadOp = LoadOp::kLoad; - } - desc.fColorResolveAttachment.fStoreOp = storeOp; - } else { - // fall back to single sampled + if (caps->msaaRenderToSingleSampledSupport()) { desc.fColorAttachment.fTextureInfo = targetInfo; desc.fColorAttachment.fLoadOp = loadOp; desc.fColorAttachment.fStoreOp = storeOp; + desc.fSampleCount = caps->defaultMSAASamplesCount(); + } else { + // TODO: If the resolve texture isn't readable, the MSAA color attachment will need to + // be persistently associated with the framebuffer, in which case it's not discardable. + auto msaaTextureInfo = caps->getDefaultMSAATextureInfo(targetInfo, Discardable::kYes); + if (msaaTextureInfo.isValid()) { + desc.fColorAttachment.fTextureInfo = msaaTextureInfo; + if (loadOp != LoadOp::kClear) { + desc.fColorAttachment.fLoadOp = LoadOp::kDiscard; + } else { + desc.fColorAttachment.fLoadOp = LoadOp::kClear; + } + desc.fColorAttachment.fStoreOp = StoreOp::kDiscard; + + desc.fColorResolveAttachment.fTextureInfo = targetInfo; + if (loadOp != LoadOp::kLoad) { + desc.fColorResolveAttachment.fLoadOp = LoadOp::kDiscard; + } else { + desc.fColorResolveAttachment.fLoadOp = LoadOp::kLoad; + } + desc.fColorResolveAttachment.fStoreOp = storeOp; + + desc.fSampleCount = msaaTextureInfo.numSamples(); + } else { + // fall back to single sampled + desc.fColorAttachment.fTextureInfo = targetInfo; + desc.fColorAttachment.fLoadOp = loadOp; + desc.fColorAttachment.fStoreOp = storeOp; + } } } else { desc.fColorAttachment.fTextureInfo = targetInfo; @@ -205,9 +215,7 @@ RenderPassDesc RenderPassDesc::Make(const Caps* caps, if (depthStencilFlags != DepthStencilFlags::kNone) { desc.fDepthStencilAttachment.fTextureInfo = caps->getDefaultDepthStencilTextureInfo( - depthStencilFlags, - desc.fColorAttachment.fTextureInfo.numSamples(), - Protected::kNo); + depthStencilFlags, desc.fSampleCount, Protected::kNo); // Always clear the depth and stencil to 0 at the start of a DrawPass, but discard at the // end since their contents do not affect the next frame. desc.fDepthStencilAttachment.fLoadOp = LoadOp::kClear; diff --git a/src/gpu/graphite/GlobalCache.cpp b/src/gpu/graphite/GlobalCache.cpp index 61c14662b3a9..531df2b6c1b6 100644 --- a/src/gpu/graphite/GlobalCache.cpp +++ b/src/gpu/graphite/GlobalCache.cpp @@ -55,7 +55,7 @@ sk_sp GlobalCache::addGraphicsPipeline(const UniqueKey& key, return *entry; } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int GlobalCache::numGraphicsPipelines() const { SkAutoSpinlock lock{fSpinLock}; @@ -76,7 +76,7 @@ void GlobalCache::forEachGraphicsPipeline( fn(*k, v->get()); }); } -#endif // GRAPHITE_TEST_UTILS +#endif // defined(GRAPHITE_TEST_UTILS) sk_sp GlobalCache::findComputePipeline(const UniqueKey& key) { SkAutoSpinlock lock{fSpinLock}; diff --git a/src/gpu/graphite/GlobalCache.h b/src/gpu/graphite/GlobalCache.h index a38504f985e3..7abaf058d6a4 100644 --- a/src/gpu/graphite/GlobalCache.h +++ b/src/gpu/graphite/GlobalCache.h @@ -50,7 +50,7 @@ class GlobalCache { sk_sp addGraphicsPipeline(const UniqueKey&, sk_sp) SK_EXCLUDES(fSpinLock); -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int numGraphicsPipelines() const SK_EXCLUDES(fSpinLock); void resetGraphicsPipelines() SK_EXCLUDES(fSpinLock); void forEachGraphicsPipeline( diff --git a/src/gpu/graphite/GraphicsPipeline.cpp b/src/gpu/graphite/GraphicsPipeline.cpp index c67c2536643f..bfaf8bb90c17 100644 --- a/src/gpu/graphite/GraphicsPipeline.cpp +++ b/src/gpu/graphite/GraphicsPipeline.cpp @@ -10,16 +10,18 @@ namespace skgpu::graphite { -GraphicsPipeline::GraphicsPipeline(const SharedContext* sharedContext, Shaders* pipelineShaders) +GraphicsPipeline::GraphicsPipeline(const SharedContext* sharedContext, PipelineInfo* pipelineInfo) : Resource(sharedContext, Ownership::kOwned, skgpu::Budgeted::kYes, /*gpuMemorySize=*/0) { -#if GRAPHITE_TEST_UTILS - if (pipelineShaders) { - fPipelineShaders.fSkSLVertexShader = - SkShaderUtils::PrettyPrint(pipelineShaders->fSkSLVertexShader); - fPipelineShaders.fSkSLFragmentShader = - SkShaderUtils::PrettyPrint(pipelineShaders->fSkSLFragmentShader); - fPipelineShaders.fNativeVertexShader = std::move(pipelineShaders->fNativeVertexShader); - fPipelineShaders.fNativeFragmentShader = std::move(pipelineShaders->fNativeFragmentShader); +#if defined(GRAPHITE_TEST_UTILS) + if (pipelineInfo) { + fPipelineInfo.fRenderStepID = pipelineInfo->fRenderStepID; + fPipelineInfo.fPaintID = pipelineInfo->fPaintID; + fPipelineInfo.fSkSLVertexShader = + SkShaderUtils::PrettyPrint(pipelineInfo->fSkSLVertexShader); + fPipelineInfo.fSkSLFragmentShader = + SkShaderUtils::PrettyPrint(pipelineInfo->fSkSLFragmentShader); + fPipelineInfo.fNativeVertexShader = std::move(pipelineInfo->fNativeVertexShader); + fPipelineInfo.fNativeFragmentShader = std::move(pipelineInfo->fNativeFragmentShader); } #endif } diff --git a/src/gpu/graphite/GraphicsPipeline.h b/src/gpu/graphite/GraphicsPipeline.h index 231a2f77b767..af5276568313 100644 --- a/src/gpu/graphite/GraphicsPipeline.h +++ b/src/gpu/graphite/GraphicsPipeline.h @@ -9,6 +9,7 @@ #define skgpu_graphite_GraphicsPipeline_DEFINED #include "src/gpu/graphite/Resource.h" +#include "src/gpu/graphite/UniquePaintParamsID.h" namespace skgpu::graphite { @@ -26,27 +27,31 @@ class GraphicsPipeline : public Resource { public: ~GraphicsPipeline() override; -#if GRAPHITE_TEST_UTILS - struct Shaders { +#if defined(GRAPHITE_TEST_UTILS) + // This is not quite enough information to fully recreate the pipeline, as the RenderPassDesc + // used to make the pipeline is not preserved. + struct PipelineInfo { + uint32_t fRenderStepID; + UniquePaintParamsID fPaintID; std::string fSkSLVertexShader; std::string fSkSLFragmentShader; std::string fNativeVertexShader; std::string fNativeFragmentShader; }; - const Shaders& getPipelineShaders() const { - return fPipelineShaders; + const PipelineInfo& getPipelineInfo() const { + return fPipelineInfo; } #else - struct Shaders; + struct PipelineInfo; #endif protected: - GraphicsPipeline(const SharedContext*, Shaders*); + GraphicsPipeline(const SharedContext*, PipelineInfo*); private: -#if GRAPHITE_TEST_UTILS - Shaders fPipelineShaders; +#if defined(GRAPHITE_TEST_UTILS) + PipelineInfo fPipelineInfo; #endif }; diff --git a/src/gpu/graphite/ImageFactories.cpp b/src/gpu/graphite/ImageFactories.cpp index 1c460876af73..1aa57ea1161a 100644 --- a/src/gpu/graphite/ImageFactories.cpp +++ b/src/gpu/graphite/ImageFactories.cpp @@ -19,6 +19,8 @@ #include "include/gpu/graphite/Surface.h" #include "include/gpu/graphite/YUVABackendTextures.h" #include "include/private/base/SkMutex.h" +#include "src/core/SkImageFilterTypes.h" +#include "src/core/SkImageFilter_Base.h" #include "src/gpu/RefCntedCallback.h" #include "src/gpu/graphite/Caps.h" #include "src/gpu/graphite/Image_Base_Graphite.h" @@ -27,6 +29,7 @@ #include "src/gpu/graphite/Log.h" #include "src/gpu/graphite/RecorderPriv.h" #include "src/gpu/graphite/ResourceProvider.h" +#include "src/gpu/graphite/Surface_Graphite.h" #include "src/gpu/graphite/Texture.h" #include "src/gpu/graphite/TextureProxy.h" #include "src/gpu/graphite/TextureProxyView.h" @@ -64,6 +67,7 @@ sk_sp AdoptTextureFrom(Recorder* recorder, SkColorType ct, SkAlphaType at, sk_sp cs, + skgpu::Origin origin, TextureReleaseProc releaseP, ReleaseContext releaseC) { auto releaseHelper = skgpu::RefCntedCallback::Make(releaseP, releaseC); @@ -91,14 +95,32 @@ sk_sp AdoptTextureFrom(Recorder* recorder, SkASSERT(proxy); skgpu::Swizzle swizzle = caps->getReadSwizzle(ct, backendTex.info()); - TextureProxyView view(std::move(proxy), swizzle); + TextureProxyView view(std::move(proxy), swizzle, origin); return sk_make_sp(kNeedNewImageUniqueID, view, info); } +sk_sp AdoptTextureFrom(Recorder* recorder, + const BackendTexture& backendTex, + SkColorType ct, + SkAlphaType at, + sk_sp cs, + TextureReleaseProc releaseP, + ReleaseContext releaseC) { + return AdoptTextureFrom(recorder, + backendTex, + ct, + at, + std::move(cs), + skgpu::Origin::kTopLeft, + releaseP, + releaseC); +} + sk_sp PromiseTextureFrom(Recorder* recorder, SkISize dimensions, const TextureInfo& textureInfo, const SkColorInfo& colorInfo, + skgpu::Origin origin, Volatile isVolatile, GraphitePromiseImageFulfillProc fulfillProc, GraphitePromiseImageReleaseProc imageReleaseProc, @@ -139,10 +161,31 @@ sk_sp PromiseTextureFrom(Recorder* recorder, } skgpu::Swizzle swizzle = caps->getReadSwizzle(colorInfo.colorType(), textureInfo); - TextureProxyView view(std::move(proxy), swizzle); + TextureProxyView view(std::move(proxy), swizzle, origin); return sk_make_sp(kNeedNewImageUniqueID, view, colorInfo); } +sk_sp PromiseTextureFrom(Recorder* recorder, + SkISize dimensions, + const TextureInfo& textureInfo, + const SkColorInfo& colorInfo, + Volatile isVolatile, + GraphitePromiseImageFulfillProc fulfillProc, + GraphitePromiseImageReleaseProc imageReleaseProc, + GraphitePromiseTextureReleaseProc textureReleaseProc, + GraphitePromiseImageContext imageContext) { + return PromiseTextureFrom(recorder, + dimensions, + textureInfo, + colorInfo, + skgpu::Origin::kTopLeft, + isVolatile, + fulfillProc, + imageReleaseProc, + textureReleaseProc, + imageContext); +} + SK_API sk_sp PromiseTextureFromYUVA(skgpu::graphite::Recorder* recorder, const YUVABackendTextureInfo& backendTextureInfo, sk_sp imageColorSpace, @@ -215,22 +258,47 @@ sk_sp SubsetTextureFrom(skgpu::graphite::Recorder* recorder, return SkImages::TextureFromImage(recorder, subsetImg, props); } +sk_sp MakeWithFilter(skgpu::graphite::Recorder* recorder, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) { + if (!recorder || !src || !filter) { + return nullptr; + } + + return as_IFB(filter)->makeImageWithFilter(skif::MakeGraphiteFunctors(recorder), + std::move(src), + subset, + clipBounds, + outSubset, + offset); +} + static sk_sp generate_picture_texture(skgpu::graphite::Recorder* recorder, const SkImage_Picture* img, const SkImageInfo& info, SkImage::RequiredProperties requiredProps) { - auto sharedGenerator = img->generator(); - SkAutoMutexExclusive mutex(sharedGenerator->fMutex); - auto mm = requiredProps.fMipmapped ? skgpu::Mipmapped::kYes : skgpu::Mipmapped::kNo; - sk_sp surface = SkSurfaces::RenderTarget(recorder, info, mm); + sk_sp surface = SkSurfaces::RenderTarget(recorder, info, mm, img->props()); if (!surface) { SKGPU_LOG_E("Failed to create Surface"); return nullptr; } - surface->getCanvas()->clear(SkColors::kTransparent); - surface->getCanvas()->drawPicture(img->picture(), img->matrix(), img->paint()); + img->replay(surface->getCanvas()); + + if (requiredProps.fMipmapped) { + skgpu::graphite::Flush(surface); + sk_sp texture = + static_cast(surface.get())->readSurfaceView().refProxy(); + if (!GenerateMipmaps(recorder, std::move(texture), info.colorInfo())) { + SKGPU_LOG_W("Failed to create mipmaps for texture from SkPicture"); + } + } + return SkSurfaces::AsImage(surface); } @@ -245,11 +313,6 @@ static sk_sp make_texture_image_from_lazy(skgpu::graphite::Recorder* re SkImage::RequiredProperties requiredProps) { // 1. Ask the generator to natively create one. { - // Disable mipmaps here bc Graphite doesn't currently support mipmap regeneration - // In this case, we would allocate the mipmaps and fill in the base layer but the mipmap - // levels would never be filled out - yielding incorrect draws. Please see: b/238754357. - requiredProps.fMipmapped = false; - if (img->type() == SkImage_Base::Type::kLazyPicture) { sk_sp newImage = generate_picture_texture(recorder, diff --git a/src/gpu/graphite/ImageUtils.cpp b/src/gpu/graphite/ImageUtils.cpp deleted file mode 100644 index 2f008bc8bfad..000000000000 --- a/src/gpu/graphite/ImageUtils.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/gpu/graphite/ImageUtils.h" - -#include "include/core/SkBitmap.h" -#include "include/gpu/graphite/ImageProvider.h" -#include "include/gpu/graphite/Recorder.h" -#include "src/core/SkImageFilterTypes.h" -#include "src/core/SkSamplingPriv.h" -#include "src/core/SkSpecialSurface.h" -#include "src/gpu/graphite/Caps.h" -#include "src/gpu/graphite/Image_Graphite.h" -#include "src/gpu/graphite/Log.h" -#include "src/gpu/graphite/RecorderPriv.h" -#include "src/gpu/graphite/SpecialImage_Graphite.h" -#include "src/image/SkImage_Base.h" - -namespace { - -bool valid_client_provided_image(const SkImage* clientProvided, - const SkImage* original, - SkImage::RequiredProperties requiredProps) { - if (!clientProvided || - !as_IB(clientProvided)->isGraphiteBacked() || - original->dimensions() != clientProvided->dimensions() || - original->alphaType() != clientProvided->alphaType()) { - return false; - } - - uint32_t origChannels = SkColorTypeChannelFlags(original->colorType()); - uint32_t clientChannels = SkColorTypeChannelFlags(clientProvided->colorType()); - if ((origChannels & clientChannels) != origChannels) { - return false; - } - - return true; -} - -} // anonymous namespace - -namespace skgpu::graphite { - -std::pair, SkSamplingOptions> GetGraphiteBacked(Recorder* recorder, - const SkImage* imageIn, - SkSamplingOptions sampling) { - skgpu::Mipmapped mipmapped = (sampling.mipmap != SkMipmapMode::kNone) - ? skgpu::Mipmapped::kYes : skgpu::Mipmapped::kNo; - - if (imageIn->dimensions().area() <= 1 && mipmapped == skgpu::Mipmapped::kYes) { - mipmapped = skgpu::Mipmapped::kNo; - sampling = SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone); - } - - sk_sp result; - if (as_IB(imageIn)->isGraphiteBacked()) { - result = sk_ref_sp(imageIn); - - // If the preexisting Graphite-backed image doesn't have the required mipmaps we will drop - // down the sampling - if (mipmapped == skgpu::Mipmapped::kYes && !result->hasMipmaps()) { - mipmapped = skgpu::Mipmapped::kNo; - sampling = SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone); - } - } else { - auto clientImageProvider = recorder->clientImageProvider(); - result = clientImageProvider->findOrCreate( - recorder, imageIn, {mipmapped == skgpu::Mipmapped::kYes}); - - if (!valid_client_provided_image( - result.get(), imageIn, {mipmapped == skgpu::Mipmapped::kYes})) { - // The client did not fulfill the ImageProvider contract so drop the image. - result = nullptr; - } - } - - if (sampling.isAniso() && result) { - sampling = SkSamplingPriv::AnisoFallback(result->hasMipmaps()); - } - - return { result, sampling }; -} - -std::tuple AsView(Recorder* recorder, - const SkImage* image, - skgpu::Mipmapped mipmapped) { - if (!recorder || !image) { - return {}; - } - - if (!as_IB(image)->isGraphiteBacked()) { - return {}; - } - // TODO(b/238756380): YUVA not supported yet - if (as_IB(image)->isYUVA()) { - return {}; - } - - auto gi = reinterpret_cast(image); - - if (gi->dimensions().area() <= 1) { - mipmapped = skgpu::Mipmapped::kNo; - } - - if (mipmapped == skgpu::Mipmapped::kYes && - gi->textureProxyView().proxy()->mipmapped() != skgpu::Mipmapped::kYes) { - SKGPU_LOG_W("Graphite does not auto-generate mipmap levels"); - return {}; - } - - SkColorType ct = gi->colorType(); - return {gi->textureProxyView(), ct}; -} - -} // namespace skgpu::graphite - -namespace skif { - -Context MakeGraphiteContext(skgpu::graphite::Recorder* recorder, - const ContextInfo& info) { - SkASSERT(recorder); - SkASSERT(!info.fSource.image() || info.fSource.image()->isGraphiteBacked()); - - auto makeSurfaceFunctor = [recorder](const SkImageInfo& imageInfo, - const SkSurfaceProps* props) { - return SkSpecialSurfaces::MakeGraphite(recorder, imageInfo, *props); - }; - auto makeImageCallback = [recorder](const SkIRect& subset, - sk_sp image, - const SkSurfaceProps& props) { - // This just makes a raster image, but it could maybe call MakeFromGraphite - return SkSpecialImages::MakeGraphite(recorder, subset, image, props); - }; - auto makeCachedBitmapCallback = [recorder](const SkBitmap& data) -> sk_sp { - auto proxy = skgpu::graphite::RecorderPriv::CreateCachedProxy(recorder, data); - if (!proxy) { - return nullptr; - } - - const SkColorInfo& colorInfo = data.info().colorInfo(); - skgpu::Swizzle swizzle = recorder->priv().caps()->getReadSwizzle(colorInfo.colorType(), - proxy->textureInfo()); - return sk_make_sp( - data.getGenerationID(), - skgpu::graphite::TextureProxyView(std::move(proxy), swizzle), - colorInfo); - }; - - return Context(info, nullptr, makeSurfaceFunctor, makeImageCallback, makeCachedBitmapCallback); -} -} // namespace skif diff --git a/src/gpu/graphite/ImageUtils.h b/src/gpu/graphite/ImageUtils.h deleted file mode 100644 index 6900e5480221..000000000000 --- a/src/gpu/graphite/ImageUtils.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_graphite_ImageUtils_DEFINED -#define skgpu_graphite_ImageUtils_DEFINED - -#include "include/core/SkRefCnt.h" -#include "include/gpu/GpuTypes.h" - -#include -#include - -enum SkColorType : int; -class SkImage; -struct SkSamplingOptions; - -namespace skgpu::graphite { - -class Recorder; -class TextureProxyView; - -std::tuple AsView(Recorder*, - const SkImage*, - skgpu::Mipmapped); - -std::pair, SkSamplingOptions> GetGraphiteBacked(Recorder*, - const SkImage*, - SkSamplingOptions); - -} // namespace skgpu::graphite - -namespace skif { -class Context; -struct ContextInfo; -Context MakeGraphiteContext(skgpu::graphite::Recorder* recorder, - const ContextInfo& info); -} // namespace skif - -#endif // skgpu_graphite_ImageUtils_DEFINED diff --git a/src/gpu/graphite/Image_Graphite.cpp b/src/gpu/graphite/Image_Graphite.cpp index f058e97f0cdb..4dfbdc1e6a21 100644 --- a/src/gpu/graphite/Image_Graphite.cpp +++ b/src/gpu/graphite/Image_Graphite.cpp @@ -72,7 +72,7 @@ sk_sp Image::makeTextureImage(Recorder* recorder, RequiredProperties re sk_sp Image::copyImage(const SkIRect& subset, Recorder* recorder, RequiredProperties requiredProps) const { - TextureProxyView srcView = this->textureProxyView(); + const TextureProxyView& srcView = this->textureProxyView(); if (!srcView) { return nullptr; } diff --git a/src/gpu/graphite/Image_Graphite.h b/src/gpu/graphite/Image_Graphite.h index 6d428d64796d..4b1a6420d9ff 100644 --- a/src/gpu/graphite/Image_Graphite.h +++ b/src/gpu/graphite/Image_Graphite.h @@ -31,13 +31,16 @@ class Image final : public Image_Base { return fTextureProxyView.proxy()->mipmapped() == skgpu::Mipmapped::kYes; } + // TODO: add protected content support + bool onIsProtected() const override { return false; } + SkImage_Base::Type type() const override { return SkImage_Base::Type::kGraphite; } size_t textureSize() const override; sk_sp onReinterpretColorSpace(sk_sp) const override; - TextureProxyView textureProxyView() const { return fTextureProxyView; } + const TextureProxyView& textureProxyView() const { return fTextureProxyView; } static sk_sp MakePromiseImageLazyProxy( const Caps*, diff --git a/src/gpu/graphite/Image_YUVA_Graphite.cpp b/src/gpu/graphite/Image_YUVA_Graphite.cpp index 27e07e07ada7..c605bdf91338 100644 --- a/src/gpu/graphite/Image_YUVA_Graphite.cpp +++ b/src/gpu/graphite/Image_YUVA_Graphite.cpp @@ -60,6 +60,10 @@ size_t Image_YUVA::textureSize() const { return size; } +sk_sp Image_YUVA::onReinterpretColorSpace(sk_sp newCS) const { + return sk_make_sp(kNeedNewImageUniqueID, fYUVAProxies, std::move(newCS)); +} + } // namespace skgpu::graphite using namespace skgpu::graphite; diff --git a/src/gpu/graphite/Image_YUVA_Graphite.h b/src/gpu/graphite/Image_YUVA_Graphite.h index a6186f30fb8c..287b36a4da65 100644 --- a/src/gpu/graphite/Image_YUVA_Graphite.h +++ b/src/gpu/graphite/Image_YUVA_Graphite.h @@ -38,10 +38,13 @@ class Image_YUVA final : public Image_Base { return false; } - sk_sp onReinterpretColorSpace(sk_sp) const override { - return nullptr; + bool onIsProtected() const override { + // TODO: add protected content support + return false; } + sk_sp onReinterpretColorSpace(sk_sp) const override; + const YUVATextureProxies& yuvaProxies() const { return fYUVAProxies; } diff --git a/src/gpu/graphite/KeyHelpers.cpp b/src/gpu/graphite/KeyHelpers.cpp index 0e04caf2b086..36f07fa80076 100644 --- a/src/gpu/graphite/KeyHelpers.cpp +++ b/src/gpu/graphite/KeyHelpers.cpp @@ -31,7 +31,6 @@ #include "src/gpu/Blend.h" #include "src/gpu/DitherUtils.h" #include "src/gpu/graphite/Caps.h" -#include "src/gpu/graphite/ImageUtils.h" #include "src/gpu/graphite/Image_Graphite.h" #include "src/gpu/graphite/Image_YUVA_Graphite.h" #include "src/gpu/graphite/KeyContext.h" @@ -47,6 +46,7 @@ #include "src/gpu/graphite/Texture.h" #include "src/gpu/graphite/TextureProxy.h" #include "src/gpu/graphite/TextureProxyView.h" +#include "src/gpu/graphite/TextureUtils.h" #include "src/gpu/graphite/Uniform.h" #include "src/gpu/graphite/UniformManager.h" #include "src/gpu/graphite/YUVATextureProxies.h" @@ -422,17 +422,20 @@ void LocalMatrixShaderBlock::BeginBlock(const KeyContext& keyContext, namespace { void add_color_space_uniforms(const SkColorSpaceXformSteps& steps, PipelineDataGatherer* gatherer) { - static constexpr int kNumXferFnCoeffs = 7; - static constexpr float kEmptyXferFn[kNumXferFnCoeffs] = {}; + // We have 7 source coefficients and 7 destination coefficients. We pass them via a 4x4 matrix; + // the first two columns hold the source values, and the second two hold the destination. + // (The final value of each 8-element group is ignored.) + // In std140, this arrangement is much more efficient than a simple array of scalars. + SkM44 coeffs; gatherer->write(SkTo(steps.flags.mask())); if (steps.flags.linearize) { gatherer->write(SkTo(skcms_TransferFunction_getType(&steps.srcTF))); - gatherer->writeHalfArray({&steps.srcTF.g, kNumXferFnCoeffs}); + coeffs.setCol(0, {steps.srcTF.g, steps.srcTF.a, steps.srcTF.b, steps.srcTF.c}); + coeffs.setCol(1, {steps.srcTF.d, steps.srcTF.e, steps.srcTF.f, 0.0f}); } else { gatherer->write(SkTo(skcms_TFType::skcms_TFType_Invalid)); - gatherer->writeHalfArray({kEmptyXferFn, kNumXferFnCoeffs}); } SkMatrix gamutTransform; @@ -444,11 +447,13 @@ void add_color_space_uniforms(const SkColorSpaceXformSteps& steps, PipelineDataG if (steps.flags.encode) { gatherer->write(SkTo(skcms_TransferFunction_getType(&steps.dstTFInv))); - gatherer->writeHalfArray({&steps.dstTFInv.g, kNumXferFnCoeffs}); + coeffs.setCol(2, {steps.dstTFInv.g, steps.dstTFInv.a, steps.dstTFInv.b, steps.dstTFInv.c}); + coeffs.setCol(3, {steps.dstTFInv.d, steps.dstTFInv.e, steps.dstTFInv.f, 0.0f}); } else { gatherer->write(SkTo(skcms_TFType::skcms_TFType_Invalid)); - gatherer->writeHalfArray({kEmptyXferFn, kNumXferFnCoeffs}); } + + gatherer->writeHalf(coeffs); } void add_image_uniform_data(const ShaderCodeDictionary* dict, @@ -1563,16 +1568,43 @@ static void add_to_key(const KeyContext& keyContext, PipelineDataGatherer* gatherer, const SkLocalMatrixShader* shader) { SkASSERT(shader); + auto wrappedShader = shader->wrappedShader().get(); + + // Fold the texture's origin flip into the local matrix so that the image shader doesn't need + // additional state + SkMatrix matrix; + if (as_SB(wrappedShader)->type() == SkShaderBase::ShaderType::kImage) { + auto imgShader = static_cast(wrappedShader); + // If the image is not graphite backed then we can assume the origin will be TopLeft as we + // require that in the ImageProvider utility. Also Graphite YUV images are assumed to be + // TopLeft origin. + auto imgBase = as_IB(imgShader->image()); + if (imgBase->isGraphiteBacked() && !imgBase->isYUVA()) { + auto imgGraphite = static_cast(imgBase); + SkASSERT(imgGraphite); + const auto& view = imgGraphite->textureProxyView(); + if (view.origin() == Origin::kBottomLeft) { + matrix.setScaleY(-1); + matrix.setTranslateY(view.height()); + } + } + } - LocalMatrixShaderBlock::LMShaderData lmShaderData(shader->localMatrix()); + matrix.postConcat(shader->localMatrix()); + if (!matrix.isIdentity()) { - KeyContextWithLocalMatrix newContext(keyContext, shader->localMatrix()); + LocalMatrixShaderBlock::LMShaderData lmShaderData(matrix); - LocalMatrixShaderBlock::BeginBlock(newContext, builder, gatherer, &lmShaderData); + KeyContextWithLocalMatrix newContext(keyContext, matrix); - AddToKey(newContext, builder, gatherer, shader->wrappedShader().get()); + LocalMatrixShaderBlock::BeginBlock(newContext, builder, gatherer, &lmShaderData); - builder->endBlock(); + AddToKey(newContext, builder, gatherer, wrappedShader); + + builder->endBlock(); + } else { + AddToKey(keyContext, builder, gatherer, wrappedShader); + } } // If either of these change then the corresponding change must also be made in the SkSL diff --git a/src/gpu/graphite/PaintOptionsPriv.h b/src/gpu/graphite/PaintOptionsPriv.h index 19468d3bebfe..a8fd61635780 100644 --- a/src/gpu/graphite/PaintOptionsPriv.h +++ b/src/gpu/graphite/PaintOptionsPriv.h @@ -26,10 +26,10 @@ class PaintOptionsPriv { void buildCombinations( const KeyContext& keyContext, bool addPrimitiveBlender, - bool hasCoverage, + Coverage coverage, const std::function& processCombination) const { fPaintOptions->buildCombinations( - keyContext, addPrimitiveBlender, hasCoverage, processCombination); + keyContext, addPrimitiveBlender, coverage, processCombination); } private: diff --git a/src/gpu/graphite/PaintParams.cpp b/src/gpu/graphite/PaintParams.cpp index 46be5761b865..8fe4d51405ac 100644 --- a/src/gpu/graphite/PaintParams.cpp +++ b/src/gpu/graphite/PaintParams.cpp @@ -9,6 +9,7 @@ #include "include/core/SkColorSpace.h" #include "include/core/SkShader.h" +#include "src/core/SkBlendModeBlender.h" #include "src/core/SkBlenderBase.h" #include "src/core/SkColorSpacePriv.h" #include "src/effects/colorfilters/SkColorFilterBase.h" @@ -148,15 +149,24 @@ void PaintParams::toKey(const KeyContext& keyContext, #endif std::optional finalBlendMode = this->asFinalBlendMode(); - if (finalBlendMode && *finalBlendMode <= SkBlendMode::kLastCoeffMode) { - BuiltInCodeSnippetID fixedFuncBlendModeID = static_cast( - kFixedFunctionBlendModeIDOffset + (int) *finalBlendMode); - builder->beginBlock(fixedFuncBlendModeID); - builder->endBlock(); - - } else { - AddDstBlendBlock(keyContext, builder, gatherer, fFinalBlender.get()); + // If this draw needs a dst read, we are either doing custom blending or we cannot handle the + // combination of blend mode and coverage using fixed function blend hardware. + if (fDstReadReq != DstReadRequirement::kNone) { + // Add a block to implement the blending in the shader. + static const SkBlendModeBlender kDefaultBlender(SkBlendMode::kSrcOver); + AddDstBlendBlock(keyContext, + builder, + gatherer, + fFinalBlender ? fFinalBlender.get() : &kDefaultBlender); + finalBlendMode = SkBlendMode::kSrc; } + + // Set the hardware blend mode. + SkASSERT(finalBlendMode); + BuiltInCodeSnippetID fixedFuncBlendModeID = static_cast( + kFixedFunctionBlendModeIDOffset + static_cast(*finalBlendMode)); + builder->beginBlock(fixedFuncBlendModeID); + builder->endBlock(); } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/PaintParamsKey.cpp b/src/gpu/graphite/PaintParamsKey.cpp index da0d24bede30..dfc53215aeb1 100644 --- a/src/gpu/graphite/PaintParamsKey.cpp +++ b/src/gpu/graphite/PaintParamsKey.cpp @@ -8,6 +8,7 @@ #include "src/gpu/graphite/PaintParamsKey.h" #include "src/base/SkArenaAlloc.h" +#include "src/base/SkStringView.h" #include "src/gpu/graphite/KeyHelpers.h" #include "src/gpu/graphite/Log.h" #include "src/gpu/graphite/ShaderCodeDictionary.h" @@ -107,6 +108,52 @@ SkSpan PaintParamsKey::getRootNodes(const ShaderCodeDictionar return SkSpan(rootSpan, roots.size()); } +#if defined(GRAPHITE_TEST_UTILS) + +int key_to_string(SkString* str, + const ShaderCodeDictionary* dict, + SkSpan keyData, + int currentIndex) { + SkASSERT(currentIndex < SkTo(keyData.size())); + + int32_t id = keyData[currentIndex++]; + auto entry = dict->getEntry(id); + if (!entry) { + str->append("UnknownCodeSnippetID:"); + str->appendS32(id); + str->append(" "); + return currentIndex; + } + + std::string_view name = entry->fName; + if (skstd::ends_with(name, "Shader")) { + name.remove_suffix(6); + } + str->append(name); + + if (entry->fNumChildren > 0) { + str->append(" [ "); + for (int i = 0; i < entry->fNumChildren; ++i) { + currentIndex = key_to_string(str, dict, keyData, currentIndex); + } + str->append("]"); + } + + str->append(" "); + return currentIndex; +} + +SkString PaintParamsKey::toString(const ShaderCodeDictionary* dict) const { + SkString str; + const int keySize = SkTo(fData.size()); + for (int currentIndex = 0; currentIndex < keySize; ) { + currentIndex = key_to_string(&str, dict, fData, currentIndex); + } + return str.isEmpty() ? SkString("(empty)") : str; +} + +#endif // defined(GRAPHITE_TEST_UTILS) + #ifdef SK_DEBUG int dump_node(const ShaderCodeDictionary* dict, diff --git a/src/gpu/graphite/PaintParamsKey.h b/src/gpu/graphite/PaintParamsKey.h index a3e2624f8e8f..cc74164e5a55 100644 --- a/src/gpu/graphite/PaintParamsKey.h +++ b/src/gpu/graphite/PaintParamsKey.h @@ -58,6 +58,10 @@ class PaintParamsKey { // a fixed function blend (with 1 child being the main effect)). SkSpan getRootNodes(const ShaderCodeDictionary*, SkArenaAlloc*) const; +#if defined(GRAPHITE_TEST_UTILS) + // Converts the key to a structured list of snippet names for debugging purposes. + SkString toString(const ShaderCodeDictionary* dict) const; +#endif #ifdef SK_DEBUG void dump(const ShaderCodeDictionary*) const; #endif diff --git a/src/gpu/graphite/Precompile.cpp b/src/gpu/graphite/Precompile.cpp index 58e1badd75ab..e191ebd01b63 100644 --- a/src/gpu/graphite/Precompile.cpp +++ b/src/gpu/graphite/Precompile.cpp @@ -95,23 +95,23 @@ int PaintOptions::numCombinations() const { } DstReadRequirement get_dst_read_req(const Caps* caps, - bool hasCoverage, + Coverage coverage, SkSpan> options, int desiredOption) { for (const sk_sp& option : options) { if (desiredOption < option->numCombinations()) { - return GetDstReadRequirement(caps, option->asBlendMode(), hasCoverage); + return GetDstReadRequirement(caps, option->asBlendMode(), coverage); } desiredOption -= option->numCombinations(); } - return DstReadRequirement::kNone; + return GetDstReadRequirement(caps, SkBlendMode::kSrcOver, coverage); } void PaintOptions::createKey(const KeyContext& keyContext, int desiredCombination, PaintParamsKeyBuilder* keyBuilder, bool addPrimitiveBlender, - bool hasCoverage) const { + Coverage coverage) const { SkDEBUGCODE(keyBuilder->checkReset();) SkASSERT(desiredCombination < this->numCombinations()); @@ -137,7 +137,7 @@ void PaintOptions::createKey(const KeyContext& keyContext, keyBuilder->endBlock(); DstReadRequirement dstReadReq = get_dst_read_req( - keyContext.caps(), hasCoverage, fBlenderOptions, desiredBlendCombination); + keyContext.caps(), coverage, fBlenderOptions, desiredBlendCombination); bool needsDstSample = dstReadReq == DstReadRequirement::kTextureCopy || dstReadReq == DstReadRequirement::kTextureSample; if (needsDstSample) { @@ -183,13 +183,7 @@ void PaintOptions::createKey(const KeyContext& keyContext, PrecompileBase::SelectOption(fBlenderOptions, desiredBlendCombination); std::optional finalBlendMode = blender ? blender->asBlendMode() : SkBlendMode::kSrcOver; - if (finalBlendMode && *finalBlendMode <= SkBlendMode::kLastCoeffMode) { - BuiltInCodeSnippetID fixedFuncBlendModeID = static_cast( - kFixedFunctionBlendModeIDOffset + (int) *finalBlendMode); - keyBuilder->beginBlock(fixedFuncBlendModeID); - keyBuilder->endBlock(); - - } else { + if (dstReadReq != DstReadRequirement::kNone) { BlendShaderBlock::BeginBlock(keyContext, keyBuilder, /* gatherer= */ nullptr); // src -- prior output PriorOutputBlock::BeginBlock(keyContext, keyBuilder, /* gatherer= */ nullptr); @@ -200,20 +194,28 @@ void PaintOptions::createKey(const KeyContext& keyContext, // blender -- shader based blending PrecompileBase::AddToKey(keyContext, keyBuilder, fBlenderOptions, desiredBlendCombination); keyBuilder->endBlock(); // BlendShaderBlock + + finalBlendMode = SkBlendMode::kSrc; } + + SkASSERT(finalBlendMode); + BuiltInCodeSnippetID fixedFuncBlendModeID = static_cast( + kFixedFunctionBlendModeIDOffset + static_cast(*finalBlendMode)); + keyBuilder->beginBlock(fixedFuncBlendModeID); + keyBuilder->endBlock(); } void PaintOptions::buildCombinations( const KeyContext& keyContext, bool addPrimitiveBlender, - bool hasCoverage, + Coverage coverage, const std::function& processCombination) const { PaintParamsKeyBuilder builder(keyContext.dict()); int numCombinations = this->numCombinations(); for (int i = 0; i < numCombinations; ++i) { - this->createKey(keyContext, i, &builder, addPrimitiveBlender, hasCoverage); + this->createKey(keyContext, i, &builder, addPrimitiveBlender, coverage); // The 'findOrCreate' calls lockAsKey on builder and then destroys the returned // PaintParamsKey. This serves to reset the builder. diff --git a/src/gpu/graphite/Precompile.h b/src/gpu/graphite/Precompile.h index b15aeb7e540e..6753b9c65091 100644 --- a/src/gpu/graphite/Precompile.h +++ b/src/gpu/graphite/Precompile.h @@ -20,6 +20,7 @@ class SkRuntimeEffect; namespace skgpu::graphite { +enum class Coverage; class KeyContext; class PrecompileBasePriv; class UniquePaintParamsID; @@ -188,11 +189,11 @@ class PaintOptions { int numCombinations() const; // 'desiredCombination' must be less than the result of the numCombinations call void createKey(const KeyContext&, int desiredCombination, - PaintParamsKeyBuilder*, bool addPrimitiveBlender, bool hasCoverage) const; + PaintParamsKeyBuilder*, bool addPrimitiveBlender, Coverage coverage) const; void buildCombinations( const KeyContext&, bool addPrimitiveBlender, - bool hasCoverage, + Coverage coverage, const std::function& processCombination) const; std::vector> fShaderOptions; diff --git a/src/gpu/graphite/ProxyCache.cpp b/src/gpu/graphite/ProxyCache.cpp index f5d71b4f9059..a6c8ec2a2a0b 100644 --- a/src/gpu/graphite/ProxyCache.cpp +++ b/src/gpu/graphite/ProxyCache.cpp @@ -145,14 +145,15 @@ void ProxyCache::freeUniquelyHeld() { } } -void ProxyCache::purgeProxiesNotUsedSince(skgpu::StdSteadyClock::time_point purgeTime) { +void ProxyCache::purgeProxiesNotUsedSince(const skgpu::StdSteadyClock::time_point* purgeTime) { this->processInvalidKeyMsgs(); std::vector toRemove; fCache.foreach([&](const skgpu::UniqueKey& key, const sk_sp* proxy) { if (Resource* resource = (*proxy)->texture(); - resource && resource->lastAccessTime() < purgeTime) { + resource && + (!purgeTime || resource->lastAccessTime() < *purgeTime)) { resource->setDeleteASAP(); toRemove.push_back(key); } @@ -163,7 +164,7 @@ void ProxyCache::purgeProxiesNotUsedSince(skgpu::StdSteadyClock::time_point purg } } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int ProxyCache::numCached() const { return fCache.count(); } @@ -190,9 +191,9 @@ void ProxyCache::forceFreeUniquelyHeld() { } void ProxyCache::forcePurgeProxiesNotUsedSince(skgpu::StdSteadyClock::time_point purgeTime) { - this->purgeProxiesNotUsedSince(purgeTime); + this->purgeProxiesNotUsedSince(&purgeTime); } -#endif // GRAPHITE_TEST_UTILS +#endif // defined(GRAPHITE_TEST_UTILS) } // namespace skgpu::graphite diff --git a/src/gpu/graphite/ProxyCache.h b/src/gpu/graphite/ProxyCache.h index b4431192cf48..abda1751b6a9 100644 --- a/src/gpu/graphite/ProxyCache.h +++ b/src/gpu/graphite/ProxyCache.h @@ -40,7 +40,7 @@ class ProxyCache { void purgeAll(); -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int numCached() const; sk_sp find(const SkBitmap&, Mipmapped); void forceProcessInvalidKeyMsgs(); @@ -53,7 +53,7 @@ class ProxyCache { void processInvalidKeyMsgs(); void freeUniquelyHeld(); - void purgeProxiesNotUsedSince(skgpu::StdSteadyClock::time_point purgeTime); + void purgeProxiesNotUsedSince(const skgpu::StdSteadyClock::time_point* purgeTime); typedef SkMessageBus::Inbox InvalidKeyInbox; diff --git a/src/gpu/graphite/PublicPrecompile.cpp b/src/gpu/graphite/PublicPrecompile.cpp index 95701a6388a8..5b14310d99c5 100644 --- a/src/gpu/graphite/PublicPrecompile.cpp +++ b/src/gpu/graphite/PublicPrecompile.cpp @@ -12,6 +12,7 @@ #include "src/gpu/graphite/AttachmentTypes.h" #include "src/gpu/graphite/Caps.h" #include "src/gpu/graphite/ContextPriv.h" +#include "src/gpu/graphite/ContextUtils.h" #include "src/gpu/graphite/GraphicsPipeline.h" #include "src/gpu/graphite/GraphicsPipelineDesc.h" #include "src/gpu/graphite/KeyContext.h" @@ -34,7 +35,7 @@ void compile(const RendererProvider* rendererProvider, DrawTypeFlags drawTypes, SkSpan renderPassDescs, bool withPrimitiveBlender, - bool withCoverage) { + Coverage coverage) { for (const Renderer* r : rendererProvider->renderers()) { if (!(r->drawTypes() & drawTypes)) { continue; @@ -46,8 +47,8 @@ void compile(const RendererProvider* rendererProvider, continue; } - if (r->emitsCoverage() != withCoverage) { - // For now, UniqueIDs are explicitly built either w/ or w/o coverage so must + if (r->coverage() != coverage) { + // For now, UniqueIDs are explicitly built with a specific type of coverage so must // match what the Renderer requires continue; } @@ -134,32 +135,32 @@ void Precompile(Context* context, const PaintOptions& options, DrawTypeFlags dra caps->getWriteSwizzle(ci.colorType(), info)), }; - for (bool withCoverage : {true, false}) { + for (Coverage coverage : {Coverage::kNone, Coverage::kSingleChannel, Coverage::kLCD}) { options.priv().buildCombinations( keyContext, /* addPrimitiveBlender= */ false, - withCoverage, + coverage, [&](UniquePaintParamsID uniqueID) { compile(context->priv().rendererProvider(), context->priv().resourceProvider(), keyContext, uniqueID, static_cast(drawTypes & ~DrawTypeFlags::kDrawVertices), - renderPassDescs, /* withPrimitiveBlender= */ false, withCoverage); + renderPassDescs, /* withPrimitiveBlender= */ false, coverage); }); } if (drawTypes & DrawTypeFlags::kDrawVertices) { - for (bool withCoverage : {true, false}) { + for (Coverage coverage : {Coverage::kNone, Coverage::kSingleChannel, Coverage::kLCD}) { options.priv().buildCombinations( keyContext, /* addPrimitiveBlender= */ true, - withCoverage, + coverage, [&](UniquePaintParamsID uniqueID) { compile(context->priv().rendererProvider(), context->priv().resourceProvider(), keyContext, uniqueID, DrawTypeFlags::kDrawVertices, - renderPassDescs, /* withPrimitiveBlender= */ true, withCoverage); + renderPassDescs, /* withPrimitiveBlender= */ true, coverage); }); } } diff --git a/src/gpu/graphite/QueueManager.h b/src/gpu/graphite/QueueManager.h index 0c9f5f0d9b2f..af9f47cc77df 100644 --- a/src/gpu/graphite/QueueManager.h +++ b/src/gpu/graphite/QueueManager.h @@ -41,7 +41,7 @@ class QueueManager { [[nodiscard]] bool submitToGpu(); void checkForFinishedWork(SyncToCpu); -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) virtual void startCapture() {} virtual void stopCapture() {} #endif diff --git a/src/gpu/graphite/Recorder.cpp b/src/gpu/graphite/Recorder.cpp index 29db83429092..12593221f5d4 100644 --- a/src/gpu/graphite/Recorder.cpp +++ b/src/gpu/graphite/Recorder.cpp @@ -102,7 +102,9 @@ Recorder::Recorder(sk_sp sharedContext, const RecorderOptions& op fClientImageProvider = DefaultImageProvider::Make(); } - fResourceProvider = fSharedContext->makeResourceProvider(this->singleOwner(), fRecorderID); + fResourceProvider = fSharedContext->makeResourceProvider(this->singleOwner(), + fRecorderID, + options.fGpuBudgetInBytes); fDrawBufferManager.reset( new DrawBufferManager(fResourceProvider.get(), fSharedContext->caps())); fUploadBufferManager.reset(new UploadBufferManager(fResourceProvider.get(), @@ -119,7 +121,7 @@ Recorder::~Recorder() { for (auto& device : fTrackedDevices) { device->abandonRecorder(); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) if (fContext) { fContext->priv().deregisterRecorder(this); } @@ -233,7 +235,7 @@ void Recorder::deregisterDevice(const Device* device) { } } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) bool Recorder::deviceIsRegistered(Device* device) { ASSERT_SINGLE_OWNER for (auto& currentDevice : fTrackedDevices) { @@ -341,6 +343,29 @@ void Recorder::addFinishInfo(const InsertFinishInfo& info) { } } +void Recorder::freeGpuResources() { + ASSERT_SINGLE_OWNER + + // We don't want to free the Uniform/TextureDataCaches or the Draw/UploadBufferManagers since + // all their resources need to be held on to until a Recording is snapped. And once snapped, all + // their held resources are released. The StrikeCache and TextBlobCache don't hold onto any Gpu + // resources. + + // The AtlasProvider gives out refs to TextureProxies so it should be safe to clear its pool + // in the middle of Recording since those using the previous TextureProxies will have refs on + // them. + fAtlasProvider->clearTexturePool(); + + fResourceProvider->freeGpuResources(); +} + +void Recorder::performDeferredCleanup(std::chrono::milliseconds msNotUsed) { + ASSERT_SINGLE_OWNER + + auto purgeTime = skgpu::StdSteadyClock::now() - msNotUsed; + fResourceProvider->purgeResourcesNotUsedSince(purgeTime); +} + void RecorderPriv::add(sk_sp task) { ASSERT_SINGLE_OWNER_PRIV fRecorder->fGraph->add(std::move(task)); @@ -364,7 +389,7 @@ size_t RecorderPriv::getResourceCacheLimit() const { return fRecorder->fResourceProvider->getResourceCacheLimit(); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) // used by the Context that created this Recorder to set a back pointer void RecorderPriv::setContext(Context* context) { fRecorder->fContext = context; diff --git a/src/gpu/graphite/RecorderPriv.h b/src/gpu/graphite/RecorderPriv.h index 38d9324d12f4..d997ca04942d 100644 --- a/src/gpu/graphite/RecorderPriv.h +++ b/src/gpu/graphite/RecorderPriv.h @@ -70,7 +70,7 @@ class RecorderPriv { size_t getResourceCacheLimit() const; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) ResourceCache* resourceCache() { return fRecorder->fResourceProvider->resourceCache(); } // used by the Context that created this Recorder to set a back pointer void setContext(Context*); diff --git a/src/gpu/graphite/RenderPassTask.cpp b/src/gpu/graphite/RenderPassTask.cpp index 048d04afb568..36e618d8e860 100644 --- a/src/gpu/graphite/RenderPassTask.cpp +++ b/src/gpu/graphite/RenderPassTask.cpp @@ -26,6 +26,17 @@ sk_sp RenderPassTask::Make(DrawPassList passes, return nullptr; } + if (desc.fColorAttachment.fTextureInfo.isValid()) { + // The color attachment's samples count must ether match the render pass's samples count + // or be 1 (when multisampled render to single sampled is used). + SkASSERT(desc.fSampleCount == desc.fColorAttachment.fTextureInfo.numSamples() || + 1 == desc.fColorAttachment.fTextureInfo.numSamples()); + } + + if (desc.fDepthStencilAttachment.fTextureInfo.isValid()) { + SkASSERT(desc.fSampleCount == desc.fDepthStencilAttachment.fTextureInfo.numSamples()); + } + return sk_sp(new RenderPassTask(std::move(passes), desc, target)); } diff --git a/src/gpu/graphite/Renderer.cpp b/src/gpu/graphite/Renderer.cpp index 977a44724e85..6e742f70be1d 100644 --- a/src/gpu/graphite/Renderer.cpp +++ b/src/gpu/graphite/Renderer.cpp @@ -49,6 +49,12 @@ RenderStep::RenderStep(std::string_view className, } } +Coverage RenderStep::GetCoverage(SkEnumBitMask flags) { + return !(flags & Flags::kEmitsCoverage) ? Coverage::kNone + : (flags & Flags::kLCDCoverage) ? Coverage::kLCD + : Coverage::kSingleChannel; +} + float Renderer::boundsOutset(const Transform& localToDevice, const Rect& bounds) const { float outset = 0.0f; for (int i = 0; i < this->numRenderSteps(); ++i) { diff --git a/src/gpu/graphite/Renderer.h b/src/gpu/graphite/Renderer.h index 4b0201a7a7b1..b442ba6d0f12 100644 --- a/src/gpu/graphite/Renderer.h +++ b/src/gpu/graphite/Renderer.h @@ -39,6 +39,8 @@ class Transform; struct ResourceBindingRequirements; +enum class Coverage { kNone, kSingleChannel, kLCD }; + struct Varying { const char* fName; SkSLType fType; @@ -121,9 +123,10 @@ class RenderStep { bool requiresMSAA() const { return SkToBool(fFlags & Flags::kRequiresMSAA); } bool performsShading() const { return SkToBool(fFlags & Flags::kPerformsShading); } bool hasTextures() const { return SkToBool(fFlags & Flags::kHasTextures); } - bool emitsCoverage() const { return SkToBool(fFlags & Flags::kEmitsCoverage); } bool emitsPrimitiveColor() const { return SkToBool(fFlags & Flags::kEmitsPrimitiveColor); } + Coverage coverage() const { return RenderStep::GetCoverage(fFlags); } + PrimitiveType primitiveType() const { return fPrimitiveType; } size_t vertexStride() const { return fVertexStride; } size_t instanceStride() const { return fInstanceStride; } @@ -159,12 +162,13 @@ class RenderStep { // - Does each DrawList::Draw have extra space (e.g. 8 bytes) that steps can cache data in? protected: enum class Flags : unsigned { - kNone = 0b00000, - kRequiresMSAA = 0b00001, - kPerformsShading = 0b00010, - kHasTextures = 0b00100, - kEmitsCoverage = 0b01000, - kEmitsPrimitiveColor = 0b10000, + kNone = 0b000000, + kRequiresMSAA = 0b000001, + kPerformsShading = 0b000010, + kHasTextures = 0b000100, + kEmitsCoverage = 0b001000, + kLCDCoverage = 0b010000, + kEmitsPrimitiveColor = 0b100000, }; SK_DECL_BITMASK_OPS_FRIENDS(Flags); @@ -188,6 +192,8 @@ class RenderStep { RenderStep(const RenderStep&) = delete; RenderStep(RenderStep&&) = delete; + static Coverage GetCoverage(SkEnumBitMask); + uint32_t fUniqueID; SkEnumBitMask fFlags; PrimitiveType fPrimitiveType; @@ -234,15 +240,14 @@ class Renderer { bool requiresMSAA() const { return SkToBool(fStepFlags & StepFlags::kRequiresMSAA); } - bool emitsCoverage() const { - return SkToBool(fStepFlags & StepFlags::kEmitsCoverage); - } bool emitsPrimitiveColor() const { return SkToBool(fStepFlags & StepFlags::kEmitsPrimitiveColor); } SkEnumBitMask depthStencilFlags() const { return fDepthStencilFlags; } + Coverage coverage() const { return RenderStep::GetCoverage(fStepFlags); } + // Returns the effective local-space outset the Renderer applies to geometry transformed by // `localToDevice` contained in the local `bounds`. float boundsOutset(const Transform& localToDevice, const Rect& bounds) const; diff --git a/src/gpu/graphite/RendererProvider.cpp b/src/gpu/graphite/RendererProvider.cpp index 5928c6c6c293..1ec80fe2c44e 100644 --- a/src/gpu/graphite/RendererProvider.cpp +++ b/src/gpu/graphite/RendererProvider.cpp @@ -52,9 +52,9 @@ RendererProvider::RendererProvider(const Caps* caps, StaticBufferManager* buffer fTessellatedStrokes = makeFromStep( std::make_unique(infinitySupport), DrawTypeFlags::kShape); fAtlasShape = makeFromStep(std::make_unique(), DrawTypeFlags::kShape); - fBitmapText = makeFromStep(std::make_unique(), - DrawTypeFlags::kText); for (bool lcd : {false, true}) { + fBitmapText[lcd] = makeFromStep(std::make_unique(lcd), + DrawTypeFlags::kText); fSDFText[lcd] = makeFromStep(std::make_unique(lcd), DrawTypeFlags::kText); } diff --git a/src/gpu/graphite/RendererProvider.h b/src/gpu/graphite/RendererProvider.h index 4d5329a1af0a..b9a1dce39528 100644 --- a/src/gpu/graphite/RendererProvider.h +++ b/src/gpu/graphite/RendererProvider.h @@ -51,7 +51,7 @@ class RendererProvider { const Renderer* atlasShape() const { return &fAtlasShape; } // Atlas'ed text rendering - const Renderer* bitmapText() const { return &fBitmapText; } + const Renderer* bitmapText(bool useLCDText) const { return &fBitmapText[useLCDText]; } const Renderer* sdfText(bool useLCDText) const { return &fSDFText[useLCDText]; } // Mesh rendering @@ -105,7 +105,7 @@ class RendererProvider { Renderer fAtlasShape; - Renderer fBitmapText; + Renderer fBitmapText[2]; // bool isLCD Renderer fSDFText[2]; // bool isLCD Renderer fAnalyticRRect; diff --git a/src/gpu/graphite/Resource.h b/src/gpu/graphite/Resource.h index 0c6c46833dff..eb076874b7bf 100644 --- a/src/gpu/graphite/Resource.h +++ b/src/gpu/graphite/Resource.h @@ -23,7 +23,7 @@ namespace skgpu::graphite { class ResourceCache; class SharedContext; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) class Texture; #endif @@ -111,7 +111,7 @@ class Resource { fKey = key; } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) bool testingShouldDeleteASAP() const { return fDeleteASAP == DeleteASAP::kYes; } virtual const Texture* asTexture() const { return nullptr; } diff --git a/src/gpu/graphite/ResourceCache.cpp b/src/gpu/graphite/ResourceCache.cpp index a10d7d2285b5..4980e089f11c 100644 --- a/src/gpu/graphite/ResourceCache.cpp +++ b/src/gpu/graphite/ResourceCache.cpp @@ -14,7 +14,7 @@ #include "src/gpu/graphite/ProxyCache.h" #include "src/gpu/graphite/Resource.h" -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) #include "src/gpu/graphite/Texture.h" #endif @@ -22,12 +22,15 @@ namespace skgpu::graphite { #define ASSERT_SINGLE_OWNER SKGPU_ASSERT_SINGLE_OWNER(fSingleOwner) -sk_sp ResourceCache::Make(SingleOwner* singleOwner, uint32_t recorderID) { - return sk_sp(new ResourceCache(singleOwner, recorderID)); +sk_sp ResourceCache::Make(SingleOwner* singleOwner, + uint32_t recorderID, + size_t maxBytes) { + return sk_sp(new ResourceCache(singleOwner, recorderID, maxBytes)); } -ResourceCache::ResourceCache(SingleOwner* singleOwner, uint32_t recorderID) - : fSingleOwner(singleOwner) { +ResourceCache::ResourceCache(SingleOwner* singleOwner, uint32_t recorderID, size_t maxBytes) + : fMaxBytes(maxBytes) + , fSingleOwner(singleOwner) { if (recorderID != SK_InvalidGenID) { fProxyCache = std::make_unique(recorderID); } @@ -379,13 +382,25 @@ void ResourceCache::purgeAsNeeded() { void ResourceCache::purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeTime) { ASSERT_SINGLE_OWNER + this->purgeResources(&purgeTime); +} + +void ResourceCache::purgeResources() { + ASSERT_SINGLE_OWNER + this->purgeResources(nullptr); +} - fProxyCache->purgeProxiesNotUsedSince(purgeTime); +void ResourceCache::purgeResources(const StdSteadyClock::time_point* purgeTime) { + if (fProxyCache) { + fProxyCache->purgeProxiesNotUsedSince(purgeTime); + } this->processReturnedResources(); // Early out if the very first item is too new to purge to avoid sorting the queue when // nothing will be deleted. - if (fPurgeableQueue.count() && fPurgeableQueue.peek()->lastAccessTime() >= purgeTime) { + if (fPurgeableQueue.count() && + purgeTime && + fPurgeableQueue.peek()->lastAccessTime() >= *purgeTime) { return; } @@ -398,7 +413,7 @@ void ResourceCache::purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeT Resource* resource = fPurgeableQueue.at(i); const skgpu::StdSteadyClock::time_point resourceTime = resource->lastAccessTime(); - if (resourceTime >= purgeTime) { + if (purgeTime && resourceTime >= *purgeTime) { // scratch or not, all later iterations will be too recently used to purge. break; } @@ -639,7 +654,7 @@ bool ResourceCache::isInCache(const Resource* resource) const { #endif // SK_DEBUG -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) int ResourceCache::numFindableResources() const { return fResourceMap.count(); @@ -671,6 +686,6 @@ void ResourceCache::visitTextures( } } -#endif // GRAPHITE_TEST_UTILS +#endif // defined(GRAPHITE_TEST_UTILS) } // namespace skgpu::graphite diff --git a/src/gpu/graphite/ResourceCache.h b/src/gpu/graphite/ResourceCache.h index 083ff4eedc43..f9384e611e74 100644 --- a/src/gpu/graphite/ResourceCache.h +++ b/src/gpu/graphite/ResourceCache.h @@ -17,7 +17,7 @@ #include "src/gpu/GpuTypesPriv.h" #include "src/gpu/graphite/ResourceTypes.h" -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) #include #endif #include @@ -32,13 +32,13 @@ class GraphiteResourceKey; class ProxyCache; class Resource; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) class Texture; #endif class ResourceCache : public SkRefCnt { public: - static sk_sp Make(SingleOwner*, uint32_t recorderID); + static sk_sp Make(SingleOwner*, uint32_t recorderID, size_t maxBytes); ~ResourceCache() override; ResourceCache(const ResourceCache&) = delete; @@ -67,6 +67,10 @@ class ResourceCache : public SkRefCnt { // and things like descriptor sets. void purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeTime); + // Purge any unlocked resources. Resources that have a gpu memory size of zero will not be + // purged. + void purgeResources(); + // Called by the ResourceProvider when it is dropping its ref to the ResourceCache. After this // is called no more Resources can be returned to the ResourceCache (besides those already in // the return queue). Also no new Resources can be retrieved from the ResourceCache. @@ -74,7 +78,7 @@ class ResourceCache : public SkRefCnt { size_t getMaxBudget() const { return fMaxBytes; } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void forceProcessReturnedResources() { this->processReturnedResources(); } void forcePurgeAsNeeded() { this->purgeAsNeeded(); } @@ -99,7 +103,7 @@ class ResourceCache : public SkRefCnt { ProxyCache* proxyCache() { return fProxyCache.get(); } private: - ResourceCache(SingleOwner*, uint32_t recorderID); + ResourceCache(SingleOwner*, uint32_t recorderID, size_t maxBytes); // All these private functions are not meant to be thread safe. We don't check for is single // owner in them as we assume that has already been checked by the public api calls. @@ -119,6 +123,8 @@ class ResourceCache : public SkRefCnt { bool overbudget() const { return fBudgetedBytes > fMaxBytes; } void purgeAsNeeded(); void purgeResource(Resource*); + // Passing in a nullptr for purgeTime will trigger us to try and free all unlocked resources. + void purgeResources(const StdSteadyClock::time_point* purgeTime); #ifdef SK_DEBUG bool isInCache(const Resource* r) const; @@ -158,11 +164,8 @@ class ResourceCache : public SkRefCnt { ResourceMap fResourceMap; - // Default maximum number of bytes of gpu memory of budgeted resources in the cache. - static const size_t kDefaultMaxSize = 256 * (1 << 20); - // Our budget - size_t fMaxBytes = kDefaultMaxSize; + size_t fMaxBytes; size_t fBudgetedBytes = 0; SingleOwner* fSingleOwner = nullptr; diff --git a/src/gpu/graphite/ResourceProvider.cpp b/src/gpu/graphite/ResourceProvider.cpp index a5dc76df82c9..ce7b7632a231 100644 --- a/src/gpu/graphite/ResourceProvider.cpp +++ b/src/gpu/graphite/ResourceProvider.cpp @@ -29,9 +29,10 @@ namespace skgpu::graphite { ResourceProvider::ResourceProvider(SharedContext* sharedContext, SingleOwner* singleOwner, - uint32_t recorderID) + uint32_t recorderID, + size_t resourceBudget) : fSharedContext(sharedContext) - , fResourceCache(ResourceCache::Make(singleOwner, recorderID)) {} + , fResourceCache(ResourceCache::Make(singleOwner, recorderID, resourceBudget)) {} ResourceProvider::~ResourceProvider() { fResourceCache->shutdown(); @@ -272,4 +273,16 @@ void ResourceProvider::deleteBackendTexture(BackendTexture& texture) { texture = BackendTexture(); } +void ResourceProvider::freeGpuResources() { + // TODO: Are there Resources that are ref'd by the ResourceProvider or its subclasses that need + // be released? If we ever find that we're holding things directly on the ResourceProviders we + // call down into the subclasses to allow them to release things. + + fResourceCache->purgeResources(); +} + +void ResourceProvider::purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeTime) { + fResourceCache->purgeResourcesNotUsedSince(purgeTime); +} + } // namespace skgpu::graphite diff --git a/src/gpu/graphite/ResourceProvider.h b/src/gpu/graphite/ResourceProvider.h index e99edf089ee2..a3017d2fb1cc 100644 --- a/src/gpu/graphite/ResourceProvider.h +++ b/src/gpu/graphite/ResourceProvider.h @@ -79,7 +79,10 @@ class ResourceProvider { size_t getResourceCacheLimit() const { return fResourceCache->getMaxBudget(); } -#if GRAPHITE_TEST_UTILS + void freeGpuResources(); + void purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeTime); + +#if defined(GRAPHITE_TEST_UTILS) ResourceCache* resourceCache() { return fResourceCache.get(); } const SharedContext* sharedContext() { return fSharedContext; } #endif @@ -87,7 +90,8 @@ class ResourceProvider { protected: ResourceProvider(SharedContext* sharedContext, SingleOwner* singleOwner, - uint32_t recorderID); + uint32_t recorderID, + size_t resourceBudget); SharedContext* fSharedContext; // Each ResourceProvider owns one local cache; for some resources it also refers out to the diff --git a/src/gpu/graphite/ShaderCodeDictionary.cpp b/src/gpu/graphite/ShaderCodeDictionary.cpp index 45dae7fb18b4..586a82be9659 100644 --- a/src/gpu/graphite/ShaderCodeDictionary.cpp +++ b/src/gpu/graphite/ShaderCodeDictionary.cpp @@ -298,17 +298,41 @@ std::string ShaderInfo::toSkSL(const Caps* caps, } const char* outColor = args.fPriorStageOutput.c_str(); - if (step->emitsCoverage()) { + const Coverage coverage = step->coverage(); + if (coverage != Coverage::kNone) { mainBody += "half4 outputCoverage;"; mainBody += step->fragmentCoverageSkSL(); + // TODO: Determine whether draw is opaque and pass that to GetBlendFormula. BlendFormula coverageBlendFormula = - skgpu::GetBlendFormula(false, step->emitsCoverage(), fBlendMode); + coverage == Coverage::kLCD + ? skgpu::GetLCDBlendFormula(fBlendMode) + : skgpu::GetBlendFormula( + /*isOpaque=*/false, /*hasCoverage=*/true, fBlendMode); const bool needsSurfaceColorForCoverage = this->needsSurfaceColor() || (coverageBlendFormula.hasSecondaryOutput() && !caps->shaderCaps()->fDualSourceBlendingSupport); if (needsSurfaceColorForCoverage) { + // If this draw uses a non-coherent dst read, we want to keep the existing dst color (or + // whatever has been previously drawn) when there's no coverage. This helps for batching + // text draws that need to read from a dst copy for blends. However, this only helps the + // case where the outer bounding boxes of each letter overlap and not two actual parts + // of the text. + DstReadRequirement dstReadReq = caps->getDstReadRequirement(); + if (dstReadReq == DstReadRequirement::kTextureCopy || + dstReadReq == DstReadRequirement::kTextureSample) { + // We don't think any shaders actually output negative coverage, but just as a + // safety check for floating point precision errors, we compare with <= here. We + // just check the RGB values of the coverage, since the alpha may not have been set + // when using LCD. If we are using single-channel coverage, alpha will be equal to + // RGB anyway. + mainBody += + "if (all(lessThanEqual(outputCoverage.rgb, half3(0)))) {" + "discard;" + "}"; + } + // Use originally-specified BlendInfo and blend with dst manually. SkSL::String::appendf( &mainBody, @@ -781,8 +805,6 @@ std::string GenerateLocalMatrixPreamble(const ShaderInfo& shaderInfo, } //-------------------------------------------------------------------------------------------------- -static constexpr int kNumXferFnCoeffs = 7; - static constexpr Uniform kImageShaderUniforms[] = { { "imgSize", SkSLType::kFloat2 }, { "subset", SkSLType::kFloat4 }, @@ -790,13 +812,12 @@ static constexpr Uniform kImageShaderUniforms[] = { { "tilemodeY", SkSLType::kInt }, { "filterMode", SkSLType::kInt }, { "readSwizzle", SkSLType::kInt }, - // The next 6 uniforms are for the color space transformation + // The next 5 uniforms are for the color space transformation { "csXformFlags", SkSLType::kInt }, { "csXformSrcKind", SkSLType::kInt }, - { "csXformSrcCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, { "csXformGamutTransform", SkSLType::kHalf3x3 }, { "csXformDstKind", SkSLType::kInt }, - { "csXformDstCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, + { "csXformCoeffs", SkSLType::kHalf4x4 }, }; static constexpr Uniform kCubicImageShaderUniforms[] = { @@ -806,13 +827,12 @@ static constexpr Uniform kCubicImageShaderUniforms[] = { { "tilemodeY", SkSLType::kInt }, { "cubicCoeffs", SkSLType::kHalf4x4 }, { "readSwizzle", SkSLType::kInt }, - // The next 6 uniforms are for the color space transformation + // The next 5 uniforms are for the color space transformation { "csXformFlags", SkSLType::kInt }, { "csXformSrcKind", SkSLType::kInt }, - { "csXformSrcCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, { "csXformGamutTransform", SkSLType::kHalf3x3 }, { "csXformDstKind", SkSLType::kInt }, - { "csXformDstCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, + { "csXformCoeffs", SkSLType::kHalf4x4 }, }; static constexpr TextureAndSampler kISTexturesAndSamplers[] = { @@ -862,10 +882,9 @@ static constexpr Uniform kYUVImageShaderUniforms[] = { // The next 6 uniforms are for the color space transformation { "csXformFlags", SkSLType::kInt }, { "csXformSrcKind", SkSLType::kInt }, - { "csXformSrcCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, { "csXformGamutTransform", SkSLType::kHalf3x3 }, { "csXformDstKind", SkSLType::kInt }, - { "csXformDstCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, + { "csXformCoeffs", SkSLType::kHalf4x4 }, }; static constexpr TextureAndSampler kYUVISTexturesAndSamplers[] = { @@ -1155,10 +1174,9 @@ static constexpr char kGaussianColorFilterName[] = "sk_gaussian_colorfilter"; static constexpr Uniform kColorSpaceTransformUniforms[] = { { "flags", SkSLType::kInt }, { "srcKind", SkSLType::kInt }, - { "srcCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, { "gamutTransform", SkSLType::kHalf3x3 }, { "dstKind", SkSLType::kInt }, - { "dstCoeffs", SkSLType::kHalf, kNumXferFnCoeffs }, + { "csXformCoeffs", SkSLType::kHalf4x4 }, }; static_assert(0 == static_cast(skcms_TFType_Invalid), diff --git a/src/gpu/graphite/SharedContext.h b/src/gpu/graphite/SharedContext.h index d00cae780136..bb8eaa05c667 100644 --- a/src/gpu/graphite/SharedContext.h +++ b/src/gpu/graphite/SharedContext.h @@ -50,7 +50,8 @@ class SharedContext : public SkRefCnt { const ShaderCodeDictionary* shaderCodeDictionary() const { return &fShaderDictionary; } virtual std::unique_ptr makeResourceProvider(SingleOwner*, - uint32_t recorderID) = 0; + uint32_t recorderID, + size_t resourceBudget) = 0; protected: SharedContext(std::unique_ptr, BackendApi); diff --git a/src/gpu/graphite/SpecialImage_Graphite.cpp b/src/gpu/graphite/SpecialImage_Graphite.cpp index 7309cb06e4c0..9c7b78a90a9a 100644 --- a/src/gpu/graphite/SpecialImage_Graphite.cpp +++ b/src/gpu/graphite/SpecialImage_Graphite.cpp @@ -12,9 +12,9 @@ #include "src/core/SkSpecialImage.h" #include "src/core/SkSpecialSurface.h" #include "src/gpu/graphite/Device.h" -#include "src/gpu/graphite/ImageUtils.h" #include "src/gpu/graphite/Image_Graphite.h" #include "src/gpu/graphite/Surface_Graphite.h" +#include "src/gpu/graphite/TextureUtils.h" #include "src/shaders/SkImageShader.h" namespace skgpu::graphite { diff --git a/src/gpu/graphite/Texture.h b/src/gpu/graphite/Texture.h index b4e6d99d987a..4435ad0242ce 100644 --- a/src/gpu/graphite/Texture.h +++ b/src/gpu/graphite/Texture.h @@ -33,7 +33,7 @@ class Texture : public Resource { void setReleaseCallback(sk_sp); -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) const Texture* asTexture() const override { return this; } #endif diff --git a/src/gpu/graphite/TextureProxyView.h b/src/gpu/graphite/TextureProxyView.h index 2f4331231c50..40e6c74b8f3f 100644 --- a/src/gpu/graphite/TextureProxyView.h +++ b/src/gpu/graphite/TextureProxyView.h @@ -25,7 +25,10 @@ class TextureProxyView { TextureProxyView(sk_sp proxy, Swizzle swizzle) : fProxy(std::move(proxy)), fSwizzle(swizzle) {} - // This entry point is used when we don't care about the swizzle. + TextureProxyView(sk_sp proxy, Swizzle swizzle, Origin origin) + : fProxy(std::move(proxy)), fSwizzle(swizzle), fOrigin(origin) {} + + // This entry point is used when we don't care about the swizzle and assume TopLeft origin. explicit TextureProxyView(sk_sp proxy) : fProxy(std::move(proxy)) {} @@ -39,7 +42,8 @@ class TextureProxyView { bool operator==(const TextureProxyView& view) const { return fProxy == view.fProxy && - fSwizzle == view.fSwizzle; + fSwizzle == view.fSwizzle && + fOrigin == view.fOrigin; } bool operator!=(const TextureProxyView& other) const { return !(*this == other); } @@ -71,6 +75,8 @@ class TextureProxyView { return {std::move(fProxy), Swizzle::Concat(fSwizzle, swizzle)}; } + Origin origin() const { return fOrigin; } + void reset() { *this = {}; } @@ -90,6 +96,7 @@ class TextureProxyView { private: sk_sp fProxy; Swizzle fSwizzle; + Origin fOrigin = Origin::kTopLeft; }; } // namespace skgpu::graphite diff --git a/src/gpu/graphite/TextureUtils.cpp b/src/gpu/graphite/TextureUtils.cpp index cb3e6458d386..0efab1c2a9fa 100644 --- a/src/gpu/graphite/TextureUtils.cpp +++ b/src/gpu/graphite/TextureUtils.cpp @@ -12,13 +12,20 @@ #include "include/core/SkColorSpace.h" #include "include/core/SkPaint.h" #include "include/core/SkSurface.h" +#include "include/effects/SkRuntimeEffect.h" +#include "src/core/SkImageFilterTypes.h" #include "src/core/SkMipmap.h" +#include "src/core/SkSamplingPriv.h" +#include "src/core/SkSpecialSurface.h" +#include "src/image/SkImage_Base.h" #include "include/gpu/graphite/Context.h" #include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/ImageProvider.h" #include "include/gpu/graphite/Recorder.h" #include "include/gpu/graphite/Recording.h" #include "include/gpu/graphite/Surface.h" +#include "src/gpu/BlurUtils.h" #include "src/gpu/graphite/Buffer.h" #include "src/gpu/graphite/Caps.h" #include "src/gpu/graphite/CommandBuffer.h" @@ -27,10 +34,248 @@ #include "src/gpu/graphite/Log.h" #include "src/gpu/graphite/RecorderPriv.h" #include "src/gpu/graphite/ResourceProvider.h" +#include "src/gpu/graphite/SpecialImage_Graphite.h" +#include "src/gpu/graphite/Surface_Graphite.h" #include "src/gpu/graphite/SynchronizeToCpuTask.h" #include "src/gpu/graphite/Texture.h" #include "src/gpu/graphite/UploadTask.h" +#include + +namespace { + +sk_sp make_surface_with_fallback(skgpu::graphite::Recorder* recorder, + const SkImageInfo& info, + skgpu::Mipmapped mipmapped, + const SkSurfaceProps* surfaceProps) { + SkColorType ct = recorder->priv().caps()->getRenderableColorType(info.colorType()); + if (ct == kUnknown_SkColorType) { + return nullptr; + } + + return SkSurfaces::RenderTarget(recorder, info.makeColorType(ct), mipmapped, surfaceProps); +} + +bool valid_client_provided_image(const SkImage* clientProvided, + const SkImage* original, + SkImage::RequiredProperties requiredProps) { + if (!clientProvided || + !as_IB(clientProvided)->isGraphiteBacked() || + original->dimensions() != clientProvided->dimensions() || + original->alphaType() != clientProvided->alphaType()) { + return false; + } + + uint32_t origChannels = SkColorTypeChannelFlags(original->colorType()); + uint32_t clientChannels = SkColorTypeChannelFlags(clientProvided->colorType()); + if ((origChannels & clientChannels) != origChannels) { + return false; + } + + // We require provided images to have a TopLeft origin + auto graphiteImage = static_cast(clientProvided); + if (graphiteImage->textureProxyView().origin() != skgpu::Origin::kTopLeft) { + SKGPU_LOG_E("Client provided image must have a TopLeft origin."); + return false; + } + + return true; +} + +sk_sp eval_blur(skgpu::graphite::Recorder* recorder, + sk_sp blurEffect, + const SkIRect& dstRect, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp outCS, + const SkSurfaceProps& outProps) { + SkImageInfo outII = SkImageInfo::Make({dstRect.width(), dstRect.height()}, + colorType, alphaType, std::move(outCS)); + auto surface = SkSpecialSurfaces::MakeGraphite(recorder, outII, outProps); + if (!surface) { + return nullptr; + } + + // TODO(b/294102201): This is very much like AutoSurface in SkImageFilterTypes.cpp + SkCanvas* canvas = surface->getCanvas(); + canvas->translate(-dstRect.left(), -dstRect.top()); + SkPaint paint; + paint.setBlendMode(SkBlendMode::kSrc); + paint.setShader(std::move(blurEffect)); + canvas->drawPaint(paint); + return surface->makeImageSnapshot(); +} + +sk_sp blur_2d(skgpu::graphite::Recorder* recorder, + SkSize sigma, + SkISize radii, + sk_sp input, + const SkIRect& srcRect, + const SkIRect& dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps) { + std::array kernel; + skgpu::Compute2DBlurKernel(sigma, radii, kernel); + + SkRuntimeShaderBuilder builder{sk_ref_sp(skgpu::GetBlur2DEffect(radii))}; + builder.uniform("kernel") = kernel; + builder.uniform("radii") = radii; + // TODO(b/294102201): This is very much like FilterResult::asShader()... + builder.child("child") = + input->makeSubset(srcRect)->asShader(SkTileMode::kDecal, + SkFilterMode::kNearest, + SkMatrix::Translate(srcRect.left(),srcRect.top())); + + return eval_blur(recorder, builder.makeShader(), dstRect, + input->colorType(), input->alphaType(), std::move(outCS), outProps); +} + +sk_sp blur_1d(skgpu::graphite::Recorder* recorder, + float sigma, + int radius, + SkV2 dir, + sk_sp input, + SkIRect srcRect, + SkIRect dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps) { + std::array offsetsAndKernel; + skgpu::Compute1DBlurLinearKernel(sigma, radius, offsetsAndKernel); + + SkRuntimeShaderBuilder builder{sk_ref_sp(skgpu::GetLinearBlur1DEffect(radius))}; + builder.uniform("offsetsAndKernel") = offsetsAndKernel; + builder.uniform("dir") = dir; + // TODO(b/294102201): This is very much like FilterResult::asShader()... + builder.child("child") = + input->makeSubset(srcRect)->asShader(SkTileMode::kDecal, + SkFilterMode::kLinear, + SkMatrix::Translate(srcRect.left(),srcRect.top())); + + return eval_blur(recorder, builder.makeShader(), dstRect, + input->colorType(), input->alphaType(), std::move(outCS), outProps); +} + +sk_sp blur(skgpu::graphite::Recorder* recorder, + SkSize sigma, + sk_sp input, + SkIRect srcRect, + SkIRect dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps) { + // See if we can do a blur on the original resolution image + if (sigma.width() <= skgpu::kMaxLinearBlurSigma && + sigma.height() <= skgpu::kMaxLinearBlurSigma) { + int radiusX = skgpu::BlurSigmaRadius(sigma.width()); + int radiusY = skgpu::BlurSigmaRadius(sigma.height()); + const int kernelArea = skgpu::BlurKernelWidth(radiusX) * skgpu::BlurKernelWidth(radiusY); + if (kernelArea <= skgpu::kMaxBlurSamples && radiusX > 0 && radiusY > 0) { + // Use a single-pass 2D kernel if it fits and isn't just 1D already + return blur_2d(recorder, sigma, {radiusX, radiusY}, std::move(input), srcRect, dstRect, + std::move(outCS), outProps); + } else { + // Use two passes of a 1D kernel (one per axis). + if (radiusX > 0) { + SkIRect intermediateDstRect = dstRect; + if (radiusY > 0) { + // Outset the output size of dstRect by the radius required for the next Y pass + intermediateDstRect.outset(0, radiusY); + if (!intermediateDstRect.intersect(srcRect.makeOutset(radiusX, radiusY))) { + return nullptr; + } + } + + input = blur_1d(recorder, sigma.width(), radiusX, {1.f, 0.f}, + std::move(input), srcRect, intermediateDstRect, outCS, outProps); + if (!input) { + return nullptr; + } + srcRect = SkIRect::MakeWH(input->width(), input->height()); + dstRect.offset(-intermediateDstRect.left(), -intermediateDstRect.top()); + } + + if (radiusY > 0) { + input = blur_1d(recorder, sigma.height(), radiusY, {0.f, 1.f}, + std::move(input), srcRect, dstRect, outCS, outProps); + } + + return input; + } + } else { + // Rescale the source image, blur that with a reduced sigma, and then upscale back to the + // dstRect dimensions. + // TODO(b/294102201): Share rescaling logic with GrBlurUtils::GaussianBlur. + float sx = sigma.width() > skgpu::kMaxLinearBlurSigma + ? (skgpu::kMaxLinearBlurSigma / sigma.width()) : 1.f; + float sy = sigma.height() > skgpu::kMaxLinearBlurSigma + ? (skgpu::kMaxLinearBlurSigma / sigma.height()) : 1.f; + + int targetSrcWidth = sk_float_ceil2int(srcRect.width() * sx); + int targetSrcHeight = sk_float_ceil2int(srcRect.height() * sy); + + auto inputImage = input->asImage(); + // TODO(b/288902559): Support approx fit backings for the target of a rescale + // TODO(b/294102201): Be smarter about downscaling when there are actual tilemodes to apply + // to the image. + auto scaledInput = skgpu::graphite::RescaleImage( + recorder, + inputImage.get(), + srcRect.makeOffset(input->subset().topLeft()), + inputImage->imageInfo().makeWH(targetSrcWidth, targetSrcHeight), + SkImage::RescaleGamma::kLinear, + SkImage::RescaleMode::kRepeatedLinear); + if (!scaledInput) { + return nullptr; + } + + // Calculate a scaled dstRect to match (0,0,targetSrcWidth,targetSrcHeight) as srcRect. + SkIRect targetDstRect = SkRect::MakeXYWH((dstRect.left() - srcRect.left()) * sx, + (dstRect.top() - srcRect.top()) * sy, + dstRect.width()*sx, + dstRect.height()*sy).roundOut(); + SkIRect targetSrcRect = SkIRect::MakeWH(targetSrcWidth, targetSrcHeight); + // Blur with pinned sigmas. If the sigma was less than the max, that axis of the image was + // not scaled so we can use the original. If it was greater than the max, the scale factor + // should have taken it the max supported sigma (ignoring the effect of rounding out the + // source bounds). + auto scaledOutput = blur( + recorder, + {std::min(sigma.width(), skgpu::kMaxLinearBlurSigma), + std::min(sigma.height(), skgpu::kMaxLinearBlurSigma)}, + SkSpecialImages::MakeGraphite(recorder, + targetSrcRect, + std::move(scaledInput), + outProps), + targetSrcRect, + targetDstRect, + outCS, + outProps); + if (!scaledOutput) { + return nullptr; + } + + // TODO: Pass out the upscaling transform for skif::FilterResult to hold on to. + auto scaledOutputImage = scaledOutput->asImage(); + auto outputImage = skgpu::graphite::RescaleImage( + recorder, + scaledOutputImage.get(), + scaledOutput->subset(), + scaledOutputImage->imageInfo().makeWH(dstRect.width(), dstRect.height()), + SkImage::RescaleGamma::kLinear, + SkImage::RescaleMode::kLinear); + if (!outputImage) { + return nullptr; + } + + SkIRect outputDstRect = outputImage->bounds(); + return SkSpecialImages::MakeGraphite(recorder, + outputDstRect, + std::move(outputImage), + outProps); + } +} + +} // anonymous namespace + namespace skgpu::graphite { std::tuple MakeBitmapProxyView(Recorder* recorder, @@ -170,18 +415,6 @@ size_t ComputeSize(SkISize dimensions, return finalSize; } -sk_sp make_surface_with_fallback(Recorder* recorder, - const SkImageInfo& info, - Mipmapped mipmapped, - const SkSurfaceProps* surfaceProps) { - SkColorType ct = recorder->priv().caps()->getRenderableColorType(info.colorType()); - if (ct == kUnknown_SkColorType) { - return nullptr; - } - - return SkSurfaces::RenderTarget(recorder, info.makeColorType(ct), mipmapped, surfaceProps); -} - sk_sp RescaleImage(Recorder* recorder, const SkImage* srcImage, SkIRect srcIRect, @@ -205,9 +438,12 @@ sk_sp RescaleImage(Recorder* recorder, // For now this needs to be texturable because we can't depend on copies to scale. auto srcGraphiteImage = reinterpret_cast(srcImage); - TextureProxyView imageView = srcGraphiteImage->textureProxyView(); + const TextureProxyView& imageView = srcGraphiteImage->textureProxyView(); if (!imageView.proxy()) { - // TODO: if not texturable, copy to a texturable format + // With the current definition of SkImage, this shouldn't happen. + // If we allow non-texturable formats for compute, we'll need to + // copy to a texturable format. + SkASSERT(false); return nullptr; } @@ -308,4 +544,190 @@ sk_sp RescaleImage(Recorder* recorder, return SkSurfaces::AsImage(dst); } +bool GenerateMipmaps(Recorder* recorder, + sk_sp texture, + const SkColorInfo& colorInfo) { + constexpr SkSamplingOptions kSamplingOptions = SkSamplingOptions(SkFilterMode::kLinear); + + SkASSERT(texture->mipmapped() == Mipmapped::kYes); + + // Within a rescaling pass tempInput is read from and tempOutput is written to. + // At the end of the pass tempOutput's texture is wrapped and assigned to tempInput. + sk_sp tempInput(new Image(kNeedNewImageUniqueID, + TextureProxyView(texture), + colorInfo)); + sk_sp tempOutput; + + SkISize srcSize = texture->dimensions(); + const SkColorInfo outColorInfo = colorInfo.makeAlphaType(kPremul_SkAlphaType); + + for (int mipLevel = 1; srcSize.width() > 1 || srcSize.height() > 1; ++mipLevel) { + SkISize stepSize = SkISize::Make(1, 1); + if (srcSize.width() > 1) { + stepSize.fWidth = srcSize.width() / 2; + } + if (srcSize.height() > 1) { + stepSize.fHeight = srcSize.height() / 2; + } + + tempOutput = make_surface_with_fallback(recorder, + SkImageInfo::Make(stepSize, outColorInfo), + Mipmapped::kNo, + nullptr); + if (!tempOutput) { + return false; + } + SkCanvas* stepDst = tempOutput->getCanvas(); + SkRect stepDstRect = SkRect::Make(stepSize); + + SkPaint paint; + stepDst->drawImageRect(tempInput, SkRect::Make(srcSize), stepDstRect, kSamplingOptions, + &paint, SkCanvas::kStrict_SrcRectConstraint); + + // Make sure the rescaling draw finishes before copying the results. + sk_sp stepDstSurface = sk_ref_sp(stepDst->getSurface()); + skgpu::graphite::Flush(stepDstSurface); + + sk_sp copyTask = CopyTextureToTextureTask::Make( + static_cast(stepDstSurface.get())->readSurfaceView().refProxy(), + SkIRect::MakeSize(stepSize), + texture, + {0, 0}, + mipLevel); + if (!copyTask) { + return false; + } + recorder->priv().add(std::move(copyTask)); + + tempInput = SkSurfaces::AsImage(tempOutput); + srcSize = stepSize; + } + + return true; +} + +std::pair, SkSamplingOptions> GetGraphiteBacked(Recorder* recorder, + const SkImage* imageIn, + SkSamplingOptions sampling) { + skgpu::Mipmapped mipmapped = (sampling.mipmap != SkMipmapMode::kNone) + ? skgpu::Mipmapped::kYes : skgpu::Mipmapped::kNo; + + if (imageIn->dimensions().area() <= 1 && mipmapped == skgpu::Mipmapped::kYes) { + mipmapped = skgpu::Mipmapped::kNo; + sampling = SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone); + } + + sk_sp result; + if (as_IB(imageIn)->isGraphiteBacked()) { + result = sk_ref_sp(imageIn); + + // If the preexisting Graphite-backed image doesn't have the required mipmaps we will drop + // down the sampling + if (mipmapped == skgpu::Mipmapped::kYes && !result->hasMipmaps()) { + mipmapped = skgpu::Mipmapped::kNo; + sampling = SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone); + } + } else { + auto clientImageProvider = recorder->clientImageProvider(); + result = clientImageProvider->findOrCreate( + recorder, imageIn, {mipmapped == skgpu::Mipmapped::kYes}); + + if (!valid_client_provided_image( + result.get(), imageIn, {mipmapped == skgpu::Mipmapped::kYes})) { + // The client did not fulfill the ImageProvider contract so drop the image. + result = nullptr; + } + } + + if (sampling.isAniso() && result) { + sampling = SkSamplingPriv::AnisoFallback(result->hasMipmaps()); + } + + return { result, sampling }; +} + +std::tuple AsView(Recorder* recorder, + const SkImage* image, + skgpu::Mipmapped mipmapped) { + if (!recorder || !image) { + return {}; + } + + if (!as_IB(image)->isGraphiteBacked()) { + return {}; + } + // TODO(b/238756380): YUVA not supported yet + if (as_IB(image)->isYUVA()) { + return {}; + } + + auto gi = reinterpret_cast(image); + + if (gi->dimensions().area() <= 1) { + mipmapped = skgpu::Mipmapped::kNo; + } + + if (mipmapped == skgpu::Mipmapped::kYes && + gi->textureProxyView().proxy()->mipmapped() != skgpu::Mipmapped::kYes) { + SKGPU_LOG_W("Graphite does not auto-generate mipmap levels"); + return {}; + } + + SkColorType ct = gi->colorType(); + return {gi->textureProxyView(), ct}; +} + } // namespace skgpu::graphite + +namespace skif { + +Functors MakeGraphiteFunctors(skgpu::graphite::Recorder* recorder) { + SkASSERT(recorder); + + auto makeSurfaceFunctor = [recorder](const SkImageInfo& imageInfo, + const SkSurfaceProps* props) { + return SkSpecialSurfaces::MakeGraphite(recorder, imageInfo, *props); + }; + auto makeImageFunctor = [recorder](const SkIRect& subset, + sk_sp image, + const SkSurfaceProps& props) { + // This just makes a raster image, but it could maybe call MakeFromGraphite + return SkSpecialImages::MakeGraphite(recorder, subset, image, props); + }; + auto makeCachedBitmapFunctor = [recorder](const SkBitmap& data) -> sk_sp { + auto proxy = skgpu::graphite::RecorderPriv::CreateCachedProxy(recorder, data); + if (!proxy) { + return nullptr; + } + + const SkColorInfo& colorInfo = data.info().colorInfo(); + skgpu::Swizzle swizzle = recorder->priv().caps()->getReadSwizzle(colorInfo.colorType(), + proxy->textureInfo()); + return sk_make_sp( + data.getGenerationID(), + skgpu::graphite::TextureProxyView(std::move(proxy), swizzle), + colorInfo); + }; + auto blurImageFunctor = [recorder](SkSize sigma, + sk_sp input, + SkIRect srcRect, + SkIRect dstRect, + sk_sp outCS, + const SkSurfaceProps& outProps) { + return blur(recorder, sigma, std::move(input), srcRect, dstRect, + std::move(outCS), outProps); + }; + + return Functors(makeSurfaceFunctor, makeImageFunctor, makeCachedBitmapFunctor, + blurImageFunctor); +} + +Context MakeGraphiteContext(skgpu::graphite::Recorder* recorder, + const ContextInfo& info) { + SkASSERT(recorder); + SkASSERT(!info.fSource.image() || info.fSource.image()->isGraphiteBacked()); + + return Context(info, MakeGraphiteFunctors(recorder)); +} + +} // namespace skif diff --git a/src/gpu/graphite/TextureUtils.h b/src/gpu/graphite/TextureUtils.h index ab6cc84bcbea..ee9d3882bffa 100644 --- a/src/gpu/graphite/TextureUtils.h +++ b/src/gpu/graphite/TextureUtils.h @@ -9,23 +9,33 @@ #define skgpu_graphite_TextureUtils_DEFINED #include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" +#include "include/gpu/GpuTypes.h" #include "src/gpu/graphite/TextureProxyView.h" #include #include +#include class SkBitmap; enum SkColorType : int; +class SkImage; struct SkImageInfo; +struct SkSamplingOptions; namespace skgpu::graphite { class Context; +class Recorder; +class TextureProxyView; // Create TextureProxyView and SkColorType pair using pixel data in SkBitmap, // adding any necessary copy commands to Recorder -std::tuple MakeBitmapProxyView( - Recorder*, const SkBitmap&, sk_sp, Mipmapped, skgpu::Budgeted); +std::tuple MakeBitmapProxyView(Recorder*, + const SkBitmap&, + sk_sp, + Mipmapped, + skgpu::Budgeted); sk_sp MakeFromBitmap(Recorder*, const SkColorInfo&, @@ -43,6 +53,26 @@ sk_sp RescaleImage(Recorder*, SkImage::RescaleGamma rescaleGamma, SkImage::RescaleMode rescaleMode); +bool GenerateMipmaps(Recorder*, sk_sp, const SkColorInfo&); + +std::tuple AsView(Recorder*, + const SkImage*, + skgpu::Mipmapped); + +std::pair, SkSamplingOptions> GetGraphiteBacked(Recorder*, + const SkImage*, + SkSamplingOptions); + } // namespace skgpu::graphite +namespace skif { +class Context; +struct ContextInfo; +struct Functors; + +Functors MakeGraphiteFunctors(skgpu::graphite::Recorder* recorder); +Context MakeGraphiteContext(skgpu::graphite::Recorder* recorder, + const ContextInfo& info); +} // namespace skif + #endif // skgpu_graphite_TextureUtils_DEFINED diff --git a/src/gpu/graphite/compute/ComputeStep.cpp b/src/gpu/graphite/compute/ComputeStep.cpp index 44594a20f581..ec1a0aea8bc0 100644 --- a/src/gpu/graphite/compute/ComputeStep.cpp +++ b/src/gpu/graphite/compute/ComputeStep.cpp @@ -38,9 +38,7 @@ ComputeStep::ComputeStep(std::string_view name, , fLocalDispatchSize(localDispatchSize) { #ifdef SK_DEBUG std::unordered_set slots; -#endif for (const ResourceDesc& r : fResources) { -#ifdef SK_DEBUG // Validate that slot assignments within a ComputeStep are unique. if (r.fFlow == DataFlow::kShared) { SkASSERT(r.fSlot > -1); @@ -48,52 +46,20 @@ ComputeStep::ComputeStep(std::string_view name, auto [_, inserted] = slots.insert(r.fSlot); SkASSERT(inserted); } -#endif // SK_DEBUG - switch (r.fFlow) { - case DataFlow::kVertexOutput: - SkASSERT(r.fType == ResourceType::kStorageBuffer); - SkASSERTF(!(fFlags & Flags::kOutputsVertexBuffer), - "a ComputeStep cannot produce more than one vertex buffer"); - fFlags |= Flags::kOutputsVertexBuffer; - break; - case DataFlow::kIndexOutput: - SkASSERT(r.fType == ResourceType::kStorageBuffer); - SkASSERTF(!(fFlags & Flags::kOutputsIndexBuffer), - "a ComputeStep cannot produce more than one index buffer"); - fFlags |= Flags::kOutputsIndexBuffer; - break; - case DataFlow::kInstanceOutput: - SkASSERT(r.fType == ResourceType::kStorageBuffer); - SkASSERTF(!(fFlags & Flags::kOutputsInstanceBuffer), - "a ComputeStep cannot produce more than one instance buffer"); - fFlags |= Flags::kOutputsInstanceBuffer; - break; - case DataFlow::kIndirectDrawOutput: - // More than one indirect buffer output cannot be specified. - SkASSERTF(!(fFlags & Flags::kOutputsIndirectDrawBuffer), - "a ComputeStep cannot produce more than indirect buffer"); - fFlags |= Flags::kOutputsIndirectDrawBuffer; - break; - default: - break; - } } +#endif // SK_DEBUG } -void ComputeStep::prepareStorageBuffer( - const DrawParams&, int, int, const ResourceDesc&, void*, size_t) const { +void ComputeStep::prepareStorageBuffer(int, const ResourceDesc&, void*, size_t) const { SK_ABORT("ComputeSteps that initialize a mapped storage buffer must override " "prepareStorageBuffer()"); } -void ComputeStep::prepareUniformBuffer(const DrawParams&, - int, - const ResourceDesc&, - UniformManager*) const { +void ComputeStep::prepareUniformBuffer(int, const ResourceDesc&, UniformManager*) const { SK_ABORT("ComputeSteps that initialize a uniform buffer must override prepareUniformBuffer()"); } -std::string ComputeStep::computeSkSL(const ResourceBindingRequirements&, int) const { +std::string ComputeStep::computeSkSL() const { SK_ABORT("ComputeSteps must override computeSkSL() unless they support native shader source"); return ""; } @@ -103,26 +69,24 @@ ComputeStep::NativeShaderSource ComputeStep::nativeShaderSource(NativeShaderForm return {}; } -size_t ComputeStep::calculateBufferSize(const DrawParams&, int, const ResourceDesc&) const { +size_t ComputeStep::calculateBufferSize(int, const ResourceDesc&) const { SK_ABORT("ComputeSteps that initialize a storage buffer must override calculateBufferSize()"); return 0u; } std::tuple ComputeStep::calculateTextureParameters( - const DrawParams&, int resourceIndex, const ResourceDesc&) const { + int, const ResourceDesc&) const { SK_ABORT("ComputeSteps that initialize a texture must override calculateTextureParameters()"); return {SkISize::MakeEmpty(), kUnknown_SkColorType}; } -SamplerDesc ComputeStep::calculateSamplerParameters(const DrawParams&, - int resourceIndex, - const ResourceDesc&) const { +SamplerDesc ComputeStep::calculateSamplerParameters(int resourceIndex, const ResourceDesc&) const { SK_ABORT("ComputeSteps that initialize a sampler must override calculateSamplerParameters()"); constexpr SkTileMode kTileModes[2] = {SkTileMode::kClamp, SkTileMode::kClamp}; return {{}, kTileModes}; } -WorkgroupSize ComputeStep::calculateGlobalDispatchSize(const DrawParams&) const { +WorkgroupSize ComputeStep::calculateGlobalDispatchSize() const { SK_ABORT("ComputeSteps must override calculateGlobalDispatchSize() if it participates " "in resource creation"); return WorkgroupSize(); diff --git a/src/gpu/graphite/compute/ComputeStep.h b/src/gpu/graphite/compute/ComputeStep.h index c8a3133c7001..eeed8b179100 100644 --- a/src/gpu/graphite/compute/ComputeStep.h +++ b/src/gpu/graphite/compute/ComputeStep.h @@ -24,9 +24,7 @@ namespace skgpu::graphite { -class DrawParams; class UniformManager; -struct ResourceBindingRequirements; /** * A `ComputeStep` represents a compute pass within a wider draw operation. A `ComputeStep` @@ -69,14 +67,6 @@ struct ResourceBindingRequirements; class ComputeStep { public: enum class DataFlow { - // A set of writable Buffer bindings that the `ComputeStep` will write vertex and instance - // attributes to. If present, these buffers can be used to encode the draw command for a - // subsequent `RenderStep`. - kVertexOutput, - kIndexOutput, - kInstanceOutput, - kIndirectDrawOutput, - // A private binding is a resource that is only visible to a single ComputeStep invocation. kPrivate, @@ -90,9 +80,9 @@ class ComputeStep { kUniformBuffer, kStorageBuffer, - kStorageTexture, - kTexture, - kSampler, + kWriteOnlyStorageTexture, + kReadOnlyTexture, + kSampledTexture, }; enum class ResourcePolicy { @@ -122,13 +112,30 @@ class ComputeStep { // This field only has meaning (and must have a non-negative value) if `fFlow` is // `DataFlow::kShared`. - int fSlot = -1; + int fSlot; + + // The SkSL variable declaration code excluding the layout and type definitions. This field + // is ignored for a ComputeStep that supports native shader source. + const char* fSkSL = ""; constexpr ResourceDesc(ResourceType type, DataFlow flow, ResourcePolicy policy, int slot = -1) : fType(type), fFlow(flow), fPolicy(policy), fSlot(slot) {} + + constexpr ResourceDesc(ResourceType type, + DataFlow flow, + ResourcePolicy policy, + int slot, + const char* sksl) + : fType(type), fFlow(flow), fPolicy(policy), fSlot(slot), fSkSL(sksl) {} + + constexpr ResourceDesc(ResourceType type, + DataFlow flow, + ResourcePolicy policy, + const char* sksl) + : fType(type), fFlow(flow), fPolicy(policy), fSlot(-1), fSkSL(sksl) {} }; // On platforms that support late bound workgroup shared resources (e.g. Metal) a ComputeStep @@ -147,7 +154,7 @@ class ComputeStep { // // If this ComputeStep supports native shader source then it must override // `nativeShaderSource()` instead. - virtual std::string computeSkSL(const ResourceBindingRequirements&, int nextBindingIndex) const; + virtual std::string computeSkSL() const; // A ComputeStep that supports native shader source then then it must implement // `nativeShaderSource()` and return the shader source in the requested format. This is intended @@ -167,40 +174,26 @@ class ComputeStep { // This method will be called for buffer entries in the ComputeStep's resource list to // determine the required allocation size. The ComputeStep must return a non-zero value. // - // TODO(armansito): The only piece of information that the ComputeStep currently uses to make - // this determination is the draw parameters. This approach particularly doesn't address (and - // likely needs to be reworked) for intermediate ComputeSteps in a chain of invocations, where - // the effective data sizes may not be known on the CPU. - // - // For now, we assume that there will be a strict data contract between chained ComputeSteps. - // The buffer sizes are an estimate based on the DrawParams. This is generic enough to allow - // different schemes (such as dynamic allocations and buffer pools) but may not be easily - // validated on the CPU. - virtual size_t calculateBufferSize(const DrawParams&, - int resourceIndex, - const ResourceDesc&) const; + // TODO(b/279955342): Provide a context object, e.g. a type a associated with + // DispatchGroup::Builder, to aid the ComputeStep in its buffer size calculations. + virtual size_t calculateBufferSize(int resourceIndex, const ResourceDesc&) const; // This method will be called for storage texture entries in the ComputeStep's resource list to // determine the required dimensions and color type. The ComputeStep must return a non-zero // value for the size and a valid color type. - virtual std::tuple calculateTextureParameters(const DrawParams&, - int resourceIndex, + virtual std::tuple calculateTextureParameters(int resourceIndex, const ResourceDesc&) const; // This method will be called for sampler entries in the ComputeStep's resource list to // determine the sampling and tile mode options. - virtual SamplerDesc calculateSamplerParameters(const DrawParams&, - int resourceIndex, - const ResourceDesc&) const; + virtual SamplerDesc calculateSamplerParameters(int resourceIndex, const ResourceDesc&) const; // Return the global dispatch size (aka "workgroup count") for this step based on the draw // parameters. The default value is a workgroup count of (1, 1, 1) // - // TODO(armansito): The only piece of information that the ComputeStep currently gets to make - // this determination is the draw parameters. There might be other inputs to this calculation - // for intermediate compute stages that may not be known on the CPU. One way to address this is - // to drive the workgroup dimensions via an indirect dispatch. - virtual WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const; + // TODO(b/279955342): Provide a context object, e.g. a type a associated with + // DispatchGroup::Builder, to aid the ComputeStep in its buffer size calculations. + virtual WorkgroupSize calculateGlobalDispatchSize() const; // Populates a storage buffer resource which was specified as "mapped". This method will only be // called once for a resource right after its allocation and before pipeline execution. For @@ -209,9 +202,7 @@ class ComputeStep { // // `resourceIndex` matches the order in which `resource` was enumerated by // `ComputeStep::resources()`. - virtual void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + virtual void prepareStorageBuffer(int resourceIndex, const ResourceDesc& resource, void* buffer, size_t bufferSize) const; @@ -229,8 +220,9 @@ class ComputeStep { // // SkDEBUGCODE(mgr->setExpectedUniforms({{"foo", SkSLType::kFloat}})); // - virtual void prepareUniformBuffer(const DrawParams&, - int resourceIndex, + // TODO(b/279955342): Provide a context object, e.g. a type a associated with + // DispatchGroup::Builder, to aid the ComputeStep in its buffer size calculations. + virtual void prepareUniformBuffer(int resourceIndex, const ResourceDesc&, UniformManager*) const; @@ -251,20 +243,10 @@ class ComputeStep { bool supportsNativeShader() const { return SkToBool(fFlags & Flags::kSupportsNativeShader); } - // Data flow behavior queries: - bool outputsVertices() const { return SkToBool(fFlags & Flags::kOutputsVertexBuffer); } - bool outputsIndices() const { return SkToBool(fFlags & Flags::kOutputsIndexBuffer); } - bool outputsInstances() const { return SkToBool(fFlags & Flags::kOutputsInstanceBuffer); } - bool writesIndirectDraw() const { return SkToBool(fFlags & Flags::kOutputsIndirectDrawBuffer); } - protected: enum class Flags : uint8_t { - kNone = 0b00000, - kOutputsVertexBuffer = 0b00001, - kOutputsIndexBuffer = 0b00010, - kOutputsInstanceBuffer = 0b00100, - kOutputsIndirectDrawBuffer = 0b01000, - kSupportsNativeShader = 0b10000, + kNone = 0b00000, + kSupportsNativeShader = 0b00010, }; SK_DECL_BITMASK_OPS_FRIENDS(Flags); diff --git a/src/gpu/graphite/compute/DispatchGroup.cpp b/src/gpu/graphite/compute/DispatchGroup.cpp index 67a2ca53a94c..8c9952672bfb 100644 --- a/src/gpu/graphite/compute/DispatchGroup.cpp +++ b/src/gpu/graphite/compute/DispatchGroup.cpp @@ -91,10 +91,7 @@ Builder::Builder(Recorder* recorder) : fObj(new DispatchGroup()), fRecorder(reco SkASSERT(fRecorder); } -bool Builder::appendStep(const ComputeStep* step, - const DrawParams& params, - int ssboIndex, - std::optional globalSize) { +bool Builder::appendStep(const ComputeStep* step, std::optional globalSize) { SkASSERT(fObj); SkASSERT(step); @@ -111,56 +108,78 @@ bool Builder::appendStep(const ComputeStep* step, // how Graphite assigns indices on Metal, as these map directly to the buffer/texture/sampler // index ranges. On Dawn/Vulkan buffers and textures/samplers are allocated from separate bind // groups/descriptor sets but texture and sampler indices need to not overlap. - // - // TODO(armansito): Count the indices based on - // `ResourceBindingRequirements::fDistinctIndexRanges` obtained from Caps. - // - // TODO(armansito): The Metal backend index binding scheme happens to be compatible with the - // vello_shaders crate's WGSL->MSL translation (see - // https://github.com/linebender/vello/blob/main/crates/shaders/src/compile/msl.rs#L10). - // However, Vello's WGSL shaders assign all resources to the same bind group (at index 0) which - // differs from how Graphite binds textures and samplers (at index 1). We can handle this by - // having ComputeStep resources define a bind group index explicitly and assigning them to the - // specified bind group during command encoding. - int bufferIndex = 0; + const auto& bindingReqs = fRecorder->priv().caps()->resourceBindingRequirements(); + bool distinctRanges = bindingReqs.fDistinctIndexRanges; + bool separateSampler = bindingReqs.fSeparateTextureAndSamplerBinding; + int bufferOrGlobalIndex = 0; int texIndex = 0; - int samplerIndex = 0; + // NOTE: SkSL Metal codegen always assigns the same binding index to a texture and its sampler. + // TODO: This could cause sampler indices to not be tightly packed if the sampler2D declaration + // comes after 1 or more storage texture declarations (which don't have samplers). for (const ComputeStep::ResourceDesc& r : resources) { SkASSERT(r.fSlot == -1 || (r.fSlot >= 0 && r.fSlot < kMaxComputeDataFlowSlots)); - int index = nextIndex++; + const int index = nextIndex++; DispatchResourceOptional maybeResource; using DataFlow = ComputeStep::DataFlow; + using Type = ComputeStep::ResourceType; switch (r.fFlow) { - case DataFlow::kVertexOutput: - case DataFlow::kIndexOutput: - case DataFlow::kInstanceOutput: - case DataFlow::kIndirectDrawOutput: { - auto bufferInfo = this->allocateDrawBuffer(step, r, index, params); - if (bufferInfo) { - maybeResource = bufferInfo; - } - break; - } case DataFlow::kPrivate: - maybeResource = this->allocateResource(step, r, ssboIndex, index, params); + // A sampled or fetched-type readonly texture must either get assigned via + // `assignSharedTexture()` or internally allocated as a storage texture of a + // preceding step. Such a texture always has a data slot. + SkASSERT(r.fType != Type::kReadOnlyTexture); + SkASSERT(r.fType != Type::kSampledTexture); + maybeResource = this->allocateResource(step, r, index); break; case DataFlow::kShared: { - // TODO: Support allocating a scratch texture SkASSERT(r.fSlot >= 0); - // Allocate a new buffer only if the shared slot is empty. + // Allocate a new resource only if the shared slot is empty (except for a + // SampledTexture which needs its sampler to be allocated internally). DispatchResourceOptional* slot = &fOutputTable.fSharedSlots[r.fSlot]; if (std::holds_alternative(*slot)) { - maybeResource = this->allocateResource(step, r, ssboIndex, index, params); + SkASSERT(r.fType != Type::kReadOnlyTexture); + SkASSERT(r.fType != Type::kSampledTexture); + maybeResource = this->allocateResource(step, r, index); *slot = maybeResource; } else { - SkDEBUGCODE(using Type = ComputeStep::ResourceType;) SkASSERT((r.fType == Type::kStorageBuffer && - std::holds_alternative(*slot)) || - ((r.fType == Type::kTexture || r.fType == Type::kStorageTexture) && + std::holds_alternative(*slot)) || + ((r.fType == Type::kReadOnlyTexture || + r.fType == Type::kWriteOnlyStorageTexture) && + std::holds_alternative(*slot)) || + (r.fType == Type::kSampledTexture && std::holds_alternative(*slot))); +#ifdef SK_DEBUG + // Ensure that the texture has the right format if it was assigned via + // `assignSharedTexture()`. + const TextureIndex* texIdx = std::get_if(slot); + if (texIdx && r.fType == Type::kWriteOnlyStorageTexture) { + const TextureProxy* t = fObj->fTextures[texIdx->fValue].get(); + SkASSERT(t); + auto [_, colorType] = step->calculateTextureParameters(index, r); + SkASSERT(t->textureInfo().isCompatible( + fRecorder->priv().caps()->getDefaultStorageTextureInfo(colorType))); + } +#endif // SK_DEBUG + maybeResource = *slot; + + if (r.fType == Type::kSampledTexture) { + // The shared slot holds the texture part of the sampled texture but we + // still need to allocate the sampler. + SkASSERT(std::holds_alternative(*slot)); + auto samplerResource = this->allocateResource(step, r, index); + const SamplerIndex* samplerIdx = + std::get_if(&samplerResource); + SkASSERT(samplerIdx); + int bindingIndex = distinctRanges ? texIndex + : separateSampler ? bufferOrGlobalIndex++ + : bufferOrGlobalIndex; + dispatch.fBindings.push_back( + {static_cast(bindingIndex), *samplerIdx}); + } } break; } @@ -168,15 +187,12 @@ bool Builder::appendStep(const ComputeStep* step, int bindingIndex = 0; DispatchResource dispatchResource; - if (const BindBufferInfo* buffer = std::get_if(&maybeResource)) { + if (const BufferView* buffer = std::get_if(&maybeResource)) { dispatchResource = *buffer; - bindingIndex = bufferIndex++; + bindingIndex = bufferOrGlobalIndex++; } else if (const TextureIndex* texIdx = std::get_if(&maybeResource)) { dispatchResource = *texIdx; - bindingIndex = texIndex++; - } else if (const SamplerIndex* samplerIdx = std::get_if(&maybeResource)) { - dispatchResource = *samplerIdx; - bindingIndex = samplerIndex++; + bindingIndex = distinctRanges ? texIndex++ : bufferOrGlobalIndex++; } else { SKGPU_LOG_W("Failed to allocate resource for compute dispatch"); return false; @@ -197,7 +213,7 @@ bool Builder::appendStep(const ComputeStep* step, dispatch.fPipelineIndex = fObj->fPipelineDescs.size() - 1; dispatch.fParams.fGlobalDispatchSize = - globalSize ? *globalSize : step->calculateGlobalDispatchSize(params); + globalSize ? *globalSize : step->calculateGlobalDispatchSize(); dispatch.fParams.fLocalDispatchSize = step->localDispatchSize(); fObj->fDispatchList.push_back(std::move(dispatch)); @@ -205,9 +221,10 @@ bool Builder::appendStep(const ComputeStep* step, return true; } -void Builder::assignSharedBuffer(BindBufferInfo buffer, unsigned int slot) { +void Builder::assignSharedBuffer(BufferView buffer, unsigned int slot) { SkASSERT(fObj); - SkASSERT(buffer); + SkASSERT(buffer.fInfo); + SkASSERT(buffer.fSize); fOutputTable.fSharedSlots[slot] = buffer; } @@ -230,9 +247,8 @@ BindBufferInfo Builder::getSharedBufferResource(unsigned int slot) const { SkASSERT(fObj); BindBufferInfo info; - if (const BindBufferInfo* slotValue = - std::get_if(&fOutputTable.fSharedSlots[slot])) { - info = *slotValue; + if (const BufferView* slotValue = std::get_if(&fOutputTable.fSharedSlots[slot])) { + info = slotValue->fInfo; } return info; } @@ -249,56 +265,9 @@ sk_sp Builder::getSharedTextureResource(unsigned int slot) const { return fObj->fTextures[idx->fValue]; } -BindBufferInfo Builder::allocateDrawBuffer(const ComputeStep* step, - const ComputeStep::ResourceDesc& resource, - int resourceIdx, - const DrawParams& params) { - SkASSERT(step); - SkASSERT(resource.fType == ComputeStep::ResourceType::kStorageBuffer); - - size_t bufferSize = step->calculateBufferSize(params, resourceIdx, resource); - SkASSERT(bufferSize); - - DrawBufferManager* bufferMgr = fRecorder->priv().drawBufferManager(); - BindBufferInfo* slot = nullptr; - BindBufferInfo info; - using DataFlow = ComputeStep::DataFlow; - switch (resource.fFlow) { - case DataFlow::kVertexOutput: - slot = &fOutputTable.fVertexBuffer; - info = bufferMgr->getVertexStorage(bufferSize); - break; - case DataFlow::kIndexOutput: - slot = &fOutputTable.fIndexBuffer; - info = bufferMgr->getIndexStorage(bufferSize); - break; - case DataFlow::kInstanceOutput: - slot = &fOutputTable.fInstanceBuffer; - info = bufferMgr->getVertexStorage(bufferSize); - break; - case DataFlow::kIndirectDrawOutput: - slot = &fOutputTable.fIndirectDrawBuffer; - info = bufferMgr->getIndirectStorage(bufferSize); - break; - default: - SkASSERT(false); - break; - } - - // Multiple ComputeSteps in a sequence are currently not allowed to output the same type of - // geometry (this is enforced during ComputeStep construction). - SkASSERT(*slot); - if (info) { - *slot = info; - } - return info; -} - DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, const ComputeStep::ResourceDesc& resource, - int ssboIdx, - int resourceIdx, - const DrawParams& params) { + int resourceIdx) { SkASSERT(step); using Type = ComputeStep::ResourceType; using ResourcePolicy = ComputeStep::ResourcePolicy; @@ -307,14 +276,13 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, DispatchResourceOptional result; switch (resource.fType) { case Type::kStorageBuffer: { - size_t bufferSize = step->calculateBufferSize(params, resourceIdx, resource); + size_t bufferSize = step->calculateBufferSize(resourceIdx, resource); SkASSERT(bufferSize); if (resource.fPolicy == ResourcePolicy::kMapped) { auto [ptr, bufInfo] = bufferMgr->getStoragePointer(bufferSize); if (ptr) { - step->prepareStorageBuffer( - params, ssboIdx, resourceIdx, resource, ptr, bufferSize); - result = bufInfo; + step->prepareStorageBuffer(resourceIdx, resource, ptr, bufferSize); + result = BufferView{bufInfo, bufferSize}; } } else { auto bufInfo = bufferMgr->getStorage(bufferSize, @@ -322,7 +290,7 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, ? ClearBuffer::kYes : ClearBuffer::kNo); if (bufInfo) { - result = bufInfo; + result = BufferView{bufInfo, bufferSize}; } } break; @@ -332,7 +300,7 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, const auto& resourceReqs = fRecorder->priv().caps()->resourceBindingRequirements(); UniformManager uboMgr(resourceReqs.fUniformBufferLayout); - step->prepareUniformBuffer(params, resourceIdx, resource, &uboMgr); + step->prepareUniformBuffer(resourceIdx, resource, &uboMgr); auto dataBlock = uboMgr.finishUniformDataBlock(); SkASSERT(dataBlock.size()); @@ -340,13 +308,12 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, auto [writer, bufInfo] = bufferMgr->getUniformWriter(dataBlock.size()); if (bufInfo) { writer.write(dataBlock.data(), dataBlock.size()); - result = bufInfo; + result = BufferView{bufInfo, dataBlock.size()}; } break; } - case Type::kStorageTexture: { - auto [size, colorType] = - step->calculateTextureParameters(params, resourceIdx, resource); + case Type::kWriteOnlyStorageTexture: { + auto [size, colorType] = step->calculateTextureParameters(resourceIdx, resource); SkASSERT(!size.isEmpty()); SkASSERT(colorType != kUnknown_SkColorType); @@ -358,7 +325,7 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, } break; } - case Type::kTexture: + case Type::kReadOnlyTexture: // This resource type is meant to be populated externally (e.g. by an upload or a render // pass) and only read/sampled by a ComputeStep. It's not meaningful to allocate an // internal texture for a DispatchGroup if none of the ComputeSteps will write to it. @@ -368,11 +335,10 @@ DispatchResourceOptional Builder::allocateResource(const ComputeStep* step, // // Note: A ComputeStep is allowed to read/sample from a storage texture that a previous // ComputeStep has written to. - SK_ABORT("a sampled texture must be externally assigned to a ComputeStep"); + SK_ABORT("a readonly texture must be externally assigned to a ComputeStep"); break; - case Type::kSampler: { - fObj->fSamplerDescs.push_back( - step->calculateSamplerParameters(params, resourceIdx, resource)); + case Type::kSampledTexture: { + fObj->fSamplerDescs.push_back(step->calculateSamplerParameters(resourceIdx, resource)); result = SamplerIndex{fObj->fSamplerDescs.size() - 1u}; break; } diff --git a/src/gpu/graphite/compute/DispatchGroup.h b/src/gpu/graphite/compute/DispatchGroup.h index 0f8324865696..c3ccd2cb5c73 100644 --- a/src/gpu/graphite/compute/DispatchGroup.h +++ b/src/gpu/graphite/compute/DispatchGroup.h @@ -29,9 +29,15 @@ class ResourceProvider; using BindingIndex = uint32_t; struct TextureIndex { uint32_t fValue; }; struct SamplerIndex { uint32_t fValue; }; -using DispatchResource = std::variant; + +struct BufferView { + BindBufferInfo fInfo; + size_t fSize; +}; + +using DispatchResource = std::variant; using DispatchResourceOptional = - std::variant; + std::variant; struct ResourceBinding { BindingIndex fIndex; @@ -100,23 +106,12 @@ class DispatchGroup::Builder final { public: // Contains the resource handles assigned to the outputs of the most recently inserted // ComputeStep. - // TODO(b/259564970): Support TextureProxy slot entries. struct OutputTable { - // Draw buffers that can be forwarded to a DrawPass - BindBufferInfo fVertexBuffer; - BindBufferInfo fIndexBuffer; - BindBufferInfo fInstanceBuffer; - BindBufferInfo fIndirectDrawBuffer; - // Contains the std::monostate variant if the slot is uninitialized DispatchResourceOptional fSharedSlots[kMaxComputeDataFlowSlots]; OutputTable() = default; - bool hasDrawBuffers() const { - return fVertexBuffer || fIndexBuffer || fInstanceBuffer || fIndirectDrawBuffer; - } - void reset() { *this = {}; } }; @@ -133,10 +128,7 @@ class DispatchGroup::Builder final { // If the global dispatch size (i.e. workgroup count) is known ahead of time it can be // optionally provided here while appending a step. If provided, the ComputeStep will not // receive a call to `calculateGlobalDispatchSize`. - bool appendStep(const ComputeStep*, - const DrawParams&, - int ssboIndex, - std::optional globalSize = std::nullopt); + bool appendStep(const ComputeStep*, std::optional globalSize = std::nullopt); // Directly assign a buffer range to a shared slot. ComputeSteps that are appended after this // call will use this resouce if they reference the given `slot` index. Builder will not @@ -146,7 +138,7 @@ class DispatchGroup::Builder final { // If the slot is already assigned a buffer, it will be overwritten. Calling this method does // not have any effect on previously appended ComputeSteps that were already bound that // resource. - void assignSharedBuffer(BindBufferInfo buffer, unsigned int slot); + void assignSharedBuffer(BufferView buffer, unsigned int slot); // Directly assign a texture to a shared slot. ComputeSteps that are appended after this call // will use this resource if they reference the given `slot` index. Builder will not allocate @@ -169,19 +161,11 @@ class DispatchGroup::Builder final { sk_sp getSharedTextureResource(unsigned int slot) const; private: - // Allocate a buffer for one of the vertex|index|instance|indirect draw buffer slots. - BindBufferInfo allocateDrawBuffer(const ComputeStep* step, - const ComputeStep::ResourceDesc& resource, - int resourceIdx, - const DrawParams& params); - // Allocate a resource that can be assigned to the shared or private data flow slots. Returns a // std::monostate if allocation fails. DispatchResourceOptional allocateResource(const ComputeStep* step, const ComputeStep::ResourceDesc& resource, - int ssboIdx, - int resourceIdx, - const DrawParams& params); + int resourceIdx); // The object under construction. std::unique_ptr fObj; diff --git a/src/gpu/graphite/compute/VelloComputeSteps.cpp b/src/gpu/graphite/compute/VelloComputeSteps.cpp index 24ba31976f6c..1bef5bb53543 100644 --- a/src/gpu/graphite/compute/VelloComputeSteps.cpp +++ b/src/gpu/graphite/compute/VelloComputeSteps.cpp @@ -644,23 +644,27 @@ VelloFineStep::VelloFineStep() : VelloStep( /*slot=*/kVelloSlot_InfoBinData, }, { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/kVelloSlot_OutputImage, }, { - /*type=*/ResourceType::kTexture, + /*type=*/ResourceType::kReadOnlyTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/kVelloSlot_GradientImage, }, { - /*type=*/ResourceType::kTexture, + /*type=*/ResourceType::kReadOnlyTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/kVelloSlot_ImageAtlas, }, }) {} +std::tuple VelloFineStep::calculateTextureParameters(int index, const ResourceDesc&) const { + return {{}, index == 4 ? kAlpha_8_SkColorType : kRGBA_8888_SkColorType}; +} + } // namespace skgpu::graphite diff --git a/src/gpu/graphite/compute/VelloComputeSteps.h b/src/gpu/graphite/compute/VelloComputeSteps.h index 9981b0bf0417..203b211ea59d 100644 --- a/src/gpu/graphite/compute/VelloComputeSteps.h +++ b/src/gpu/graphite/compute/VelloComputeSteps.h @@ -183,8 +183,6 @@ class VelloStep : public ComputeStep { return {VelloNativeShaderSource(S, format), "main_"}; } - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { return ""; } - protected: explicit VelloStep(SkSpan resources) : ComputeStep(VelloStageName(S), @@ -226,7 +224,6 @@ VELLO_COMPUTE_STEP(ClipReduce); VELLO_COMPUTE_STEP(Coarse); VELLO_COMPUTE_STEP(DrawLeaf); VELLO_COMPUTE_STEP(DrawReduce); -VELLO_COMPUTE_STEP(Fine); VELLO_COMPUTE_STEP(PathCoarse); VELLO_COMPUTE_STEP(PathCoarseFull); VELLO_COMPUTE_STEP(Pathseg); @@ -239,6 +236,14 @@ VELLO_COMPUTE_STEP(TileAlloc); #undef VELLO_COMPUTE_STEP +class VelloFineStep final : public VelloStep { +public: + VelloFineStep(); + + // We need to return a texture format for the bound textures. + std::tuple calculateTextureParameters(int, const ResourceDesc&) const override; +}; + } // namespace skgpu::graphite #endif // skgpu_graphite_compute_VelloComputeSteps_DEFINED diff --git a/src/gpu/graphite/compute/VelloRenderer.cpp b/src/gpu/graphite/compute/VelloRenderer.cpp index d25a661a9efa..f38d0dc0b125 100644 --- a/src/gpu/graphite/compute/VelloRenderer.cpp +++ b/src/gpu/graphite/compute/VelloRenderer.cpp @@ -27,6 +27,13 @@ namespace skgpu::graphite { namespace { +BufferView new_storage_slice(DrawBufferManager* mgr, + size_t size, + ClearBuffer cleared = ClearBuffer::kNo) { + BindBufferInfo info = mgr->getStorage(size, cleared); + return {info, info ? size : 0}; +} + ::rust::Slice to_slice(void* ptr, size_t size) { return {static_cast(ptr), size}; } @@ -257,15 +264,6 @@ std::unique_ptr VelloRenderer::renderScene(const RenderParams& pa auto dispatchInfo = config->workgroup_counts(); auto bufferSizes = config->buffer_sizes(); - // TODO(b/279955342): VelloComputeSteps do not perform any per-draw computation. Instead all - // buffer and global dispatch sizes get computed upfront from the scene encoding - // (in `prepare_render()` above). - // - // We should have an alternate appendStep() interface for ComputeSteps that implement per-draw - // logic for batched processing (e.g. geometry dispatches that offload CPU-side RenderStep - // logic). DispatchGroup::Builder can operate over pre-computed data without requiring a - // DrawParams parameter and we should remove the need for a `placeholder`. - DrawParams placeholder(Transform::Identity(), {}, {}, DrawOrder({}), nullptr); DispatchGroup::Builder builder(recorder); // In total there are 25 resources that are used across the full pipeline stages. The sizes of @@ -304,103 +302,107 @@ std::unique_ptr VelloRenderer::renderScene(const RenderParams& pa // See the comments in VelloComputeSteps.h for an explanation of the logic here. - builder.assignSharedBuffer(configBuf, kVelloSlot_ConfigUniform); - builder.assignSharedBuffer(sceneBuf, kVelloSlot_Scene); + builder.assignSharedBuffer({configBuf, uboSize}, kVelloSlot_ConfigUniform); + builder.assignSharedBuffer({sceneBuf, sceneSize}, kVelloSlot_Scene); // path_reduce - auto pathtagReduceOutput = bufMgr->getStorage(bufferSizes.path_reduced); - auto tagmonoid = bufMgr->getStorage(bufferSizes.path_monoids); + auto pathtagReduceOutput = new_storage_slice(bufMgr, bufferSizes.path_reduced); + auto tagmonoid = new_storage_slice(bufMgr, bufferSizes.path_monoids); builder.assignSharedBuffer(pathtagReduceOutput, kVelloSlot_PathtagReduceOutput); builder.assignSharedBuffer(tagmonoid, kVelloSlot_TagMonoid); - builder.appendStep(&fPathtagReduce, placeholder, 0, to_wg_size(dispatchInfo.path_reduce)); + builder.appendStep(&fPathtagReduce, to_wg_size(dispatchInfo.path_reduce)); // If the input is too large to be fully processed by a single workgroup then a second reduce // step and two scan steps are necessary. Otherwise one reduce+scan pair is sufficient. // // In either case, the result is `tagmonoids`. if (dispatchInfo.use_large_path_scan) { - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.path_reduced2), + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.path_reduced2), kVelloSlot_LargePathtagReduceSecondPassOutput); - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.path_reduced_scan), + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.path_reduced_scan), kVelloSlot_LargePathtagScanFirstPassOutput); - builder.appendStep(&fPathtagReduce2, placeholder, 0, to_wg_size(dispatchInfo.path_reduce2)); - builder.appendStep(&fPathtagScan1, placeholder, 0, to_wg_size(dispatchInfo.path_scan1)); - builder.appendStep(&fPathtagScanLarge, placeholder, 0, to_wg_size(dispatchInfo.path_scan)); + builder.appendStep(&fPathtagReduce2, to_wg_size(dispatchInfo.path_reduce2)); + builder.appendStep(&fPathtagScan1, to_wg_size(dispatchInfo.path_scan1)); + builder.appendStep(&fPathtagScanLarge, to_wg_size(dispatchInfo.path_scan)); } else { - builder.appendStep(&fPathtagScanSmall, placeholder, 0, to_wg_size(dispatchInfo.path_scan)); + builder.appendStep(&fPathtagScanSmall, to_wg_size(dispatchInfo.path_scan)); } // bbox_clear - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.path_bboxes), kVelloSlot_PathBBoxes); - builder.appendStep(&fBboxClear, placeholder, 0, to_wg_size(dispatchInfo.bbox_clear)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.path_bboxes), + kVelloSlot_PathBBoxes); + builder.appendStep(&fBboxClear, to_wg_size(dispatchInfo.bbox_clear)); // pathseg - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.cubics), kVelloSlot_Cubics); - builder.appendStep(&fPathseg, placeholder, 0, to_wg_size(dispatchInfo.path_seg)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.cubics), kVelloSlot_Cubics); + builder.appendStep(&fPathseg, to_wg_size(dispatchInfo.path_seg)); // draw_reduce - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.draw_reduced), + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.draw_reduced), kVelloSlot_DrawReduceOutput); - builder.appendStep(&fDrawReduce, placeholder, 0, to_wg_size(dispatchInfo.draw_reduce)); + builder.appendStep(&fDrawReduce, to_wg_size(dispatchInfo.draw_reduce)); // draw_leaf - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.draw_monoids), kVelloSlot_DrawMonoid); - builder.assignSharedBuffer(bufMgr->getStorage(bin_data_size), kVelloSlot_InfoBinData); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.draw_monoids), + kVelloSlot_DrawMonoid); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bin_data_size), kVelloSlot_InfoBinData); // A clip input buffer must still get bound even if the encoding doesn't contain any clips - builder.assignSharedBuffer(bufMgr->getStorage(std::max(1u, bufferSizes.clip_inps)), + builder.assignSharedBuffer(new_storage_slice(bufMgr, std::max(1u, bufferSizes.clip_inps)), kVelloSlot_ClipInput); - builder.appendStep(&fDrawLeaf, placeholder, 0, to_wg_size(dispatchInfo.draw_leaf)); + builder.appendStep(&fDrawLeaf, to_wg_size(dispatchInfo.draw_leaf)); // clip_reduce, clip_leaf // The clip bbox buffer is always an input to the binning stage, even when the encoding doesn't // contain any clips - builder.assignSharedBuffer(bufMgr->getStorage(std::max(1u, bufferSizes.clip_bboxes)), + builder.assignSharedBuffer(new_storage_slice(bufMgr, std::max(1u, bufferSizes.clip_bboxes)), kVelloSlot_ClipBBoxes); WorkgroupSize clipReduceWgCount = to_wg_size(dispatchInfo.clip_reduce); WorkgroupSize clipLeafWgCount = to_wg_size(dispatchInfo.clip_leaf); bool doClipReduce = clipReduceWgCount.scalarSize() > 0u; bool doClipLeaf = clipLeafWgCount.scalarSize() > 0u; if (doClipReduce || doClipLeaf) { - builder.assignSharedBuffer(bufMgr->getStorage(std::max(1u, bufferSizes.clip_bics)), + builder.assignSharedBuffer(new_storage_slice(bufMgr, std::max(1u, bufferSizes.clip_bics)), kVelloSlot_ClipBicyclic); - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.clip_els), + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.clip_els), kVelloSlot_ClipElement); if (doClipReduce) { - builder.appendStep(&fClipReduce, placeholder, 0, clipReduceWgCount); + builder.appendStep(&fClipReduce, clipReduceWgCount); } if (doClipLeaf) { - builder.appendStep(&fClipLeaf, placeholder, 0, clipLeafWgCount); + builder.appendStep(&fClipLeaf, clipLeafWgCount); } } // binning - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.draw_bboxes), kVelloSlot_DrawBBoxes); - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.bump_alloc, ClearBuffer::kYes), + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.draw_bboxes), + kVelloSlot_DrawBBoxes); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.bump_alloc, ClearBuffer::kYes), kVelloSlot_BumpAlloc); - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.bin_headers), kVelloSlot_BinHeader); - builder.appendStep(&fBinning, placeholder, 0, to_wg_size(dispatchInfo.binning)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.bin_headers), + kVelloSlot_BinHeader); + builder.appendStep(&fBinning, to_wg_size(dispatchInfo.binning)); // tile_alloc - builder.assignSharedBuffer(bufMgr->getStorage(bufferSizes.paths), kVelloSlot_Path); - builder.assignSharedBuffer(bufMgr->getStorage(tiles_size), kVelloSlot_Tile); - builder.appendStep(&fTileAlloc, placeholder, 0, to_wg_size(dispatchInfo.tile_alloc)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, bufferSizes.paths), kVelloSlot_Path); + builder.assignSharedBuffer(new_storage_slice(bufMgr, tiles_size), kVelloSlot_Tile); + builder.appendStep(&fTileAlloc, to_wg_size(dispatchInfo.tile_alloc)); // path_coarse - builder.assignSharedBuffer(bufMgr->getStorage(segments_size), kVelloSlot_Segments); - builder.appendStep(&fPathCoarseFull, placeholder, 0, to_wg_size(dispatchInfo.path_coarse)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, segments_size), kVelloSlot_Segments); + builder.appendStep(&fPathCoarseFull, to_wg_size(dispatchInfo.path_coarse)); // backdrop - builder.appendStep(&fBackdropDyn, placeholder, 0, to_wg_size(dispatchInfo.backdrop)); + builder.appendStep(&fBackdropDyn, to_wg_size(dispatchInfo.backdrop)); // coarse - builder.assignSharedBuffer(bufMgr->getStorage(ptcl_size), kVelloSlot_PTCL); - builder.appendStep(&fCoarse, placeholder, 0, to_wg_size(dispatchInfo.coarse)); + builder.assignSharedBuffer(new_storage_slice(bufMgr, ptcl_size), kVelloSlot_PTCL); + builder.appendStep(&fCoarse, to_wg_size(dispatchInfo.coarse)); // fine builder.assignSharedTexture(fImageAtlas, kVelloSlot_ImageAtlas); builder.assignSharedTexture(fGradientImage, kVelloSlot_GradientImage); builder.assignSharedTexture(std::move(target), kVelloSlot_OutputImage); - builder.appendStep(&fFine, placeholder, 0, to_wg_size(dispatchInfo.fine)); + builder.appendStep(&fFine, to_wg_size(dispatchInfo.fine)); return builder.finalize(); } diff --git a/src/gpu/graphite/dawn/DawnBuffer.cpp b/src/gpu/graphite/dawn/DawnBuffer.cpp index 1d71d556c233..9968a9967f07 100644 --- a/src/gpu/graphite/dawn/DawnBuffer.cpp +++ b/src/gpu/graphite/dawn/DawnBuffer.cpp @@ -53,7 +53,8 @@ sk_sp DawnBuffer::Make(const DawnSharedContext* sharedContext, usage = wgpu::BufferUsage::Uniform | wgpu::BufferUsage::CopyDst; break; case BufferType::kStorage: - usage = wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopyDst; + usage = wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopyDst | + wgpu::BufferUsage::CopySrc; break; case BufferType::kIndirect: usage = wgpu::BufferUsage::Indirect | wgpu::BufferUsage::Storage; diff --git a/src/gpu/graphite/dawn/DawnCaps.cpp b/src/gpu/graphite/dawn/DawnCaps.cpp index 04aebd0d05b3..24882cac8f46 100644 --- a/src/gpu/graphite/dawn/DawnCaps.cpp +++ b/src/gpu/graphite/dawn/DawnCaps.cpp @@ -9,6 +9,7 @@ #include +#include "include/gpu/graphite/ContextOptions.h" #include "include/gpu/graphite/TextureInfo.h" #include "src/gpu/dawn/DawnUtilsPriv.h" #include "src/gpu/graphite/AttachmentTypes.h" @@ -22,8 +23,7 @@ namespace { // These are all the valid wgpu::TextureFormat that we currently support in Skia. -// They are roughly ordered from most frequently used to least to improve look -// up times in arrays. +// They are roughly ordered from most frequently used to least to improve lookup times in arrays. static constexpr wgpu::TextureFormat kFormats[] = { wgpu::TextureFormat::RGBA8Unorm, wgpu::TextureFormat::R8Unorm, @@ -47,7 +47,7 @@ namespace skgpu::graphite { DawnCaps::DawnCaps(const wgpu::Device& device, const ContextOptions& options) : Caps() { - this->initCaps(device); + this->initCaps(device, options); this->initShaderCaps(); this->initFormatTable(device); this->finishInitialization(options); @@ -125,6 +125,21 @@ TextureInfo DawnCaps::getDefaultSampledTextureInfo(SkColorType colorType, return info; } +TextureInfo DawnCaps::getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const { + DawnTextureInfo info; + if (!textureInfo.getDawnTextureInfo(&info)) { + return {}; + } + + info.fSampleCount = 1; + info.fMipmapped = mipmapped; + info.fUsage = wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::CopyDst | + wgpu::TextureUsage::CopySrc; + + return info; +} + TextureInfo DawnCaps::getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const { if (fDefaultMSAASamples <= 1) { @@ -232,7 +247,7 @@ SkColorType DawnCaps::supportedReadPixelsColorType(SkColorType srcColorType, return kUnknown_SkColorType; } -void DawnCaps::initCaps(const wgpu::Device& device) { +void DawnCaps::initCaps(const wgpu::Device& device, const ContextOptions& options) { wgpu::SupportedLimits limits; if (!device.GetLimits(&limits)) { SkASSERT(false); @@ -258,10 +273,16 @@ void DawnCaps::initCaps(const wgpu::Device& device) { fDrawBufferCanBeMapped = false; + fComputeSupport = true; + // TODO: support clamp to border. fClampToBorderSupport = false; + fMSAARenderToSingleSampledSupport = + device.HasFeature(wgpu::FeatureName::MSAARenderToSingleSampled); + fTransientAttachmentSupport = device.HasFeature(wgpu::FeatureName::TransientAttachments); + fEnableWGSL = options.fEnableWGSL; } void DawnCaps::initShaderCaps() { @@ -567,8 +588,20 @@ UniqueKey DawnCaps::makeGraphicsPipelineKey(const GraphicsPipelineDesc& pipeline } UniqueKey DawnCaps::makeComputePipelineKey(const ComputePipelineDesc& pipelineDesc) const { - SkASSERT(false); - return {}; + UniqueKey pipelineKey; + { + static const skgpu::UniqueKey::Domain kComputePipelineDomain = UniqueKey::GenerateDomain(); + // The key is made up of a single uint32_t corresponding to the compute step ID. + UniqueKey::Builder builder(&pipelineKey, kComputePipelineDomain, 1, "ComputePipeline"); + builder[0] = pipelineDesc.computeStep()->uniqueID(); + + // TODO(b/240615224): The local work group size should factor into the key here since it is + // specified in the shader text on Dawn/SPIR-V. This is not a problem right now since + // ComputeSteps don't vary their workgroup size dynamically. + + builder.finish(); + } + return pipelineKey; } void DawnCaps::buildKeyForTexture(SkISize dimensions, diff --git a/src/gpu/graphite/dawn/DawnCaps.h b/src/gpu/graphite/dawn/DawnCaps.h index 5299dd220a12..c7f8d898d30f 100644 --- a/src/gpu/graphite/dawn/DawnCaps.h +++ b/src/gpu/graphite/dawn/DawnCaps.h @@ -26,6 +26,8 @@ class DawnCaps final : public Caps { Mipmapped mipmapped, Protected, Renderable) const override; + TextureInfo getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const override; TextureInfo getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const override; TextureInfo getDefaultDepthStencilTextureInfo(SkEnumBitMask, @@ -44,6 +46,9 @@ class DawnCaps final : public Caps { Shareable, GraphiteResourceKey*) const override; uint64_t getRenderPassDescKey(const RenderPassDesc& renderPassDesc) const; + bool enableWGSL() const { + return fEnableWGSL; + } private: const ColorTypeInfo* getColorTypeInfo(SkColorType, const TextureInfo&) const override; @@ -57,7 +62,7 @@ class DawnCaps final : public Caps { const TextureInfo& srcTextureInfo, SkColorType dstColorType) const override; - void initCaps(const wgpu::Device& device); + void initCaps(const wgpu::Device& device, const ContextOptions& options); void initShaderCaps(); void initFormatTable(const wgpu::Device& device); @@ -108,6 +113,7 @@ class DawnCaps final : public Caps { void setColorType(SkColorType, std::initializer_list formats); bool fTransientAttachmentSupport = false; + bool fEnableWGSL = false; }; } // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnCommandBuffer.cpp b/src/gpu/graphite/dawn/DawnCommandBuffer.cpp index 58ecbbcd3263..f943e86805b9 100644 --- a/src/gpu/graphite/dawn/DawnCommandBuffer.cpp +++ b/src/gpu/graphite/dawn/DawnCommandBuffer.cpp @@ -12,6 +12,7 @@ #include "src/gpu/graphite/compute/DispatchGroup.h" #include "src/gpu/graphite/dawn/DawnBuffer.h" #include "src/gpu/graphite/dawn/DawnCaps.h" +#include "src/gpu/graphite/dawn/DawnComputePipeline.h" #include "src/gpu/graphite/dawn/DawnGraphicsPipeline.h" #include "src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h" #include "src/gpu/graphite/dawn/DawnQueueManager.h" @@ -113,22 +114,8 @@ bool DawnCommandBuffer::onAddComputePass(const DispatchGroupList& groups) { group->addResourceRefs(this); for (const auto& dispatch : group->dispatches()) { this->bindComputePipeline(group->getPipeline(dispatch.fPipelineIndex)); - for (const ResourceBinding& binding : dispatch.fBindings) { - if (const BindBufferInfo* buffer = - std::get_if(&binding.fResource)) { - this->bindBuffer(buffer->fBuffer, buffer->fOffset, binding.fIndex); - } else if (const TextureIndex* texIdx = - std::get_if(&binding.fResource)) { - SkASSERT(texIdx); - this->bindTexture(group->getTexture(texIdx->fValue), binding.fIndex); - } else { - const SamplerIndex* samplerIdx = std::get_if(&binding.fResource); - SkASSERT(samplerIdx); - this->bindSampler(group->getSampler(samplerIdx->fValue), binding.fIndex); - } - } - this->dispatchThreadgroups(dispatch.fParams.fGlobalDispatchSize, - dispatch.fParams.fLocalDispatchSize); + this->bindDispatchResources(*group, dispatch); + this->dispatchWorkgroups(dispatch.fParams.fGlobalDispatchSize); } } this->endComputePass(); @@ -163,16 +150,18 @@ bool DawnCommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc, wgpu::RenderPassDepthStencilAttachment wgpuDepthStencilAttachment; // Set up color attachment. + wgpu::DawnRenderPassColorAttachmentRenderToSingleSampled mssaRenderToSingleSampledDesc; + auto& colorInfo = renderPassDesc.fColorAttachment; - bool loadMSAAFromResolve = false; + bool loadMSAAFromResolveExplicitly = false; if (colorTexture) { wgpuRenderPass.colorAttachments = &wgpuColorAttachment; wgpuRenderPass.colorAttachmentCount = 1; // TODO: check Texture matches RenderPassDesc const auto* dawnColorTexture = static_cast(colorTexture); - SkASSERT(dawnColorTexture->dawnTextureView()); - wgpuColorAttachment.view = dawnColorTexture->dawnTextureView(); + SkASSERT(dawnColorTexture->renderTextureView()); + wgpuColorAttachment.view = dawnColorTexture->renderTextureView(); const std::array& clearColor = renderPassDesc.fClearColor; wgpuColorAttachment.clearValue = { @@ -185,18 +174,27 @@ bool DawnCommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc, SkASSERT(renderPassDesc.fColorResolveAttachment.fStoreOp == StoreOp::kStore); // TODO: check Texture matches RenderPassDesc const auto* dawnResolveTexture = static_cast(resolveTexture); - SkASSERT(dawnResolveTexture->dawnTextureView()); - wgpuColorAttachment.resolveTarget = dawnResolveTexture->dawnTextureView(); + SkASSERT(dawnResolveTexture->renderTextureView()); + wgpuColorAttachment.resolveTarget = dawnResolveTexture->renderTextureView(); // Inclusion of a resolve texture implies the client wants to finish the // renderpass with a resolve. SkASSERT(wgpuColorAttachment.storeOp == wgpu::StoreOp::Discard); // But it also means we have to load the resolve texture into the MSAA color attachment - loadMSAAFromResolve = renderPassDesc.fColorResolveAttachment.fLoadOp == LoadOp::kLoad; + loadMSAAFromResolveExplicitly = + renderPassDesc.fColorResolveAttachment.fLoadOp == LoadOp::kLoad; // TODO: If the color resolve texture is read-only we can use a private (vs. memoryless) // msaa attachment that's coupled to the framebuffer and the StoreAndMultisampleResolve // action instead of loading as a draw. + } else if (renderPassDesc.fSampleCount > 1 && colorTexture->numSamples() == 1) { + // If render pass is multi sampled but the color attachment is single sampled, we need + // to activate multisampled render to single sampled feature for this render pass. + SkASSERT(fSharedContext->device().HasFeature( + wgpu::FeatureName::MSAARenderToSingleSampled)); + + wgpuColorAttachment.nextInChain = &mssaRenderToSingleSampledDesc; + mssaRenderToSingleSampledDesc.implicitSampleCount = renderPassDesc.fSampleCount; } } @@ -208,8 +206,8 @@ bool DawnCommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc, SkASSERT(DawnFormatIsDepthOrStencil(format)); // TODO: check Texture matches RenderPassDesc - SkASSERT(dawnDepthStencilTexture->dawnTextureView()); - wgpuDepthStencilAttachment.view = dawnDepthStencilTexture->dawnTextureView(); + SkASSERT(dawnDepthStencilTexture->renderTextureView()); + wgpuDepthStencilAttachment.view = dawnDepthStencilTexture->renderTextureView(); if (DawnFormatIsDepth(format)) { wgpuDepthStencilAttachment.depthClearValue = renderPassDesc.fClearDepth; @@ -232,7 +230,7 @@ bool DawnCommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc, SkASSERT(!depthStencilInfo.fTextureInfo.isValid()); } - if (loadMSAAFromResolve) { + if (loadMSAAFromResolveExplicitly) { // Manually load the contents of the resolve texture into the MSAA attachment as a draw, // so the actual load op for the MSAA attachment had better have been discard. @@ -280,7 +278,7 @@ bool DawnCommandBuffer::loadMSAAFromResolveAndBeginRenderPassEncoder( wgpuIntermediateColorAttachment.loadOp = wgpu::LoadOp::Clear; wgpuIntermediateColorAttachment.clearValue = {1, 1, 1, 1}; wgpuIntermediateColorAttachment.storeOp = wgpu::StoreOp::Store; - wgpuIntermediateColorAttachment.view = msaaLoadTexture->dawnTextureView(); + wgpuIntermediateColorAttachment.view = msaaLoadTexture->renderTextureView(); wgpu::RenderPassDescriptor wgpuIntermediateRenderPassDesc; wgpuIntermediateRenderPassDesc.colorAttachmentCount = 1; @@ -302,7 +300,7 @@ bool DawnCommandBuffer::loadMSAAFromResolveAndBeginRenderPassEncoder( fActiveRenderPassEncoder = fCommandEncoder.BeginRenderPass(&wgpuRenderPassDesc); return this->doBlitWithDraw(frontendRenderPassDesc, - /*sourceTextureView=*/msaaLoadTexture->dawnTextureView(), + /*sourceTextureView=*/msaaLoadTexture->renderTextureView(), msaaTexture->dimensions().width(), msaaTexture->dimensions().height()); } @@ -435,6 +433,8 @@ void DawnCommandBuffer::addDrawPass(const DrawPass* drawPass) { } void DawnCommandBuffer::bindGraphicsPipeline(const GraphicsPipeline* graphicsPipeline) { + SkASSERT(fActiveRenderPassEncoder); + fActiveGraphicsPipeline = static_cast(graphicsPipeline); fActiveRenderPassEncoder.SetPipeline(fActiveGraphicsPipeline->dawnRenderPipeline()); fBoundUniformBuffersDirty = true; @@ -506,7 +506,7 @@ void DawnCommandBuffer::bindTextureAndSamplers( static_cast(drawPass.getTexture(command.fTextureIndices[i])); const auto* sampler = static_cast(drawPass.getSampler(command.fSamplerIndices[i])); - auto& wgpuTextureView = texture->dawnTextureView(); + auto& wgpuTextureView = texture->sampleTextureView(); auto& wgpuSampler = sampler->dawnSampler(); // Assuming shader generator assigns binding slot to sampler then texture, @@ -725,37 +725,73 @@ void DawnCommandBuffer::drawIndexedIndirect(PrimitiveType type) { fCurrentIndirectBufferOffset); } -void DawnCommandBuffer::beginComputePass() { SkASSERT(false); } +void DawnCommandBuffer::beginComputePass() { + SkASSERT(!fActiveRenderPassEncoder); + SkASSERT(!fActiveComputePassEncoder); + fActiveComputePassEncoder = fCommandEncoder.BeginComputePass(); +} void DawnCommandBuffer::bindComputePipeline(const ComputePipeline* computePipeline) { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); -} + SkASSERT(fActiveComputePassEncoder); + + fActiveComputePipeline = static_cast(computePipeline); + fActiveComputePassEncoder.SetPipeline(fActiveComputePipeline->dawnComputePipeline()); +} + +void DawnCommandBuffer::bindDispatchResources(const DispatchGroup& group, + const DispatchGroup::Dispatch& dispatch) { + SkASSERT(fActiveComputePassEncoder); + SkASSERT(fActiveComputePipeline); + + // Bind all pipeline resources to a single new bind group at index 0. + // NOTE: Caching the bind groups here might be beneficial based on the layout and the bound + // resources (though it's questionable how often a bind group will end up getting reused since + // the bound objects change often). + skia_private::TArray entries; + entries.reserve(dispatch.fBindings.size()); + + for (const ResourceBinding& binding : dispatch.fBindings) { + wgpu::BindGroupEntry& entry = entries.push_back(); + entry.binding = binding.fIndex; + if (const BufferView* buffer = std::get_if(&binding.fResource)) { + entry.buffer = static_cast(buffer->fInfo.fBuffer)->dawnBuffer(); + entry.offset = buffer->fInfo.fOffset; + entry.size = buffer->fSize; + } else if (const TextureIndex* texIdx = std::get_if(&binding.fResource)) { + const DawnTexture* texture = + static_cast(group.getTexture(texIdx->fValue)); + SkASSERT(texture); + entry.textureView = texture->sampleTextureView(); + } else if (const SamplerIndex* samplerIdx = std::get_if(&binding.fResource)) { + const DawnSampler* sampler = + static_cast(group.getSampler(samplerIdx->fValue)); + entry.sampler = sampler->dawnSampler(); + } else { + SK_ABORT("unsupported dispatch resource type"); + } + } -void DawnCommandBuffer::bindBuffer(const Buffer* buffer, unsigned int offset, unsigned int index) { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); -} + wgpu::BindGroupDescriptor desc; + desc.layout = fActiveComputePipeline->dawnComputePipeline().GetBindGroupLayout(0); + desc.entryCount = entries.size(); + desc.entries = entries.data(); -void DawnCommandBuffer::bindTexture(const Texture* texture, unsigned int index) { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); + auto bindGroup = fSharedContext->device().CreateBindGroup(&desc); + fActiveComputePassEncoder.SetBindGroup(0, bindGroup); } -void DawnCommandBuffer::bindSampler(const Sampler* sampler, unsigned int index) { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); -} +void DawnCommandBuffer::dispatchWorkgroups(const WorkgroupSize& globalSize) { + SkASSERT(fActiveComputePassEncoder); + SkASSERT(fActiveComputePipeline); -void DawnCommandBuffer::dispatchThreadgroups(const WorkgroupSize& globalSize, - const WorkgroupSize& localSize) { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); + fActiveComputePassEncoder.DispatchWorkgroups( + globalSize.fWidth, globalSize.fHeight, globalSize.fDepth); } void DawnCommandBuffer::endComputePass() { - // TODO: https://b.corp.google.com/issues/260341543 - SkASSERT(false); + SkASSERT(fActiveComputePassEncoder); + fActiveComputePassEncoder.End(); + fActiveComputePassEncoder = nullptr; } bool DawnCommandBuffer::onCopyBufferToBuffer(const Buffer* srcBuffer, @@ -843,7 +879,8 @@ bool DawnCommandBuffer::onCopyBufferToTexture(const Buffer* buffer, bool DawnCommandBuffer::onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int mipLevel) { SkASSERT(!fActiveRenderPassEncoder); SkASSERT(!fActiveComputePassEncoder); @@ -859,6 +896,7 @@ bool DawnCommandBuffer::onCopyTextureToTexture(const Texture* src, dstArgs.texture = wgpuTextureDst; dstArgs.origin.x = dstPoint.fX; dstArgs.origin.y = dstPoint.fY; + dstArgs.mipLevel = mipLevel; wgpu::Extent3D copySize = { static_cast(srcRect.width()), static_cast(srcRect.height()), 1}; diff --git a/src/gpu/graphite/dawn/DawnCommandBuffer.h b/src/gpu/graphite/dawn/DawnCommandBuffer.h index cfc992f29eb6..00bb7807e104 100644 --- a/src/gpu/graphite/dawn/DawnCommandBuffer.h +++ b/src/gpu/graphite/dawn/DawnCommandBuffer.h @@ -12,6 +12,7 @@ #include "src/gpu/graphite/DrawPass.h" #include "src/gpu/graphite/GpuWorkSubmission.h" #include "src/gpu/graphite/Log.h" +#include "src/gpu/graphite/compute/DispatchGroup.h" #include "src/gpu/graphite/dawn/DawnGraphicsPipeline.h" #include "webgpu/webgpu_cpp.h" @@ -19,6 +20,7 @@ namespace skgpu::graphite { class ComputePipeline; class DawnBuffer; +class DawnComputePipeline; class DawnQueueManager; class DawnResourceProvider; class DawnSharedContext; @@ -103,10 +105,8 @@ class DawnCommandBuffer final : public CommandBuffer { // Methods for populating a Dawn ComputePassEncoder: void beginComputePass(); void bindComputePipeline(const ComputePipeline*); - void bindBuffer(const Buffer* buffer, unsigned int offset, unsigned int index); - void bindTexture(const Texture* texture, unsigned int index); - void bindSampler(const Sampler* sampler, unsigned int index); - void dispatchThreadgroups(const WorkgroupSize& globalSize, const WorkgroupSize& localSize); + void bindDispatchResources(const DispatchGroup&, const DispatchGroup::Dispatch&); + void dispatchWorkgroups(const WorkgroupSize& globalSize); void endComputePass(); // Methods for doing texture/buffer to texture/buffer copying: @@ -127,7 +127,8 @@ class DawnCommandBuffer final : public CommandBuffer { bool onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) override; + SkIPoint dstPoint, + int mipLevel) override; bool onSynchronizeBufferToCpu(const Buffer*, bool* outDidResultInWork) override; bool onClearBuffer(const Buffer*, size_t offset, size_t size) override; @@ -149,6 +150,7 @@ class DawnCommandBuffer final : public CommandBuffer { wgpu::Buffer fIntrinsicConstantBuffer; const DawnGraphicsPipeline* fActiveGraphicsPipeline = nullptr; + const DawnComputePipeline* fActiveComputePipeline = nullptr; const DawnSharedContext* fSharedContext; DawnResourceProvider* fResourceProvider; }; diff --git a/src/gpu/graphite/dawn/DawnComputePipeline.cpp b/src/gpu/graphite/dawn/DawnComputePipeline.cpp new file mode 100644 index 000000000000..cdcf4dbc10c4 --- /dev/null +++ b/src/gpu/graphite/dawn/DawnComputePipeline.cpp @@ -0,0 +1,192 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "src/gpu/graphite/dawn/DawnComputePipeline.h" + +#include "src/gpu/PipelineUtils.h" +#include "src/gpu/graphite/Caps.h" +#include "src/gpu/graphite/ComputePipelineDesc.h" +#include "src/gpu/graphite/ContextUtils.h" +#include "src/gpu/graphite/dawn/DawnAsyncWait.h" +#include "src/gpu/graphite/dawn/DawnErrorChecker.h" +#include "src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h" +#include "src/gpu/graphite/dawn/DawnSharedContext.h" +#include "src/sksl/SkSLCompiler.h" +#include "src/sksl/SkSLProgramSettings.h" + +namespace skgpu::graphite { +namespace { + +struct ShaderInfo { + wgpu::ShaderModule fModule; + std::string fEntryPoint; + + bool isValid() const { return static_cast(fModule); } +}; + +static ShaderInfo compile_shader_module(const DawnSharedContext* sharedContext, + const ComputePipelineDesc& pipelineDesc) { + SkASSERT(sharedContext); + + ShaderInfo info; + + const Caps* caps = sharedContext->caps(); + const ComputeStep* step = pipelineDesc.computeStep(); + ShaderErrorHandler* errorHandler = caps->shaderErrorHandler(); + + if (step->supportsNativeShader()) { + auto nativeShader = step->nativeShaderSource(ComputeStep::NativeShaderFormat::kWGSL); + if (!DawnCompileWGSLShaderModule(sharedContext, + std::string(nativeShader.fSource), + &info.fModule, + errorHandler)) { + return {}; + } + info.fEntryPoint = std::move(nativeShader.fEntryPoint); + } else { + // TODO(skia:40044196) Compile to WGSL when SkSL supports it + std::string spirv; + SkSL::Program::Interface interface; + SkSL::ProgramSettings settings; + + SkSL::Compiler compiler(caps->shaderCaps()); + std::string sksl = BuildComputeSkSL(caps, step); + if (SkSLToSPIRV(&compiler, + sksl, + SkSL::ProgramKind::kCompute, + settings, + &spirv, + &interface, + errorHandler)) { + if (!DawnCompileSPIRVShaderModule(sharedContext, spirv, &info.fModule, errorHandler)) { + return {}; + } + info.fEntryPoint = "main"; + } + } + + return info; +} + +} // namespace + +sk_sp DawnComputePipeline::Make(const DawnSharedContext* sharedContext, + const ComputePipelineDesc& pipelineDesc) { + auto [shaderModule, entryPointName] = compile_shader_module(sharedContext, pipelineDesc); + if (!shaderModule) { + return nullptr; + } + + const ComputeStep* step = pipelineDesc.computeStep(); + + // ComputeStep resources are listed in the order that they must be declared in the shader. This + // order is then used for the index assignment using an "indexed by order" policy that has + // backend-specific semantics. The semantics on Dawn is to assign the index number in increasing + // order. + // + // All resources get assigned to a single bind group at index 0. + SkASSERT(!sharedContext->caps()->resourceBindingRequirements().fDistinctIndexRanges); + std::vector bindGroupLayoutEntries; + auto resources = step->resources(); + + // Sampled textures count as 2 resources (1 texture and 1 sampler). All other types count as 1. + size_t resourceCount = 0; + for (const ComputeStep::ResourceDesc& r : resources) { + resourceCount++; + if (r.fType == ComputeStep::ResourceType::kSampledTexture) { + resourceCount++; + } + } + + bindGroupLayoutEntries.reserve(resourceCount); + int declarationIndex = 0; + for (const ComputeStep::ResourceDesc& r : resources) { + bindGroupLayoutEntries.emplace_back(); + uint32_t bindingIndex = bindGroupLayoutEntries.size() - 1; + + wgpu::BindGroupLayoutEntry& entry = bindGroupLayoutEntries.back(); + entry.binding = bindingIndex; + entry.visibility = wgpu::ShaderStage::Compute; + switch (r.fType) { + case ComputeStep::ResourceType::kUniformBuffer: + entry.buffer.type = wgpu::BufferBindingType::Uniform; + break; + case ComputeStep::ResourceType::kStorageBuffer: + entry.buffer.type = wgpu::BufferBindingType::Storage; + break; + case ComputeStep::ResourceType::kReadOnlyTexture: + entry.texture.sampleType = wgpu::TextureSampleType::Float; + entry.texture.viewDimension = wgpu::TextureViewDimension::e2D; + break; + case ComputeStep::ResourceType::kWriteOnlyStorageTexture: { + entry.storageTexture.access = wgpu::StorageTextureAccess::WriteOnly; + entry.storageTexture.viewDimension = wgpu::TextureViewDimension::e2D; + + auto [_, colorType] = step->calculateTextureParameters(declarationIndex, r); + auto textureInfo = sharedContext->caps()->getDefaultStorageTextureInfo(colorType); + entry.storageTexture.format = textureInfo.dawnTextureSpec().fFormat; + break; + } + case ComputeStep::ResourceType::kSampledTexture: { + entry.sampler.type = wgpu::SamplerBindingType::Filtering; + + // Add an additional entry for the texture. + bindGroupLayoutEntries.emplace_back(); + wgpu::BindGroupLayoutEntry& texEntry = bindGroupLayoutEntries.back(); + texEntry.binding = bindingIndex + 1; + texEntry.visibility = wgpu::ShaderStage::Compute; + texEntry.texture.sampleType = wgpu::TextureSampleType::Float; + texEntry.texture.viewDimension = wgpu::TextureViewDimension::e2D; + break; + } + } + declarationIndex++; + } + + const wgpu::Device& device = sharedContext->device(); + + // All resources of a ComputeStep currently get assigned to a single bind group at index 0. + wgpu::BindGroupLayoutDescriptor bindGroupLayoutDesc; + bindGroupLayoutDesc.entryCount = bindGroupLayoutEntries.size(); + bindGroupLayoutDesc.entries = bindGroupLayoutEntries.data(); + wgpu::BindGroupLayout bindGroupLayout = device.CreateBindGroupLayout(&bindGroupLayoutDesc); + if (!bindGroupLayout) { + return nullptr; + } + + wgpu::PipelineLayoutDescriptor pipelineLayoutDesc; + pipelineLayoutDesc.label = step->name(); + pipelineLayoutDesc.bindGroupLayoutCount = 1; + pipelineLayoutDesc.bindGroupLayouts = &bindGroupLayout; + wgpu::PipelineLayout layout = device.CreatePipelineLayout(&pipelineLayoutDesc); + if (!layout) { + return nullptr; + } + + wgpu::ComputePipelineDescriptor descriptor; + descriptor.label = step->name(); + descriptor.compute.module = std::move(shaderModule); + descriptor.compute.entryPoint = entryPointName.c_str(); + descriptor.layout = std::move(layout); + + DawnErrorChecker errorChecker(device); + wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&descriptor); + SkASSERT(pipeline); + if (errorChecker.popErrorScopes() != DawnErrorType::kNoError) { + return nullptr; + } + + return sk_sp(new DawnComputePipeline(sharedContext, std::move(pipeline))); +} + +DawnComputePipeline::DawnComputePipeline(const SharedContext* sharedContext, + wgpu::ComputePipeline pso) + : ComputePipeline(sharedContext), fPipeline(std::move(pso)) {} + +void DawnComputePipeline::freeGpuData() { fPipeline = nullptr; } + +} // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnComputePipeline.h b/src/gpu/graphite/dawn/DawnComputePipeline.h new file mode 100644 index 000000000000..493348803d0d --- /dev/null +++ b/src/gpu/graphite/dawn/DawnComputePipeline.h @@ -0,0 +1,39 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_DawnComputePipeline_DEFINED +#define skgpu_graphite_DawnComputePipeline_DEFINED + +#include "include/core/SkRefCnt.h" +#include "src/gpu/graphite/ComputePipeline.h" + +#include "webgpu/webgpu_cpp.h" + +namespace skgpu::graphite { + +class ComputePipelineDesc; +class DawnComputePipelineDesc; +class DawnSharedContext; + +class DawnComputePipeline final : public ComputePipeline { +public: + static sk_sp Make(const DawnSharedContext*, const ComputePipelineDesc&); + ~DawnComputePipeline() override = default; + + const wgpu::ComputePipeline& dawnComputePipeline() const { return fPipeline; } + +private: + DawnComputePipeline(const SharedContext*, wgpu::ComputePipeline); + + void freeGpuData() override; + + wgpu::ComputePipeline fPipeline; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_DawnComputePipeline_DEFINED diff --git a/src/gpu/graphite/dawn/DawnErrorChecker.cpp b/src/gpu/graphite/dawn/DawnErrorChecker.cpp new file mode 100644 index 000000000000..1740a47a6291 --- /dev/null +++ b/src/gpu/graphite/dawn/DawnErrorChecker.cpp @@ -0,0 +1,82 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "src/gpu/graphite/dawn/DawnErrorChecker.h" + +#include "include/private/base/SkAssert.h" +#include "src/gpu/graphite/Log.h" +#include "src/gpu/graphite/dawn/DawnAsyncWait.h" + +namespace skgpu::graphite { +namespace { + +constexpr const char* kErrorScopeNames[] = {"validation", "out-of-memory", "internal"}; +constexpr DawnErrorType kErrorScopeTypes[] = { + DawnErrorType::kValidation, DawnErrorType::kOutOfMemory, DawnErrorType::kInternal}; +static_assert(std::size(kErrorScopeNames) == std::size(kErrorScopeTypes)); +constexpr int kScopeCount = std::size(kErrorScopeTypes); + +} // namespace + +DawnErrorChecker::DawnErrorChecker(const wgpu::Device& device) : fArmed(true), fDevice(device) { + fDevice.PushErrorScope(wgpu::ErrorFilter::Validation); + fDevice.PushErrorScope(wgpu::ErrorFilter::OutOfMemory); + fDevice.PushErrorScope(wgpu::ErrorFilter::Internal); +} + +DawnErrorChecker::~DawnErrorChecker() { + [[maybe_unused]] auto err = this->popErrorScopes(); + SkASSERT(!fArmed); + SkASSERT(err == DawnErrorType::kNoError); +} + +SkEnumBitMask DawnErrorChecker::popErrorScopes() { + if (!fArmed) { + return DawnErrorType::kNoError; + } + + struct ErrorState { + SkEnumBitMask fError; + int fScopeIdx; + DawnAsyncWait fWait; + + ErrorState(const wgpu::Device& device) + : fError(DawnErrorType::kNoError), fScopeIdx(kScopeCount - 1), fWait(device) {} + } errorState(fDevice); + + wgpu::ErrorCallback errorCallback = [](WGPUErrorType status, const char* msg, void* userData) { + ErrorState* errorState = static_cast(userData); + if (status != WGPUErrorType_NoError) { + SkASSERT(errorState->fScopeIdx >= 0); + const char* errorScopeName = kErrorScopeNames[errorState->fScopeIdx]; + SKGPU_LOG_E("Failed in error scope (%s): %s", errorScopeName, msg); + errorState->fError |= kErrorScopeTypes[errorState->fScopeIdx]; + } + errorState->fScopeIdx--; + errorState->fWait.signal(); + }; + + // Pop all three error scopes: + // Internal + fDevice.PopErrorScope(errorCallback, &errorState); + errorState.fWait.busyWait(); + errorState.fWait.reset(); + + // OutOfMemory + fDevice.PopErrorScope(errorCallback, &errorState); + errorState.fWait.busyWait(); + errorState.fWait.reset(); + + // Validation + fDevice.PopErrorScope(errorCallback, &errorState); + errorState.fWait.busyWait(); + + fArmed = false; + return errorState.fError; +} + +} // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnErrorChecker.h b/src/gpu/graphite/dawn/DawnErrorChecker.h new file mode 100644 index 000000000000..8913e3658761 --- /dev/null +++ b/src/gpu/graphite/dawn/DawnErrorChecker.h @@ -0,0 +1,47 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_DawnErrorChecker_DEFINED +#define skgpu_graphite_DawnErrorChecker_DEFINED + +#include "src/base/SkEnumBitMask.h" + +#include "webgpu/webgpu_cpp.h" + +namespace skgpu::graphite { + +enum class DawnErrorType : uint32_t { + kNoError = 0b00000000, + kValidation = 0b00000001, + kOutOfMemory = 0b00000010, + kInternal = 0b00000100, +}; +SK_MAKE_BITMASK_OPS(DawnErrorType); + +// DawnErrorChecker immediately pushes error scopes for all known Dawn error filter types +// (Validation, OutOfMemory, Internal) upon construction and detects any errors that are +// reported within those scopes. Errors can be detected synchronously by either +// +// 1. calling `check()`, which returns false if any errors were reported, or +// 2. destroying the DawnErrorChecker instance, which asserts if any errors are reported +// which weren't previously caught by calling `check()` directly. +// +class DawnErrorChecker { +public: + explicit DawnErrorChecker(const wgpu::Device& device); + ~DawnErrorChecker(); + + SkEnumBitMask popErrorScopes(); + +private: + bool fArmed = true; + wgpu::Device fDevice; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_DawnErrorChecker_DEFINED diff --git a/src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp b/src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp index dfb7604be120..55d588d22842 100644 --- a/src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp +++ b/src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp @@ -16,6 +16,8 @@ #include "src/gpu/graphite/Log.h" #include "src/gpu/graphite/RendererProvider.h" #include "src/gpu/graphite/UniformManager.h" +#include "src/gpu/graphite/dawn/DawnCaps.h" +#include "src/gpu/graphite/dawn/DawnErrorChecker.h" #include "src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h" #include "src/gpu/graphite/dawn/DawnResourceProvider.h" #include "src/gpu/graphite/dawn/DawnSharedContext.h" @@ -235,28 +237,45 @@ sk_sp DawnGraphicsPipeline::Make(const DawnSharedContext* const RuntimeEffectDictionary* runtimeDict, const GraphicsPipelineDesc& pipelineDesc, const RenderPassDesc& renderPassDesc) { + const DawnCaps& caps = *static_cast(sharedContext->caps()); + const bool enableWGSL = caps.enableWGSL(); + + using SkSLCompileFn = bool (*)(SkSL::Compiler*, + const std::string&, + SkSL::ProgramKind, + const SkSL::ProgramSettings&, + std::string*, + SkSL::Program::Interface*, + ShaderErrorHandler*); + const SkSLCompileFn kSkSLCompileFn = enableWGSL ? SkSLToWGSL + : SkSLToSPIRV; + + using DawnCompileFn = bool (*)(const DawnSharedContext* sharedContext, + const std::string&, + wgpu::ShaderModule* module, + ShaderErrorHandler*); + const DawnCompileFn kDawnCompileFn = enableWGSL ? DawnCompileWGSLShaderModule + : DawnCompileSPIRVShaderModule; + const auto& device = sharedContext->device(); SkSL::Program::Interface vsInterface, fsInterface; SkSL::ProgramSettings settings; settings.fForceNoRTFlip = true; - settings.fSPIRVDawnCompatMode = true; - ShaderErrorHandler* errorHandler = sharedContext->caps()->shaderErrorHandler(); + ShaderErrorHandler* errorHandler = caps.shaderErrorHandler(); - const RenderStep* step = - sharedContext->rendererProvider()->lookup(pipelineDesc.renderStepID()); + const RenderStep* step = sharedContext->rendererProvider()->lookup(pipelineDesc.renderStepID()); - bool useShadingSsboIndex = - sharedContext->caps()->storageBufferPreferred() && step->performsShading(); + bool useShadingSsboIndex = caps.storageBufferPreferred() && step->performsShading(); - std::string vsSPIRV, fsSPIRV; + std::string vsCode, fsCode; wgpu::ShaderModule fsModule, vsModule; // Some steps just render depth buffer but not color buffer, so the fragment // shader is null. - FragSkSLInfo fsSkSLInfo = BuildFragmentSkSL(sharedContext->caps(), + FragSkSLInfo fsSkSLInfo = BuildFragmentSkSL(&caps, sharedContext->shaderCodeDictionary(), runtimeDict, step, @@ -270,46 +289,39 @@ sk_sp DawnGraphicsPipeline::Make(const DawnSharedContext* bool hasFragment = !fsSkSL.empty(); if (hasFragment) { - if (!SkSLToSPIRV(compiler, - fsSkSL, - SkSL::ProgramKind::kGraphiteFragment, - settings, - &fsSPIRV, - &fsInterface, - errorHandler)) { + if (!kSkSLCompileFn(compiler, + fsSkSL, + SkSL::ProgramKind::kGraphiteFragment, + settings, + &fsCode, + &fsInterface, + errorHandler)) { return {}; } - fsModule = DawnCompileSPIRVShaderModule(sharedContext, - fsSPIRV, - errorHandler); - if (!fsModule) { + if (!kDawnCompileFn(sharedContext, fsCode, &fsModule, errorHandler)) { return {}; } } - std::string vsSkSL = BuildVertexSkSL(sharedContext->caps()->resourceBindingRequirements(), + std::string vsSkSL = BuildVertexSkSL(caps.resourceBindingRequirements(), step, useShadingSsboIndex, localCoordsNeeded); - if (!SkSLToSPIRV(compiler, - vsSkSL, - SkSL::ProgramKind::kGraphiteVertex, - settings, - &vsSPIRV, - &vsInterface, - errorHandler)) { + if (!kSkSLCompileFn(compiler, + vsSkSL, + SkSL::ProgramKind::kGraphiteVertex, + settings, + &vsCode, + &vsInterface, + errorHandler)) { return {}; } - - vsModule = DawnCompileSPIRVShaderModule(sharedContext, vsSPIRV, errorHandler); - if (!vsModule) { + if (!kDawnCompileFn(sharedContext, vsCode, &vsModule, errorHandler)) { return {}; } wgpu::RenderPipelineDescriptor descriptor; -#if defined(SK_DEBUG) descriptor.label = step->name(); -#endif // Fragment state skgpu::BlendEquation equation = blendInfo.fEquation; @@ -522,30 +534,45 @@ sk_sp DawnGraphicsPipeline::Make(const DawnSharedContext* break; } - descriptor.multisample.count = renderPassDesc.fColorAttachment.fTextureInfo.numSamples(); + // Multisampled state + descriptor.multisample.count = renderPassDesc.fSampleCount; + wgpu::DawnMultisampleStateRenderToSingleSampled pipelineMSAARenderToSingleSampledDesc; + if (renderPassDesc.fSampleCount > 1 && renderPassDesc.fColorAttachment.fTextureInfo.isValid() && + renderPassDesc.fColorAttachment.fTextureInfo.numSamples() == 1) { + // If render pass is multi sampled but the color attachment is single sampled, we need + // to activate multisampled render to single sampled feature for this graphics pipeline. + SkASSERT(device.HasFeature(wgpu::FeatureName::MSAARenderToSingleSampled)); + + descriptor.multisample.nextInChain = &pipelineMSAARenderToSingleSampledDesc; + pipelineMSAARenderToSingleSampledDesc.enabled = true; + } + descriptor.multisample.mask = 0xFFFFFFFF; descriptor.multisample.alphaToCoverageEnabled = false; - auto pipeline = device.CreateRenderPipeline(&descriptor); - if (!pipeline) { + DawnErrorChecker errorChecker(device); + wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor); + SkASSERT(pipeline); + if (errorChecker.popErrorScopes() != DawnErrorType::kNoError) { return {}; } -#if GRAPHITE_TEST_UTILS - GraphicsPipeline::Shaders pipelineShaders = { - std::move(vsSkSL), - std::move(fsSkSL), - "SPIR-V disassembly not available", - "SPIR-V disassembly not available", - }; - GraphicsPipeline::Shaders* pipelineShadersPtr = &pipelineShaders; +#if defined(GRAPHITE_TEST_UTILS) + GraphicsPipeline::PipelineInfo pipelineInfo = { + pipelineDesc.renderStepID(), + pipelineDesc.paintParamsID(), + std::move(vsSkSL), + std::move(fsSkSL), + enableWGSL ? std::move(vsCode) : std::string("SPIR-V disassembly not available"), + enableWGSL ? std::move(fsCode) : std::string("SPIR-V disassembly not available")}; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = &pipelineInfo; #else - GraphicsPipeline::Shaders* pipelineShadersPtr = nullptr; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = nullptr; #endif return sk_sp( new DawnGraphicsPipeline(sharedContext, - pipelineShadersPtr, + pipelineInfoPtr, std::move(pipeline), step->primitiveType(), depthStencilSettings.fStencilReferenceValue, @@ -554,13 +581,13 @@ sk_sp DawnGraphicsPipeline::Make(const DawnSharedContext* } DawnGraphicsPipeline::DawnGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, wgpu::RenderPipeline renderPipeline, PrimitiveType primitiveType, uint32_t refValue, bool hasStepUniforms, bool hasFragment) - : GraphicsPipeline(sharedContext, pipelineShaders) + : GraphicsPipeline(sharedContext, pipelineInfo) , fRenderPipeline(std::move(renderPipeline)) , fPrimitiveType(primitiveType) , fStencilReferenceValue(refValue) diff --git a/src/gpu/graphite/dawn/DawnGraphicsPipeline.h b/src/gpu/graphite/dawn/DawnGraphicsPipeline.h index 7f56c90f15e4..027c6607235c 100644 --- a/src/gpu/graphite/dawn/DawnGraphicsPipeline.h +++ b/src/gpu/graphite/dawn/DawnGraphicsPipeline.h @@ -66,7 +66,7 @@ class DawnGraphicsPipeline final : public GraphicsPipeline { private: DawnGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, wgpu::RenderPipeline renderPipeline, PrimitiveType primitiveType, uint32_t refValue, diff --git a/src/gpu/graphite/dawn/DawnGraphiteUtils.cpp b/src/gpu/graphite/dawn/DawnGraphiteUtils.cpp index 9befc12b9a51..23e6dcbc3200 100644 --- a/src/gpu/graphite/dawn/DawnGraphiteUtils.cpp +++ b/src/gpu/graphite/dawn/DawnGraphiteUtils.cpp @@ -88,9 +88,57 @@ wgpu::TextureFormat DawnDepthStencilFlagsToFormat(SkEnumBitMask(userdata); + SkASSERT(status == WGPUCompilationInfoRequestStatus_Success); + + // Walk the message list and check for hard errors. + self->fSuccess = true; + for (size_t index = 0; index < info->messageCount; ++index) { + const WGPUCompilationMessage& entry = info->messages[index]; + if (entry.type == WGPUCompilationMessageType_Error) { + self->fSuccess = false; + break; + } + } + + // If we found a hard error, report the compilation messages to the error handler. + if (!self->fSuccess) { + std::string errors; + for (size_t index = 0; index < info->messageCount; ++index) { + const WGPUCompilationMessage& entry = info->messages[index]; + errors += "line " + + std::to_string(entry.lineNum) + ':' + + std::to_string(entry.linePos) + ' ' + + entry.message + '\n'; + } + self->fErrorHandler->compileError(self->fShaderText, errors.c_str()); + } + } + + const char* fShaderText; + ShaderErrorHandler* fErrorHandler; + bool fSuccess = false; + }; + + Handler handler; + handler.fShaderText = shaderText; + handler.fErrorHandler = errorHandler; + module->GetCompilationInfo(&Handler::Fn, &handler); + + return handler.fSuccess; +} + +bool DawnCompileSPIRVShaderModule(const DawnSharedContext* sharedContext, + const std::string& spirv, + wgpu::ShaderModule* module, + ShaderErrorHandler* errorHandler) { wgpu::ShaderModuleSPIRVDescriptor spirvDesc; spirvDesc.codeSize = spirv.size() / 4; spirvDesc.code = reinterpret_cast(spirv.data()); @@ -105,19 +153,24 @@ wgpu::ShaderModule DawnCompileSPIRVShaderModule(const DawnSharedContext* sharedC desc.nextInChain = &spirvDesc; spirvDesc.nextInChain = &dawnSpirvOptions; - return sharedContext->device().CreateShaderModule(&desc); + *module = sharedContext->device().CreateShaderModule(&desc); + + return check_shader_module(module, "[SPIR-V omitted]", errorHandler); } -wgpu::ShaderModule DawnCompileWGSLShaderModule(const DawnSharedContext* sharedContext, - const std::string& wgsl, - ShaderErrorHandler*) { +bool DawnCompileWGSLShaderModule(const DawnSharedContext* sharedContext, + const std::string& wgsl, + wgpu::ShaderModule* module, + ShaderErrorHandler* errorHandler) { wgpu::ShaderModuleWGSLDescriptor wgslDesc; wgslDesc.code = wgsl.c_str(); wgpu::ShaderModuleDescriptor desc; desc.nextInChain = &wgslDesc; - return sharedContext->device().CreateShaderModule(&desc); + *module = sharedContext->device().CreateShaderModule(&desc); + + return check_shader_module(module, wgsl.c_str(), errorHandler); } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h b/src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h index d5f3ab1afa85..b1df8035d934 100644 --- a/src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h +++ b/src/gpu/graphite/dawn/DawnGraphiteUtilsPriv.h @@ -33,13 +33,15 @@ bool DawnFormatIsStencil(wgpu::TextureFormat); wgpu::TextureFormat DawnDepthStencilFlagsToFormat(SkEnumBitMask); -wgpu::ShaderModule DawnCompileSPIRVShaderModule(const DawnSharedContext* sharedContext, - std::string_view spirv, - ShaderErrorHandler* errorHandler); - -wgpu::ShaderModule DawnCompileWGSLShaderModule(const DawnSharedContext* sharedContext, - const std::string& wgsl, - ShaderErrorHandler* errorHandler); +bool DawnCompileSPIRVShaderModule(const DawnSharedContext* sharedContext, + const std::string& spirv, + wgpu::ShaderModule* module, + ShaderErrorHandler*); + +bool DawnCompileWGSLShaderModule(const DawnSharedContext* sharedContext, + const std::string& wgsl, + wgpu::ShaderModule* module, + ShaderErrorHandler*); } // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnQueueManager.cpp b/src/gpu/graphite/dawn/DawnQueueManager.cpp index aaad9c9d455c..8b81739a3330 100644 --- a/src/gpu/graphite/dawn/DawnQueueManager.cpp +++ b/src/gpu/graphite/dawn/DawnQueueManager.cpp @@ -68,7 +68,7 @@ QueueManager::OutstandingSubmission DawnQueueManager::onSubmitToGpu() { return std::move(submission); } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void DawnQueueManager::startCapture() { // TODO: Dawn doesn't have capturing feature yet. } diff --git a/src/gpu/graphite/dawn/DawnQueueManager.h b/src/gpu/graphite/dawn/DawnQueueManager.h index 80aa2c3b6efc..35b17d0c4c15 100644 --- a/src/gpu/graphite/dawn/DawnQueueManager.h +++ b/src/gpu/graphite/dawn/DawnQueueManager.h @@ -30,7 +30,7 @@ class DawnQueueManager : public QueueManager { std::unique_ptr getNewCommandBuffer(ResourceProvider*) override; OutstandingSubmission onSubmitToGpu() override; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void startCapture() override; void stopCapture() override; #endif diff --git a/src/gpu/graphite/dawn/DawnResourceProvider.cpp b/src/gpu/graphite/dawn/DawnResourceProvider.cpp index 38c85622084d..7675b63a4855 100644 --- a/src/gpu/graphite/dawn/DawnResourceProvider.cpp +++ b/src/gpu/graphite/dawn/DawnResourceProvider.cpp @@ -10,6 +10,7 @@ #include "include/gpu/graphite/BackendTexture.h" #include "src/gpu/graphite/ComputePipeline.h" #include "src/gpu/graphite/dawn/DawnBuffer.h" +#include "src/gpu/graphite/dawn/DawnComputePipeline.h" #include "src/gpu/graphite/dawn/DawnGraphicsPipeline.h" #include "src/gpu/graphite/dawn/DawnSampler.h" #include "src/gpu/graphite/dawn/DawnSharedContext.h" @@ -83,8 +84,9 @@ wgpu::RenderPipeline create_blit_render_pipeline(const wgpu::Device& device, DawnResourceProvider::DawnResourceProvider(SharedContext* sharedContext, SingleOwner* singleOwner, - uint32_t recorderID) - : ResourceProvider(sharedContext, singleOwner, recorderID) {} + uint32_t recorderID, + size_t resourceBudget) + : ResourceProvider(sharedContext, singleOwner, recorderID, resourceBudget) {} DawnResourceProvider::~DawnResourceProvider() = default; @@ -197,9 +199,9 @@ sk_sp DawnResourceProvider::createGraphicsPipeline( renderPassDesc); } -sk_sp DawnResourceProvider::createComputePipeline(const ComputePipelineDesc&) { - SkASSERT(false); - return nullptr; +sk_sp DawnResourceProvider::createComputePipeline( + const ComputePipelineDesc& desc) { + return DawnComputePipeline::Make(this->dawnSharedContext(), desc); } sk_sp DawnResourceProvider::createTexture(SkISize dimensions, diff --git a/src/gpu/graphite/dawn/DawnResourceProvider.h b/src/gpu/graphite/dawn/DawnResourceProvider.h index a13cb330f4f1..b95a7a485e66 100644 --- a/src/gpu/graphite/dawn/DawnResourceProvider.h +++ b/src/gpu/graphite/dawn/DawnResourceProvider.h @@ -18,7 +18,10 @@ class DawnTexture; class DawnResourceProvider final : public ResourceProvider { public: - DawnResourceProvider(SharedContext* sharedContext, SingleOwner*, uint32_t recorderID); + DawnResourceProvider(SharedContext* sharedContext, + SingleOwner*, + uint32_t recorderID, + size_t resourceBudget); ~DawnResourceProvider() override; sk_sp createWrappedTexture(const BackendTexture&) override; diff --git a/src/gpu/graphite/dawn/DawnSharedContext.cpp b/src/gpu/graphite/dawn/DawnSharedContext.cpp index 2c9e63f61e7f..49439990421d 100644 --- a/src/gpu/graphite/dawn/DawnSharedContext.cpp +++ b/src/gpu/graphite/dawn/DawnSharedContext.cpp @@ -61,9 +61,12 @@ DawnSharedContext::~DawnSharedContext() { std::unique_ptr DawnSharedContext::makeResourceProvider( SingleOwner* singleOwner, - uint32_t recorderID) { - return std::unique_ptr(new DawnResourceProvider(this, singleOwner, - recorderID)); + uint32_t recorderID, + size_t resourceBudget) { + return std::unique_ptr(new DawnResourceProvider(this, + singleOwner, + recorderID, + resourceBudget)); } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnSharedContext.h b/src/gpu/graphite/dawn/DawnSharedContext.h index c834490ce34b..b9b8c40b8866 100644 --- a/src/gpu/graphite/dawn/DawnSharedContext.h +++ b/src/gpu/graphite/dawn/DawnSharedContext.h @@ -24,7 +24,8 @@ class DawnSharedContext final : public SharedContext { ~DawnSharedContext() override; std::unique_ptr makeResourceProvider(SingleOwner*, - uint32_t recorderID) override; + uint32_t recorderID, + size_t resourceBudget) override; const DawnCaps* dawnCaps() const { return static_cast(this->caps()); } const wgpu::Device& device() const { return fDevice; } diff --git a/src/gpu/graphite/dawn/DawnTexture.cpp b/src/gpu/graphite/dawn/DawnTexture.cpp index b5f180e31977..82da43c5fd87 100644 --- a/src/gpu/graphite/dawn/DawnTexture.cpp +++ b/src/gpu/graphite/dawn/DawnTexture.cpp @@ -107,12 +107,29 @@ DawnTexture::DawnTexture(const DawnSharedContext* sharedContext, SkISize dimensions, const TextureInfo& info, wgpu::Texture texture, - wgpu::TextureView textureView, + wgpu::TextureView sampleTextureView, + wgpu::TextureView renderTextureView, Ownership ownership, skgpu::Budgeted budgeted) : Texture(sharedContext, dimensions, info, /*mutableState=*/nullptr, ownership, budgeted) , fTexture(std::move(texture)) - , fTextureView(std::move(textureView)) {} + , fSampleTextureView(std::move(sampleTextureView)) + , fRenderTextureView(std::move(renderTextureView)) {} + +std::pair create_texture_views(const wgpu::Texture& texture, + const TextureInfo& info) { + wgpu::TextureView sampleTextureView = texture.CreateView(); + wgpu::TextureView renderTextureView; + if (info.mipmapped() == Mipmapped::kYes) { + wgpu::TextureViewDescriptor renderViewDesc = {}; + renderViewDesc.baseMipLevel = 0; + renderViewDesc.mipLevelCount = 1; + renderTextureView = texture.CreateView(&renderViewDesc); + } else { + renderTextureView = sampleTextureView; + } + return {sampleTextureView, renderTextureView}; +} sk_sp DawnTexture::Make(const DawnSharedContext* sharedContext, SkISize dimensions, @@ -122,12 +139,13 @@ sk_sp DawnTexture::Make(const DawnSharedContext* sharedContext, if (!texture) { return {}; } - auto textureView = texture.CreateView(); + auto [sampleTextureView, renderTextureView] = create_texture_views(texture, info); return sk_sp(new DawnTexture(sharedContext, dimensions, info, std::move(texture), - std::move(textureView), + std::move(sampleTextureView), + std::move(renderTextureView), Ownership::kOwned, budgeted)); } @@ -140,12 +158,13 @@ sk_sp DawnTexture::MakeWrapped(const DawnSharedContext* sharedContext, SKGPU_LOG_E("No valid texture passed into MakeWrapped\n"); return {}; } - auto textureView = texture.CreateView(); + auto [sampleTextureView, renderTextureView] = create_texture_views(texture, info); return sk_sp(new DawnTexture(sharedContext, dimensions, info, std::move(texture), - std::move(textureView), + std::move(sampleTextureView), + std::move(renderTextureView), Ownership::kWrapped, skgpu::Budgeted::kNo)); } @@ -162,14 +181,16 @@ sk_sp DawnTexture::MakeWrapped(const DawnSharedContext* sharedContext, dimensions, info, nullptr, - std::move(textureView), + /*sampleTextureView=*/textureView, + /*renderTextureView=*/textureView, Ownership::kWrapped, skgpu::Budgeted::kNo)); } void DawnTexture::freeGpuData() { fTexture = nullptr; - fTextureView = nullptr; + fSampleTextureView = nullptr; + fRenderTextureView = nullptr; } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/dawn/DawnTexture.h b/src/gpu/graphite/dawn/DawnTexture.h index 193ef3f4e57e..e7e765aa2d1c 100644 --- a/src/gpu/graphite/dawn/DawnTexture.h +++ b/src/gpu/graphite/dawn/DawnTexture.h @@ -40,21 +40,24 @@ class DawnTexture : public Texture { ~DawnTexture() override {} const wgpu::Texture& dawnTexture() const { return fTexture; } - const wgpu::TextureView& dawnTextureView() const { return fTextureView; } + const wgpu::TextureView& sampleTextureView() const { return fSampleTextureView; } + const wgpu::TextureView& renderTextureView() const { return fRenderTextureView; } private: - DawnTexture(const DawnSharedContext* sharedContext, + DawnTexture(const DawnSharedContext*, SkISize dimensions, - const TextureInfo& info, + const TextureInfo&, wgpu::Texture, - wgpu::TextureView, + wgpu::TextureView sampleTextureView, + wgpu::TextureView renderTextureView, Ownership, skgpu::Budgeted); void freeGpuData() override; wgpu::Texture fTexture; - wgpu::TextureView fTextureView; + wgpu::TextureView fSampleTextureView; + wgpu::TextureView fRenderTextureView; }; } // namepsace skgpu::graphite diff --git a/src/gpu/graphite/mtl/MtlBlitCommandEncoder.h b/src/gpu/graphite/mtl/MtlBlitCommandEncoder.h index cb4b6a141e54..45caeecfa0a9 100644 --- a/src/gpu/graphite/mtl/MtlBlitCommandEncoder.h +++ b/src/gpu/graphite/mtl/MtlBlitCommandEncoder.h @@ -85,7 +85,8 @@ class MtlBlitCommandEncoder : public Resource { void copyTextureToTexture(id srcTexture, SkIRect srcRect, id dstTexture, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int mipLevel) { [(*fCommandEncoder) copyFromTexture: srcTexture sourceSlice: 0 sourceLevel: 0 @@ -93,7 +94,7 @@ class MtlBlitCommandEncoder : public Resource { sourceSize: MTLSizeMake(srcRect.width(), srcRect.height(), 1) toTexture: dstTexture destinationSlice: 0 - destinationLevel: 0 + destinationLevel: mipLevel destinationOrigin: MTLOriginMake(dstPoint.fX, dstPoint.fY, 0)]; } diff --git a/src/gpu/graphite/mtl/MtlCaps.h b/src/gpu/graphite/mtl/MtlCaps.h index 58b309aed7ee..30d8c195e568 100644 --- a/src/gpu/graphite/mtl/MtlCaps.h +++ b/src/gpu/graphite/mtl/MtlCaps.h @@ -27,6 +27,9 @@ class MtlCaps final : public Caps { Protected, Renderable) const override; + TextureInfo getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const override; + TextureInfo getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const override; diff --git a/src/gpu/graphite/mtl/MtlCaps.mm b/src/gpu/graphite/mtl/MtlCaps.mm index b72aed7eb535..fd6e321ae23a 100644 --- a/src/gpu/graphite/mtl/MtlCaps.mm +++ b/src/gpu/graphite/mtl/MtlCaps.mm @@ -762,6 +762,22 @@ return info; } +TextureInfo MtlCaps::getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const { + MtlTextureInfo info; + if (!textureInfo.getMtlTextureInfo(&info)) { + return {}; + } + + info.fSampleCount = 1; + info.fMipmapped = mipmapped; + info.fUsage = MTLTextureUsageShaderRead; + info.fStorageMode = MTLStorageModePrivate; + info.fFramebufferOnly = false; + + return info; +} + MTLStorageMode MtlCaps::getDefaultMSAAStorageMode(Discardable discardable) const { // Try to use memoryless if it's available (only on new Apple silicon) if (discardable == Discardable::kYes && this->isApple()) { diff --git a/src/gpu/graphite/mtl/MtlCommandBuffer.h b/src/gpu/graphite/mtl/MtlCommandBuffer.h index 17b6197faa52..ccc97f609a78 100644 --- a/src/gpu/graphite/mtl/MtlCommandBuffer.h +++ b/src/gpu/graphite/mtl/MtlCommandBuffer.h @@ -146,7 +146,8 @@ class MtlCommandBuffer final : public CommandBuffer { bool onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) override; + SkIPoint dstPoint, + int mipLevel) override; bool onSynchronizeBufferToCpu(const Buffer*, bool* outDidResultInWork) override; bool onClearBuffer(const Buffer*, size_t offset, size_t size) override; diff --git a/src/gpu/graphite/mtl/MtlCommandBuffer.mm b/src/gpu/graphite/mtl/MtlCommandBuffer.mm index 30c5b6b71ff6..1f2d4fe929b8 100644 --- a/src/gpu/graphite/mtl/MtlCommandBuffer.mm +++ b/src/gpu/graphite/mtl/MtlCommandBuffer.mm @@ -115,7 +115,7 @@ SkASSERT(!fActiveRenderCommandEncoder); SkASSERT(!fActiveComputeCommandEncoder); this->endBlitCommandEncoder(); - if (@available(macOS 10.14, iOS 12.0, *)) { + if (@available(macOS 10.14, iOS 12.0, tvOS 12.0, *)) { for (size_t i = 0; i < numWaitSemaphores; ++i) { auto semaphore = waitSemaphores[i]; if (semaphore.isValid() && semaphore.backend() == BackendApi::kMetal) { @@ -139,7 +139,7 @@ SkASSERT(!fActiveComputeCommandEncoder); this->endBlitCommandEncoder(); - if (@available(macOS 10.14, iOS 12.0, *)) { + if (@available(macOS 10.14, iOS 12.0, tvOS 12.0, *)) { for (size_t i = 0; i < numSignalSemaphores; ++i) { auto semaphore = signalSemaphores[i]; if (semaphore.isValid() && semaphore.backend() == BackendApi::kMetal) { @@ -178,9 +178,8 @@ for (const auto& dispatch : group->dispatches()) { this->bindComputePipeline(group->getPipeline(dispatch.fPipelineIndex)); for (const ResourceBinding& binding : dispatch.fBindings) { - if (const BindBufferInfo* buffer = - std::get_if(&binding.fResource)) { - this->bindBuffer(buffer->fBuffer, buffer->fOffset, binding.fIndex); + if (const BufferView* buffer = std::get_if(&binding.fResource)) { + this->bindBuffer(buffer->fInfo.fBuffer, buffer->fInfo.fOffset, binding.fIndex); } else if (const TextureIndex* texIdx = std::get_if(&binding.fResource)) { SkASSERT(texIdx); @@ -870,7 +869,8 @@ static bool check_max_blit_width(int widthInPixels) { bool MtlCommandBuffer::onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int mipLevel) { SkASSERT(!fActiveRenderCommandEncoder); SkASSERT(!fActiveComputeCommandEncoder); @@ -886,7 +886,7 @@ static bool check_max_blit_width(int widthInPixels) { blitCmdEncoder->pushDebugGroup(@"copyTextureToTexture"); #endif - blitCmdEncoder->copyTextureToTexture(srcMtlTexture, srcRect, dstMtlTexture, dstPoint); + blitCmdEncoder->copyTextureToTexture(srcMtlTexture, srcRect, dstMtlTexture, dstPoint, mipLevel); #ifdef SK_ENABLE_MTL_DEBUG_INFO blitCmdEncoder->popDebugGroup(); diff --git a/src/gpu/graphite/mtl/MtlGraphicsPipeline.h b/src/gpu/graphite/mtl/MtlGraphicsPipeline.h index 7a65b0c21131..c13a88e1cc6b 100644 --- a/src/gpu/graphite/mtl/MtlGraphicsPipeline.h +++ b/src/gpu/graphite/mtl/MtlGraphicsPipeline.h @@ -48,7 +48,7 @@ class MtlGraphicsPipeline final : public GraphicsPipeline { uint32_t stencilRefValue, const BlendInfo& blendInfo, const RenderPassDesc&, - Shaders* pipelineShaders); + PipelineInfo* pipelineInfo); ~MtlGraphicsPipeline() override {} @@ -58,7 +58,7 @@ class MtlGraphicsPipeline final : public GraphicsPipeline { private: MtlGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, sk_cfp> pso, sk_cfp> dss, uint32_t refValue); diff --git a/src/gpu/graphite/mtl/MtlGraphicsPipeline.mm b/src/gpu/graphite/mtl/MtlGraphicsPipeline.mm index cea1f0abfb5e..2e7b52b69b26 100644 --- a/src/gpu/graphite/mtl/MtlGraphicsPipeline.mm +++ b/src/gpu/graphite/mtl/MtlGraphicsPipeline.mm @@ -262,7 +262,7 @@ static MTLBlendOperation blend_equation_to_mtl_blend_op(skgpu::BlendEquation equ uint32_t stencilRefValue, const BlendInfo& blendInfo, const RenderPassDesc& renderPassDesc, - Shaders* pipelineShaders) { + PipelineInfo* pipelineInfo) { id vsLibrary = std::get<0>(vertexMain); id fsLibrary = std::get<0>(fragmentMain); if (!vsLibrary || !fsLibrary) { @@ -314,18 +314,18 @@ static MTLBlendOperation blend_equation_to_mtl_blend_op(skgpu::BlendEquation equ } return sk_sp(new MtlGraphicsPipeline(sharedContext, - pipelineShaders, + pipelineInfo, std::move(pso), std::move(dss), stencilRefValue)); } MtlGraphicsPipeline::MtlGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, sk_cfp> pso, sk_cfp> dss, uint32_t refValue) - : GraphicsPipeline(sharedContext, pipelineShaders) + : GraphicsPipeline(sharedContext, pipelineInfo) , fPipelineState(std::move(pso)) , fDepthStencilState(dss) , fStencilReferenceValue(refValue) {} diff --git a/src/gpu/graphite/mtl/MtlQueueManager.h b/src/gpu/graphite/mtl/MtlQueueManager.h index 0b90c5e96a17..55150e8a8bd8 100644 --- a/src/gpu/graphite/mtl/MtlQueueManager.h +++ b/src/gpu/graphite/mtl/MtlQueueManager.h @@ -28,7 +28,7 @@ class MtlQueueManager : public QueueManager { std::unique_ptr getNewCommandBuffer(ResourceProvider*) override; OutstandingSubmission onSubmitToGpu() override; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void startCapture() override; void stopCapture() override; #endif diff --git a/src/gpu/graphite/mtl/MtlQueueManager.mm b/src/gpu/graphite/mtl/MtlQueueManager.mm index a2463f8d4cb1..cd44e6583393 100644 --- a/src/gpu/graphite/mtl/MtlQueueManager.mm +++ b/src/gpu/graphite/mtl/MtlQueueManager.mm @@ -61,7 +61,7 @@ void waitUntilFinished() override { return submission; } -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) void MtlQueueManager::startCapture() { if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { // TODO: add newer Metal interface as well diff --git a/src/gpu/graphite/mtl/MtlResourceProvider.h b/src/gpu/graphite/mtl/MtlResourceProvider.h index 75c7db34adab..7adfcfe1896d 100644 --- a/src/gpu/graphite/mtl/MtlResourceProvider.h +++ b/src/gpu/graphite/mtl/MtlResourceProvider.h @@ -22,7 +22,10 @@ class MtlSharedContext; class MtlResourceProvider final : public ResourceProvider { public: - MtlResourceProvider(SharedContext* sharedContext, SingleOwner*, uint32_t recorderID); + MtlResourceProvider(SharedContext* sharedContext, + SingleOwner*, + uint32_t recorderID, + size_t resourceBudget); ~MtlResourceProvider() override {} sk_sp createWrappedTexture(const BackendTexture&) override; diff --git a/src/gpu/graphite/mtl/MtlResourceProvider.mm b/src/gpu/graphite/mtl/MtlResourceProvider.mm index 891bc277c73d..0f52c634491c 100644 --- a/src/gpu/graphite/mtl/MtlResourceProvider.mm +++ b/src/gpu/graphite/mtl/MtlResourceProvider.mm @@ -13,6 +13,7 @@ #include "src/core/SkSLTypeShared.h" #include "src/gpu/Blend.h" +#include "src/gpu/PipelineUtils.h" #include "src/gpu/Swizzle.h" #include "src/gpu/graphite/ComputePipelineDesc.h" #include "src/gpu/graphite/ContextUtils.h" @@ -39,8 +40,9 @@ MtlResourceProvider::MtlResourceProvider(SharedContext* sharedContext, SingleOwner* singleOwner, - uint32_t recorderID) - : ResourceProvider(sharedContext, singleOwner, recorderID) {} + uint32_t recorderID, + size_t resourceBudget) + : ResourceProvider(sharedContext, singleOwner, recorderID, resourceBudget) {} const MtlSharedContext* MtlResourceProvider::mtlSharedContext() { return static_cast(fSharedContext); @@ -161,16 +163,16 @@ fragment float4 fragmentMain(VertexOutput in [[stage_in]], sk_cfp> dss = this->findOrCreateCompatibleDepthStencilState(step->depthStencilSettings()); -#if GRAPHITE_TEST_UTILS - GraphicsPipeline::Shaders pipelineShaders = { - std::move(vsSkSL), - std::move(fsSkSL), - std::move(vsMSL), - std::move(fsMSL), - }; - GraphicsPipeline::Shaders* pipelineShadersPtr = &pipelineShaders; +#if defined(GRAPHITE_TEST_UTILS) + GraphicsPipeline::PipelineInfo pipelineInfo = {pipelineDesc.renderStepID(), + pipelineDesc.paintParamsID(), + std::move(vsSkSL), + std::move(fsSkSL), + std::move(vsMSL), + std::move(fsMSL) }; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = &pipelineInfo; #else - GraphicsPipeline::Shaders* pipelineShadersPtr = nullptr; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = nullptr; #endif return MtlGraphicsPipeline::Make(this->mtlSharedContext(), step->name(), @@ -182,7 +184,7 @@ fragment float4 fragmentMain(VertexOutput in [[stage_in]], step->depthStencilSettings().fStencilReferenceValue, blendInfo, renderPassDesc, - pipelineShadersPtr); + pipelineInfoPtr); } sk_sp MtlResourceProvider::createComputePipeline( diff --git a/src/gpu/graphite/mtl/MtlSharedContext.h b/src/gpu/graphite/mtl/MtlSharedContext.h index cb3694180210..c5597baf323b 100644 --- a/src/gpu/graphite/mtl/MtlSharedContext.h +++ b/src/gpu/graphite/mtl/MtlSharedContext.h @@ -36,7 +36,8 @@ class MtlSharedContext final : public SharedContext { const MtlCaps& mtlCaps() const { return static_cast(*this->caps()); } std::unique_ptr makeResourceProvider(SingleOwner*, - uint32_t recorderID) override; + uint32_t recorderID, + size_t resourceBudget) override; private: diff --git a/src/gpu/graphite/mtl/MtlSharedContext.mm b/src/gpu/graphite/mtl/MtlSharedContext.mm index 7e675568e42c..af6c297b422d 100644 --- a/src/gpu/graphite/mtl/MtlSharedContext.mm +++ b/src/gpu/graphite/mtl/MtlSharedContext.mm @@ -63,9 +63,12 @@ } std::unique_ptr MtlSharedContext::makeResourceProvider(SingleOwner* singleOwner, - uint32_t recorderID) { - return std::unique_ptr(new MtlResourceProvider(this, singleOwner, - recorderID)); + uint32_t recorderID, + size_t resourceBudget) { + return std::unique_ptr(new MtlResourceProvider(this, + singleOwner, + recorderID, + resourceBudget)); } } // namespace skgpu::graphite diff --git a/src/gpu/graphite/render/AtlasShapeRenderStep.cpp b/src/gpu/graphite/render/AtlasShapeRenderStep.cpp index 52aae8762b05..0cd353c1f032 100644 --- a/src/gpu/graphite/render/AtlasShapeRenderStep.cpp +++ b/src/gpu/graphite/render/AtlasShapeRenderStep.cpp @@ -55,7 +55,7 @@ std::string AtlasShapeRenderStep::vertexSkSL() const { std::string AtlasShapeRenderStep::texturesAndSamplersSkSL( const ResourceBindingRequirements& bindingReqs, int* nextBindingIndex) const { - return EmitSamplerLayout(bindingReqs, nextBindingIndex) + " uniform sampler2D pathAtlas;"; + return EmitSamplerLayout(bindingReqs, nextBindingIndex) + " sampler2D pathAtlas;"; } const char* AtlasShapeRenderStep::fragmentCoverageSkSL() const { diff --git a/src/gpu/graphite/render/BitmapTextRenderStep.cpp b/src/gpu/graphite/render/BitmapTextRenderStep.cpp index fc5dc1928a58..4ff900a1c2a2 100644 --- a/src/gpu/graphite/render/BitmapTextRenderStep.cpp +++ b/src/gpu/graphite/render/BitmapTextRenderStep.cpp @@ -32,10 +32,12 @@ constexpr int kNumTextAtlasTextures = 4; } // namespace -BitmapTextRenderStep::BitmapTextRenderStep() +BitmapTextRenderStep::BitmapTextRenderStep(bool isLCD) : RenderStep("BitmapTextRenderStep", "", - Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage, + isLCD ? Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage | + Flags::kLCDCoverage + : Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage, /*uniforms=*/{{"subRunDeviceMatrix", SkSLType::kFloat4x4}, {"deviceToLocal" , SkSLType::kFloat4x4}, {"atlasSizeInv" , SkSLType::kFloat2}}, @@ -58,27 +60,23 @@ BitmapTextRenderStep::BitmapTextRenderStep() BitmapTextRenderStep::~BitmapTextRenderStep() {} std::string BitmapTextRenderStep::vertexSkSL() const { - return - "float2 baseCoords = float2(float(sk_VertexID >> 1), float(sk_VertexID & 1));" - "baseCoords.xy *= float2(size);" - - // Sub runs have a decomposed transform and are sometimes already transformed into device - // space, in which `subRunCoords` represents the bounds projected to device space without - // the local-to-device translation and `subRunDeviceMatrix` contains the translation. - "float2 subRunCoords = strikeToSourceScale * baseCoords + float2(xyPos);" - "float4 position = subRunDeviceMatrix * float4(subRunCoords, 0, 1);" - - // Calculate the local coords used for shading. - // TODO(b/246963258): This is incorrect if the transform has perspective, which would - // require a division + a valid z coordinate (which is currently set to 0). - "stepLocalCoords = (deviceToLocal * position).xy;" - - "float2 unormTexCoords = baseCoords + float2(uvPos);" - "textureCoords = unormTexCoords * atlasSizeInv;" - "texIndex = half(indexAndFlags.x);" - "maskFormat = half(indexAndFlags.y);" - - "float4 devPosition = float4(position.xy, depth, position.w);"; + // Returns the body of a vertex function, which must define a float4 devPosition variable and + // must write to an already-defined float2 stepLocalCoords variable. + return "texIndex = half(indexAndFlags.x);" + "maskFormat = half(indexAndFlags.y);" + "float2 unormTexCoords;" + "float4 devPosition = text_vertex_fn(float2(sk_VertexID >> 1, sk_VertexID & 1), " + "subRunDeviceMatrix, " + "deviceToLocal, " + "atlasSizeInv, " + "float2(size), " + "float2(uvPos), " + "xyPos, " + "strikeToSourceScale, " + "depth, " + "textureCoords, " + "unormTexCoords, " + "stepLocalCoords);"; } std::string BitmapTextRenderStep::texturesAndSamplersSkSL( @@ -87,36 +85,23 @@ std::string BitmapTextRenderStep::texturesAndSamplersSkSL( for (unsigned int i = 0; i < kNumTextAtlasTextures; ++i) { result += EmitSamplerLayout(bindingReqs, nextBindingIndex); - SkSL::String::appendf(&result, " uniform sampler2D text_atlas_%d;\n", i); + SkSL::String::appendf(&result, " sampler2D text_atlas_%d;\n", i); } return result; } const char* BitmapTextRenderStep::fragmentCoverageSkSL() const { - return - "half4 texColor;" - "if (texIndex == 0) {" - "texColor = sample(text_atlas_0, textureCoords);" - "} else if (texIndex == 1) {" - "texColor = sample(text_atlas_1, textureCoords);" - "} else if (texIndex == 2) {" - "texColor = sample(text_atlas_2, textureCoords);" - "} else if (texIndex == 3) {" - "texColor = sample(text_atlas_3, textureCoords);" - "} else {" - "texColor = sample(text_atlas_0, textureCoords);" - "}" - // A8 - "if (maskFormat == 0) {" - "outputCoverage = texColor.rrrr;" - // LCD - "} else if (maskFormat == 1) {" - "outputCoverage = half4(texColor.rgb, max(max(texColor.r, texColor.g), texColor.b));" - // RGBA - "} else {" - "outputCoverage = texColor;" - "}"; + // The returned SkSL must write its coverage into a 'half4 outputCoverage' variable (defined in + // the calling code) with the actual coverage splatted out into all four channels. + static_assert(kNumTextAtlasTextures == 4); + return "outputCoverage = bitmap_text_coverage_fn(sample_indexed_atlas(textureCoords, " + "int(texIndex), " + "text_atlas_0, " + "text_atlas_1, " + "text_atlas_2, " + "text_atlas_3), " + "int(maskFormat));"; } void BitmapTextRenderStep::writeVertices(DrawWriter* dw, diff --git a/src/gpu/graphite/render/BitmapTextRenderStep.h b/src/gpu/graphite/render/BitmapTextRenderStep.h index 46681c1b735a..3741080b15c6 100644 --- a/src/gpu/graphite/render/BitmapTextRenderStep.h +++ b/src/gpu/graphite/render/BitmapTextRenderStep.h @@ -14,7 +14,7 @@ namespace skgpu::graphite { class BitmapTextRenderStep final : public RenderStep { public: - BitmapTextRenderStep(); + BitmapTextRenderStep(bool isLCD); ~BitmapTextRenderStep() override; diff --git a/src/gpu/graphite/render/SDFTextRenderStep.cpp b/src/gpu/graphite/render/SDFTextRenderStep.cpp index ba87852fb3b5..7eec47ad31ba 100644 --- a/src/gpu/graphite/render/SDFTextRenderStep.cpp +++ b/src/gpu/graphite/render/SDFTextRenderStep.cpp @@ -30,10 +30,12 @@ constexpr int kNumSDFAtlasTextures = 4; } // namespace -SDFTextRenderStep::SDFTextRenderStep(bool isA8) +SDFTextRenderStep::SDFTextRenderStep(bool isLCD) : RenderStep("SDFTextRenderStep", - isA8 ? "A8" : "565", - Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage, + isLCD ? "565" : "A8", + isLCD ? Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage | + Flags::kLCDCoverage + : Flags::kPerformsShading | Flags::kHasTextures | Flags::kEmitsCoverage, /*uniforms=*/{{"subRunDeviceMatrix", SkSLType::kFloat4x4}, {"deviceToLocal", SkSLType::kFloat4x4}, {"atlasSizeInv", SkSLType::kFloat2}, @@ -59,26 +61,21 @@ SDFTextRenderStep::SDFTextRenderStep(bool isA8) SDFTextRenderStep::~SDFTextRenderStep() {} std::string SDFTextRenderStep::vertexSkSL() const { - return - "float2 baseCoords = float2(float(sk_VertexID >> 1), float(sk_VertexID & 1));" - "baseCoords.xy *= float2(size);" - - // Sub runs have a decomposed transform and are sometimes already transformed into device - // space, in which `subRunCoords` represents the bounds projected to device space without - // the local-to-device translation and `subRunDeviceMatrix` contains the translation. - "float2 subRunCoords = strikeToSourceScale * baseCoords + float2(xyPos);" - "float4 position = subRunDeviceMatrix * float4(subRunCoords, 0, 1);" - - // Calculate the local coords used for shading. - // TODO(b/246963258): This is incorrect if the transform has perspective, which would - // require a division + a valid z coordinate (which is currently set to 0). - "stepLocalCoords = (deviceToLocal * position).xy;" - - "unormTexCoords = baseCoords + float2(uvPos);" - "textureCoords = unormTexCoords * atlasSizeInv;" - "texIndex = float(indexAndFlags.x);" - - "float4 devPosition = float4(position.xy, depth, position.w);"; + // Returns the body of a vertex function, which must define a float4 devPosition variable and + // must write to an already-defined float2 stepLocalCoords variable. + return "texIndex = half(indexAndFlags.x);" + "float4 devPosition = text_vertex_fn(float2(sk_VertexID >> 1, sk_VertexID & 1), " + "subRunDeviceMatrix, " + "deviceToLocal, " + "atlasSizeInv, " + "float2(size), " + "float2(uvPos), " + "xyPos, " + "strikeToSourceScale, " + "depth, " + "textureCoords, " + "unormTexCoords, " + "stepLocalCoords);"; } std::string SDFTextRenderStep::texturesAndSamplersSkSL( @@ -87,67 +84,30 @@ std::string SDFTextRenderStep::texturesAndSamplersSkSL( for (unsigned int i = 0; i < kNumSDFAtlasTextures; ++i) { result += EmitSamplerLayout(bindingReqs, nextBindingIndex); - SkSL::String::appendf(&result, " uniform sampler2D sdf_atlas_%d;\n", i); + SkSL::String::appendf(&result, " sampler2D sdf_atlas_%d;\n", i); } return result; } const char* SDFTextRenderStep::fragmentCoverageSkSL() const { + // The returned SkSL must write its coverage into a 'half4 outputCoverage' variable (defined in + // the calling code) with the actual coverage splatted out into all four channels. + // TODO: To minimize the number of shaders generated this is the full affine shader. // For best performance it may be worth creating the uniform scale shader as well, // as that's the most common case. // TODO: Need to add 565 support. // TODO: Need aliased and possibly sRGB support. - return - "half texColor;" - "if (texIndex == 0) {" - "texColor = sample(sdf_atlas_0, textureCoords).r;" - "} else if (texIndex == 1) {" - "texColor = sample(sdf_atlas_1, textureCoords).r;" - "} else if (texIndex == 2) {" - "texColor = sample(sdf_atlas_2, textureCoords).r;" - "} else if (texIndex == 3) {" - "texColor = sample(sdf_atlas_3, textureCoords).r;" - "} else {" - "texColor = sample(sdf_atlas_0, textureCoords).r;" - "}" - // The distance field is constructed as uchar8_t values, so that the zero value is at 128, - // and the supported range of distances is [-4 * 127/128, 4]. - // Hence to convert to floats our multiplier (width of the range) is 4 * 255/128 = 7.96875 - // and zero threshold is 128/255 = 0.50196078431. - "half dist = 7.96875*(texColor - 0.50196078431);" - - // We may further adjust the distance for gamma correction. - "dist -= half(distAdjust);" - - // After the distance is unpacked, we need to correct it by a factor dependent on the - // current transformation. For general transforms, to determine the amount of correction - // we multiply a unit vector pointing along the SDF gradient direction by the Jacobian of - // unormTexCoords (which is the inverse transform for this fragment) and take the length of - // the result. - "half2 dist_grad = half2(float2(dFdx(dist), dFdy(dist)));" - "half dg_len2 = dot(dist_grad, dist_grad);" - - // The length of the gradient may be near 0, so we need to check for that. This also - // compensates for the Adreno, which likes to drop tiles on division by 0 - "if (dg_len2 < 0.0001) {" - "dist_grad = half2(0.7071, 0.7071);" - "} else {" - "dist_grad = dist_grad*half(inversesqrt(dg_len2));" - "}" - - // Computing the Jacobian and multiplying by the gradient. - "half2 Jdx = half2(dFdx(unormTexCoords));" - "half2 Jdy = half2(dFdy(unormTexCoords));" - "half2 grad = half2(dist_grad.x*Jdx.x + dist_grad.y*Jdy.x," - "dist_grad.x*Jdx.y + dist_grad.y*Jdy.y);" - - // This gives us a smooth step across approximately one fragment. - "half afwidth = 0.65*length(grad);" - // TODO: handle aliased and sRGB rendering - "half val = smoothstep(-afwidth, afwidth, dist);" - "outputCoverage = half4(val);"; + static_assert(kNumSDFAtlasTextures == 4); + return "outputCoverage = sdf_text_coverage_fn(sample_indexed_atlas(textureCoords, " + "int(texIndex), " + "sdf_atlas_0, " + "sdf_atlas_1, " + "sdf_atlas_2, " + "sdf_atlas_3).r, " + "half(distAdjust), " + "unormTexCoords);"; } void SDFTextRenderStep::writeVertices(DrawWriter* dw, diff --git a/src/gpu/graphite/render/SDFTextRenderStep.h b/src/gpu/graphite/render/SDFTextRenderStep.h index 3f098bf96d7d..0cf7563966af 100644 --- a/src/gpu/graphite/render/SDFTextRenderStep.h +++ b/src/gpu/graphite/render/SDFTextRenderStep.h @@ -16,7 +16,7 @@ namespace skgpu::graphite { class SDFTextRenderStep final : public RenderStep { public: - SDFTextRenderStep(bool isA8); + SDFTextRenderStep(bool isLCD); ~SDFTextRenderStep() override; diff --git a/src/gpu/graphite/vk/VulkanCaps.cpp b/src/gpu/graphite/vk/VulkanCaps.cpp index e66b22470033..0b5456936127 100644 --- a/src/gpu/graphite/vk/VulkanCaps.cpp +++ b/src/gpu/graphite/vk/VulkanCaps.cpp @@ -197,6 +197,24 @@ TextureInfo VulkanCaps::getDefaultSampledTextureInfo(SkColorType ct, return info; } +TextureInfo VulkanCaps::getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const { + VulkanTextureInfo info; + if (!textureInfo.getVulkanTextureInfo(&info)) { + return {}; + } + + info.fSampleCount = 1; + info.fMipmapped = mipmapped; + info.fFlags = 0; + info.fImageTiling = VK_IMAGE_TILING_OPTIMAL; + info.fImageUsageFlags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + info.fSharingMode = VK_SHARING_MODE_EXCLUSIVE; + + return info; +} + TextureInfo VulkanCaps::getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const { if (fDefaultMSAASamples <= 1) { diff --git a/src/gpu/graphite/vk/VulkanCaps.h b/src/gpu/graphite/vk/VulkanCaps.h index 179a1b7981fa..041d854688c3 100644 --- a/src/gpu/graphite/vk/VulkanCaps.h +++ b/src/gpu/graphite/vk/VulkanCaps.h @@ -30,6 +30,9 @@ class VulkanCaps final : public Caps { Protected, Renderable) const override; + TextureInfo getTextureInfoForSampledCopy(const TextureInfo& textureInfo, + Mipmapped mipmapped) const override; + TextureInfo getDefaultMSAATextureInfo(const TextureInfo& singleSampledInfo, Discardable discardable) const override; diff --git a/src/gpu/graphite/vk/VulkanCommandBuffer.cpp b/src/gpu/graphite/vk/VulkanCommandBuffer.cpp index 3342ab4478ef..03d4a3402658 100644 --- a/src/gpu/graphite/vk/VulkanCommandBuffer.cpp +++ b/src/gpu/graphite/vk/VulkanCommandBuffer.cpp @@ -1193,7 +1193,8 @@ bool VulkanCommandBuffer::onCopyBufferToTexture(const Buffer* buffer, bool VulkanCommandBuffer::onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) { + SkIPoint dstPoint, + int mipLevel) { const VulkanTexture* srcTexture = static_cast(src); const VulkanTexture* dstTexture = static_cast(dst); @@ -1201,7 +1202,7 @@ bool VulkanCommandBuffer::onCopyTextureToTexture(const Texture* src, memset(©Region, 0, sizeof(VkImageCopy)); copyRegion.srcSubresource = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1 }; copyRegion.srcOffset = { srcRect.fLeft, srcRect.fTop, 0 }; - copyRegion.dstSubresource = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1 }; + copyRegion.dstSubresource = { VK_IMAGE_ASPECT_COLOR_BIT, (uint32_t)mipLevel, 0, 1 }; copyRegion.dstOffset = { dstPoint.fX, dstPoint.fY, 0 }; copyRegion.extent = { (uint32_t)srcRect.width(), (uint32_t)srcRect.height(), 1 }; diff --git a/src/gpu/graphite/vk/VulkanCommandBuffer.h b/src/gpu/graphite/vk/VulkanCommandBuffer.h index 224d35e8834f..db65fa22859a 100644 --- a/src/gpu/graphite/vk/VulkanCommandBuffer.h +++ b/src/gpu/graphite/vk/VulkanCommandBuffer.h @@ -139,7 +139,8 @@ class VulkanCommandBuffer final : public CommandBuffer { bool onCopyTextureToTexture(const Texture* src, SkIRect srcRect, const Texture* dst, - SkIPoint dstPoint) override; + SkIPoint dstPoint, + int mipLevel) override; bool onSynchronizeBufferToCpu(const Buffer*, bool* outDidResultInWork) override; bool onClearBuffer(const Buffer*, size_t offset, size_t size) override; diff --git a/src/gpu/graphite/vk/VulkanGraphicsPipeline.cpp b/src/gpu/graphite/vk/VulkanGraphicsPipeline.cpp index bbd5f9e0c909..a7394d4d7756 100644 --- a/src/gpu/graphite/vk/VulkanGraphicsPipeline.cpp +++ b/src/gpu/graphite/vk/VulkanGraphicsPipeline.cpp @@ -721,21 +721,21 @@ sk_sp VulkanGraphicsPipeline::Make( // After creating the pipeline object, we can clean up the VkShaderModule(s). destroy_shader_modules(sharedContext, vsModule, fsModule); -#if GRAPHITE_TEST_UTILS - GraphicsPipeline::Shaders pipelineShaders = { - std::move(vsSkSL), - std::move(fsSkSL), - "SPIR-V disassembly not available", - "SPIR-V disassembly not available", - }; - GraphicsPipeline::Shaders* pipelineShadersPtr = &pipelineShaders; +#if defined(GRAPHITE_TEST_UTILS) + GraphicsPipeline::PipelineInfo pipelineInfo = {pipelineDesc.renderStepID(), + pipelineDesc.paintParamsID(), + std::move(vsSkSL), + std::move(fsSkSL), + "SPIR-V disassembly not available", + "SPIR-V disassembly not available"}; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = &pipelineInfo; #else - GraphicsPipeline::Shaders* pipelineShadersPtr = nullptr; + GraphicsPipeline::PipelineInfo* pipelineInfoPtr = nullptr; #endif return sk_sp( new VulkanGraphicsPipeline(sharedContext, - pipelineShadersPtr, + pipelineInfoPtr, pipelineLayout, vkPipeline, hasFragment, @@ -744,18 +744,18 @@ sk_sp VulkanGraphicsPipeline::Make( } VulkanGraphicsPipeline::VulkanGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, VkPipelineLayout pipelineLayout, VkPipeline pipeline, bool hasFragment, bool hasStepUniforms, int numTextureSamplers) - : GraphicsPipeline(sharedContext, pipelineShaders) - , fPipelineLayout(pipelineLayout) - , fPipeline(pipeline) - , fHasFragment(hasFragment) - , fHasStepUniforms(hasStepUniforms) - , fNumTextureSamplers(numTextureSamplers) {} + : GraphicsPipeline(sharedContext, pipelineInfo) + , fPipelineLayout(pipelineLayout) + , fPipeline(pipeline) + , fHasFragment(hasFragment) + , fHasStepUniforms(hasStepUniforms) + , fNumTextureSamplers(numTextureSamplers) {} void VulkanGraphicsPipeline::freeGpuData() { auto sharedCtxt = static_cast(this->sharedContext()); diff --git a/src/gpu/graphite/vk/VulkanGraphicsPipeline.h b/src/gpu/graphite/vk/VulkanGraphicsPipeline.h index f32d74a18164..2adf623034ee 100644 --- a/src/gpu/graphite/vk/VulkanGraphicsPipeline.h +++ b/src/gpu/graphite/vk/VulkanGraphicsPipeline.h @@ -85,7 +85,7 @@ class VulkanGraphicsPipeline final : public GraphicsPipeline { private: VulkanGraphicsPipeline(const skgpu::graphite::SharedContext* sharedContext, - Shaders* pipelineShaders, + PipelineInfo* pipelineInfo, VkPipelineLayout, VkPipeline, bool hasFragment, diff --git a/src/gpu/graphite/vk/VulkanQueueManager.h b/src/gpu/graphite/vk/VulkanQueueManager.h index ef8469a6273e..76a3ffc99a0f 100644 --- a/src/gpu/graphite/vk/VulkanQueueManager.h +++ b/src/gpu/graphite/vk/VulkanQueueManager.h @@ -27,7 +27,7 @@ class VulkanQueueManager final : public QueueManager { std::unique_ptr getNewCommandBuffer(ResourceProvider*) override; OutstandingSubmission onSubmitToGpu() override; -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) // TODO: Implement these void startCapture() override {} void stopCapture() override {} diff --git a/src/gpu/graphite/vk/VulkanResourceProvider.cpp b/src/gpu/graphite/vk/VulkanResourceProvider.cpp index 327e0e35e1ee..34ef792acc2c 100644 --- a/src/gpu/graphite/vk/VulkanResourceProvider.cpp +++ b/src/gpu/graphite/vk/VulkanResourceProvider.cpp @@ -68,8 +68,9 @@ GraphiteResourceKey build_desc_set_key(const SkSpan& requestedDe VulkanResourceProvider::VulkanResourceProvider(SharedContext* sharedContext, SingleOwner* singleOwner, - uint32_t recorderID) - : ResourceProvider(sharedContext, singleOwner, recorderID) {} + uint32_t recorderID, + size_t resourceBudget) + : ResourceProvider(sharedContext, singleOwner, recorderID, resourceBudget) {} VulkanResourceProvider::~VulkanResourceProvider() { if (fPipelineCache != VK_NULL_HANDLE) { diff --git a/src/gpu/graphite/vk/VulkanResourceProvider.h b/src/gpu/graphite/vk/VulkanResourceProvider.h index c6d3326717d4..d21397d71b76 100644 --- a/src/gpu/graphite/vk/VulkanResourceProvider.h +++ b/src/gpu/graphite/vk/VulkanResourceProvider.h @@ -21,7 +21,10 @@ class VulkanSharedContext; class VulkanResourceProvider final : public ResourceProvider { public: - VulkanResourceProvider(SharedContext* sharedContext, SingleOwner*, uint32_t recorderID); + VulkanResourceProvider(SharedContext* sharedContext, + SingleOwner*, + uint32_t recorderID, + size_t resourceBudget); ~VulkanResourceProvider() override; sk_sp createWrappedTexture(const BackendTexture&) override; diff --git a/src/gpu/graphite/vk/VulkanSharedContext.cpp b/src/gpu/graphite/vk/VulkanSharedContext.cpp index 41c35b453514..b9e1bfe42ddb 100644 --- a/src/gpu/graphite/vk/VulkanSharedContext.cpp +++ b/src/gpu/graphite/vk/VulkanSharedContext.cpp @@ -128,9 +128,12 @@ VulkanSharedContext::~VulkanSharedContext() { std::unique_ptr VulkanSharedContext::makeResourceProvider( SingleOwner* singleOwner, - uint32_t recorderID) { - return std::unique_ptr(new VulkanResourceProvider(this, singleOwner, - recorderID)); + uint32_t recorderID, + size_t resourceBudget) { + return std::unique_ptr(new VulkanResourceProvider(this, + singleOwner, + recorderID, + resourceBudget)); } bool VulkanSharedContext::checkVkResult(VkResult result) const { diff --git a/src/gpu/graphite/vk/VulkanSharedContext.h b/src/gpu/graphite/vk/VulkanSharedContext.h index 1e75fdd58d5c..b6739949146d 100644 --- a/src/gpu/graphite/vk/VulkanSharedContext.h +++ b/src/gpu/graphite/vk/VulkanSharedContext.h @@ -39,7 +39,8 @@ class VulkanSharedContext final : public SharedContext { uint32_t queueIndex() const { return fQueueIndex; } std::unique_ptr makeResourceProvider(SingleOwner*, - uint32_t recorderID) override; + uint32_t recorderID, + size_t resourceBudget) override; bool checkVkResult(VkResult result) const; diff --git a/src/gpu/mtl/MtlUtils.mm b/src/gpu/mtl/MtlUtils.mm index aa301c2b7fd3..0cfa7c3927b7 100644 --- a/src/gpu/mtl/MtlUtils.mm +++ b/src/gpu/mtl/MtlUtils.mm @@ -150,42 +150,6 @@ size_t MtlFormatBytesPerBlock(MTLPixelFormat mtlFormat) { } } -bool SkSLToMSL(SkSL::Compiler* compiler, - const std::string& sksl, - SkSL::ProgramKind programKind, - const SkSL::ProgramSettings& settings, - std::string* msl, - SkSL::Program::Interface* outInterface, - ShaderErrorHandler* errorHandler) { -#ifdef SK_DEBUG - std::string src = SkShaderUtils::PrettyPrint(sksl); -#else - const std::string& src = sksl; -#endif - std::unique_ptr program = compiler->convertProgram(programKind, - src, - settings); - if (!program || !compiler->toMetal(*program, msl)) { - errorHandler->compileError(src.c_str(), compiler->errorText().c_str()); - return false; - } - - if (gPrintSKSL || gPrintBackendSL) { - SkShaderUtils::PrintShaderBanner(programKind); - if (gPrintSKSL) { - SkDebugf("SKSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(sksl)); - } - if (gPrintBackendSL) { - SkDebugf("MSL:\n"); - SkShaderUtils::PrintLineByLine(SkShaderUtils::PrettyPrint(*msl)); - } - } - - *outInterface = program->fInterface; - return true; -} - #ifdef SK_BUILD_FOR_IOS bool MtlIsAppInBackground() { return [NSThread isMainThread] && diff --git a/src/gpu/mtl/MtlUtilsPriv.h b/src/gpu/mtl/MtlUtilsPriv.h index ee73009ca6b6..47244dd2e5ef 100644 --- a/src/gpu/mtl/MtlUtilsPriv.h +++ b/src/gpu/mtl/MtlUtilsPriv.h @@ -30,21 +30,10 @@ uint32_t MtlFormatChannels(MTLPixelFormat); size_t MtlFormatBytesPerBlock(MTLPixelFormat); -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) const char* MtlFormatToString(MTLPixelFormat); #endif -/** - * Produces MSL code generated by SkSLC - */ -bool SkSLToMSL(SkSL::Compiler*, - const std::string& sksl, - SkSL::ProgramKind kind, - const SkSL::ProgramSettings& settings, - std::string* msl, - SkSL::Program::Interface* outInterface, - ShaderErrorHandler* errorHandler); - #ifdef SK_BUILD_FOR_IOS bool MtlIsAppInBackground(); #endif diff --git a/src/gpu/vk/VulkanUtilsPriv.h b/src/gpu/vk/VulkanUtilsPriv.h index 6de1e33aa78a..b835dc005c7b 100644 --- a/src/gpu/vk/VulkanUtilsPriv.h +++ b/src/gpu/vk/VulkanUtilsPriv.h @@ -157,7 +157,7 @@ static constexpr bool VkFormatIsCompressed(VkFormat vkFormat) { } -#if defined(SK_DEBUG) || GR_TEST_UTILS +#if defined(SK_DEBUG) || defined(GR_TEST_UTILS) static constexpr const char* VkFormatToStr(VkFormat vkFormat) { switch (vkFormat) { case VK_FORMAT_R8G8B8A8_UNORM: return "R8G8B8A8_UNORM"; @@ -188,7 +188,7 @@ static constexpr const char* VkFormatToStr(VkFormat vkFormat) { default: return "Unknown"; } } -#endif // defined(SK_DEBUG) || GR_TEST_UTILS +#endif // defined(SK_DEBUG) || defined(GR_TEST_UTILS) } // namespace skgpu diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 905fd8b1894e..c6e40c6ba29c 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -10,19 +10,13 @@ #include "include/core/SkBitmap.h" #include "include/core/SkColorSpace.h" #include "include/core/SkData.h" -#include "include/core/SkMatrix.h" #include "include/core/SkPixmap.h" -#include "include/core/SkPoint.h" #include "include/core/SkTileMode.h" #include "include/core/SkTypes.h" #include "src/core/SkColorSpacePriv.h" -#include "src/core/SkImageFilterCache.h" -#include "src/core/SkImageFilterTypes.h" -#include "src/core/SkImageFilter_Base.h" #include "src/core/SkImageInfoPriv.h" #include "src/core/SkMipmap.h" #include "src/core/SkNextID.h" -#include "src/core/SkSpecialImage.h" #include "src/image/SkImage_Base.h" #include "src/shaders/SkImageShader.h" @@ -288,6 +282,8 @@ sk_sp SkImage::makeRasterImage(GrDirectContext* dContext, CachingHint c bool SkImage::hasMipmaps() const { return as_IB(this)->onHasMipmaps(); } +bool SkImage::isProtected() const { return as_IB(this)->onIsProtected(); } + sk_sp SkImage::withMipmaps(sk_sp mips) const { if (mips == nullptr || mips->validForRootLevel(this->imageInfo())) { if (auto result = as_IB(this)->onMakeWithMipmaps(std::move(mips))) { @@ -301,66 +297,27 @@ sk_sp SkImage::withDefaultMipmaps() const { return this->withMipmaps(nullptr); } +#if !defined(SK_DISABLE_LEGACY_MAKEWITHFILTER) + +#if defined(SK_GANESH) +#include "include/gpu/ganesh/SkImageGanesh.h" +#endif + sk_sp SkImage::makeWithFilter(GrRecordingContext* rContext, const SkImageFilter* filter, const SkIRect& subset, const SkIRect& clipBounds, SkIRect* outSubset, SkIPoint* offset) const { - if (!filter || !outSubset || !offset || !this->bounds().contains(subset)) { - return nullptr; - } - - sk_sp cache( - SkImageFilterCache::Create(SkImageFilterCache::kDefaultTransientSize)); - - // The filters operate in the local space of the src image, where (0,0) corresponds to the - // subset's top left corner. But the clip bounds and any crop rects on the filters are in the - // original coordinate system, so configure the CTM to correct crop rects and explicitly adjust - // the clip bounds (since it is assumed to already be in image space). - // TODO: Once all image filters support it, we can just use the subset's top left corner as - // the source FilterResult's origin. - skif::ContextInfo ctxInfo = { - skif::Mapping(SkMatrix::Translate(-subset.x(), -subset.y())), - skif::LayerSpace(clipBounds.makeOffset(-subset.topLeft())), - /*srcImag=*/{}, // Will be filled in with this image after createContext() comes back - fInfo.colorType(), - fInfo.colorSpace(), - /*fSurfaceProps=*/{}, - cache.get()}; - skif::Context context = as_IB(this)->onCreateFilterContext(rContext, ctxInfo); - - auto srcSpecialImage = context.makeImage(subset, sk_ref_sp(this)); - if (!srcSpecialImage) { - return nullptr; - } - - // TODO: Pass subset.topLeft() as the origin of the source FilterResult - context = context.withNewSource(skif::FilterResult{srcSpecialImage}); - sk_sp result = as_IFB(filter)->filterImage(context) - .imageAndOffset(context, offset); - if (!result) { - return nullptr; - } - - // The output image and offset are relative to the subset rectangle, so the offset needs to - // be shifted to put it in the correct spot with respect to the original coordinate system - offset->fX += subset.x(); - offset->fY += subset.y(); - - // Final clip against the exact clipBounds (the clip provided in the context gets adjusted - // to account for pixel-moving filters so doesn't always exactly match when finished). The - // clipBounds are translated into the clippedDstRect coordinate space, including the - // result->subset() ensures that the result's image pixel origin does not affect results. - SkIRect dstRect = result->subset(); - SkIRect clippedDstRect = dstRect; - if (!clippedDstRect.intersect(clipBounds.makeOffset(result->subset().topLeft() - *offset))) { - return nullptr; +#if defined(SK_GANESH) + if (rContext) { + return SkImages::MakeWithFilter(rContext, sk_ref_sp(this), filter, subset, clipBounds, + outSubset, offset); } +#endif - // Adjust the geometric offset if the top-left corner moved as well - offset->fX += (clippedDstRect.x() - dstRect.x()); - offset->fY += (clippedDstRect.y() - dstRect.y()); - *outSubset = clippedDstRect; - return result->asImage(); + return SkImages::MakeWithFilter(sk_ref_sp(this), filter, subset, clipBounds, + outSubset, offset); } + +#endif // !defined(SK_DISABLE_LEGACY_MAKEWITHFILTER) diff --git a/src/image/SkImage_Base.cpp b/src/image/SkImage_Base.cpp index 5a2c3f8e2269..641aa6a0c9d2 100644 --- a/src/image/SkImage_Base.cpp +++ b/src/image/SkImage_Base.cpp @@ -19,7 +19,6 @@ #include "include/private/base/SkDebug.h" #include "src/core/SkBitmapCache.h" #include "src/core/SkColorSpacePriv.h" -#include "src/core/SkImageFilterTypes.h" #include "src/image/SkRescaleAndReadPixels.h" #include @@ -165,8 +164,3 @@ sk_sp SkImage_Base::makeColorTypeAndColorSpace(skgpu::graphite::Recorde // this method and things work correctly. return this->makeColorTypeAndColorSpace(nullptr, ct, std::move(cs)); } - -skif::Context SkImage_Base::onCreateFilterContext(GrRecordingContext*, - const skif::ContextInfo& ctxInfo) const { - return skif::Context::MakeRaster(ctxInfo); -} diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h index 522f2e423983..93891335172f 100644 --- a/src/image/SkImage_Base.h +++ b/src/image/SkImage_Base.h @@ -20,7 +20,6 @@ class GrDirectContext; class GrImageContext; -class GrRecordingContext; class SkBitmap; class SkColorSpace; class SkPixmap; @@ -34,11 +33,6 @@ enum { kNeedNewImageUniqueID = 0 }; -namespace skif { -class Context; -struct ContextInfo; -} - namespace skgpu { namespace graphite { class Recorder; } } class SkImage_Base : public SkImage { @@ -78,6 +72,7 @@ class SkImage_Base : public SkImage { CachingHint) const = 0; virtual bool onHasMipmaps() const = 0; + virtual bool onIsProtected() const = 0; virtual SkMipmap* onPeekMips() const { return nullptr; } @@ -187,10 +182,6 @@ class SkImage_Base : public SkImage { const SkIRect&, RequiredProperties) const = 0; - // Returns a raster-backed image filtering context by default. - virtual skif::Context onCreateFilterContext(GrRecordingContext* rContext, - const skif::ContextInfo& info) const; - protected: SkImage_Base(const SkImageInfo& info, uint32_t uniqueID); diff --git a/src/image/SkImage_Lazy.cpp b/src/image/SkImage_Lazy.cpp index 79ec31236642..67e90a4258dd 100644 --- a/src/image/SkImage_Lazy.cpp +++ b/src/image/SkImage_Lazy.cpp @@ -33,7 +33,7 @@ SharedGenerator::SharedGenerator(std::unique_ptr gen) SkASSERT(fGenerator); } -const SkImageInfo& SharedGenerator::getInfo() { return fGenerator->getInfo(); } +const SkImageInfo& SharedGenerator::getInfo() const { return fGenerator->getInfo(); } bool SharedGenerator::isTextureGenerator() { return fGenerator->isTextureGenerator(); } @@ -154,6 +154,11 @@ sk_sp SkImage_Lazy::generator() const { return fSharedGenerator; } +bool SkImage_Lazy::onIsProtected() const { + ScopedGenerator generator(fSharedGenerator); + return generator->isProtected(); +} + bool SkImage_Lazy::onReadPixels(GrDirectContext* dContext, const SkImageInfo& dstInfo, void* dstPixels, diff --git a/src/image/SkImage_Lazy.h b/src/image/SkImage_Lazy.h index b830e68afb75..3e42d987bb0c 100644 --- a/src/image/SkImage_Lazy.h +++ b/src/image/SkImage_Lazy.h @@ -59,6 +59,8 @@ class SkImage_Lazy : public SkImage_Base { // a way to provide content for levels other than via SkImageGenerator::generateTexture(). return false; } + bool onIsProtected() const override; + bool onReadPixels(GrDirectContext*, const SkImageInfo&, void*, size_t, int srcX, int srcY, CachingHint) const override; sk_sp onRefEncoded() const override; @@ -108,7 +110,7 @@ class SharedGenerator final : public SkNVRefCnt { static sk_sp Make(std::unique_ptr gen); // This is thread safe. It is a const field set in the constructor. - const SkImageInfo& getInfo(); + const SkImageInfo& getInfo() const; bool isTextureGenerator(); diff --git a/src/image/SkImage_Picture.cpp b/src/image/SkImage_Picture.cpp index 5c80bb4b80c7..308f383a6a63 100644 --- a/src/image/SkImage_Picture.cpp +++ b/src/image/SkImage_Picture.cpp @@ -7,20 +7,28 @@ #include "src/image/SkImage_Picture.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" #include "include/core/SkColorSpace.h" +#include "include/core/SkColorType.h" #include "include/core/SkImage.h" #include "include/core/SkImageGenerator.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkMatrix.h" #include "include/core/SkPicture.h" #include "include/core/SkSurfaceProps.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkMutex.h" +#include "include/private/base/SkTFitsIn.h" #include "src/base/SkTLazy.h" #include "src/image/SkImageGeneratorPriv.h" #include "src/image/SkImage_Lazy.h" #include "src/image/SkPictureImageGenerator.h" +#include #include #include -class SkMatrix; class SkPaint; struct SkISize; @@ -37,22 +45,70 @@ sk_sp SkImage_Picture::Make(sk_sp picture, const SkISize& di return validator ? sk_make_sp(&validator) : nullptr; } -SkPictureImageGenerator* SkImage_Picture::gen() const { - return static_cast(this->generator()->fGenerator.get()); +const SkSurfaceProps* SkImage_Picture::props() const { + auto pictureIG = static_cast(this->generator()->fGenerator.get()); + return &pictureIG->fProps; } -SkPicture* SkImage_Picture::picture() const { - return this->gen()->fPicture.get(); -} +void SkImage_Picture::replay(SkCanvas* canvas) const { + auto sharedGenerator = this->generator(); + SkAutoMutexExclusive mutex(sharedGenerator->fMutex); -SkMatrix* SkImage_Picture::matrix() const { - return &this->gen()->fMatrix; + auto pictureIG = static_cast(sharedGenerator->fGenerator.get()); + canvas->clear(SkColors::kTransparent); + canvas->drawPicture(pictureIG->fPicture, + &pictureIG->fMatrix, + pictureIG->fPaint.getMaybeNull()); } -SkPaint* SkImage_Picture::paint() const { - return this->gen()->fPaint.getMaybeNull(); -} +bool SkImage_Picture::getImageKeyValues( + uint32_t keyValues[SkTiledImageUtils::kNumImageKeyValues]) const { + + auto sharedGenerator = this->generator(); + SkAutoMutexExclusive mutex(sharedGenerator->fMutex); + + auto pictureIG = static_cast(sharedGenerator->fGenerator.get()); + if (pictureIG->fPaint.getMaybeNull()) { + // A full paint complicates the potential key too much. + return false; + } + + const SkImageInfo& ii = sharedGenerator->getInfo(); + if (!ii.colorSpace()->isSRGB()) { + // We only return key values if the colorSpace is sRGB. + return false; + } + + const SkMatrix& m = pictureIG->fMatrix; + if (!m.isIdentity() && !m.isTranslate()) { + // To keep the key small we only cache simple (<= translation) matrices + return false; + } + + bool isU8 = ii.colorType() != kRGBA_F16_SkColorType; + uint32_t pixelGeometry = this->props()->pixelGeometry(); + uint32_t surfacePropFlags = this->props()->flags(); + int width = ii.width(); + int height = ii.height(); + float transX = m.getTranslateX(); + float transY = m.getTranslateY(); + + SkASSERT(pixelGeometry <= 4); + SkASSERT(surfacePropFlags < 8); + SkASSERT(SkTFitsIn(width)); + SkASSERT(SkTFitsIn(height)); + SkASSERT(sizeof(float) == sizeof(uint32_t)); -SkSurfaceProps* SkImage_Picture::props() const { - return &this->gen()->fProps; + // The 0th slot usually holds either the SkBitmap's ID or the image's. In those two cases + // slot #1 is zero so we can reuse the 0th slot here. + keyValues[0] = (isU8 ? 0x1 : 0x0) | // 1 bit + (pixelGeometry << 1) | // 3 bits + (surfacePropFlags << 4); // 3 bits + keyValues[1] = pictureIG->fPicture->uniqueID(); + SkASSERT(keyValues[1] != 0); // Double check we don't collide w/ bitmap or image keys + keyValues[2] = width; + keyValues[3] = height; + memcpy(&keyValues[4], &transX, sizeof(uint32_t)); + memcpy(&keyValues[5], &transY, sizeof(uint32_t)); + return true; } diff --git a/src/image/SkImage_Picture.h b/src/image/SkImage_Picture.h index cb2eefec98d8..f68d0a9c774a 100644 --- a/src/image/SkImage_Picture.h +++ b/src/image/SkImage_Picture.h @@ -8,15 +8,18 @@ #define SkImage_Picture_DEFINED #include "include/core/SkRefCnt.h" +#include "include/core/SkTiledImageUtils.h" #include "src/image/SkImage_Base.h" #include "src/image/SkImage_Lazy.h" +#include + +class SkCanvas; class SkColorSpace; class SkImage; class SkMatrix; class SkPaint; class SkPicture; -class SkPictureImageGenerator; class SkSurfaceProps; struct SkISize; @@ -31,17 +34,17 @@ class SkImage_Picture : public SkImage_Lazy { SkImage_Picture(Validator* validator) : SkImage_Lazy(validator) {} - SkImage_Base::Type type() const override { return SkImage_Base::Type::kLazyPicture; } + SkImage_Base::Type type() const override { return SkImage_Base::Type::kLazyPicture; } + + // This is thread safe. It is a const field set in the constructor. + const SkSurfaceProps* props() const; - // These are not necessarily thread-safe. Be sure to grab the mutex from the shared - // generator before accessing them. - SkPicture* picture() const; - SkMatrix* matrix() const; - SkPaint* paint() const; - SkSurfaceProps* props() const; + // Call drawPicture on the provided canvas taking care of any required mutex locking. + void replay(SkCanvas*) const; -private: - SkPictureImageGenerator* gen() const; + // If possible, extract key data based on the underlying drawPicture-call's parameters. + // Takes care of any required mutex locking. + bool getImageKeyValues(uint32_t keyValues[SkTiledImageUtils::kNumImageKeyValues]) const; }; #endif diff --git a/src/image/SkImage_Raster.h b/src/image/SkImage_Raster.h index e153a41434af..2d44ba815481 100644 --- a/src/image/SkImage_Raster.h +++ b/src/image/SkImage_Raster.h @@ -73,6 +73,7 @@ class SkImage_Raster : public SkImage_Base { } bool onHasMipmaps() const override { return SkToBool(fBitmap.fMips); } + bool onIsProtected() const override { return false; } SkMipmap* onPeekMips() const override { return fBitmap.fMips.get(); } diff --git a/src/image/SkImage_RasterFactories.cpp b/src/image/SkImage_RasterFactories.cpp index e2b2e10bcf04..365a3606f776 100644 --- a/src/image/SkImage_RasterFactories.cpp +++ b/src/image/SkImage_RasterFactories.cpp @@ -15,6 +15,8 @@ #include "include/core/SkRefCnt.h" #include "include/private/base/SkMath.h" #include "src/core/SkCompressedDataUtils.h" +#include "src/core/SkImageFilterTypes.h" +#include "src/core/SkImageFilter_Base.h" #include "src/core/SkImagePriv.h" #include "src/image/SkImage_Base.h" #include "src/image/SkImage_Raster.h" @@ -23,8 +25,15 @@ #include #include +class SkImageFilter; +struct SkIPoint; +struct SkIRect; enum class SkTextureCompressionType; +namespace skif { +Functors MakeRasterFunctors(); +} // namespace skif + static bool valid_args(const SkImageInfo& info, size_t rowBytes, size_t* minSize) { const int maxDimension = SK_MaxS32 >> 2; @@ -92,6 +101,24 @@ sk_sp RasterFromData(const SkImageInfo& info, sk_sp data, size_ return sk_make_sp(info, std::move(data), rowBytes); } +sk_sp MakeWithFilter(sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) { + if (!src || !filter) { + return nullptr; + } + + return as_IFB(filter)->makeImageWithFilter(skif::MakeRasterFunctors(), + std::move(src), + subset, + clipBounds, + outSubset, + offset); +} + // TODO: this could be improved to decode and make use of the mipmap // levels potentially present in the compressed data. For now, any // mipmap levels are discarded. diff --git a/src/image/SkPictureImageGenerator.cpp b/src/image/SkPictureImageGenerator.cpp index 9dee7db5e4bc..196e1517eebb 100644 --- a/src/image/SkPictureImageGenerator.cpp +++ b/src/image/SkPictureImageGenerator.cpp @@ -88,4 +88,3 @@ bool SkPictureImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, canvas->drawPicture(fPicture, &fMatrix, fPaint.getMaybeNull()); return true; } - diff --git a/src/image/SkPictureImageGenerator.h b/src/image/SkPictureImageGenerator.h index af5f698a94fb..d3899b125bac 100644 --- a/src/image/SkPictureImageGenerator.h +++ b/src/image/SkPictureImageGenerator.h @@ -29,10 +29,10 @@ class SkPictureImageGenerator : public SkImageGenerator { bool onGetPixels(const SkImageInfo&, void* pixels, size_t rowBytes, const Options&) override; private: - sk_sp fPicture; - SkMatrix fMatrix; - SkTLazy fPaint; - SkSurfaceProps fProps; + sk_sp fPicture; + SkMatrix fMatrix; + SkTLazy fPaint; + const SkSurfaceProps fProps; friend class SkImage_Picture; }; diff --git a/src/image/SkTiledImageUtils.cpp b/src/image/SkTiledImageUtils.cpp index adc354a3702d..c11cc27ecda0 100644 --- a/src/image/SkTiledImageUtils.cpp +++ b/src/image/SkTiledImageUtils.cpp @@ -12,6 +12,7 @@ #include "include/private/base/SkAssert.h" #include "include/private/base/SkTFitsIn.h" #include "src/image/SkImage_Base.h" +#include "src/image/SkImage_Picture.h" #if defined(SK_GRAPHITE) #include "src/gpu/TiledTextureUtils.h" @@ -53,24 +54,34 @@ void GetImageKeyValues(const SkImage* image, uint32_t keyValues[kNumImageKeyValu return; } - SkIRect subset = image->bounds(); - - if (const SkBitmap* bm = as_IB(image)->onPeekBitmap()) { + const SkImage_Base* imageBase = as_IB(image); + if (const SkBitmap* bm = imageBase->onPeekBitmap()) { keyValues[0] = bm->pixelRef()->getGenerationID(); + SkIRect subset = image->bounds(); subset.offset(bm->pixelRefOrigin()); - } else { - keyValues[0] = image->uniqueID(); + + SkASSERT(SkTFitsIn(subset.fLeft)); + SkASSERT(SkTFitsIn(subset.fTop)); + SkASSERT(SkTFitsIn(subset.fRight)); + SkASSERT(SkTFitsIn(subset.fBottom)); + + keyValues[1] = 0; // This empty slot is to disambiguate picture IDs + keyValues[2] = subset.fLeft; + keyValues[3] = subset.fTop; + keyValues[4] = subset.fRight; + keyValues[5] = subset.fBottom; + return; } - SkASSERT(SkTFitsIn(subset.fLeft)); - SkASSERT(SkTFitsIn(subset.fTop)); - SkASSERT(SkTFitsIn(subset.fRight)); - SkASSERT(SkTFitsIn(subset.fBottom)); + if (imageBase->type() == SkImage_Base::Type::kLazyPicture) { + const SkImage_Picture* pictureImage = static_cast(imageBase); + if (pictureImage->getImageKeyValues(keyValues)) { + return; + } + } - keyValues[1] = subset.fLeft; - keyValues[2] = subset.fTop; - keyValues[3] = subset.fRight; - keyValues[4] = subset.fBottom; + keyValues[0] = image->uniqueID(); + memset(&keyValues[1], 0, (kNumImageKeyValues-1) * sizeof(uint32_t)); } } // namespace SkTiledImageUtils diff --git a/src/opts/BUILD.bazel b/src/opts/BUILD.bazel index 4e4eb71b3a6d..de3b69efb961 100644 --- a/src/opts/BUILD.bazel +++ b/src/opts/BUILD.bazel @@ -34,11 +34,11 @@ skia_filegroup( "SkBitmapProcState_opts.h", "SkBlitMask_opts.h", "SkBlitRow_opts.h", + "SkMemset_opts.h", "SkOpts_RestoreTarget.h", "SkOpts_SetTarget.h", "SkRasterPipeline_opts.h", "SkSwizzler_opts.h", - "SkUtils_opts.h", ], visibility = ["//src:__pkg__"], ) @@ -50,24 +50,6 @@ OPTS_HDRS = [ "//include:public_hdrs", ] -skia_cc_library( - name = "ssse3", # https://en.wikipedia.org/wiki/SSSE3 - srcs = ["SkOpts_ssse3.cpp"], - copts = DEFAULT_COPTS + ["-mssse3"], - local_defines = DEFAULT_DEFINES + DEFAULT_LOCAL_DEFINES, - textual_hdrs = OPTS_HDRS, - deps = ["@skia_user_config//:user_config"], -) - -skia_cc_library( - name = "avx", # https://en.wikipedia.org/wiki/Advanced_Vector_Extensions - srcs = ["SkOpts_avx.cpp"], - copts = DEFAULT_COPTS + ["-mavx"], - local_defines = DEFAULT_DEFINES + DEFAULT_LOCAL_DEFINES, - textual_hdrs = OPTS_HDRS, - deps = ["@skia_user_config//:user_config"], -) - skia_cc_library( name = "hsw", # https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 srcs = ["SkOpts_hsw.cpp"], @@ -88,9 +70,7 @@ skia_cc_deps( ], deps = selects.with_or({ ("@platforms//cpu:x86_64", "@platforms//cpu:x86_32"): [ - ":avx", ":hsw", - ":ssse3", ], # We have no architecture specific optimizations for ARM64 right now "@platforms//cpu:arm64": [], diff --git a/src/opts/SkUtils_opts.h b/src/opts/SkMemset_opts.h similarity index 100% rename from src/opts/SkUtils_opts.h rename to src/opts/SkMemset_opts.h diff --git a/src/opts/SkOpts_avx.cpp b/src/opts/SkOpts_avx.cpp deleted file mode 100644 index bceb3e115bca..000000000000 --- a/src/opts/SkOpts_avx.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "src/core/SkOpts.h" - -#if !defined(SK_ENABLE_OPTIMIZE_SIZE) - -#define SK_OPTS_NS avx -#include "src/opts/SkUtils_opts.h" - -namespace SkOpts { - void Init_avx() { - memset16 = SK_OPTS_NS::memset16; - memset32 = SK_OPTS_NS::memset32; - memset64 = SK_OPTS_NS::memset64; - - rect_memset16 = SK_OPTS_NS::rect_memset16; - rect_memset32 = SK_OPTS_NS::rect_memset32; - rect_memset64 = SK_OPTS_NS::rect_memset64; - } -} // namespace SkOpts - -#endif // SK_ENABLE_OPTIMIZE_SIZE diff --git a/src/opts/SkOpts_hsw.cpp b/src/opts/SkOpts_hsw.cpp index cea2e1571c29..578a00493b71 100644 --- a/src/opts/SkOpts_hsw.cpp +++ b/src/opts/SkOpts_hsw.cpp @@ -10,24 +10,10 @@ #if !defined(SK_ENABLE_OPTIMIZE_SIZE) #define SK_OPTS_NS hsw -#include "src/opts/SkBlitRow_opts.h" #include "src/opts/SkRasterPipeline_opts.h" -#include "src/opts/SkSwizzler_opts.h" namespace SkOpts { void Init_hsw() { - blit_row_color32 = hsw::blit_row_color32; - blit_row_s32a_opaque = hsw::blit_row_s32a_opaque; - - RGBA_to_BGRA = SK_OPTS_NS::RGBA_to_BGRA; - RGBA_to_rgbA = SK_OPTS_NS::RGBA_to_rgbA; - RGBA_to_bgrA = SK_OPTS_NS::RGBA_to_bgrA; - gray_to_RGB1 = SK_OPTS_NS::gray_to_RGB1; - grayA_to_RGBA = SK_OPTS_NS::grayA_to_RGBA; - grayA_to_rgbA = SK_OPTS_NS::grayA_to_rgbA; - inverted_CMYK_to_RGB1 = SK_OPTS_NS::inverted_CMYK_to_RGB1; - inverted_CMYK_to_BGR1 = SK_OPTS_NS::inverted_CMYK_to_BGR1; - raster_pipeline_lowp_stride = SK_OPTS_NS::raster_pipeline_lowp_stride(); raster_pipeline_highp_stride = SK_OPTS_NS::raster_pipeline_highp_stride(); diff --git a/src/pdf/SkPDFGraphicState.h b/src/pdf/SkPDFGraphicState.h index 4eda9ba5e809..bad471e40eb7 100644 --- a/src/pdf/SkPDFGraphicState.h +++ b/src/pdf/SkPDFGraphicState.h @@ -10,7 +10,6 @@ #define SkPDFGraphicState_DEFINED #include "include/private/base/SkMacros.h" -#include "src/core/SkOpts.h" #include "src/pdf/SkPDFTypes.h" class SkPaint; diff --git a/src/ports/BUILD.bazel b/src/ports/BUILD.bazel index c38207283be4..8b7ea685f00e 100644 --- a/src/ports/BUILD.bazel +++ b/src/ports/BUILD.bazel @@ -355,15 +355,6 @@ skia_cc_deps( }), ) -skia_cc_library( - name = "default_logging", - srcs = [":skdebug"], - copts = ["-Wno-format-nonliteral"], - features = ["layering_check"], - visibility = ["//:__pkg__"], - deps = ["//src:base"], -) - skia_cc_library( name = "default_malloc", srcs = [":malloc"], @@ -371,3 +362,11 @@ skia_cc_library( visibility = ["//:__pkg__"], deps = ["//src:base"], ) + +skia_filegroup( + name = "buffet_base_srcs", + srcs = [ + ":skdebug", + ], + visibility = ["//src:__pkg__"], +) diff --git a/src/ports/SkFontHost_FreeType_common.cpp b/src/ports/SkFontHost_FreeType_common.cpp index 70af19768662..1505cd0ab47e 100644 --- a/src/ports/SkFontHost_FreeType_common.cpp +++ b/src/ports/SkFontHost_FreeType_common.cpp @@ -434,7 +434,7 @@ const uint16_t kForegroundColorPaletteIndex = 0xFFFF; // truncating and drawing color lines. When drawing into N32 surfaces, this is expected to be true. // If that changes, or if we support other color spaces in CPAL tables at some point, this needs to // be looked at. -SkColor lerpSkColor(SkColor c0, SkColor c1, float t) { +SkColor4f lerpSkColor(SkColor4f c0, SkColor4f c1, float t) { // Due to the floating point calculation in the caller, when interpolating between very narrow // stops, we may get values outside the interpolation range, guard against these. if (t < 0) { @@ -443,10 +443,14 @@ SkColor lerpSkColor(SkColor c0, SkColor c1, float t) { if (t > 1) { return c1; } - const auto c0_4f = Sk4f_fromL32(c0), c1_4f = Sk4f_fromL32(c1), - c_4f = c0_4f + (c1_4f - c0_4f) * t; - return Sk4f_toL32(c_4f); + const auto c0_4f = skvx::float4::Load(c0.vec()); + const auto c1_4f = skvx::float4::Load(c1.vec()); + const auto c_4f = c0_4f + (c1_4f - c0_4f) * t; + + SkColor4f l; + c_4f.store(l.vec()); + return l; } enum TruncateStops { @@ -457,7 +461,7 @@ enum TruncateStops { // Truncate a vector of color stops at a previously computed stop position and insert at that // position the color interpolated between the surrounding stops. void truncateToStopInterpolating(SkScalar zeroRadiusStop, - std::vector& colors, + std::vector& colors, std::vector& stops, TruncateStops truncateStops) { if (stops.size() <= 1u || @@ -472,7 +476,7 @@ void truncateToStopInterpolating(SkScalar zeroRadiusStop, const float t = (zeroRadiusStop - stops[afterIndex - 1]) / (stops[afterIndex] - stops[afterIndex - 1]); - SkColor lerpColor = lerpSkColor(colors[afterIndex - 1], colors[afterIndex], t); + SkColor4f lerpColor = lerpSkColor(colors[afterIndex - 1], colors[afterIndex], t); if (truncateStops == TruncateStart) { stops.erase(stops.begin(), stops.begin() + afterIndex); @@ -602,7 +606,7 @@ bool colrv1_configure_skpaint(FT_Face face, auto fetchColorStops = [&face, &palette, &foregroundColor]( const FT_ColorStopIterator& colorStopIterator, std::vector& stops, - std::vector& colors) -> bool { + std::vector& colors) -> bool { const FT_UInt colorStopCount = colorStopIterator.num_color_stops; if (colorStopCount == 0) { return false; @@ -612,28 +616,26 @@ bool colrv1_configure_skpaint(FT_Face face, // "Applications shall apply the colorStops in increasing stopOffset order." struct ColorStop { SkScalar pos; - SkColor color; + SkColor4f color; }; std::vector colorStopsSorted; colorStopsSorted.resize(colorStopCount); - FT_ColorStop color_stop; + FT_ColorStop ftStop; FT_ColorStopIterator mutable_color_stop_iterator = colorStopIterator; - while (FT_Get_Colorline_Stops(face, &color_stop, &mutable_color_stop_iterator)) { + while (FT_Get_Colorline_Stops(face, &ftStop, &mutable_color_stop_iterator)) { FT_UInt index = mutable_color_stop_iterator.current_color_stop - 1; - colorStopsSorted[index].pos = color_stop.stop_offset / kColorStopShift; - FT_UInt16& palette_index = color_stop.color.palette_index; + ColorStop& skStop = colorStopsSorted[index]; + skStop.pos = ftStop.stop_offset / kColorStopShift; + FT_UInt16& palette_index = ftStop.color.palette_index; if (palette_index == kForegroundColorPaletteIndex) { - U8CPU newAlpha = SkColorGetA(foregroundColor) * - SkColrV1AlphaToFloat(color_stop.color.alpha); - colorStopsSorted[index].color = SkColorSetA(foregroundColor, newAlpha); + skStop.color = SkColor4f::FromColor(foregroundColor); } else if (palette_index >= palette.size()) { return false; } else { - U8CPU newAlpha = SkColorGetA(palette[palette_index]) * - SkColrV1AlphaToFloat(color_stop.color.alpha); - colorStopsSorted[index].color = SkColorSetA(palette[palette_index], newAlpha); + skStop.color = SkColor4f::FromColor(palette[palette_index]); } + skStop.color.fA *= SkColrV1AlphaToFloat(ftStop.color.alpha); } std::stable_sort(colorStopsSorted.begin(), colorStopsSorted.end(), @@ -653,18 +655,15 @@ bool colrv1_configure_skpaint(FT_Face face, FT_PaintSolid solid = colrPaint.u.solid; // Dont' draw anything with this color if the palette index is out of bounds. - SkColor color = SK_ColorTRANSPARENT; + SkColor4f color = SkColors::kTransparent; if (solid.color.palette_index == kForegroundColorPaletteIndex) { - U8CPU newAlpha = SkColorGetA(foregroundColor) * - SkColrV1AlphaToFloat(solid.color.alpha); - color = SkColorSetA(foregroundColor, newAlpha); + color = SkColor4f::FromColor(foregroundColor); } else if (solid.color.palette_index >= palette.size()) { return false; } else { - U8CPU newAlpha = SkColorGetA(palette[solid.color.palette_index]) * - SkColrV1AlphaToFloat(solid.color.alpha); - color = SkColorSetA(palette[solid.color.palette_index], newAlpha); + color = SkColor4f::FromColor(palette[solid.color.palette_index]); } + color.fA *= SkColrV1AlphaToFloat(solid.color.alpha); paint->setShader(nullptr); paint->setColor(color); return true; @@ -672,7 +671,7 @@ bool colrv1_configure_skpaint(FT_Face face, case FT_COLR_PAINTFORMAT_LINEAR_GRADIENT: { const FT_PaintLinearGradient& linearGradient = colrPaint.u.linear_gradient; std::vector stops; - std::vector colors; + std::vector colors; if (!fetchColorStops(linearGradient.colorline.color_stop_iterator, stops, colors)) { return false; @@ -762,9 +761,16 @@ bool colrv1_configure_skpaint(FT_Face face, } sk_sp shader(SkGradientShader::MakeLinear( - linePositions, - colors.data(), stops.data(), stops.size(), - tileMode)); + linePositions, + colors.data(), SkColorSpace::MakeSRGB(), stops.data(), stops.size(), + tileMode, + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); + SkASSERT(shader); // An opaque color is needed to ensure the gradient is not modulated by alpha. paint->setColor(SK_ColorBLACK); @@ -782,7 +788,7 @@ bool colrv1_configure_skpaint(FT_Face face, std::vector stops; - std::vector colors; + std::vector colors; if (!fetchColorStops(radialGradient.colorline.color_stop_iterator, stops, colors)) { return false; } @@ -939,8 +945,16 @@ bool colrv1_configure_skpaint(FT_Face face, paint->setColor(SK_ColorBLACK); paint->setShader(SkGradientShader::MakeTwoPointConical( - start, startRadius, end, endRadius, colors.data(), stops.data(), stops.size(), - tileMode)); + start, startRadius, end, endRadius, + colors.data(), SkColorSpace::MakeSRGB(), stops.data(), stops.size(), + tileMode, + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); + return true; } case FT_COLR_PAINTFORMAT_SWEEP_GRADIENT: { @@ -957,7 +971,7 @@ bool colrv1_configure_skpaint(FT_Face face, endAngle += 180.0f; std::vector stops; - std::vector colors; + std::vector colors; if (!fetchColorStops(sweepGradient.colorline.color_stop_iterator, stops, colors)) { return false; } @@ -1042,13 +1056,18 @@ bool colrv1_configure_skpaint(FT_Face face, } } - paint->setShader(SkGradientShader::MakeSweep(center.x(), center.y(), - colors.data(), - stops.data(), stops.size(), - tileMode, - startAngleScaled, - endAngleScaled, - 0, nullptr)); + paint->setShader(SkGradientShader::MakeSweep( + center.x(), center.y(), + colors.data(), SkColorSpace::MakeSRGB(), stops.data(), stops.size(), + tileMode, + startAngleScaled, endAngleScaled, + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); + return true; } default: { diff --git a/src/ports/SkGlobalInitialization_default.cpp b/src/ports/SkGlobalInitialization_default.cpp index d33ea2f8032f..0595d31640f2 100644 --- a/src/ports/SkGlobalInitialization_default.cpp +++ b/src/ports/SkGlobalInitialization_default.cpp @@ -24,6 +24,7 @@ #include "include/effects/SkImageFilters.h" #include "include/effects/SkOverdrawColorFilter.h" #include "include/effects/SkPerlinNoiseShader.h" + #include "include/effects/SkRuntimeEffect.h" #include "include/effects/SkShaderMaskFilter.h" #include "src/core/SkBlendModeBlender.h" #include "src/core/SkImageFilter_Base.h" @@ -41,10 +42,6 @@ #include "src/shaders/SkShaderBase.h" #include "src/shaders/gradients/SkGradientBaseShader.h" -#ifdef SK_ENABLE_SKSL - #include "include/effects/SkRuntimeEffect.h" -#endif - #ifdef SK_SUPPORT_LEGACY_DRAWLOOPER #include "include/effects/SkLayerDrawLooper.h" #endif @@ -84,10 +81,8 @@ // Blenders. SK_REGISTER_FLATTENABLE(SkBlendModeBlender); -#ifdef SK_ENABLE_SKSL // Runtime shaders, color filters, and blenders. SkRuntimeEffect::RegisterFlattenables(); -#endif // Mask filters. SK_REGISTER_FLATTENABLE(SkEmbossMaskFilter); @@ -137,9 +132,7 @@ SkRegisterMergeImageFilterFlattenable(); SkRegisterMorphologyImageFilterFlattenables(); SkRegisterPictureImageFilterFlattenable(); -#ifdef SK_ENABLE_SKSL SkRegisterRuntimeImageFilterFlattenable(); -#endif SkRegisterShaderImageFilterFlattenable(); SK_REGISTER_FLATTENABLE(SkLocalMatrixImageFilter); diff --git a/src/ports/SkImageEncoder_NDK.cpp b/src/ports/SkImageEncoder_NDK.cpp index a512370e7fa3..7588bd01e4b3 100644 --- a/src/ports/SkImageEncoder_NDK.cpp +++ b/src/ports/SkImageEncoder_NDK.cpp @@ -155,6 +155,6 @@ sk_sp Encode(GrDirectContext* ctx, const SkImage* img, const Options& op bool EncodeAnimated(SkWStream*, SkSpan, const Options&) { SkDEBUGFAIL("Encoding Animated WebP images is not supported with the NDK."); - return nullptr; + return false; } } // namespace SkWebpEncoder diff --git a/src/ports/SkScalerContext_mac_ct.cpp b/src/ports/SkScalerContext_mac_ct.cpp index 9593ba21349a..ea86968faaf1 100644 --- a/src/ports/SkScalerContext_mac_ct.cpp +++ b/src/ports/SkScalerContext_mac_ct.cpp @@ -39,7 +39,7 @@ #include "src/core/SkGlyph.h" #include "src/core/SkMask.h" #include "src/core/SkMaskGamma.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/ports/SkScalerContext_mac_ct.h" #include "src/ports/SkTypeface_mac_ct.h" #include "src/sfnt/SkOTTableTypes.h" diff --git a/src/ports/SkScalerContext_win_dw.cpp b/src/ports/SkScalerContext_win_dw.cpp index 608374ae3687..68b47443476d 100644 --- a/src/ports/SkScalerContext_win_dw.cpp +++ b/src/ports/SkScalerContext_win_dw.cpp @@ -781,16 +781,24 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, } } - std::unique_ptr skColors(new SkColor[stops.size()]); + std::unique_ptr skColors(new SkColor4f[stops.size()]); std::unique_ptr skStops(new SkScalar[stops.size()]); for (size_t i = 0; i < stops.size(); ++i) { - skColors[i] = sk_color_from(stops[i].color).toSkColor(); + skColors[i] = sk_color_from(stops[i].color); skStops[i] = stops[i].position; } sk_sp shader(SkGradientShader::MakeLinear( linePositions, - skColors.get(), skStops.get(), stops.size(), tileMode)); + skColors.get(), SkColorSpace::MakeSRGB(), skStops.get(), stops.size(), + tileMode, + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); + SkASSERT(shader); // An opaque color is needed to ensure the gradient is not modulated by alpha. skPaint.setColor(SK_ColorBLACK); @@ -964,10 +972,10 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, } } - std::unique_ptr skColors(new SkColor[stops.size()]); + std::unique_ptr skColors(new SkColor4f[stops.size()]); std::unique_ptr skStops(new SkScalar[stops.size()]); for (size_t i = 0; i < stops.size(); ++i) { - skColors[i] = sk_color_from(stops[i].color).toSkColor(); + skColors[i] = sk_color_from(stops[i].color); skStops[i] = stops[i].position; } @@ -975,7 +983,14 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, skPaint.setColor(SK_ColorBLACK); skPaint.setShader(SkGradientShader::MakeTwoPointConical( start, startRadius, end, endRadius, - skColors.get(), skStops.get(), stops.size(), tileMode)); + skColors.get(), SkColorSpace::MakeSRGB(), skStops.get(), stops.size(), + tileMode, + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); canvas.drawPaint(skPaint); return true; } @@ -1082,18 +1097,24 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, } } - std::unique_ptr skColors(new SkColor[stops.size()]); + std::unique_ptr skColors(new SkColor4f[stops.size()]); std::unique_ptr skStops(new SkScalar[stops.size()]); for (size_t i = 0; i < stops.size(); ++i) { - skColors[i] = sk_color_from(stops[i].color).toSkColor(); + skColors[i] = sk_color_from(stops[i].color); skStops[i] = stops[i].position; } skPaint.setShader(SkGradientShader::MakeSweep( center.x(), center.y(), - skColors.get(), skStops.get(), stops.size(), tileMode, + skColors.get(), SkColorSpace::MakeSRGB(), skStops.get(), stops.size(), + tileMode, startAngleScaled, endAngleScaled, - 0, nullptr)); + SkGradientShader::Interpolation{ + SkGradientShader::Interpolation::InPremul::kNo, + SkGradientShader::Interpolation::ColorSpace::kSRGB, + SkGradientShader::Interpolation::HueMethod::kShorter + }, + nullptr)); canvas.drawPaint(skPaint); return true; } diff --git a/src/ports/SkTypeface_fontations.cpp b/src/ports/SkTypeface_fontations.cpp index 41efbcd5ed25..055793b9ab53 100644 --- a/src/ports/SkTypeface_fontations.cpp +++ b/src/ports/SkTypeface_fontations.cpp @@ -8,6 +8,7 @@ #include "include/core/SkData.h" #include "include/core/SkFontMetrics.h" #include "include/core/SkStream.h" +#include "include/pathops/SkPathOps.h" #include "include/ports/SkTypeface_fontations.h" #include "src/core/SkFontDescriptor.h" #include "src/core/SkFontPriv.h" @@ -79,26 +80,60 @@ sk_sp SkTypeface_Fontations::MakeFromData(sk_sp data, return probeTypeface->hasValidBridgeFontRef() ? probeTypeface : nullptr; } -void SkPathWrapper::move_to(float x, float y) { path_.moveTo(x, y); } +namespace sk_fontations { +// Path sanitization ported from SkFTGeometrySink. +void PathGeometrySink::going_to(SkPoint point) { + if (!fStarted) { + fStarted = true; + fPath.moveTo(fCurrent); + } + fCurrent = point; +} -void SkPathWrapper::line_to(float x, float y) { path_.lineTo(x, y); } +bool PathGeometrySink::current_is_not(SkPoint point) { return fCurrent != point; } -void SkPathWrapper::quad_to(float cx0, float cy0, float x, float y) { - path_.quadTo(cx0, cy0, x, y); +void PathGeometrySink::move_to(float x, float y) { + if (fStarted) { + fPath.close(); + fStarted = false; + } + fCurrent = SkPoint::Make(SkFloatToScalar(x), SkFloatToScalar(y)); } -void SkPathWrapper::curve_to(float cx0, float cy0, float cx1, float cy1, float x, float y) { - path_.cubicTo(cx0, cy0, cx1, cy1, x, y); + +void PathGeometrySink::line_to(float x, float y) { + SkPoint pt0 = SkPoint::Make(SkFloatToScalar(x), SkFloatToScalar(y)); + if (current_is_not(pt0)) { + going_to(pt0); + fPath.lineTo(pt0); + } } -void SkPathWrapper::close() { path_.close(); } +void PathGeometrySink::quad_to(float cx0, float cy0, float x, float y) { + SkPoint pt0 = SkPoint::Make(SkFloatToScalar(cx0), SkFloatToScalar(cy0)); + SkPoint pt1 = SkPoint::Make(SkFloatToScalar(x), SkFloatToScalar(y)); + if (current_is_not(pt0) || current_is_not(pt1)) { + going_to(pt1); + fPath.quadTo(pt0, pt1); + } +} +void PathGeometrySink::curve_to(float cx0, float cy0, float cx1, float cy1, float x, float y) { + SkPoint pt0 = SkPoint::Make(SkFloatToScalar(cx0), SkFloatToScalar(cy0)); + SkPoint pt1 = SkPoint::Make(SkFloatToScalar(cx1), SkFloatToScalar(cy1)); + SkPoint pt2 = SkPoint::Make(SkFloatToScalar(x), SkFloatToScalar(y)); + if (current_is_not(pt0) || current_is_not(pt1) || current_is_not(pt2)) { + going_to(pt2); + fPath.cubicTo(pt0, pt1, pt2); + } +} -SkPath SkPathWrapper::into_inner() && { return std::move(path_); } +void PathGeometrySink::close() { fPath.close(); } +SkPath PathGeometrySink::into_inner() && { return std::move(fPath); } -SkAxisWrapper::SkAxisWrapper(SkFontParameters::Variation::Axis axisArray[], size_t axisCount) +AxisWrapper::AxisWrapper(SkFontParameters::Variation::Axis axisArray[], size_t axisCount) : fAxisArray(axisArray), fAxisCount(axisCount) {} -bool SkAxisWrapper::populate_axis( +bool AxisWrapper::populate_axis( size_t i, uint32_t axisTag, float min, float def, float max, bool hidden) { if (i >= fAxisCount) { return false; @@ -112,7 +147,8 @@ bool SkAxisWrapper::populate_axis( return true; } -size_t SkAxisWrapper::size() const { return fAxisCount; } +size_t AxisWrapper::size() const { return fAxisCount; } +} // namespace sk_fontations int SkTypeface_Fontations::onGetUPEM() const { return fontations_ffi::units_per_em_or_zero(*fBridgeFontRef); @@ -223,17 +259,23 @@ class SkFontationsScalerContext : public SkScalerContext { SkScalerContextRec::PreMatrixScale::kVertical, &scale, &remainingMatrix)) { return false; } - SkPathWrapper pathWrapper; + sk_fontations::PathGeometrySink pathWrapper; + fontations_ffi::BridgeScalerMetrics scalerMetrics; if (!fontations_ffi::get_path(fBridgeFontRef, glyph.getGlyphID(), scale.y(), fBridgeNormalizedCoords, - pathWrapper)) { + pathWrapper, + scalerMetrics)) { return false; } - *path = std::move(pathWrapper).into_inner(); + if (scalerMetrics.has_overlaps) { + // See SkScalerContext_FreeType_Base::generateGlyphPath. + Simplify(*path, path); + AsWinding(*path, path); + } *path = path->makeTransform(remainingMatrix); return true; } @@ -322,6 +364,6 @@ int SkTypeface_Fontations::onGetVariationDesignPosition( int SkTypeface_Fontations::onGetVariationDesignParameters( SkFontParameters::Variation::Axis parameters[], int parameterCount) const { - SkAxisWrapper axisWrapper(parameters, parameterCount); + sk_fontations::AxisWrapper axisWrapper(parameters, parameterCount); return fontations_ffi::populate_axes(*fBridgeFontRef, axisWrapper); } diff --git a/src/ports/SkTypeface_fontations_priv.h b/src/ports/SkTypeface_fontations_priv.h index bcf42eb1bf26..244bda1b478f 100644 --- a/src/ports/SkTypeface_fontations_priv.h +++ b/src/ports/SkTypeface_fontations_priv.h @@ -20,9 +20,11 @@ class SkStreamAsset; -/** SkPathWrapper implementation of PathWrapper FFI C++ interface which allows Rust to call back +namespace sk_fontations { + +/** Implementation of PathWrapper FFI C++ interface which allows Rust to call back * into C++ without exposing Skia types on the interface, see skpath_bridge.h. */ -class SkPathWrapper : public fontations_ffi::PathWrapper { +class PathGeometrySink : public fontations_ffi::PathWrapper { public: /* From fontations_ffi::PathWrapper. */ void move_to(float x, float y) override; @@ -34,15 +36,20 @@ class SkPathWrapper : public fontations_ffi::PathWrapper { SkPath into_inner() &&; private: - SkPath path_; + void going_to(SkPoint point); + bool current_is_not(SkPoint); + + SkPath fPath; + bool fStarted; + SkPoint fCurrent; }; -/** SkAxiswrapper implementation of AxisWrapper FFI C++ interface, allowing Rust to call back into +/** Implementation of AxisWrapper FFI C++ interface, allowing Rust to call back into * C++ for populating variable axis availability information, see skpath_bridge.h. */ -class SkAxisWrapper : public fontations_ffi::AxisWrapper { +class AxisWrapper : public fontations_ffi::AxisWrapper { public: - SkAxisWrapper(SkFontParameters::Variation::Axis axisArray[], size_t axisCount); - SkAxisWrapper() = delete; + AxisWrapper(SkFontParameters::Variation::Axis axisArray[], size_t axisCount); + AxisWrapper() = delete; /* From fontations_ffi::AxisWrapper. */ bool populate_axis( size_t i, uint32_t axisTag, float min, float def, float max, bool hidden) override; @@ -53,6 +60,7 @@ class SkAxisWrapper : public fontations_ffi::AxisWrapper { size_t fAxisCount; }; +} // namespace sk_fontations /** SkTypeface implementation based on Google Fonts Fontations Rust libraries. */ class SkTypeface_Fontations : public SkTypeface { diff --git a/src/ports/fontations/BUILD.bazel b/src/ports/fontations/BUILD.bazel index 5b8363ea0df6..a4227a8f70ce 100644 --- a/src/ports/fontations/BUILD.bazel +++ b/src/ports/fontations/BUILD.bazel @@ -3,7 +3,6 @@ load( "exports_files_legacy", "skia_cc_deps", "skia_cc_library", - "skia_filegroup", ) load("@rules_rust//rust:defs.bzl", "rust_static_library") load("//bazel:rust_cxx_bridge.bzl", "rust_cxx_bridge") @@ -36,20 +35,12 @@ skia_cc_library( ], ) -skia_filegroup( - name = "srcs", - srcs = [ - ":fontations_ffi/filegroup", - ], - visibility = ["//src/ports:__pkg__"], -) - skia_cc_deps( name = "deps", visibility = ["//src/ports:__pkg__"], deps = [ ":bridge_rust_side", - ":fontations_ffi/include", + ":fontations_ffi", ":path_bridge_include", ], ) diff --git a/src/ports/fontations/src/ffi.rs b/src/ports/fontations/src/ffi.rs index d1745cd2f98b..0e93e717f6a1 100644 --- a/src/ports/fontations/src/ffi.rs +++ b/src/ports/fontations/src/ffi.rs @@ -15,6 +15,7 @@ use skrifa::{ use std::pin::Pin; use crate::ffi::AxisWrapper; +use crate::ffi::BridgeScalerMetrics; use crate::ffi::PathWrapper; fn lookup_glyph_or_zero(font_ref: &BridgeFontRef, codepoint: u32) -> u16 { @@ -66,6 +67,7 @@ fn get_path( size: f32, coords: &BridgeNormalizedCoords, path_wrapper: Pin<&mut PathWrapper>, + scaler_metrics: &mut BridgeScalerMetrics, ) -> bool { font_ref .with_font(|f| { @@ -78,7 +80,13 @@ fn get_path( let mut pen_dump = PathWrapperPen { path_wrapper: path_wrapper, }; - scaler.outline(GlyphId::new(glyph_id), &mut pen_dump).ok() + match scaler.outline(GlyphId::new(glyph_id), &mut pen_dump) { + Err(_) => None, + Ok(metrics) => { + scaler_metrics.has_overlaps = metrics.has_overlaps; + Some(()) + } + } }) .is_some() } @@ -363,6 +371,10 @@ mod ffi { value: f32, } + struct BridgeScalerMetrics { + has_overlaps: bool, + } + extern "Rust" { type BridgeFontRef<'a>; @@ -383,6 +395,7 @@ mod ffi { size: f32, coords: &BridgeNormalizedCoords, path_wrapper: Pin<&mut PathWrapper>, + scaler_metrics: &mut BridgeScalerMetrics, ) -> bool; fn advance_width_or_zero( font_ref: &BridgeFontRef, diff --git a/src/shaders/BUILD.bazel b/src/shaders/BUILD.bazel index bdd76176c33d..c5897cb3ecb6 100644 --- a/src/shaders/BUILD.bazel +++ b/src/shaders/BUILD.bazel @@ -18,12 +18,15 @@ SHADER_FILES = [ "SkCoordClampShader.h", "SkEmptyShader.cpp", "SkEmptyShader.h", + "SkGainmapShader.cpp", "SkImageShader.cpp", "SkImageShader.h", "SkLocalMatrixShader.cpp", "SkLocalMatrixShader.h", "SkPerlinNoiseShaderImpl.cpp", "SkPerlinNoiseShaderImpl.h", + "SkRuntimeShader.cpp", + "SkRuntimeShader.h", "SkShader.cpp", "SkShaderBase.cpp", "SkShaderBase.h", @@ -55,29 +58,13 @@ bool_flag( default = True, ) -skia_filegroup( - name = "sksl_srcs", - srcs = [ - "SkGainmapShader.cpp", - "SkRuntimeShader.cpp", - ], -) - -skia_filegroup( - name = "sksl_hdrs", - srcs = ["SkRuntimeShader.h"], -) - skia_filegroup( name = "srcs", srcs = [ ":shader_srcs", ":skpicture_srcs", "//src/shaders/gradients:srcs", - ] + select({ - "//src/sksl:needs_sksl": [":sksl_srcs"], - "//conditions:default": [], - }), + ], visibility = ["//src:__pkg__"], ) @@ -87,9 +74,6 @@ skia_filegroup( ":shader_hdrs", ":skpicture_hdrs", "//src/shaders/gradients:private_hdrs", - ] + select({ - "//src/sksl:needs_sksl": [":sksl_hdrs"], - "//conditions:default": [], - }), + ], visibility = ["//src:__pkg__"], ) diff --git a/src/shaders/SkBlendShader.cpp b/src/shaders/SkBlendShader.cpp index 03c5a2f7ef75..0bcb3b9606e7 100644 --- a/src/shaders/SkBlendShader.cpp +++ b/src/shaders/SkBlendShader.cpp @@ -11,6 +11,7 @@ #include "include/core/SkBlender.h" #include "include/core/SkData.h" #include "include/core/SkFlattenable.h" +#include "include/effects/SkRuntimeEffect.h" #include "src/base/SkArenaAlloc.h" #include "src/core/SkBlendModePriv.h" #include "src/core/SkBlenderBase.h" @@ -19,14 +20,10 @@ #include "src/core/SkRasterPipelineOpContexts.h" #include "src/core/SkRasterPipelineOpList.h" #include "src/core/SkReadBuffer.h" +#include "src/core/SkRuntimeEffectPriv.h" #include "src/core/SkWriteBuffer.h" #include "src/shaders/SkShaderBase.h" -#if defined(SK_ENABLE_SKSL) -#include "include/effects/SkRuntimeEffect.h" -#include "src/core/SkRuntimeEffectPriv.h" -#endif - #include sk_sp SkBlendShader::CreateProc(SkReadBuffer& buffer) { @@ -130,7 +127,6 @@ sk_sp SkShaders::Blend(sk_sp blender, return sk_make_sp(mode.value(), std::move(dst), std::move(src)); } -#ifdef SK_ENABLE_SKSL // This isn't a built-in blend mode; we might as well use a runtime effect to evaluate it. static SkRuntimeEffect* sBlendEffect = SkMakeRuntimeEffect(SkRuntimeEffect::MakeForShader, "uniform shader s, d;" @@ -141,10 +137,6 @@ sk_sp SkShaders::Blend(sk_sp blender, ); SkRuntimeEffect::ChildPtr children[] = {std::move(src), std::move(dst), std::move(blender)}; return sBlendEffect->makeShader(/*uniforms=*/{}, children); -#else - // We need SkSL to render this blend. - return nullptr; -#endif } void SkRegisterBlendShaderFlattenable() { diff --git a/src/shaders/SkLocalMatrixShader.h b/src/shaders/SkLocalMatrixShader.h index 62ea398e2e5f..00077764c1cf 100644 --- a/src/shaders/SkLocalMatrixShader.h +++ b/src/shaders/SkLocalMatrixShader.h @@ -13,6 +13,8 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkShader.h" #include "include/core/SkTypes.h" +#include "src/image/SkImage_Base.h" +#include "src/shaders/SkImageShader.h" #include "src/shaders/SkShaderBase.h" #include @@ -31,10 +33,23 @@ class SkLocalMatrixShader final : public SkShaderBase { static std::enable_if_t, sk_sp> MakeWrapped(const SkMatrix* localMatrix, Args&&... args) { auto t = sk_make_sp(std::forward(args)...); - if (!localMatrix || localMatrix->isIdentity()) { + bool isGraphiteImageShader = false; + if (t->type() == SkShaderBase::ShaderType::kImage) { + auto imgShader = static_cast(as_SB(t)); + auto imgBase = as_IB(imgShader->image()); + SkASSERT(imgBase); + isGraphiteImageShader = imgBase->isGraphiteBacked(); + } + // In Graphite we can safely handle a local matrix shader with identity by not emitting code + // for it. Additionally, Graphite uses the local matrix shader to add the matrix for the + // origin y-flip if needed. Thus we always emit the local matrix shader here so we can + // connect the y-flip, but it doesn't hurt us if there is no flip. + if ((!localMatrix || localMatrix->isIdentity()) && !isGraphiteImageShader) { return t; } - return sk_make_sp(sk_sp(std::move(t)), *localMatrix); + + return sk_make_sp(sk_sp(std::move(t)), + localMatrix ? *localMatrix : SkMatrix::I()); } SkLocalMatrixShader(sk_sp wrapped, const SkMatrix& localMatrix) diff --git a/src/sksl/BUILD.bazel b/src/sksl/BUILD.bazel index 4d160bfe9fa5..ac321eddfdc5 100644 --- a/src/sksl/BUILD.bazel +++ b/src/sksl/BUILD.bazel @@ -107,15 +107,6 @@ skia_filegroup( ], ) -selects.config_setting_group( - name = "needs_sksl", - match_any = [ - "//src/gpu:has_ganesh_backend", - ":enable_sksl_true", - ], - visibility = ["//:__subpackages__"], -) - selects.config_setting_group( name = "use_sksl_gpu_srcs", match_any = [ @@ -125,11 +116,6 @@ selects.config_setting_group( visibility = ["//:__subpackages__"], ) -bool_flag( - name = "enable_sksl", - default = False, -) - bool_flag( name = "enable_skslc", default = False, diff --git a/src/sksl/SkSLAnalysis.h b/src/sksl/SkSLAnalysis.h index b7fec4bc3609..7f2f8c0f61b7 100644 --- a/src/sksl/SkSLAnalysis.h +++ b/src/sksl/SkSLAnalysis.h @@ -242,8 +242,8 @@ void DoFinalizationChecks(const Program& program); /** * Error checks compute shader in/outs and returns a vector containing them ordered by location. */ -skia_private::TArray GetComputeShaderMainParams( - const Context& context, const Program& program); +skia_private::TArray GetComputeShaderMainParams(const Context& context, + const Program& program); /** * Tracks the symbol table stack, in conjunction with a ProgramVisitor. Inside `visitStatement`, diff --git a/src/sksl/SkSLBuiltinTypes.cpp b/src/sksl/SkSLBuiltinTypes.cpp index 0860f6a3c8b1..5521f6c6d641 100644 --- a/src/sksl/SkSLBuiltinTypes.cpp +++ b/src/sksl/SkSLBuiltinTypes.cpp @@ -95,12 +95,12 @@ BuiltinTypes::BuiltinTypes() , fMat4x2(Type::MakeAliasType("mat4x2", *fFloat4x2)) , fMat4x3(Type::MakeAliasType("mat4x3", *fFloat4x3)) , fMat4x4(Type::MakeAliasType("mat4x4", *fFloat4x4)) - , fTexture2D(Type::MakeTextureType("texture2D", - SpvDim2D, - /*isDepth=*/false, - /*isArrayedTexture=*/false, - /*isMultisampled=*/false, - Type::TextureAccess::kSample)) + , fTexture2D_sample(Type::MakeTextureType("$texture2D_sample", + SpvDim2D, + /*isDepth=*/false, + /*isArrayedTexture=*/false, + /*isMultisampled=*/false, + Type::TextureAccess::kSample)) , fTextureExternalOES(Type::MakeTextureType("textureExternalOES", SpvDim2D, /*isDepth=*/false, @@ -113,12 +113,12 @@ BuiltinTypes::BuiltinTypes() /*isArrayedTexture=*/false, /*isMultisampled=*/false, Type::TextureAccess::kSample)) - , fReadWriteTexture2D(Type::MakeTextureType("readWriteTexture2D", - SpvDim2D, - /*isDepth=*/false, - /*isArrayedTexture=*/false, - /*isMultisampled=*/false, - Type::TextureAccess::kReadWrite)) + , fTexture2D(Type::MakeTextureType("texture2D", + SpvDim2D, + /*isDepth=*/false, + /*isArrayedTexture=*/false, + /*isMultisampled=*/false, + Type::TextureAccess::kReadWrite)) , fReadOnlyTexture2D(Type::MakeTextureType("readonlyTexture2D", SpvDim2D, /*isDepth=*/false, @@ -134,19 +134,19 @@ BuiltinTypes::BuiltinTypes() , fGenTexture2D(Type::MakeGenericType("$genTexture2D", {fReadOnlyTexture2D.get(), fWriteOnlyTexture2D.get(), - fReadWriteTexture2D.get()}, - fReadWriteTexture2D.get())) + fTexture2D.get()}, + fTexture2D.get())) , fReadableTexture2D(Type::MakeGenericType("$readableTexture2D", {fReadOnlyTexture2D.get(), fInvalid.get(), - fReadWriteTexture2D.get()}, - fReadWriteTexture2D.get())) + fTexture2D.get()}, + fTexture2D.get())) , fWritableTexture2D(Type::MakeGenericType("$writableTexture2D", {fInvalid.get(), fWriteOnlyTexture2D.get(), - fReadWriteTexture2D.get()}, - fReadWriteTexture2D.get())) - , fSampler2D(Type::MakeSamplerType("sampler2D", *fTexture2D)) + fTexture2D.get()}, + fTexture2D.get())) + , fSampler2D(Type::MakeSamplerType("sampler2D", *fTexture2D_sample)) , fSamplerExternalOES(Type::MakeSamplerType("samplerExternalOES", *fTextureExternalOES)) , fSampler2DRect(Type::MakeSamplerType("sampler2DRect", *fTexture2DRect)) diff --git a/src/sksl/SkSLBuiltinTypes.h b/src/sksl/SkSLBuiltinTypes.h index 75da7596591d..f242b5efd2c9 100644 --- a/src/sksl/SkSLBuiltinTypes.h +++ b/src/sksl/SkSLBuiltinTypes.h @@ -108,11 +108,13 @@ class BuiltinTypes { const std::unique_ptr fMat4x3; const std::unique_ptr fMat4x4; - const std::unique_ptr fTexture2D; + // These texture types use `sample` access. + const std::unique_ptr fTexture2D_sample; const std::unique_ptr fTextureExternalOES; const std::unique_ptr fTexture2DRect; - const std::unique_ptr fReadWriteTexture2D; + // These texture types use `read`/`write` access. + const std::unique_ptr fTexture2D; const std::unique_ptr fReadOnlyTexture2D; const std::unique_ptr fWriteOnlyTexture2D; diff --git a/src/sksl/SkSLCompiler.cpp b/src/sksl/SkSLCompiler.cpp index 286fbb9184c7..3188ebe28851 100644 --- a/src/sksl/SkSLCompiler.cpp +++ b/src/sksl/SkSLCompiler.cpp @@ -280,7 +280,7 @@ std::unique_ptr Compiler::convertIdentifier(Position pos, std::strin } } -bool Compiler::optimizeModuleBeforeMinifying(ProgramKind kind, Module& module) { +bool Compiler::optimizeModuleBeforeMinifying(ProgramKind kind, Module& module, bool shrinkSymbols) { SkASSERT(this->errorCount() == 0); auto m = SkSL::ModuleLoader::Get(); @@ -293,11 +293,14 @@ bool Compiler::optimizeModuleBeforeMinifying(ProgramKind kind, Module& module) { std::unique_ptr usage = Analysis::GetUsage(module); - // Assign shorter names to symbols as long as it won't change the external meaning of the code. - Transform::RenamePrivateSymbols(this->context(), module, usage.get(), kind); + if (shrinkSymbols) { + // Assign shorter names to symbols as long as it won't change the external meaning of the + // code. + Transform::RenamePrivateSymbols(this->context(), module, usage.get(), kind); - // Replace constant variables with their literal values to save space. - Transform::ReplaceConstVarsWithLiterals(module, usage.get()); + // Replace constant variables with their literal values to save space. + Transform::ReplaceConstVarsWithLiterals(module, usage.get()); + } // Remove any unreachable code. Transform::EliminateUnreachableCode(module, usage.get()); @@ -593,7 +596,7 @@ bool Compiler::toMetal(Program& program, std::string* out) { static bool validate_wgsl(ErrorReporter& reporter, const std::string& wgsl, std::string* warnings) { // Verify that the WGSL we produced is valid. tint::Source::File srcFile("", wgsl); - tint::Program program(tint::reader::wgsl::Parse(&srcFile)); + tint::Program program(tint::wgsl::reader::Parse(&srcFile)); if (program.Diagnostics().contains_errors()) { // The program isn't valid WGSL. In debug, report the error via SkDEBUGFAIL. We also append diff --git a/src/sksl/SkSLCompiler.h b/src/sksl/SkSLCompiler.h index 0959ae376d06..dc7fb2e5b8c2 100644 --- a/src/sksl/SkSLCompiler.h +++ b/src/sksl/SkSLCompiler.h @@ -177,7 +177,7 @@ class SK_API Compiler { bool shouldInline); /** Optimize a module at minification time, before writing it out. */ - bool optimizeModuleBeforeMinifying(ProgramKind kind, Module& module); + bool optimizeModuleBeforeMinifying(ProgramKind kind, Module& module, bool shrinkSymbols); const Module* moduleForProgramKind(ProgramKind kind); diff --git a/src/sksl/SkSLIntrinsicList.h b/src/sksl/SkSLIntrinsicList.h index b968f326e691..7ff8071543a1 100644 --- a/src/sksl/SkSLIntrinsicList.h +++ b/src/sksl/SkSLIntrinsicList.h @@ -69,7 +69,6 @@ SKSL_INTRINSIC(lessThan) \ SKSL_INTRINSIC(log2) \ SKSL_INTRINSIC(log) \ - SKSL_INTRINSIC(makeSampler2D) \ SKSL_INTRINSIC(matrixCompMult) \ SKSL_INTRINSIC(matrixInverse) \ SKSL_INTRINSIC(max) \ diff --git a/src/sksl/SkSLLexer.cpp b/src/sksl/SkSLLexer.cpp index 10c1108c09f8..ae39359f2373 100644 --- a/src/sksl/SkSLLexer.cpp +++ b/src/sksl/SkSLLexer.cpp @@ -13,13 +13,14 @@ namespace SkSL { using State = uint16_t; static constexpr uint8_t kInvalidChar = 18; -static constexpr int8_t kMappings[118] = { +static constexpr uint8_t kMappings[118] = { 1, 2, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 3, 5, 6, 7, 8, 3, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 23, 23, 24, 25, 26, 27, 28, 29, 3, 30, 30, 31, 32, 33, 30, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 34, 37, 34, 34, 38, 34, 34, 39, 3, 40, 41, 42, 3, 43, 44, 45, 46, 47, 48, 49, 50, 51, 34, 52, 53, - 54, 55, 56, 57, 34, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70}; + 54, 55, 56, 57, 34, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, +}; using IndexEntry = int16_t; struct FullEntry { State data[71]; @@ -741,7 +742,7 @@ static constexpr IndexEntry kIndices[] = { 291, 292, 293, 294, 295, 296, 44, 297, 298, 299, 300, 301, 302, 303, 44, 0, 304, 0, 0, 0, 0, }; -State get_transition(int transition, int state) { +static State get_transition(uint8_t transition, State state) { IndexEntry index = kIndices[state]; if (index < 0) { return kFull[~index].data[transition]; @@ -753,30 +754,32 @@ State get_transition(int transition, int state) { v *= 9; return (entry.values >> v) & 511; } -static const int8_t kAccepts[417] = { - -1, -1, 88, 88, 91, 67, 72, 91, 42, 40, 40, 40, 40, 36, 40, 40, 40, 40, 37, 40, 40, 40, - 27, 57, 81, 62, 66, 86, 43, 44, 55, 79, 53, 51, 77, 50, 54, 52, 78, 49, 1, -1, -1, 1, - 56, -1, -1, 90, 89, 80, 2, 1, 1, -1, -1, 1, -1, -1, 1, 2, 3, -1, -1, 1, 3, 2, - 2, -1, 2, 2, 2, 69, 87, 74, 58, 82, 76, 70, 71, 73, 75, 59, 83, 68, 41, 41, 47, 48, - 61, 85, 65, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 14, 41, - 41, 41, 41, 30, 41, 41, 41, 12, 41, 41, 41, 41, 41, 41, 22, 41, 41, 41, 41, 15, 41, 41, - 41, 41, 41, 41, 13, 41, 41, 41, 41, 41, 16, 10, 41, 41, 41, 41, 41, 41, 41, 41, 41, 7, - 41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 5, 41, 41, 41, 41, 41, 23, 41, 8, 41, - 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 33, 41, 41, 41, 41, 6, 18, 41, 41, 41, 25, - 41, 41, 20, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 32, 41, 41, 41, 35, 41, 41, 41, 41, 41, 41, 34, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 26, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 24, 41, 41, 19, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 28, 41, 41, 41, 17, 41, 41, 41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 31, 41, 41, 41, 41, 41, 41, 41, 41, 11, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 4, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 21, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 9, 41, - 41, 41, 41, 41, 41, 41, 38, 41, 41, 41, 41, 41, 41, 41, 29, 45, 60, 84, 64, 46, 63, +static const uint8_t kAccepts[417] = { + 255, 255, 88, 88, 91, 67, 72, 91, 42, 40, 40, 40, 40, 36, 40, 40, 40, 40, 37, 40, + 40, 40, 27, 57, 81, 62, 66, 86, 43, 44, 55, 79, 53, 51, 77, 50, 54, 52, 78, 49, + 1, 255, 255, 1, 56, 255, 255, 90, 89, 80, 2, 1, 1, 255, 255, 1, 255, 255, 1, 2, + 3, 255, 255, 1, 3, 2, 2, 255, 2, 2, 2, 69, 87, 74, 58, 82, 76, 70, 71, 73, + 75, 59, 83, 68, 41, 41, 47, 48, 61, 85, 65, 41, 41, 39, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 14, 41, 41, 41, 41, 30, 41, 41, 41, 12, 41, 41, + 41, 41, 41, 41, 22, 41, 41, 41, 41, 15, 41, 41, 41, 41, 41, 41, 13, 41, 41, 41, + 41, 41, 16, 10, 41, 41, 41, 41, 41, 41, 41, 41, 41, 7, 41, 41, 41, 41, 41, 41, + 39, 41, 41, 41, 41, 41, 5, 41, 41, 41, 41, 41, 23, 41, 8, 41, 41, 41, 41, 41, + 39, 41, 41, 41, 41, 41, 41, 33, 41, 41, 41, 41, 6, 18, 41, 41, 41, 25, 41, 41, + 20, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 32, 41, 41, 41, 35, 41, 41, 41, 41, 41, 41, 34, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 26, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 24, 41, 41, + 19, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 28, 41, 41, 41, 17, 41, 41, 41, 41, 41, 41, 41, 41, 39, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 39, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 31, 41, 41, 41, 41, + 41, 41, 41, 41, 11, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 4, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 21, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 9, 41, 41, 41, 41, 41, + 41, 41, 38, 41, 41, 41, 41, 41, 41, 41, 29, 45, 60, 84, 64, 46, 63, }; Token Lexer::next() { - // note that we cheat here: normally a lexer needs to worry about the case + // Note that we cheat here: normally a lexer needs to worry about the case // where a token has a prefix which is not itself a valid token - for instance, // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid // tokens. Our grammar doesn't have this property, so we can simplify the logic @@ -785,7 +788,7 @@ Token Lexer::next() { State state = 1; for (;;) { if (fOffset >= (int32_t)fText.length()) { - if (startOffset == (int32_t)fText.length() || kAccepts[state] == -1) { + if (startOffset == (int32_t)fText.length() || kAccepts[state] == 255) { return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0); } break; diff --git a/src/sksl/SkSLMemoryLayout.h b/src/sksl/SkSLMemoryLayout.h index ff898983aeeb..d21bb7fb0e7c 100644 --- a/src/sksl/SkSLMemoryLayout.h +++ b/src/sksl/SkSLMemoryLayout.h @@ -28,18 +28,41 @@ class MemoryLayout { kMetal, // WebGPU Shading Language buffer layout constraints for the uniform address space. - kWGSLUniform, + kWGSLUniform_Base, // treats f16 as a full 32-bit float + kWGSLUniform_EnableF16, // treats f16 as a 16-bit half float // WebGPU Shading Language buffer layout constraints for the storage address space. - kWGSLStorage, + kWGSLStorage_Base, + kWGSLStorage_EnableF16, }; - MemoryLayout(Standard std) - : fStd(std) {} + MemoryLayout(Standard std) : fStd(std) {} - bool isWGSL() const { return fStd == Standard::kWGSLUniform || fStd == Standard::kWGSLStorage; } + bool isWGSL_Base() const { + return fStd == Standard::kWGSLUniform_Base || + fStd == Standard::kWGSLStorage_Base; + } + + bool isWGSL_F16() const { + return fStd == Standard::kWGSLUniform_EnableF16 || + fStd == Standard::kWGSLStorage_EnableF16; + } + + bool isWGSL_Uniform() const { + return fStd == Standard::kWGSLUniform_Base || + fStd == Standard::kWGSLUniform_EnableF16; + } - bool isMetal() const { return fStd == Standard::kMetal; } + bool isWGSL() const { + return fStd == Standard::kWGSLUniform_Base || + fStd == Standard::kWGSLStorage_Base || + fStd == Standard::kWGSLUniform_EnableF16 || + fStd == Standard::kWGSLStorage_EnableF16; + } + + bool isMetal() const { + return fStd == Standard::kMetal; + } /** * WGSL and std140 require various types of variables (structs, arrays, and matrices) in the @@ -54,7 +77,7 @@ class MemoryLayout { } // WGSL uniform matrix layout is simply the alignment of the matrix columns and // doesn't have a 16-byte multiple alignment constraint. - if (fStd == Standard::kWGSLUniform && type != Type::TypeKind::kMatrix) { + if (this->isWGSL_Uniform() && type != Type::TypeKind::kMatrix) { return roundUp16(raw); } return raw; @@ -74,15 +97,19 @@ class MemoryLayout { case Type::TypeKind::kScalar: case Type::TypeKind::kAtomic: return this->size(type); + case Type::TypeKind::kVector: return GetVectorAlignment(this->size(type.componentType()), type.columns()); + case Type::TypeKind::kMatrix: return this->roundUpIfNeeded( GetVectorAlignment(this->size(type.componentType()), type.rows()), type.typeKind()); + case Type::TypeKind::kArray: return this->roundUpIfNeeded(this->alignment(type.componentType()), type.typeKind()); + case Type::TypeKind::kStruct: { size_t result = 0; for (const auto& f : type.fields()) { @@ -94,7 +121,7 @@ class MemoryLayout { return this->roundUpIfNeeded(result, type.typeKind()); } default: - SK_ABORT("cannot determine alignment of type %s", type.displayName().c_str()); + SK_ABORT("cannot determine alignment of type '%s'", type.displayName().c_str()); } } @@ -106,6 +133,7 @@ class MemoryLayout { switch (type.typeKind()) { case Type::TypeKind::kMatrix: return this->alignment(type); + case Type::TypeKind::kArray: { int stride = this->size(type.componentType()); if (stride > 0) { @@ -117,7 +145,7 @@ class MemoryLayout { return stride; } default: - SK_ABORT("type does not have a stride"); + SK_ABORT("type '%s' does not have a stride", type.displayName().c_str()); } } @@ -128,27 +156,30 @@ class MemoryLayout { switch (type.typeKind()) { case Type::TypeKind::kScalar: if (type.isBoolean()) { - if (this->isWGSL()) { - return 0; - } - return 1; + return this->isWGSL() ? 0 : 1; + } + if (this->isMetal() && !type.highPrecision() && type.isNumber()) { + return 2; } - if ((this->isMetal() || this->isWGSL()) && !type.highPrecision() && - type.isNumber()) { + if (this->isWGSL_F16() && !type.highPrecision() && type.isFloat()) { return 2; } return 4; + case Type::TypeKind::kAtomic: // Our atomic types (currently atomicUint) always occupy 4 bytes. return 4; + case Type::TypeKind::kVector: if (this->isMetal() && type.columns() == 3) { return 4 * this->size(type.componentType()); } return type.columns() * this->size(type.componentType()); + case Type::TypeKind::kMatrix: // fall through case Type::TypeKind::kArray: return type.isUnsizedArray() ? 0 : (type.columns() * this->stride(type)); + case Type::TypeKind::kStruct: { size_t total = 0; for (const auto& f : type.fields()) { @@ -165,7 +196,7 @@ class MemoryLayout { return (total + alignment - 1) & ~(alignment - 1); } default: - SK_ABORT("cannot determine size of type %s", type.displayName().c_str()); + SK_ABORT("cannot determine size of type '%s'", type.displayName().c_str()); } } @@ -178,9 +209,8 @@ class MemoryLayout { return true; case Type::TypeKind::kScalar: - // bool and short are not host-shareable in WGSL. - return !this->isWGSL() || - (!type.isBoolean() && (type.isFloat() || type.highPrecision())); + // bool is not host-shareable in WGSL. + return this->isWGSL() ? !type.isBoolean() : true; case Type::TypeKind::kVector: case Type::TypeKind::kMatrix: diff --git a/src/sksl/SkSLModuleLoader.cpp b/src/sksl/SkSLModuleLoader.cpp index 6d1127e67359..f27e6a59e700 100644 --- a/src/sksl/SkSLModuleLoader.cpp +++ b/src/sksl/SkSLModuleLoader.cpp @@ -63,7 +63,7 @@ #include "src/sksl/generated/sksl_public.minified.sksl" #include "src/sksl/generated/sksl_rt_shader.minified.sksl" #include "src/sksl/generated/sksl_vert.minified.sksl" - #if defined(SK_GRAPHITE) + #if defined(SK_GRAPHITE) || GR_TEST_UTILS #include "src/sksl/generated/sksl_graphite_frag.minified.sksl" #include "src/sksl/generated/sksl_graphite_vert.minified.sksl" #endif @@ -75,7 +75,7 @@ #include "src/sksl/generated/sksl_public.unoptimized.sksl" #include "src/sksl/generated/sksl_rt_shader.unoptimized.sksl" #include "src/sksl/generated/sksl_vert.unoptimized.sksl" - #if defined(SK_GRAPHITE) + #if defined(SK_GRAPHITE) || GR_TEST_UTILS #include "src/sksl/generated/sksl_graphite_frag.unoptimized.sksl" #include "src/sksl/generated/sksl_graphite_vert.unoptimized.sksl" #endif @@ -133,8 +133,8 @@ static constexpr BuiltinTypePtr kPrivateTypes[] = { TYPE(SubpassInput), TYPE(SubpassInputMS), TYPE(Sampler), - TYPE(Texture2D), - TYPE(ReadWriteTexture2D), TYPE(ReadOnlyTexture2D), TYPE(WriteOnlyTexture2D), + TYPE(Texture2D_sample), + TYPE(Texture2D), TYPE(ReadOnlyTexture2D), TYPE(WriteOnlyTexture2D), TYPE(GenTexture2D), TYPE(ReadableTexture2D), TYPE(WritableTexture2D), TYPE(AtomicUInt), @@ -197,12 +197,6 @@ ModuleLoader::Impl::Impl() { this->makeRootSymbolTable(); } -static void add_compute_type_aliases(SkSL::SymbolTable* symbols, const SkSL::BuiltinTypes& types) { - // A `texture2D` in a compute shader should generally mean "read-write" texture access, not - // "sample" texture access. Remap the name `texture2D` to point to `readWriteTexture2D`. - symbols->inject(Type::MakeAliasType("texture2D", *types.fReadWriteTexture2D)); -} - static std::unique_ptr compile_and_shrink(SkSL::Compiler* compiler, ProgramKind kind, const char* moduleName, @@ -366,14 +360,12 @@ const Module* ModuleLoader::loadComputeModule(SkSL::Compiler* compiler) { ProgramKind::kCompute, MODULE_DATA(sksl_compute), gpuModule); - add_compute_type_aliases(fModuleLoader.fComputeModule->fSymbols.get(), - this->builtinTypes()); } return fModuleLoader.fComputeModule.get(); } const Module* ModuleLoader::loadGraphiteFragmentModule(SkSL::Compiler* compiler) { -#if defined(SK_GRAPHITE) +#if defined(SK_GRAPHITE) || GR_TEST_UTILS if (!fModuleLoader.fGraphiteFragmentModule) { const Module* fragmentModule = this->loadFragmentModule(compiler); fModuleLoader.fGraphiteFragmentModule = compile_and_shrink(compiler, @@ -388,7 +380,7 @@ const Module* ModuleLoader::loadGraphiteFragmentModule(SkSL::Compiler* compiler) } const Module* ModuleLoader::loadGraphiteVertexModule(SkSL::Compiler* compiler) { -#if defined(SK_GRAPHITE) +#if defined(SK_GRAPHITE) || GR_TEST_UTILS if (!fModuleLoader.fGraphiteVertexModule) { const Module* vertexModule = this->loadVertexModule(compiler); fModuleLoader.fGraphiteVertexModule = compile_and_shrink(compiler, diff --git a/src/sksl/SkSLParser.cpp b/src/sksl/SkSLParser.cpp index 69ab6c46871a..04b3a07d9312 100644 --- a/src/sksl/SkSLParser.cpp +++ b/src/sksl/SkSLParser.cpp @@ -610,7 +610,7 @@ bool Parser::functionDeclarationEnd(Position start, SkSL::FunctionDeclaration* decl = nullptr; if (validParams) { - decl = SkSL::FunctionDeclaration::Convert(ThreadContext::Context(), + decl = SkSL::FunctionDeclaration::Convert(fCompiler.context(), this->rangeFrom(start), modifiers, this->text(name), @@ -1073,9 +1073,13 @@ SkSL::Layout Parser::layout() { {"blend_support_all_equations", SkSL::LayoutFlag::kBlendSupportAllEquations}, {"push_constant", SkSL::LayoutFlag::kPushConstant}, {"color", SkSL::LayoutFlag::kColor}, - {"spirv", SkSL::LayoutFlag::kSPIRV}, + {"vulkan", SkSL::LayoutFlag::kVulkan}, {"metal", SkSL::LayoutFlag::kMetal}, - {"wgsl", SkSL::LayoutFlag::kWGSL}, + {"webgpu", SkSL::LayoutFlag::kWebGPU}, + {"direct3d", SkSL::LayoutFlag::kDirect3D}, + {"rgba8", SkSL::LayoutFlag::kRGBA8}, + {"rgba32f", SkSL::LayoutFlag::kRGBA32F}, + {"r32f", SkSL::LayoutFlag::kR32F}, {"local_size_x", SkSL::LayoutFlag::kLocalSizeX}, {"local_size_y", SkSL::LayoutFlag::kLocalSizeY}, {"local_size_z", SkSL::LayoutFlag::kLocalSizeZ}, @@ -1250,7 +1254,11 @@ const Type* Parser::findType(Position pos, return context.fTypes.fPoison.get(); } } - return modifiers ? type->applyQualifiers(context, &modifiers->fFlags, modifiers->fPosition) + Position qualifierRange = modifiers->fPosition; + if (qualifierRange.startOffset() == qualifierRange.endOffset()) { + qualifierRange = this->rangeFrom(qualifierRange); + } + return modifiers ? type->applyQualifiers(context, &modifiers->fFlags, qualifierRange) : type; } diff --git a/src/sksl/SkSLPool.cpp b/src/sksl/SkSLPool.cpp index d35e8e64fa43..bbab1fad696c 100644 --- a/src/sksl/SkSLPool.cpp +++ b/src/sksl/SkSLPool.cpp @@ -9,7 +9,7 @@ #include "src/sksl/SkSLMemoryPool.h" #include "src/sksl/SkSLPool.h" -#define VLOG(...) // printf(__VA_ARGS__) +#define SkVLOG(...) // SkDEBUGF(__VA_ARGS__) namespace SkSL { @@ -31,13 +31,13 @@ Pool::~Pool() { set_thread_local_memory_pool(nullptr); } - VLOG("DELETE Pool:0x%016llX\n", (uint64_t)fMemPool.get()); + SkVLOG("DELETE Pool:0x%016llX\n", (uint64_t)fMemPool.get()); } std::unique_ptr Pool::Create() { auto pool = std::unique_ptr(new Pool); pool->fMemPool = MemoryPool::Make(); - VLOG("CREATE Pool:0x%016llX\n", (uint64_t)pool->fMemPool.get()); + SkVLOG("CREATE Pool:0x%016llX\n", (uint64_t)pool->fMemPool.get()); return pool; } @@ -46,13 +46,13 @@ bool Pool::IsAttached() { } void Pool::attachToThread() { - VLOG("ATTACH Pool:0x%016llX\n", (uint64_t)fMemPool.get()); + SkVLOG("ATTACH Pool:0x%016llX\n", (uint64_t)fMemPool.get()); SkASSERT(get_thread_local_memory_pool() == nullptr); set_thread_local_memory_pool(fMemPool.get()); } void Pool::detachFromThread() { - VLOG("DETACH Pool:0x%016llX\n", (uint64_t)memPool); + SkVLOG("DETACH Pool:0x%016llX\n", (uint64_t)memPool); SkASSERT(get_thread_local_memory_pool() == fMemPool.get()); set_thread_local_memory_pool(nullptr); } @@ -62,13 +62,13 @@ void* Pool::AllocMemory(size_t size) { MemoryPool* memPool = get_thread_local_memory_pool(); if (memPool) { void* ptr = memPool->allocate(size); - VLOG("ALLOC Pool:0x%016llX 0x%016llX\n", (uint64_t)memPool, (uint64_t)ptr); + SkVLOG("ALLOC Pool:0x%016llX 0x%016llX\n", (uint64_t)memPool, (uint64_t)ptr); return ptr; } // There's no pool attached. Allocate memory using the system allocator. void* ptr = ::operator new(size); - VLOG("ALLOC Pool:__________________ 0x%016llX\n", (uint64_t)ptr); + SkVLOG("ALLOC Pool:__________________ 0x%016llX\n", (uint64_t)ptr); return ptr; } @@ -76,13 +76,13 @@ void Pool::FreeMemory(void* ptr) { // Is a pool attached? MemoryPool* memPool = get_thread_local_memory_pool(); if (memPool) { - VLOG("FREE Pool:0x%016llX 0x%016llX\n", (uint64_t)memPool, (uint64_t)ptr); + SkVLOG("FREE Pool:0x%016llX 0x%016llX\n", (uint64_t)memPool, (uint64_t)ptr); memPool->release(ptr); return; } // There's no pool attached. Free it using the system allocator. - VLOG("FREE Pool:__________________ 0x%016llX\n", (uint64_t)ptr); + SkVLOG("FREE Pool:__________________ 0x%016llX\n", (uint64_t)ptr); ::operator delete(ptr); } diff --git a/src/sksl/SkSLProgramSettings.h b/src/sksl/SkSLProgramSettings.h index 4617ebba593f..dd27de0cd365 100644 --- a/src/sksl/SkSLProgramSettings.h +++ b/src/sksl/SkSLProgramSettings.h @@ -67,11 +67,6 @@ struct ProgramSettings { // allowed at the requested version. For instance, a valid program must have fully-unrollable // `for` loops at version 100, but any loop structure is allowed at version 300. SkSL::Version fMaxVersionAllowed = SkSL::Version::k100; - // If true, debug traces will contain the `trace_var` opcode. This opcode can cause the - // generated code to contain a lot of extra computations, because we need to explicitly compute - // every temporary value, even ones that would otherwise be optimized away entirely. The other - // debug opcodes are much less invasive on the generated code. - bool fAllowTraceVarInDebugTrace = true; // If true, SkSL will use a memory pool for all IR nodes when compiling a program. This is // usually a significant speed increase, but uses more memory, so it is a good idea for programs // that will be freed shortly after compilation. It can also be useful to disable this flag when @@ -81,9 +76,6 @@ struct ProgramSettings { // If true, VarDeclaration can be cloned for testing purposes. See VarDeclaration::clone for // more information. bool fAllowVarDeclarationCloneForTesting = false; - // If true, SPIR-V codegen restricted to a subset supported by Dawn. - // TODO(skia:13840, skia:14023): Remove this setting when Skia can use WGSL on Dawn. - bool fSPIRVDawnCompatMode = false; }; /** diff --git a/src/sksl/SkSLUtil.h b/src/sksl/SkSLUtil.h index 71497c1bf668..2b5c69a8917a 100644 --- a/src/sksl/SkSLUtil.h +++ b/src/sksl/SkSLUtil.h @@ -107,6 +107,7 @@ struct ShaderCaps { bool fBuiltinDeterminantSupport = true; // Used for specific driver bug work arounds + bool fCanUseVoidInSequenceExpressions = true; bool fCanUseMinAndAbsTogether = true; bool fCanUseFractForNegativeValues = true; bool fMustForceNegatedAtanParamToFloat = false; diff --git a/src/sksl/analysis/SkSLGetLoopUnrollInfo.cpp b/src/sksl/analysis/SkSLGetLoopUnrollInfo.cpp index 2da886d0ada5..70a2170ba34f 100644 --- a/src/sksl/analysis/SkSLGetLoopUnrollInfo.cpp +++ b/src/sksl/analysis/SkSLGetLoopUnrollInfo.cpp @@ -36,7 +36,7 @@ class Context; static constexpr int kLoopTerminationLimit = 100000; static int calculate_count(double start, double end, double delta, bool forwards, bool inclusive) { - if (forwards != (start < end)) { + if ((forwards && start > end) || (!forwards && start < end)) { // The loop starts in a completed state (the start has already advanced past the end). return 0; } @@ -56,15 +56,14 @@ static int calculate_count(double start, double end, double delta, bool forwards return (int)count; } -std::unique_ptr Analysis::GetLoopUnrollInfo( - const Context& context, - Position loopPos, - const ForLoopPositions& positions, - const Statement* loopInitializer, - std::unique_ptr* loopTest, - const Expression* loopNext, - const Statement* loopStatement, - ErrorReporter* errorPtr) { +std::unique_ptr Analysis::GetLoopUnrollInfo(const Context& context, + Position loopPos, + const ForLoopPositions& positions, + const Statement* loopInitializer, + std::unique_ptr* loopTest, + const Expression* loopNext, + const Statement* loopStatement, + ErrorReporter* errorPtr) { NoOpErrorReporter unused; ErrorReporter& errors = errorPtr ? *errorPtr : unused; @@ -177,7 +176,8 @@ std::unique_ptr Analysis::GetLoopUnrollInfo( errors.error(loopNext->fPosition, "invalid operator in loop expression"); return nullptr; } - } break; + break; + } case Expression::Kind::kPrefix: { const PrefixExpression& next = loopNext->as(); if (!is_loop_index(next.operand())) { @@ -191,7 +191,8 @@ std::unique_ptr Analysis::GetLoopUnrollInfo( errors.error(loopNext->fPosition, "invalid operator in loop expression"); return nullptr; } - } break; + break; + } case Expression::Kind::kPostfix: { const PostfixExpression& next = loopNext->as(); if (!is_loop_index(next.operand())) { @@ -205,7 +206,8 @@ std::unique_ptr Analysis::GetLoopUnrollInfo( errors.error(loopNext->fPosition, "invalid operator in loop expression"); return nullptr; } - } break; + break; + } default: errors.error(loopNext->fPosition, "invalid loop expression"); return nullptr; diff --git a/src/sksl/analysis/SkSLProgramUsage.cpp b/src/sksl/analysis/SkSLProgramUsage.cpp index 9b360cb1a08a..8678b9a7e90f 100644 --- a/src/sksl/analysis/SkSLProgramUsage.cpp +++ b/src/sksl/analysis/SkSLProgramUsage.cpp @@ -22,6 +22,7 @@ #include "src/sksl/ir/SkSLModifierFlags.h" #include "src/sksl/ir/SkSLProgramElement.h" #include "src/sksl/ir/SkSLStatement.h" +#include "src/sksl/ir/SkSLType.h" #include "src/sksl/ir/SkSLVarDeclarations.h" #include "src/sksl/ir/SkSLVariable.h" #include "src/sksl/ir/SkSLVariableReference.h" @@ -135,8 +136,12 @@ ProgramUsage::VariableCounts ProgramUsage::get(const Variable& v) const { bool ProgramUsage::isDead(const Variable& v) const { ModifierFlags flags = v.modifierFlags(); VariableCounts counts = this->get(v); - if ((v.storage() != Variable::Storage::kLocal && counts.fRead) || - (flags & (ModifierFlag::kIn | ModifierFlag::kOut | ModifierFlag::kUniform))) { + if (flags & (ModifierFlag::kIn | ModifierFlag::kOut | ModifierFlag::kUniform)) { + // Never eliminate ins, outs, or uniforms. + return false; + } + if (v.type().componentType().isOpaque()) { + // Never eliminate samplers, runtime-effect children, or atomics. return false; } // Consider the variable dead if it's never read and never written (besides the initial-value). diff --git a/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp b/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp index c79de5ca11e3..0b2aec1199ea 100644 --- a/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp +++ b/src/sksl/codegen/SkSLGLSLCodeGenerator.cpp @@ -1113,10 +1113,23 @@ void GLSLCodeGenerator::writeLiteral(const Literal& l) { this->write(l.description(OperatorPrecedence::kExpression)); } +bool GLSLCodeGenerator::shouldRewriteVoidTypedFunctions(const FunctionDeclaration* func) const { + // We can change void-typed user functions to return a (meaningless) float so that sequence + // expressions will work normally in WebGL2. (skbug.com/294893925) + return func && + !func->isMain() && + func->returnType().isVoid() && + !this->caps().fCanUseVoidInSequenceExpressions; +} + void GLSLCodeGenerator::writeFunctionDeclaration(const FunctionDeclaration& f) { - this->writeTypePrecision(f.returnType()); - this->writeType(f.returnType()); - this->write(" "); + if (this->shouldRewriteVoidTypedFunctions(&f)) { + this->write("float "); + } else { + this->writeTypePrecision(f.returnType()); + this->writeType(f.returnType()); + this->write(" "); + } this->writeIdentifier(f.mangledName()); this->write("("); auto separator = SkSL::String::Separator(); @@ -1165,6 +1178,7 @@ void GLSLCodeGenerator::writeFunction(const FunctionDefinition& f) { fSetupFragPosition = false; fSetupFragCoordWorkaround = false; fSetupClockwise = false; + fCurrentFunction = &f.declaration(); this->writeFunctionDeclaration(f.declaration()); this->writeLine(" {"); @@ -1181,12 +1195,20 @@ void GLSLCodeGenerator::writeFunction(const FunctionDefinition& f) { } } + if (this->shouldRewriteVoidTypedFunctions(&f.declaration())) { + // If we can't use void in sequence expressions, we rewrite void-typed user functions to + // return a (never-used) float in case they are used in a sequence expression. + this->writeLine("return 0.0;"); + } + fIndentation--; this->writeLine("}"); fOut = oldOut; this->write(fFunctionHeader); this->write(buffer.str()); + + fCurrentFunction = nullptr; } void GLSLCodeGenerator::writeFunctionPrototype(const FunctionPrototype& f) { @@ -1311,32 +1333,75 @@ void GLSLCodeGenerator::writeTypePrecision(const Type& type) { this->write(this->getTypePrecision(type)); } -void GLSLCodeGenerator::writeVarDeclaration(const VarDeclaration& var, bool global) { - this->writeModifiers(var.var()->layout(), var.var()->modifierFlags(), global); - this->writeTypePrecision(var.baseType()); - this->writeType(var.baseType()); +void GLSLCodeGenerator::writeGlobalVarDeclaration(const GlobalVarDeclaration& e) { + const VarDeclaration& decl = e.as().varDeclaration(); + switch (decl.var()->layout().fBuiltin) { + case -1: + // normal var + this->writeVarDeclaration(decl, /*global=*/true); + this->finishLine(); + break; + + case SK_FRAGCOLOR_BUILTIN: + if (this->caps().mustDeclareFragmentShaderOutput()) { + if (fProgram.fConfig->fSettings.fFragColorIsInOut) { + this->write("inout "); + } else { + this->write("out "); + } + if (this->usesPrecisionModifiers()) { + this->write("mediump "); + } + this->writeLine("vec4 sk_FragColor;"); + } + break; + + default: + break; + } +} + +void GLSLCodeGenerator::writeVarDeclaration(const VarDeclaration& decl, bool global) { + const Variable* var = decl.var(); + this->writeModifiers(var->layout(), var->modifierFlags(), global); + + if (global && !var->modifierFlags().isUniform()) { + if (decl.baseType().typeKind() == Type::TypeKind::kSampler || + decl.baseType().typeKind() == Type::TypeKind::kSeparateSampler || + decl.baseType().typeKind() == Type::TypeKind::kTexture) { + // We don't require the `uniform` modifier on textures/samplers, but GLSL does. + this->write("uniform "); + } + } + + this->writeTypePrecision(decl.baseType()); + this->writeType(decl.baseType()); this->write(" "); - this->writeIdentifier(var.var()->mangledName()); - if (var.arraySize() > 0) { + this->writeIdentifier(var->mangledName()); + if (decl.arraySize() > 0) { this->write("["); - this->write(std::to_string(var.arraySize())); + this->write(std::to_string(decl.arraySize())); this->write("]"); } - if (var.value()) { + if (decl.value()) { this->write(" = "); - this->writeVarInitializer(*var.var(), *var.value()); + this->writeVarInitializer(*var, *decl.value()); } if (!fFoundExternalSamplerDecl && - var.var()->type().matches(*fContext.fTypes.fSamplerExternalOES)) { - if (this->caps().externalTextureExtensionString()) { - this->writeExtension(this->caps().externalTextureExtensionString()); - } - if (this->caps().secondExternalTextureExtensionString()) { - this->writeExtension(this->caps().secondExternalTextureExtensionString()); + var->type().matches(*fContext.fTypes.fSamplerExternalOES)) { + if (!this->caps().fExternalTextureSupport) { + fContext.fErrors->error(decl.position(), "external texture support is not enabled"); + } else { + if (this->caps().externalTextureExtensionString()) { + this->writeExtension(this->caps().externalTextureExtensionString()); + } + if (this->caps().secondExternalTextureExtensionString()) { + this->writeExtension(this->caps().secondExternalTextureExtensionString()); + } + fFoundExternalSamplerDecl = true; } - fFoundExternalSamplerDecl = true; } - if (!fFoundRectSamplerDecl && var.var()->type().matches(*fContext.fTypes.fSampler2DRect)) { + if (!fFoundRectSamplerDecl && var->type().matches(*fContext.fTypes.fSampler2DRect)) { fFoundRectSamplerDecl = true; } this->write(";"); @@ -1354,7 +1419,7 @@ void GLSLCodeGenerator::writeStatement(const Statement& s) { this->writeReturnStatement(s.as()); break; case Statement::Kind::kVarDeclaration: - this->writeVarDeclaration(s.as(), false); + this->writeVarDeclaration(s.as(), /*global=*/false); break; case Statement::Kind::kIf: this->writeIfStatement(s.as()); @@ -1626,10 +1691,16 @@ void GLSLCodeGenerator::writeSwitchStatement(const SwitchStatement& s) { } void GLSLCodeGenerator::writeReturnStatement(const ReturnStatement& r) { + SkASSERT(fCurrentFunction); + this->write("return"); if (r.expression()) { this->write(" "); this->writeExpression(*r.expression(), Precedence::kExpression); + } else if (this->shouldRewriteVoidTypedFunctions(fCurrentFunction)) { + // We need to rewrite `return` statements to say `return 0.0` since we are converting + // void-typed functions to return floats instead. + this->write(" 0.0"); } this->write(";"); } @@ -1646,36 +1717,23 @@ void GLSLCodeGenerator::writeProgramElement(const ProgramElement& e) { case ProgramElement::Kind::kExtension: this->writeExtension(e.as().name()); break; - case ProgramElement::Kind::kGlobalVar: { - const VarDeclaration& decl = e.as().varDeclaration(); - int builtin = decl.var()->layout().fBuiltin; - if (builtin == -1) { - // normal var - this->writeVarDeclaration(decl, true); - this->finishLine(); - } else if (builtin == SK_FRAGCOLOR_BUILTIN && - this->caps().mustDeclareFragmentShaderOutput()) { - if (fProgram.fConfig->fSettings.fFragColorIsInOut) { - this->write("inout "); - } else { - this->write("out "); - } - if (this->usesPrecisionModifiers()) { - this->write("mediump "); - } - this->writeLine("vec4 sk_FragColor;"); - } + + case ProgramElement::Kind::kGlobalVar: + this->writeGlobalVarDeclaration(e.as()); break; - } + case ProgramElement::Kind::kInterfaceBlock: this->writeInterfaceBlock(e.as()); break; + case ProgramElement::Kind::kFunction: this->writeFunction(e.as()); break; + case ProgramElement::Kind::kFunctionPrototype: this->writeFunctionPrototype(e.as()); break; + case ProgramElement::Kind::kModifiers: { const ModifiersDeclaration& d = e.as(); this->writeModifiers(d.layout(), d.modifierFlags(), /*globalContext=*/true); @@ -1685,6 +1743,7 @@ void GLSLCodeGenerator::writeProgramElement(const ProgramElement& e) { case ProgramElement::Kind::kStructDefinition: this->writeStructDefinition(e.as()); break; + default: SkDEBUGFAILF("unsupported program element %s\n", e.description().c_str()); break; diff --git a/src/sksl/codegen/SkSLGLSLCodeGenerator.h b/src/sksl/codegen/SkSLGLSLCodeGenerator.h index 6cccfbdf1fae..3309decd806c 100644 --- a/src/sksl/codegen/SkSLGLSLCodeGenerator.h +++ b/src/sksl/codegen/SkSLGLSLCodeGenerator.h @@ -33,6 +33,7 @@ class FunctionCall; class FunctionDeclaration; class FunctionDefinition; class FunctionPrototype; +class GlobalVarDeclaration; class IfStatement; class IndexExpression; class InterfaceBlock; @@ -59,10 +60,10 @@ struct ShaderCaps; /** * Converts a Program into GLSL code. */ -class GLSLCodeGenerator : public CodeGenerator { +class GLSLCodeGenerator final : public CodeGenerator { public: GLSLCodeGenerator(const Context* context, const Program* program, OutputStream* out) - : INHERITED(context, program, out) {} + : INHERITED(context, program, out) {} bool generateCode() override; @@ -75,13 +76,13 @@ class GLSLCodeGenerator : public CodeGenerator { void finishLine(); - virtual void writeHeader(); + void writeHeader(); bool usesPrecisionModifiers() const; void writeIdentifier(std::string_view identifier); - virtual std::string getTypeName(const Type& type); + std::string getTypeName(const Type& type); void writeStructDefinition(const StructDefinition& s); @@ -95,25 +96,27 @@ class GLSLCodeGenerator : public CodeGenerator { void writeFunctionPrototype(const FunctionPrototype& f); - virtual void writeFunction(const FunctionDefinition& f); + void writeFunction(const FunctionDefinition& f); void writeLayout(const Layout& layout); void writeModifiers(const Layout& layout, ModifierFlags flags, bool globalContext); - virtual void writeInputVars(); + void writeInputVars(); - virtual void writeVarInitializer(const Variable& var, const Expression& value); + void writeVarInitializer(const Variable& var, const Expression& value); const char* getTypePrecision(const Type& type); void writeTypePrecision(const Type& type); + void writeGlobalVarDeclaration(const GlobalVarDeclaration& e); + void writeVarDeclaration(const VarDeclaration& var, bool global); void writeFragCoord(); - virtual void writeVariableReference(const VariableReference& ref); + void writeVariableReference(const VariableReference& ref); void writeExpression(const Expression& expr, Precedence parentPrecedence); @@ -131,41 +134,41 @@ class GLSLCodeGenerator : public CodeGenerator { void writeMatrixComparisonWorkaround(const BinaryExpression& x); - virtual void writeFunctionCall(const FunctionCall& c); + void writeFunctionCall(const FunctionCall& c); void writeConstructorCompound(const ConstructorCompound& c, Precedence parentPrecedence); void writeConstructorDiagonalMatrix(const ConstructorDiagonalMatrix& c, Precedence parentPrecedence); - virtual void writeAnyConstructor(const AnyConstructor& c, Precedence parentPrecedence); + void writeAnyConstructor(const AnyConstructor& c, Precedence parentPrecedence); - virtual void writeCastConstructor(const AnyConstructor& c, Precedence parentPrecedence); + void writeCastConstructor(const AnyConstructor& c, Precedence parentPrecedence); - virtual void writeFieldAccess(const FieldAccess& f); + void writeFieldAccess(const FieldAccess& f); - virtual void writeSwizzle(const Swizzle& swizzle); + void writeSwizzle(const Swizzle& swizzle); - virtual void writeBinaryExpression(const BinaryExpression& b, Precedence parentPrecedence); + void writeBinaryExpression(const BinaryExpression& b, Precedence parentPrecedence); void writeShortCircuitWorkaroundExpression(const BinaryExpression& b, Precedence parentPrecedence); - virtual void writeTernaryExpression(const TernaryExpression& t, Precedence parentPrecedence); + void writeTernaryExpression(const TernaryExpression& t, Precedence parentPrecedence); - virtual void writeIndexExpression(const IndexExpression& expr); + void writeIndexExpression(const IndexExpression& expr); void writePrefixExpression(const PrefixExpression& p, Precedence parentPrecedence); void writePostfixExpression(const PostfixExpression& p, Precedence parentPrecedence); - virtual void writeLiteral(const Literal& l); + void writeLiteral(const Literal& l); void writeStatement(const Statement& s); void writeBlock(const Block& b); - virtual void writeIfStatement(const IfStatement& stmt); + void writeIfStatement(const IfStatement& stmt); void writeForStatement(const ForStatement& f); @@ -173,14 +176,16 @@ class GLSLCodeGenerator : public CodeGenerator { void writeExpressionStatement(const ExpressionStatement& s); - virtual void writeSwitchStatement(const SwitchStatement& s); + void writeSwitchStatement(const SwitchStatement& s); - virtual void writeReturnStatement(const ReturnStatement& r); + void writeReturnStatement(const ReturnStatement& r); - virtual void writeProgramElement(const ProgramElement& e); + void writeProgramElement(const ProgramElement& e); const ShaderCaps& caps() const { return *fContext.fCaps; } + bool shouldRewriteVoidTypedFunctions(const FunctionDeclaration* func) const; + StringStream fExtensions; StringStream fGlobals; StringStream fExtraFunctions; @@ -188,6 +193,8 @@ class GLSLCodeGenerator : public CodeGenerator { int fVarCount = 0; int fIndentation = 0; bool fAtLineStart = false; + const FunctionDeclaration* fCurrentFunction = nullptr; + // true if we have run into usages of dFdx / dFdy bool fFoundDerivatives = false; bool fFoundExternalSamplerDecl = false; diff --git a/src/sksl/codegen/SkSLMetalCodeGenerator.cpp b/src/sksl/codegen/SkSLMetalCodeGenerator.cpp index 0efe485c80aa..7369cc8bd45c 100644 --- a/src/sksl/codegen/SkSLMetalCodeGenerator.cpp +++ b/src/sksl/codegen/SkSLMetalCodeGenerator.cpp @@ -2673,9 +2673,12 @@ void MetalCodeGenerator::writeReturnStatement(const ReturnStatement& r) { } void MetalCodeGenerator::writeHeader() { - this->write("#include \n"); - this->write("#include \n"); - this->write("using namespace metal;\n"); + this->writeLine("#include "); + this->writeLine("#include "); + this->writeLine("#ifdef __clang__"); + this->writeLine("#pragma clang diagnostic ignored \"-Wall\""); + this->writeLine("#endif"); + this->writeLine("using namespace metal;"); } void MetalCodeGenerator::writeSampler2DPolyfill() { @@ -2724,9 +2727,9 @@ void MetalCodeGenerator::writeUniformStruct() { if (e->is()) { const GlobalVarDeclaration& decls = e->as(); const Variable& var = *decls.varDeclaration().var(); - if (var.modifierFlags().isUniform() && - var.type().typeKind() != Type::TypeKind::kSampler && - var.type().typeKind() != Type::TypeKind::kTexture) { + if (var.modifierFlags().isUniform()) { + SkASSERT(var.type().typeKind() != Type::TypeKind::kSampler && + var.type().typeKind() != Type::TypeKind::kTexture); int uniformSet = this->getUniformSet(var.layout()); // Make sure that the program's uniform-set value is consistent throughout. if (-1 == fUniformBuffer) { @@ -2897,11 +2900,11 @@ void MetalCodeGenerator::visitGlobalStruct(GlobalStructVisitor* visitor) { const GlobalVarDeclaration& global = element->as(); const VarDeclaration& decl = global.varDeclaration(); const Variable& var = *decl.var(); - if (var.type().typeKind() == Type::TypeKind::kSampler) { + if (decl.baseType().typeKind() == Type::TypeKind::kSampler) { visitor->visitSampler(var.type(), var.mangledName()); continue; } - if (var.type().typeKind() == Type::TypeKind::kTexture) { + if (decl.baseType().typeKind() == Type::TypeKind::kTexture) { visitor->visitTexture(var.type(), var.mangledName()); continue; } diff --git a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp index 90019cbfc16e..7074f00b436f 100644 --- a/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp +++ b/src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp @@ -250,7 +250,6 @@ SPIRVCodeGenerator::Intrinsic SPIRVCodeGenerator::getIntrinsic(IntrinsicKind ik) case k_dFdx_IntrinsicKind: return FLOAT_SPIRV(DPdx); case k_dFdy_IntrinsicKind: return SPECIAL(DFdy); case k_fwidth_IntrinsicKind: return FLOAT_SPIRV(Fwidth); - case k_makeSampler2D_IntrinsicKind: return SPECIAL(SampledImage); case k_sample_IntrinsicKind: return SPECIAL(Texture); case k_sampleGrad_IntrinsicKind: return SPECIAL(TextureGrad); @@ -1128,8 +1127,6 @@ SpvId SPIRVCodeGenerator::getType(const Type& rawType, const MemoryLayout& layou return this->writeInstruction(SpvOpTypeSampler, Words{Word::Result()}, fConstantBuffer); } case Type::TypeKind::kSampler: { - // Subpass inputs should use the Texture type, not a Sampler. - SkASSERT(type->dimensions() != SpvDimSubpassData); if (SpvDimBuffer == type->dimensions()) { fCapabilities |= 1ULL << SpvCapabilitySampledBuffer; } @@ -1180,8 +1177,7 @@ SpvId SPIRVCodeGenerator::getFunctionType(const FunctionDeclaration& function) { words.push_back(Word::Result()); words.push_back(this->getType(function.returnType())); for (const Variable* parameter : function.parameters()) { - if (parameter->type().typeKind() == Type::TypeKind::kSampler && - fProgram.fConfig->fSettings.fSPIRVDawnCompatMode) { + if (fUseTextureSamplerPairs && parameter->type().isSampler()) { words.push_back(this->getFunctionParameterType(parameter->type().textureType())); words.push_back(this->getFunctionParameterType(*fContext.fTypes.fSampler)); } else { @@ -1879,18 +1875,19 @@ SpvId SPIRVCodeGenerator::writeFunctionCallArgument(const FunctionCall& call, const Variable* var = arg.as().variable(); // In Dawn-mode the texture and sampler arguments are forwarded to the helper function. - if (const auto* p = fSynthesizedSamplerMap.find(var)) { - SkASSERT(fProgram.fConfig->fSettings.fSPIRVDawnCompatMode); - SkASSERT(arg.type().typeKind() == Type::TypeKind::kSampler); - SkASSERT(outSynthesizedSamplerId); - - SpvId* img = fVariableMap.find((*p)->fTexture.get()); - SpvId* sampler = fVariableMap.find((*p)->fSampler.get()); - SkASSERT(img); - SkASSERT(sampler); - - *outSynthesizedSamplerId = *sampler; - return *img; + if (fUseTextureSamplerPairs && var->type().isSampler()) { + if (const auto* p = fSynthesizedSamplerMap.find(var)) { + SkASSERT(outSynthesizedSamplerId); + + SpvId* img = fVariableMap.find((*p)->fTexture.get()); + SpvId* sampler = fVariableMap.find((*p)->fSampler.get()); + SkASSERT(img); + SkASSERT(sampler); + + *outSynthesizedSamplerId = *sampler; + return *img; + } + SkDEBUGFAIL("sampler missing from fSynthesizedSamplerMap"); } SpvId* entry = fVariableMap.find(var); @@ -2861,30 +2858,30 @@ SpvId SPIRVCodeGenerator::writeVariableReference(const VariableReference& ref, O // // Variable references to opaque handles (texture/sampler) that appear as the argument // of a user-defined function call are explicitly handled in writeFunctionCallArgument. - if (const auto* p = fSynthesizedSamplerMap.find(variable)) { - SkASSERT(fProgram.fConfig->fSettings.fSPIRVDawnCompatMode); - - SpvId* imgPtr = fVariableMap.find((*p)->fTexture.get()); - SpvId* samplerPtr = fVariableMap.find((*p)->fSampler.get()); - SkASSERT(imgPtr); - SkASSERT(samplerPtr); - - SpvId img = this->writeOpLoad(this->getType((*p)->fTexture->type()), - Precision::kDefault, *imgPtr, out); - SpvId sampler = this->writeOpLoad(this->getType((*p)->fSampler->type()), - Precision::kDefault, - *samplerPtr, - out); - SpvId result = this->nextId(nullptr); - this->writeInstruction(SpvOpSampledImage, - this->getType(variable->type()), - result, - img, - sampler, - out); - return result; + if (fUseTextureSamplerPairs && variable->type().isSampler()) { + if (const auto* p = fSynthesizedSamplerMap.find(variable)) { + SpvId* imgPtr = fVariableMap.find((*p)->fTexture.get()); + SpvId* samplerPtr = fVariableMap.find((*p)->fSampler.get()); + SkASSERT(imgPtr); + SkASSERT(samplerPtr); + + SpvId img = this->writeOpLoad(this->getType((*p)->fTexture->type()), + Precision::kDefault, *imgPtr, out); + SpvId sampler = this->writeOpLoad(this->getType((*p)->fSampler->type()), + Precision::kDefault, + *samplerPtr, + out); + SpvId result = this->nextId(nullptr); + this->writeInstruction(SpvOpSampledImage, + this->getType(variable->type()), + result, + img, + sampler, + out); + return result; + } + SkDEBUGFAIL("sampler missing from fSynthesizedSamplerMap"); } - return this->getLValue(ref, out)->load(out); } } @@ -3629,8 +3626,7 @@ SpvId SPIRVCodeGenerator::writeFunctionStart(const FunctionDeclaration& f, Outpu std::string_view(mangledName.c_str(), mangledName.size()), fNameBuffer); for (const Variable* parameter : f.parameters()) { - if (parameter->type().typeKind() == Type::TypeKind::kSampler && - fProgram.fConfig->fSettings.fSPIRVDawnCompatMode) { + if (fUseTextureSamplerPairs && parameter->type().isSampler()) { auto [texture, sampler] = this->synthesizeTextureAndSampler(*parameter); SpvId textureId = this->nextId(nullptr); @@ -3870,11 +3866,10 @@ static bool is_vardecl_compile_time_constant(const VarDeclaration& varDecl) { bool SPIRVCodeGenerator::writeGlobalVarDeclaration(ProgramKind kind, const VarDeclaration& varDecl) { const Variable* var = varDecl.var(); - const bool inDawnMode = fProgram.fConfig->fSettings.fSPIRVDawnCompatMode; const LayoutFlags backendFlags = var->layout().fFlags & LayoutFlag::kAllBackends; - const LayoutFlags permittedBackendFlags = LayoutFlag::kSPIRV | (inDawnMode ? LayoutFlag::kWGSL - : LayoutFlag::kNone); - if (backendFlags & ~permittedBackendFlags) { + const LayoutFlags kPermittedBackendFlags = + LayoutFlag::kVulkan | LayoutFlag::kWebGPU | LayoutFlag::kDirect3D; + if (backendFlags & ~kPermittedBackendFlags) { fContext.fErrors->error(var->fPosition, "incompatible backend flag in SPIR-V codegen"); return false; } @@ -3897,12 +3892,10 @@ bool SPIRVCodeGenerator::writeGlobalVarDeclaration(ProgramKind kind, return true; } - if (var->type().typeKind() == Type::TypeKind::kSampler && inDawnMode) { - if (var->layout().fTexture == -1 || - var->layout().fSampler == -1 || - !(var->layout().fFlags & LayoutFlag::kWGSL)) { - fContext.fErrors->error(var->fPosition, "SPIR-V dawn compatibility mode requires an " - "explicit texture and sampler index"); + if (fUseTextureSamplerPairs && var->type().isSampler()) { + if (var->layout().fTexture == -1 || var->layout().fSampler == -1) { + fContext.fErrors->error(var->fPosition, "selected backend requires separate texture " + "and sampler indices"); return false; } SkASSERT(storageClass == SpvStorageClassUniformConstant); @@ -4316,7 +4309,7 @@ SPIRVCodeGenerator::EntrypointAdapter SPIRVCodeGenerator::writeEntrypointAdapter "_entrypoint", /*parameters=*/TArray{}, /*returnType=*/fContext.fTypes.fVoid.get(), - /*builtin=*/false); + kNotIntrinsic); // Define it. adapter.entrypointDef = FunctionDefinition::Convert(fContext, Position(), @@ -4442,7 +4435,7 @@ void SPIRVCodeGenerator::addRTFlipUniform(Position pos) { std::tuple SPIRVCodeGenerator::synthesizeTextureAndSampler( const Variable& combinedSampler) { - SkASSERT(fProgram.fConfig->fSettings.fSPIRVDawnCompatMode); + SkASSERT(fUseTextureSamplerPairs); SkASSERT(combinedSampler.type().typeKind() == Type::TypeKind::kSampler); const Layout& layout = combinedSampler.layout(); @@ -4489,31 +4482,59 @@ std::tuple SPIRVCodeGenerator::synthesizeTextu void SPIRVCodeGenerator::writeInstructions(const Program& program, OutputStream& out) { fGLSLExtendedInstructions = this->nextId(nullptr); StringStream body; - // Assign SpvIds to functions. + + // Do an initial pass over the program elements to establish some baseline info. const FunctionDeclaration* main = nullptr; - // During the same iteration, collect the local size values to assign if this is a compute - // program. Dimensions that are not present get assigned a value of 1. int localSizeX = 1, localSizeY = 1, localSizeZ = 1; + Position combinedSamplerPos; + Position separateSamplerPos; for (const ProgramElement* e : program.elements()) { - if (e->is()) { - const FunctionDefinition& funcDef = e->as(); - const FunctionDeclaration& funcDecl = funcDef.declaration(); - fFunctionMap.set(&funcDecl, this->nextId(nullptr)); - if (funcDecl.isMain()) { - main = &funcDecl; - } - } else if (ProgramConfig::IsCompute(program.fConfig->fKind) && - e->is()) { - const ModifiersDeclaration& modifiers = e->as(); - if (modifiers.layout().fLocalSizeX >= 0) { - localSizeX = modifiers.layout().fLocalSizeX; + switch (e->kind()) { + case ProgramElement::Kind::kFunction: { + // Assign SpvIds to functions. + const FunctionDefinition& funcDef = e->as(); + const FunctionDeclaration& funcDecl = funcDef.declaration(); + fFunctionMap.set(&funcDecl, this->nextId(nullptr)); + if (funcDecl.isMain()) { + main = &funcDecl; + } + break; } - if (modifiers.layout().fLocalSizeY >= 0) { - localSizeY = modifiers.layout().fLocalSizeY; + case ProgramElement::Kind::kGlobalVar: { + // Look for sampler variables and determine whether or not this program uses + // combined samplers or separate samplers. The layout backend will be marked as + // WebGPU for separate samplers, or Vulkan for combined samplers. + const GlobalVarDeclaration& decl = e->as(); + const Variable& var = *decl.varDeclaration().var(); + if (var.type().isSampler()) { + if (var.layout().fFlags & LayoutFlag::kVulkan) { + combinedSamplerPos = decl.position(); + } + if (var.layout().fFlags & (LayoutFlag::kWebGPU | LayoutFlag::kDirect3D)) { + separateSamplerPos = decl.position(); + } + } + break; } - if (modifiers.layout().fLocalSizeZ >= 0) { - localSizeZ = modifiers.layout().fLocalSizeZ; + case ProgramElement::Kind::kModifiers: { + // If this is a compute program, collect the local-size values. Dimensions that are + // not present will be assigned a value of 1. + if (ProgramConfig::IsCompute(program.fConfig->fKind)) { + const ModifiersDeclaration& modifiers = e->as(); + if (modifiers.layout().fLocalSizeX >= 0) { + localSizeX = modifiers.layout().fLocalSizeX; + } + if (modifiers.layout().fLocalSizeY >= 0) { + localSizeY = modifiers.layout().fLocalSizeY; + } + if (modifiers.layout().fLocalSizeZ >= 0) { + localSizeZ = modifiers.layout().fLocalSizeZ; + } + } + break; } + default: + break; } } @@ -4522,6 +4543,15 @@ void SPIRVCodeGenerator::writeInstructions(const Program& program, OutputStream& fContext.fErrors->error(Position(), "program does not contain a main() function"); return; } + // Make sure our program's sampler usage is consistent. + if (combinedSamplerPos.valid() && separateSamplerPos.valid()) { + fContext.fErrors->error(Position(), "programs cannot contain a mixture of sampler types"); + fContext.fErrors->error(combinedSamplerPos, "combined sampler found here:"); + fContext.fErrors->error(separateSamplerPos, "separate sampler found here:"); + return; + } + fUseTextureSamplerPairs = separateSamplerPos.valid(); + // Emit interface blocks. std::set interfaceVars; for (const ProgramElement* e : program.elements()) { diff --git a/src/sksl/codegen/SkSLSPIRVCodeGenerator.h b/src/sksl/codegen/SkSLSPIRVCodeGenerator.h index 4d8509b64f4e..69301b1abd98 100644 --- a/src/sksl/codegen/SkSLSPIRVCodeGenerator.h +++ b/src/sksl/codegen/SkSLSPIRVCodeGenerator.h @@ -561,8 +561,8 @@ class SPIRVCodeGenerator : public CodeGenerator { StringStream fDecorationBuffer; // Mapping from combined sampler declarations to synthesized texture/sampler variables. - // This is only used if the SPIRVDawnCompatMode setting is enabled. - // TODO(skia:14023): Remove when WGSL codegen is complete + // This is used when the sampler is declared as `layout(webgpu)` or `layout(direct3d)`. + bool fUseTextureSamplerPairs = false; struct SynthesizedTextureSamplerPair { // The names of the synthesized variables. The Variable objects themselves store string // views referencing these strings. It is important for the std::string instances to have a diff --git a/src/sksl/codegen/SkSLWGSLCodeGenerator.cpp b/src/sksl/codegen/SkSLWGSLCodeGenerator.cpp index c86e5530b407..729e4bca1f21 100644 --- a/src/sksl/codegen/SkSLWGSLCodeGenerator.cpp +++ b/src/sksl/codegen/SkSLWGSLCodeGenerator.cpp @@ -12,6 +12,7 @@ #include "include/private/base/SkTArray.h" #include "include/private/base/SkTo.h" #include "src/base/SkEnumBitMask.h" +#include "src/base/SkStringView.h" #include "src/sksl/SkSLAnalysis.h" #include "src/sksl/SkSLBuiltinTypes.h" #include "src/sksl/SkSLCompiler.h" @@ -74,6 +75,7 @@ #include #include +#include #include #include #include @@ -104,6 +106,274 @@ const char* operator_name(Operator op) { } } +bool is_reserved_word(std::string_view word) { + static const THashSet kReservedWords{ + // Used by SkSL: + "FSIn", + "FSOut", + "VSIn", + "VSOut", + "_globalUniforms", + "_GlobalUniforms", + "_return", + "_stageIn", + "_stageOut", + // Keywords: https://www.w3.org/TR/WGSL/#keyword-summary + "alias", + "break", + "case", + "const", + "const_assert", + "continue", + "continuing", + "default", + "diagnostic", + "discard", + "else", + "enable", + "false", + "fn", + "for", + "if", + "let", + "loop", + "override", + "requires", + "return", + "struct", + "switch", + "true", + "var", + "while", + // Pre-declared types: https://www.w3.org/TR/WGSL/#predeclared-types + "bool", + "f16", + "f32", + "i32", + "u32", + // ... and pre-declared type generators: + "array", + "atomic", + "mat2x2", + "mat2x3", + "mat2x4", + "mat3x2", + "mat3x3", + "mat3x4", + "mat4x2", + "mat4x3", + "mat4x4", + "ptr", + "texture_1d", + "texture_2d", + "texture_2d_array", + "texture_3d", + "texture_cube", + "texture_cube_array", + "texture_multisampled_2d", + "texture_storage_1d", + "texture_storage_2d", + "texture_storage_2d_array", + "texture_storage_3d", + "vec2", + "vec3", + "vec4", + // Pre-declared enumerants: https://www.w3.org/TR/WGSL/#predeclared-enumerants + "read", + "write", + "read_write", + "function", + "private", + "workgroup", + "uniform", + "storage", + "perspective", + "linear", + "flat", + "center", + "centroid", + "sample", + "vertex_index", + "instance_index", + "position", + "front_facing", + "frag_depth", + "local_invocation_id", + "local_invocation_index", + "global_invocation_id", + "workgroup_id", + "num_workgroups", + "sample_index", + "sample_mask", + "rgba8unorm", + "rgba8snorm", + "rgba8uint", + "rgba8sint", + "rgba16uint", + "rgba16sint", + "rgba16float", + "r32uint", + "r32sint", + "r32float", + "rg32uint", + "rg32sint", + "rg32float", + "rgba32uint", + "rgba32sint", + "rgba32float", + "bgra8unorm", + // Reserved words: https://www.w3.org/TR/WGSL/#reserved-words + "_", + "NULL", + "Self", + "abstract", + "active", + "alignas", + "alignof", + "as", + "asm", + "asm_fragment", + "async", + "attribute", + "auto", + "await", + "become", + "binding_array", + "cast", + "catch", + "class", + "co_await", + "co_return", + "co_yield", + "coherent", + "column_major", + "common", + "compile", + "compile_fragment", + "concept", + "const_cast", + "consteval", + "constexpr", + "constinit", + "crate", + "debugger", + "decltype", + "delete", + "demote", + "demote_to_helper", + "do", + "dynamic_cast", + "enum", + "explicit", + "export", + "extends", + "extern", + "external", + "fallthrough", + "filter", + "final", + "finally", + "friend", + "from", + "fxgroup", + "get", + "goto", + "groupshared", + "highp", + "impl", + "implements", + "import", + "inline", + "instanceof", + "interface", + "layout", + "lowp", + "macro", + "macro_rules", + "match", + "mediump", + "meta", + "mod", + "module", + "move", + "mut", + "mutable", + "namespace", + "new", + "nil", + "noexcept", + "noinline", + "nointerpolation", + "noperspective", + "null", + "nullptr", + "of", + "operator", + "package", + "packoffset", + "partition", + "pass", + "patch", + "pixelfragment", + "precise", + "precision", + "premerge", + "priv", + "protected", + "pub", + "public", + "readonly", + "ref", + "regardless", + "register", + "reinterpret_cast", + "require", + "resource", + "restrict", + "self", + "set", + "shared", + "sizeof", + "smooth", + "snorm", + "static", + "static_assert", + "static_cast", + "std", + "subroutine", + "super", + "target", + "template", + "this", + "thread_local", + "throw", + "trait", + "try", + "type", + "typedef", + "typeid", + "typename", + "typeof", + "union", + "unless", + "unorm", + "unsafe", + "unsized", + "use", + "using", + "varying", + "virtual", + "volatile", + "wgsl", + "where", + "with", + "writeonly", + "yield", + }; + + return kReservedWords.contains(word); +} + std::string_view pipeline_struct_prefix(ProgramKind kind) { if (ProgramConfig::IsVertex(kind)) { return "VS"; @@ -603,17 +873,241 @@ bool WGSLCodeGenerator::generateCode() { } StringStream body; { + // Emit the program body. AutoOutputStream outputToBody(this, &body, &fIndentation); + const FunctionDefinition* mainFunc = nullptr; for (const ProgramElement* e : fProgram.elements()) { this->writeProgramElement(*e); + + if (e->is()) { + const FunctionDefinition& func = e->as(); + if (func.declaration().isMain()) { + mainFunc = &func; + } + } + } + + // At the bottom of the program body, emit the entrypoint function. + // The entrypoint relies on state that has been collected while we emitted the rest of the + // program, so it's important to do it last to make sure we don't miss anything. + if (mainFunc) { + this->writeEntryPoint(*mainFunc); } } write_stringstream(fHeader, *fOut); write_stringstream(body, *fOut); + + this->writeUniformPolyfills(); + return fContext.fErrors->errorCount() == 0; } +void WGSLCodeGenerator::writeUniformPolyfills() { + // If we didn't encounter any uniforms that need polyfilling, there is nothing to do. + if (fFieldPolyfillMap.empty()) { + return; + } + + // We store the list of polyfilled fields as pointers in a hash-map, so the order can be + // inconsistent across runs. For determinism, we sort the polyfilled objects by name here. + TArray orderedFields; + orderedFields.reserve_exact(fFieldPolyfillMap.count()); + + fFieldPolyfillMap.foreach([&](const FieldPolyfillMap::Pair& pair) { + orderedFields.push_back(&pair); + }); + + std::sort(orderedFields.begin(), + orderedFields.end(), + [](const FieldPolyfillMap::Pair* a, const FieldPolyfillMap::Pair* b) { + return a->second.fReplacementName < b->second.fReplacementName; + }); + + THashSet writtenArrayElementPolyfill; + bool writtenUniformMatrixPolyfill[5][5] = {}; // m[column][row] for each matrix type + bool writtenUniformRowPolyfill[5] = {}; // for each matrix row-size + bool anyFieldAccessed = false; + for (const FieldPolyfillMap::Pair* pair : orderedFields) { + const auto& [field, info] = *pair; + const Type* type = field->fType; + + if (info.fIsArray) { + type = &type->componentType(); + if (!writtenArrayElementPolyfill.contains(type)) { + writtenArrayElementPolyfill.add(type); + this->write("struct _skArrayElement_"); + this->write(type->abbreviatedName()); + this->writeLine(" {"); + + if (info.fIsMatrix) { + // Create a struct representing the array containing std140-padded matrices. + this->write(" e : _skMatrix"); + this->write(std::to_string(type->columns())); + this->writeLine(std::to_string(type->rows())); + } else { + // Create a struct representing the array with extra padding between elements. + this->write(" @size(16) e : "); + this->writeLine(to_wgsl_type(*type)); + } + this->writeLine("};"); + } + } + + if (info.fIsMatrix) { + // Create structs representing the matrix as an array of vectors, whether or not the + // matrix is ever accessed by the SkSL. (The struct itself is mentioned in the list of + // uniforms.) + int c = type->columns(); + int r = type->rows(); + if (!writtenUniformRowPolyfill[r]) { + writtenUniformRowPolyfill[r] = true; + + this->write("struct _skRow"); + this->write(std::to_string(r)); + this->writeLine(" {"); + this->write(" @size(16) r : vec"); + this->write(std::to_string(r)); + this->write("<"); + this->write(to_wgsl_type(type->componentType())); + this->writeLine(">"); + this->writeLine("};"); + } + + if (!writtenUniformMatrixPolyfill[c][r]) { + writtenUniformMatrixPolyfill[c][r] = true; + + this->write("struct _skMatrix"); + this->write(std::to_string(c)); + this->write(std::to_string(r)); + this->writeLine(" {"); + this->write(" c : array<_skRow"); + this->write(std::to_string(r)); + this->write(", "); + this->write(std::to_string(c)); + this->writeLine(">"); + this->writeLine("};"); + } + } + + // We create a polyfill variable only if the uniform was actually accessed. + if (!info.fWasAccessed) { + continue; + } + anyFieldAccessed = true; + this->write("var "); + this->write(info.fReplacementName); + this->write(": "); + + const Type& interfaceBlockType = info.fInterfaceBlock->var()->type(); + if (interfaceBlockType.isArray()) { + this->write("array<"); + this->write(to_wgsl_type(*field->fType)); + this->write(", "); + this->write(std::to_string(interfaceBlockType.columns())); + this->write(">"); + } else { + this->write(to_wgsl_type(*field->fType)); + } + this->writeLine(";"); + } + + // If no fields were actually accessed, _skInitializePolyfilledUniforms will not be called and + // we can avoid emitting an empty, dead function. + if (!anyFieldAccessed) { + return; + } + + this->writeLine("fn _skInitializePolyfilledUniforms() {"); + ++fIndentation; + + for (const FieldPolyfillMap::Pair* pair : orderedFields) { + // Only initialize a polyfill global if the uniform was actually accessed. + const auto& [field, info] = *pair; + if (!info.fWasAccessed) { + continue; + } + + // Synthesize the name of this uniform variable + std::string_view instanceName = info.fInterfaceBlock->instanceName(); + const Type& interfaceBlockType = info.fInterfaceBlock->var()->type(); + if (instanceName.empty()) { + instanceName = fInterfaceBlockNameMap[&interfaceBlockType.componentType()]; + } + + // Initialize the global variable associated with this uniform. + // If the interface block is arrayed, the associated global will be arrayed as well. + int numIBElements = interfaceBlockType.isArray() ? interfaceBlockType.columns() : 1; + for (int ibIdx = 0; ibIdx < numIBElements; ++ibIdx) { + this->write(info.fReplacementName); + if (interfaceBlockType.isArray()) { + this->write("["); + this->write(std::to_string(ibIdx)); + this->write("]"); + } + this->write(" = "); + + const Type* type = field->fType; + int numArrayElements; + if (info.fIsArray) { + this->write(to_wgsl_type(*type)); + this->write("("); + numArrayElements = type->columns(); + type = &type->componentType(); + } else{ + numArrayElements = 1; + } + + auto arraySeparator = String::Separator(); + for (int arrayIdx = 0; arrayIdx < numArrayElements; arrayIdx++) { + this->write(arraySeparator()); + + std::string fieldName{instanceName}; + if (interfaceBlockType.isArray()) { + fieldName += '['; + fieldName += std::to_string(ibIdx); + fieldName += ']'; + } + fieldName += '.'; + fieldName += this->assembleName(field->fName); + + if (info.fIsArray) { + fieldName += '['; + fieldName += std::to_string(arrayIdx); + fieldName += "].e"; + } + + if (info.fIsMatrix) { + this->write(to_wgsl_type(*type)); + this->write("("); + int numColumns = type->columns(); + auto matrixSeparator = String::Separator(); + for (int column = 0; column < numColumns; column++) { + this->write(matrixSeparator()); + this->write(fieldName); + this->write(".c["); + this->write(std::to_string(column)); + this->write("].r"); + } + this->write(")"); + } else { + this->write(fieldName); + } + } + + if (info.fIsArray) { + this->write(")"); + } + + this->writeLine(";"); + } + } + + --fIndentation; + this->writeLine("}"); +} + + void WGSLCodeGenerator::preprocessProgram() { fRequirements = resolve_program_requirements(&fProgram); fPipelineInputCount = count_pipeline_inputs(&fProgram); @@ -649,9 +1143,12 @@ std::string WGSLCodeGenerator::assembleName(std::string_view name) { // WGSL doesn't allow anonymous function parameters. return "_skAnonymous" + std::to_string(fScratchCount++); } - // Add underscore before name to avoid conflict with reserved words. - return fReservedWords.contains(name) ? std::string("_") + std::string(name) - : std::string(name); + // Add `R_` before reserved names to avoid any potential reserved-word conflict. + return (skstd::starts_with(name, "_sk") || + skstd::starts_with(name, "R_") || + is_reserved_word(name)) + ? std::string("R_") + std::string(name) + : std::string(name); } void WGSLCodeGenerator::writeVariableDecl(const Type& type, @@ -726,7 +1223,32 @@ void WGSLCodeGenerator::writeFunction(const FunctionDefinition& f) { SkASSERT(!fAtFunctionScope); fAtFunctionScope = true; - this->writeFunctionDeclaration(decl); + // WGSL parameters are immutable and are considered as taking no storage, but SkSL parameters + // are real variables. To work around this, we make var-based copies of parameters. It's + // wasteful to make a copy of every single parameter--even if the compiler can eventually + // optimize them all away, that takes time and generates bloated code. So, we only make + // parameter copies if the variable is actually written-to. + STArray<32, bool> paramNeedsDedicatedStorage; + paramNeedsDedicatedStorage.push_back_n(decl.parameters().size(), true); + + for (size_t index = 0; index < decl.parameters().size(); ++index) { + const Variable& param = *decl.parameters()[index]; + if (param.type().isOpaque() || param.name().empty()) { + // Opaque-typed or anonymous parameters don't need dedicated storage. + paramNeedsDedicatedStorage[index] = false; + continue; + } + + const ProgramUsage::VariableCounts counts = fProgram.fUsage->get(param); + if ((param.modifierFlags() & ModifierFlag::kOut) || counts.fWrite == 0) { + // Variables which are never written-to don't need dedicated storage. + // Out-parameters are passed as pointers; the pointer itself is never modified, so + // it doesn't need dedicated storage. + paramNeedsDedicatedStorage[index] = false; + } + } + + this->writeFunctionDeclaration(decl, paramNeedsDedicatedStorage); this->writeLine(" {"); ++fIndentation; @@ -734,15 +1256,9 @@ void WGSLCodeGenerator::writeFunction(const FunctionDefinition& f) { // storage and are immutable. If mutability is required, we create variables here; otherwise, we // create properly-named `let` aliases. for (size_t index = 0; index < decl.parameters().size(); ++index) { - const Variable& param = *decl.parameters()[index]; - if (!param.name().empty() && !param.type().isOpaque()) { - // Variables which are never written-to don't need dedicated storage and can use `let`. - // Out-parameters are passed as pointers; the pointer itself is never modified, so it - // doesn't need a dedicated variable and can use `let`. - const ProgramUsage::VariableCounts counts = fProgram.fUsage->get(param); - this->write(((param.modifierFlags() & ModifierFlag::kOut) || counts.fWrite == 0) - ? "let " - : "var "); + if (paramNeedsDedicatedStorage[index]) { + const Variable& param = *decl.parameters()[index]; + this->write("var "); this->write(this->assembleName(param.mangledName())); this->write(" = _skParam"); this->write(std::to_string(index)); @@ -763,20 +1279,19 @@ void WGSLCodeGenerator::writeFunction(const FunctionDefinition& f) { --fIndentation; this->writeLine("}"); - if (f.declaration().isMain()) { - // We just emitted the user-defined main function. Next, we generate a program entry point - // that calls the user-defined main. - this->writeEntryPoint(f); - } - SkASSERT(fAtFunctionScope); fAtFunctionScope = false; } -void WGSLCodeGenerator::writeFunctionDeclaration(const FunctionDeclaration& decl) { +void WGSLCodeGenerator::writeFunctionDeclaration(const FunctionDeclaration& decl, + SkSpan paramNeedsDedicatedStorage) { this->write("fn "); - this->write(decl.mangledName()); - this->write("("); + if (decl.isMain()) { + this->write("_skslMain("); + } else { + this->write(this->assembleName(decl.mangledName())); + this->write("("); + } auto separator = SkSL::String::Separator(); if (this->writeFunctionDependencyParams(decl)) { separator(); // update the separator as parameters have been written @@ -786,6 +1301,7 @@ void WGSLCodeGenerator::writeFunctionDeclaration(const FunctionDeclaration& decl const Variable& param = *decl.parameters()[index]; if (param.type().isOpaque()) { + SkASSERT(!paramNeedsDedicatedStorage[index]); if (param.type().isSampler()) { // Create parameters for both the texture and associated sampler. this->write(param.name()); @@ -801,14 +1317,19 @@ void WGSLCodeGenerator::writeFunctionDeclaration(const FunctionDeclaration& decl this->write(to_wgsl_type(param.type())); } } else { - // Create an unnamed parameter, which will later be assigned a `var` or `let` in the - // function body. - this->write("_skParam"); - this->write(std::to_string(index)); + if (paramNeedsDedicatedStorage[index] || param.name().empty()) { + // Create an unnamed parameter. If the parameter needs dedicated storage, it will + // later be assigned a `var` in the function body. (If it's anonymous, a var isn't + // needed.) + this->write("_skParam"); + this->write(std::to_string(index)); + } else { + // Use the name directly from the SkSL program. + this->write(this->assembleName(param.name())); + } this->write(": "); - - // Declare an "out" function parameter as a pointer. if (param.modifierFlags() & ModifierFlag::kOut) { + // Declare an "out" function parameter as a pointer. this->write(to_ptr_type(param.type())); } else { this->write(to_wgsl_type(param.type())); @@ -830,10 +1351,10 @@ void WGSLCodeGenerator::writeEntryPoint(const FunctionDefinition& main) { // Synthesize a basic entrypoint which just calls straight through to main. // This is only used by skslc and just needs to pass the WGSL validator; Skia won't ever // emit functions like this. - this->writeLine("@fragment fn runtimeShaderMain(@location(0) _coords: vec2) -> " + this->writeLine("@fragment fn main(@location(0) _coords: vec2) -> " "@location(0) vec4 {"); ++fIndentation; - this->writeLine("return main(_coords);"); + this->writeLine("return _skslMain(_coords);"); --fIndentation; this->writeLine("}"); return; @@ -846,14 +1367,14 @@ void WGSLCodeGenerator::writeEntryPoint(const FunctionDefinition& main) { // function. std::string outputType; if (ProgramConfig::IsVertex(fProgram.fConfig->fKind)) { - this->write("@vertex fn vertexMain("); + this->write("@vertex fn main("); if (fPipelineInputCount > 0) { this->write("_stageIn: VSIn"); } this->writeLine(") -> VSOut {"); outputType = "VSOut"; } else if (ProgramConfig::IsFragment(fProgram.fConfig->fKind)) { - this->write("@fragment fn fragmentMain("); + this->write("@fragment fn main("); if (fPipelineInputCount > 0) { this->write("_stageIn: FSIn"); } @@ -864,8 +1385,16 @@ void WGSLCodeGenerator::writeEntryPoint(const FunctionDefinition& main) { return; } - // Declare the stage output struct. + // Initialize polyfilled matrix uniforms if any were used. fIndentation++; + for (const auto& [field, info] : fFieldPolyfillMap) { + if (info.fWasAccessed) { + this->writeLine("_skInitializePolyfilledUniforms();"); + break; + } + } + + // Declare the stage output struct. this->write("var _stageOut: "); this->write(outputType); this->writeLine(";"); @@ -881,8 +1410,7 @@ void WGSLCodeGenerator::writeEntryPoint(const FunctionDefinition& main) { } // Generate the function call to the user-defined main: - this->write(main.declaration().mangledName()); - this->write("("); + this->write("_skslMain("); auto separator = SkSL::String::Separator(); WGSLFunctionDependencies* deps = fRequirements.dependencies.find(&main.declaration()); if (deps) { @@ -1354,6 +1882,11 @@ void WGSLCodeGenerator::writeSwitchStatement(const SwitchStatement& s) { } // This case falls through, so it will need to be handled via emulation. + // If we have put together a collection of "native" cases (cases that fall through with no + // actual case-body), we will need to slide them over into the fallthrough-case list. + fallthroughCases.push_back_n(nativeCases.size(), nativeCases.data()); + nativeCases.clear(); + fallthroughCases.push_back(&sc); foundFallthroughDefault |= sc.isDefault(); previousCaseFellThrough = true; @@ -1447,7 +1980,7 @@ std::string WGSLCodeGenerator::assembleExpression(const Expression& e, return this->assembleBinaryExpression(e.as(), parentPrecedence); case Expression::Kind::kConstructorCompound: - return this->assembleConstructorCompound(e.as(), parentPrecedence); + return this->assembleConstructorCompound(e.as()); case Expression::Kind::kConstructorArrayCast: // This is a no-op, since WGSL 1.0 doesn't have any concept of precision qualifiers. @@ -1460,15 +1993,13 @@ std::string WGSLCodeGenerator::assembleExpression(const Expression& e, case Expression::Kind::kConstructorScalarCast: case Expression::Kind::kConstructorSplat: case Expression::Kind::kConstructorStruct: - return this->assembleAnyConstructor(e.asAnyConstructor(), parentPrecedence); + return this->assembleAnyConstructor(e.asAnyConstructor()); case Expression::Kind::kConstructorDiagonalMatrix: - return this->assembleConstructorDiagonalMatrix(e.as(), - parentPrecedence); + return this->assembleConstructorDiagonalMatrix(e.as()); case Expression::Kind::kConstructorMatrixResize: - return this->assembleConstructorMatrixResize(e.as(), - parentPrecedence); + return this->assembleConstructorMatrixResize(e.as()); case Expression::Kind::kEmpty: return "false"; @@ -1509,30 +2040,64 @@ std::string WGSLCodeGenerator::assembleExpression(const Expression& e, } } -std::string WGSLCodeGenerator::assembleBinaryExpressionElement(const Expression& expr, - Operator op, - const Expression& other, - Precedence precedence) { - // SkSL supports `matrix op scalar` for any operator, but WGSL only supports multiplication. - // If we detect a matrix-op-scalar expression that isn't multiplication, we need to manually - // splat the scalar into a matrix. - bool needMatrixSplatOnScalar = other.type().isMatrix() && expr.type().isScalar() && - op.isValidForMatrixOrVector() && - op.removeAssignment().kind() != Operator::Kind::STAR; - if (needMatrixSplatOnScalar) { - std::string scalar = this->writeNontrivialScratchLet(expr, Precedence::kSequence); - std::string result = to_wgsl_type(other.type()) + '('; - auto separator = String::Separator(); - int numSlots = other.type().slotCount(); - for (int index = 0; index < numSlots; ++index) { - result += separator(); - result += scalar; - } - return result + ')'; +static bool is_nontrivial_expression(const Expression& expr) { + // We consider a "trivial expression" one which we can repeat multiple times in the output + // without being dangerous or spammy. We avoid emitting temporary variables for very trivial + // expressions: literals, unadorned variable references, or constant vectors. + if (expr.is() || expr.is()) { + // Variables and literals are trivial; adding a let-declaration won't simplify anything. + return false; + } + if (expr.type().isVector() && Analysis::IsConstantExpression(expr)) { + // Compile-time constant vectors are also considered trivial; they're short and sweet. + return false; } + return true; +} - // For other expression types, we can emit them as-is. - return this->assembleExpression(expr, precedence); +static bool binary_op_is_ambiguous_in_wgsl(Operator op) { + // WGSL always requires parentheses for some operators which are deemed to be ambiguous. + // (8.19. Operator Precedence and Associativity) + switch (op.kind()) { + case OperatorKind::LOGICALOR: + case OperatorKind::LOGICALAND: + case OperatorKind::BITWISEOR: + case OperatorKind::BITWISEAND: + case OperatorKind::BITWISEXOR: + case OperatorKind::SHL: + case OperatorKind::SHR: + case OperatorKind::LT: + case OperatorKind::GT: + case OperatorKind::LTEQ: + case OperatorKind::GTEQ: + return true; + + default: + return false; + } +} + +bool WGSLCodeGenerator::binaryOpNeedsComponentwiseMatrixPolyfill(const Type& left, + const Type& right, + Operator op) { + switch (op.kind()) { + case OperatorKind::SLASH: + // WGSL does not natively support componentwise matrix-op-matrix for division. + if (left.isMatrix() && right.isMatrix()) { + return true; + } + [[fallthrough]]; + + case OperatorKind::PLUS: + case OperatorKind::MINUS: + // WGSL does not natively support componentwise matrix-op-scalar or scalar-op-matrix for + // addition, subtraction or division. + return (left.isMatrix() && right.isScalar()) || + (left.isScalar() && right.isMatrix()); + + default: + return false; + } } std::string WGSLCodeGenerator::assembleBinaryExpression(const BinaryExpression& b, @@ -1647,23 +2212,30 @@ std::string WGSLCodeGenerator::assembleBinaryExpression(const Expression& left, return ""; } - std::string result; if (op.kind() == OperatorKind::EQ) { // Evaluate the right-hand side of simple assignment (`a = b` --> `b`). - result = this->assembleBinaryExpressionElement(right, op, left, - Precedence::kAssignment); + expr = this->assembleExpression(right, Precedence::kAssignment); } else { // Evaluate the right-hand side of compound-assignment (`a += b` --> `a + b`). op = op.removeAssignment(); - result += lvalue->load(); - result += operator_name(op); - result += this->assembleBinaryExpressionElement(right, op, left, - op.getBinaryPrecedence()); + std::string lhs = lvalue->load(); + std::string rhs = this->assembleExpression(right, op.getBinaryPrecedence()); + + if (this->binaryOpNeedsComponentwiseMatrixPolyfill(left.type(), right.type(), op)) { + if (is_nontrivial_expression(right)) { + rhs = this->writeScratchLet(rhs); + } + + expr = this->assembleComponentwiseMatrixBinary(left.type(), right.type(), + lhs, rhs, op); + } else { + expr = lhs + operator_name(op) + rhs; + } } // Emit the assignment statement (`a = a + b`). - this->writeLine(lvalue->store(result)); + this->writeLine(lvalue->store(expr)); // Return the lvalue (`a`) as the result, since the value might be used by the caller. return lvalue->load(); @@ -1675,57 +2247,80 @@ std::string WGSLCodeGenerator::assembleBinaryExpression(const Expression& left, Precedence precedence = op.getBinaryPrecedence(); bool needParens = precedence >= parentPrecedence; - - // WGSL always requires parentheses for some operators which are deemed to be ambiguous. - // (8.19. Operator Precedence and Associativity) - switch (op.kind()) { - case OperatorKind::LOGICALOR: - case OperatorKind::LOGICALAND: - case OperatorKind::BITWISEOR: - case OperatorKind::BITWISEAND: - case OperatorKind::BITWISEXOR: - case OperatorKind::SHL: - case OperatorKind::SHR: - case OperatorKind::LT: - case OperatorKind::GT: - case OperatorKind::LTEQ: - case OperatorKind::GTEQ: - precedence = Precedence::kParentheses; - break; - - default: - break; + if (binary_op_is_ambiguous_in_wgsl(op)) { + precedence = Precedence::kParentheses; } - if (needParens) { - expr.push_back('('); + expr = "("; } - if (ConstantFolder::GetConstantValueOrNull(left) && - ConstantFolder::GetConstantValueOrNull(right)) { - // If we are emitting `constant + constant`, this generally indicates that the values could - // not be constant-folded. This happens when the values overflow or become nan. WGSL will - // refuse to compile such expressions, as WGSL 1.0 has no infinity/nan support. However, the - // WGSL compile-time check can be dodged by putting one side into a let-variable. This - // technically gives us an indeterminate result, but the vast majority of backends will just - // calculate an infinity or nan here, as we would expect. (skia:14385) - expr += this->writeScratchLet(left, precedence); + // If we are emitting `constant + constant`, this generally indicates that the values could not + // be constant-folded. This happens when the values overflow or become nan. WGSL will refuse to + // compile such expressions, as WGSL 1.0 has no infinity/nan support. However, the WGSL + // compile-time check can be dodged by putting one side into a let-variable. This technically + // gives us an indeterminate result, but the vast majority of backends will just calculate an + // infinity or nan here, as we would expect. (skia:14385) + bool bothSidesConstant = ConstantFolder::GetConstantValueOrNull(left) && + ConstantFolder::GetConstantValueOrNull(right); + + std::string lhs = this->assembleExpression(left, precedence); + std::string rhs = this->assembleExpression(right, precedence); + + if (this->binaryOpNeedsComponentwiseMatrixPolyfill(left.type(), right.type(), op)) { + if (bothSidesConstant || is_nontrivial_expression(left)) { + lhs = this->writeScratchLet(lhs); + } + if (is_nontrivial_expression(right)) { + rhs = this->writeScratchLet(rhs); + } + + expr += this->assembleComponentwiseMatrixBinary(left.type(), right.type(), lhs, rhs, op); } else { - expr += this->assembleBinaryExpressionElement(left, op, right, precedence); + if (bothSidesConstant) { + lhs = this->writeScratchLet(lhs); + } + + expr += lhs + operator_name(op) + rhs; } - expr += operator_name(op); - expr += this->assembleBinaryExpressionElement(right, op, left, precedence); if (needParens) { - expr.push_back(')'); + expr += ')'; } return expr; } std::string WGSLCodeGenerator::assembleFieldAccess(const FieldAccess& f) { - std::string expr; const Field* field = &f.base()->type().fields()[f.fieldIndex()]; + std::string expr; + + if (FieldPolyfillInfo* polyfillInfo = fFieldPolyfillMap.find(field)) { + // We found a matrix uniform. We are required to pass some matrix uniforms as array vectors, + // since the std140 layout for a matrix assumes 4-column vectors for each row, and WGSL + // tightly packs 2-column matrices. When emitting code, we replace the field-access + // expression with a global variable which holds an unpacked version of the uniform. + polyfillInfo->fWasAccessed = true; + + // The polyfill can either be based directly onto a uniform in an interface block, or it + // might be based on an index-expression onto a uniform if the interface block is arrayed. + const Expression* base = f.base().get(); + const IndexExpression* indexExpr = nullptr; + if (base->is()) { + indexExpr = &base->as(); + base = indexExpr->base().get(); + } + + SkASSERT(base->is()); + expr = polyfillInfo->fReplacementName; + + // If we had an index expression, we must append the index. + if (indexExpr) { + expr += '['; + expr += this->assembleExpression(*indexExpr->index(), Precedence::kSequence); + expr += ']'; + } + return expr; + } switch (f.ownerKind()) { case FieldAccess::OwnerKind::kDefault: @@ -1740,13 +2335,7 @@ std::string WGSLCodeGenerator::assembleFieldAccess(const FieldAccess& f) { break; } - expr += std::string(field->fName); - - if (fMatrixPolyfillFields.contains(field)) { - expr = String::printf("_skMatrixUnpack%d%d(%s)", - field->fType->columns(), field->fType->rows(), expr.c_str()); - } - + expr += this->assembleName(field->fName); return expr; } @@ -1850,8 +2439,8 @@ std::string WGSLCodeGenerator::assembleBinaryOpIntrinsic(Operator op, SkASSERT(!call.type().isVoid()); Precedence precedence = op.getBinaryPrecedence(); - bool needParens = precedence >= parentPrecedence; - + bool needParens = precedence >= parentPrecedence || + binary_op_is_ambiguous_in_wgsl(op); std::string expr; if (needParens) { expr.push_back('('); @@ -1877,11 +2466,13 @@ std::string WGSLCodeGenerator::assemblePartialSampleCall(std::string_view functi // This function returns `functionName(samplerᵗ, samplerˢ, coords` without a terminating // comma or close-parenthesis. This allows the caller to add more arguments as needed. SkASSERT(sampler.type().typeKind() == Type::TypeKind::kSampler); - std::string expr = std::string(functionName) + '(' + - this->assembleExpression(sampler, Precedence::kSequence) + - kTextureSuffix + ", " + - this->assembleExpression(sampler, Precedence::kSequence) + - kSamplerSuffix + ", "; + std::string expr = std::string(functionName) + '('; + expr += this->assembleExpression(sampler, Precedence::kSequence); + expr += kTextureSuffix; + expr += ", "; + expr += this->assembleExpression(sampler, Precedence::kSequence); + expr += kSamplerSuffix; + expr += ", "; // Compute the sample coordinates, dividing out the Z if a vec3 was provided. SkASSERT(coords.type().isVector()); @@ -1898,6 +2489,37 @@ std::string WGSLCodeGenerator::assemblePartialSampleCall(std::string_view functi return expr; } +std::string WGSLCodeGenerator::assembleComponentwiseMatrixBinary(const Type& leftType, + const Type& rightType, + const std::string& left, + const std::string& right, + Operator op) { + bool leftIsMatrix = leftType.isMatrix(); + bool rightIsMatrix = rightType.isMatrix(); + const Type& matrixType = leftIsMatrix ? leftType : rightType; + + std::string expr = to_wgsl_type(matrixType) + '('; + auto separator = String::Separator(); + int columns = matrixType.columns(); + for (int c = 0; c < columns; ++c) { + expr += separator(); + expr += left; + if (leftIsMatrix) { + expr += '['; + expr += std::to_string(c); + expr += ']'; + } + expr += op.operatorName(); + expr += right; + if (rightIsMatrix) { + expr += '['; + expr += std::to_string(c); + expr += ']'; + } + } + return expr + ')'; +} + std::string WGSLCodeGenerator::assembleIntrinsicCall(const FunctionCall& call, IntrinsicKind kind, Precedence parentPrecedence) { @@ -1969,16 +2591,12 @@ std::string WGSLCodeGenerator::assembleIntrinsicCall(const FunctionCall& call, ? this->writeScratchLet(*arguments[0], Precedence::kPostfix) : this->writeNontrivialScratchLet(*arguments[0], Precedence::kPostfix); std::string arg1 = this->writeNontrivialScratchLet(*arguments[1], Precedence::kPostfix); - std::string expr = to_wgsl_type(arguments[0]->type()) + '('; - - auto separator = String::Separator(); - int columns = arguments[0]->type().columns(); - for (int c = 0; c < columns; ++c) { - String::appendf(&expr, "%s%s[%d] * %s[%d]", - separator().c_str(), arg0.c_str(), c, arg1.c_str(), c); - } - expr += ')'; - return this->writeScratchLet(expr); + return this->writeScratchLet( + this->assembleComponentwiseMatrixBinary(arguments[0]->type(), + arguments[1]->type(), + arg0, + arg1, + OperatorKind::STAR)); } case k_mix_IntrinsicKind: { const char* name = arguments[2]->type().componentType().isBoolean() ? "select" : "mix"; @@ -2074,19 +2692,21 @@ std::string WGSLCodeGenerator::assembleIntrinsicCall(const FunctionCall& call, *arguments[0], *arguments[1]) + ')'; } - case k_sampleLod_IntrinsicKind: - return this->assemblePartialSampleCall("textureSampleLevel", - *arguments[0], - *arguments[1]) + ", " + - this->assembleExpression(*arguments[2], Precedence::kSequence) + ')'; - - case k_sampleGrad_IntrinsicKind: - return this->assemblePartialSampleCall("textureSampleGrad", - *arguments[0], - *arguments[1]) + ", " + - this->assembleExpression(*arguments[2], Precedence::kSequence) + ", " + - this->assembleExpression(*arguments[3], Precedence::kSequence) + ')'; - + case k_sampleLod_IntrinsicKind: { + std::string expr = this->assemblePartialSampleCall("textureSampleLevel", + *arguments[0], + *arguments[1]); + expr += ", " + this->assembleExpression(*arguments[2], Precedence::kSequence); + return expr + ')'; + } + case k_sampleGrad_IntrinsicKind: { + std::string expr = this->assemblePartialSampleCall("textureSampleGrad", + *arguments[0], + *arguments[1]); + expr += ", " + this->assembleExpression(*arguments[2], Precedence::kSequence); + expr += ", " + this->assembleExpression(*arguments[3], Precedence::kSequence); + return expr + ')'; + } case k_abs_IntrinsicKind: case k_acos_IntrinsicKind: case k_all_IntrinsicKind: @@ -2285,15 +2905,16 @@ std::string WGSLCodeGenerator::assembleFunctionCall(const FunctionCall& call, // If the argument is a sampler, we need to pass the texture _and_ its associated // sampler. (Function parameter lists also convert sampler parameters into a matching // texture/sampler parameter pair.) - expr += this->assembleExpression(*args[index], Precedence::kSequence) + - kTextureSuffix + ", " + - this->assembleExpression(*args[index], Precedence::kSequence) + - kSamplerSuffix; + expr += this->assembleExpression(*args[index], Precedence::kSequence); + expr += kTextureSuffix; + expr += ", "; + expr += this->assembleExpression(*args[index], Precedence::kSequence); + expr += kSamplerSuffix; } else { expr += this->assembleExpression(*args[index], Precedence::kSequence); } } - expr.push_back(')'); + expr += ')'; if (call.type().isVoid()) { // Making function calls that result in `void` is only valid in on the left side of a @@ -2472,16 +3093,8 @@ std::string WGSLCodeGenerator::writeScratchLet(const Expression& expr, std::string WGSLCodeGenerator::writeNontrivialScratchLet(const Expression& expr, Precedence parentPrecedence) { std::string result = this->assembleExpression(expr, parentPrecedence); - - if (expr.is() || expr.is()) { - // Variables and literals are trivial; adding a let-declaration won't simplify anything. - return result; - } - if (expr.type().isVector() && Analysis::IsConstantExpression(expr)) { - // Compile-time constant vectors are also considered trivial; they're short and sweet. - return result; - } - return this->writeScratchLet(result); + return is_nontrivial_expression(expr) ? this->writeScratchLet(result) + : result; } std::string WGSLCodeGenerator::assembleTernaryExpression(const TernaryExpression& t, @@ -2501,9 +3114,9 @@ std::string WGSLCodeGenerator::assembleTernaryExpression(const TernaryExpression expr.push_back('('); } expr += "select("; - expr += this->assembleExpression(*t.ifFalse(), Precedence::kTernary); + expr += this->assembleExpression(*t.ifFalse(), Precedence::kSequence); expr += ", "; - expr += this->assembleExpression(*t.ifTrue(), Precedence::kTernary); + expr += this->assembleExpression(*t.ifTrue(), Precedence::kSequence); expr += ", "; bool isVector = t.type().isVector(); @@ -2511,7 +3124,7 @@ std::string WGSLCodeGenerator::assembleTernaryExpression(const TernaryExpression // Splat the condition expression into a vector. expr += String::printf("vec%d(", t.type().columns()); } - expr += this->assembleExpression(*t.test(), Precedence::kTernary); + expr += this->assembleExpression(*t.test(), Precedence::kSequence); if (isVector) { expr.push_back(')'); } @@ -2569,7 +3182,8 @@ std::string WGSLCodeGenerator::variablePrefix(const Variable& v) { // If the field refers to an anonymous-interface-block structure, access it via the // synthesized `_uniform0` or `_storage1` global. if (const InterfaceBlock* ib = v.interfaceBlock()) { - if (const std::string* ibName = fInterfaceBlockNameMap.find(&ib->var()->type())) { + const Type& ibType = ib->var()->type().componentType(); + if (const std::string* ibName = fInterfaceBlockNameMap.find(&ibType)) { return *ibName + '.'; } } @@ -2620,8 +3234,7 @@ std::string WGSLCodeGenerator::assembleVariableReference(const VariableReference return expr; } -std::string WGSLCodeGenerator::assembleAnyConstructor(const AnyConstructor& c, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleAnyConstructor(const AnyConstructor& c) { std::string expr = to_wgsl_type(c.type()); expr.push_back('('); auto separator = SkSL::String::Separator(); @@ -2633,20 +3246,18 @@ std::string WGSLCodeGenerator::assembleAnyConstructor(const AnyConstructor& c, return expr; } -std::string WGSLCodeGenerator::assembleConstructorCompound(const ConstructorCompound& c, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleConstructorCompound(const ConstructorCompound& c) { if (c.type().isVector()) { - return this->assembleConstructorCompoundVector(c, parentPrecedence); + return this->assembleConstructorCompoundVector(c); } else if (c.type().isMatrix()) { - return this->assembleConstructorCompoundMatrix(c, parentPrecedence); + return this->assembleConstructorCompoundMatrix(c); } else { fContext.fErrors->error(c.fPosition, "unsupported compound constructor"); return {}; } } -std::string WGSLCodeGenerator::assembleConstructorCompoundVector(const ConstructorCompound& c, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleConstructorCompoundVector(const ConstructorCompound& c) { // WGSL supports constructing vectors from a mix of scalars and vectors but // not matrices (see https://www.w3.org/TR/WGSL/#type-constructor-expr). // @@ -2662,11 +3273,10 @@ std::string WGSLCodeGenerator::assembleConstructorCompoundVector(const Construct to_wgsl_type(c.type()).c_str(), matrix.c_str(), matrix.c_str()); } } - return this->assembleAnyConstructor(c, parentPrecedence); + return this->assembleAnyConstructor(c); } -std::string WGSLCodeGenerator::assembleConstructorCompoundMatrix(const ConstructorCompound& ctor, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleConstructorCompoundMatrix(const ConstructorCompound& ctor) { SkASSERT(ctor.type().isMatrix()); std::string expr = to_wgsl_type(ctor.type()) + '('; @@ -2688,8 +3298,8 @@ std::string WGSLCodeGenerator::assembleConstructorCompoundMatrix(const Construct return expr + ')'; } -std::string WGSLCodeGenerator::assembleConstructorDiagonalMatrix(const ConstructorDiagonalMatrix& c, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleConstructorDiagonalMatrix( + const ConstructorDiagonalMatrix& c) { const Type& type = c.type(); SkASSERT(type.isMatrix()); SkASSERT(c.argument()->type().isScalar()); @@ -2713,8 +3323,8 @@ std::string WGSLCodeGenerator::assembleConstructorDiagonalMatrix(const Construct return expr + ')'; } -std::string WGSLCodeGenerator::assembleConstructorMatrixResize(const ConstructorMatrixResize& ctor, - Precedence parentPrecedence) { +std::string WGSLCodeGenerator::assembleConstructorMatrixResize( + const ConstructorMatrixResize& ctor) { std::string source = this->writeScratchLet(this->assembleExpression(*ctor.argument(), Precedence::kSequence)); int columns = ctor.type().columns(); @@ -2797,8 +3407,8 @@ std::string WGSLCodeGenerator::assembleEqualityExpression(const Type& left, for (const Field& field : fields) { expr += separator; expr += this->assembleEqualityExpression( - *field.fType, leftName + '.' + std::string(field.fName), - *field.fType, rightName + '.' + std::string(field.fName), + *field.fType, leftName + '.' + this->assembleName(field.fName), + *field.fType, rightName + '.' + this->assembleName(field.fName), op, Precedence::kParentheses); separator = combiner; } @@ -2995,10 +3605,22 @@ void WGSLCodeGenerator::writeFields(SkSpan fields, const MemoryLayo this->write(this->assembleName(field.fName)); this->write(": "); - if (fMatrixPolyfillFields.contains(&field)) { - this->write("_skMatrix"); - this->write(std::to_string(field.fType->columns())); - this->write(std::to_string(field.fType->rows())); + if (const FieldPolyfillInfo* info = fFieldPolyfillMap.find(&field)) { + if (info->fIsArray) { + // This properly handles arrays of matrices, as well as arrays of other primitives. + SkASSERT(field.fType->isArray()); + this->write("array<_skArrayElement_"); + this->write(field.fType->abbreviatedName()); + this->write(", "); + this->write(std::to_string(field.fType->columns())); + this->write(">"); + } else if (info->fIsMatrix) { + this->write("_skMatrix"); + this->write(std::to_string(field.fType->columns())); + this->write(std::to_string(field.fType->rows())); + } else { + SkDEBUGFAILF("need polyfill for %s", info->fReplacementName.c_str()); + } } else { this->write(to_wgsl_type(*field.fType)); } @@ -3132,76 +3754,50 @@ void WGSLCodeGenerator::writeStageOutputStruct() { } } -void WGSLCodeGenerator::writeUniformPolyfills(const Type& structType, - MemoryLayout::Standard nativeLayout) { +void WGSLCodeGenerator::prepareUniformPolyfillsForInterfaceBlock( + const InterfaceBlock* interfaceBlock, + std::string_view instanceName, + MemoryLayout::Standard nativeLayout) { SkSL::MemoryLayout std140(MemoryLayout::Standard::k140); SkSL::MemoryLayout native(nativeLayout); + const Type& structType = interfaceBlock->var()->type().componentType(); for (const Field& field : structType.fields()) { - // Matrices will be represented as 16-byte aligned arrays in std140, and reconstituted into - // proper matrices as they are later accessed. We need to synthesize helpers for this. - if (field.fType->isMatrix()) { - // A polyfill is only necessary if the std140 layout (what Skia provides) actually - // differs from native layout (what WGSL expects). Otherwise the matrix is used as-is. - if (std140.stride(*field.fType) == native.stride(*field.fType)) { - continue; + const Type* type = field.fType; + bool needsArrayPolyfill = false; + bool needsMatrixPolyfill = false; + + auto isPolyfillableMatrixType = [&](const Type* type) { + return type->isMatrix() && std140.stride(*type) != native.stride(*type); + }; + + if (isPolyfillableMatrixType(type)) { + // Matrices will be represented as 16-byte aligned arrays in std140, and reconstituted + // into proper matrices as they are later accessed. We need to synthesize polyfill. + needsMatrixPolyfill = true; + } else if (type->isArray() && !type->isUnsizedArray() && + !type->componentType().isOpaque()) { + const Type* innerType = &type->componentType(); + if (isPolyfillableMatrixType(innerType)) { + // Use a polyfill when the array contains a matrix that requires polyfill. + needsArrayPolyfill = true; + needsMatrixPolyfill = true; + } else if (native.size(*innerType) < 16) { + // Use a polyfill when the array elements are smaller than 16 bytes, since std140 + // will pad elements to a 16-byte stride. + needsArrayPolyfill = true; } + } + if (needsArrayPolyfill || needsMatrixPolyfill) { // Add a polyfill for this matrix type. - fMatrixPolyfillFields.add(&field); - - int c = field.fType->columns(); - int r = field.fType->rows(); - if (!fWrittenUniformRowPolyfill[r]) { - fWrittenUniformRowPolyfill[r] = true; - - this->write("struct _skRow"); - this->write(std::to_string(r)); - this->writeLine(" {"); - this->write(" @size(16) r : vec"); - this->write(std::to_string(r)); - this->write("<"); - this->write(to_wgsl_type(field.fType->componentType())); - this->writeLine(">"); - this->writeLine("};"); - } - - if (!fWrittenUniformMatrixPolyfill[c][r]) { - fWrittenUniformMatrixPolyfill[c][r] = true; - - this->write("struct _skMatrix"); - this->write(std::to_string(c)); - this->write(std::to_string(r)); - this->writeLine(" {"); - this->write(" c : array<_skRow"); - this->write(std::to_string(r)); - this->write(", "); - this->write(std::to_string(c)); - this->writeLine(">"); - this->writeLine("};"); - - this->write("fn _skMatrixUnpack"); - this->write(std::to_string(c)); - this->write(std::to_string(r)); - this->write("(m : _skMatrix"); - this->write(std::to_string(c)); - this->write(std::to_string(r)); - this->write(") -> "); - this->write(to_wgsl_type(*field.fType)); - this->writeLine(" {"); - this->write(" return "); - this->write(to_wgsl_type(*field.fType)); - this->write("("); - auto separator = String::Separator(); - for (int column = 0; column < c; column++) { - this->write(separator()); - this->write("m.c["); - this->write(std::to_string(column)); - this->write("].r"); - } - this->writeLine(");"); - this->writeLine("}"); - } + FieldPolyfillInfo info; + info.fInterfaceBlock = interfaceBlock; + info.fReplacementName = "_skUnpacked_" + std::string(instanceName) + '_' + + this->assembleName(field.fName); + info.fIsArray = needsArrayPolyfill; + info.fIsMatrix = needsMatrixPolyfill; + fFieldPolyfillMap.set(&field, info); } } } @@ -3220,10 +3816,10 @@ void WGSLCodeGenerator::writeUniformsAndBuffers() { MemoryLayout::Standard nativeLayout; if (ib.var()->modifierFlags().isUniform()) { addressSpace = "uniform"; - nativeLayout = MemoryLayout::Standard::kWGSLUniform; + nativeLayout = MemoryLayout::Standard::kWGSLUniform_Base; } else if (ib.var()->modifierFlags().isBuffer()) { addressSpace = "storage"; - nativeLayout = MemoryLayout::Standard::kWGSLStorage; + nativeLayout = MemoryLayout::Standard::kWGSLStorage_Base; if (ib.var()->modifierFlags().isReadOnly()) { accessMode = ", read"; } else if (ib.var()->modifierFlags().isWriteOnly()) { @@ -3235,23 +3831,23 @@ void WGSLCodeGenerator::writeUniformsAndBuffers() { continue; } - this->writeUniformPolyfills(ib.var()->type().componentType(), nativeLayout); - - // Create a struct to hold all of the fields from this InterfaceBlock. - SkASSERT(!ib.typeName().empty()); - this->write("struct "); - this->write(ib.typeName()); - this->writeLine(" {"); - // If we have an anonymous interface block, assign a name like `_uniform0` or `_storage1`. std::string instanceName; if (ib.instanceName().empty()) { instanceName = "_" + std::string(addressSpace) + std::to_string(fScratchCount++); - fInterfaceBlockNameMap[&ib.var()->type()] = instanceName; + fInterfaceBlockNameMap[&ib.var()->type().componentType()] = instanceName; } else { instanceName = std::string(ib.instanceName()); } + this->prepareUniformPolyfillsForInterfaceBlock(&ib, instanceName, nativeLayout); + + // Create a struct to hold all of the fields from this InterfaceBlock. + SkASSERT(!ib.typeName().empty()); + this->write("struct "); + this->write(ib.typeName()); + this->writeLine(" {"); + // Find the struct type and fields used by this interface block. const Type& ibType = ib.var()->type().componentType(); SkASSERT(ibType.isStruct()); diff --git a/src/sksl/codegen/SkSLWGSLCodeGenerator.h b/src/sksl/codegen/SkSLWGSLCodeGenerator.h index 0c3e08de19c8..9ccc33406c53 100644 --- a/src/sksl/codegen/SkSLWGSLCodeGenerator.h +++ b/src/sksl/codegen/SkSLWGSLCodeGenerator.h @@ -18,7 +18,6 @@ #include "src/sksl/codegen/SkSLCodeGenerator.h" #include -#include #include #include #include @@ -44,6 +43,7 @@ class FunctionDefinition; class GlobalVarDeclaration; class IfStatement; class IndexExpression; +class InterfaceBlock; enum IntrinsicKind : int8_t; struct Layout; class Literal; @@ -139,17 +139,7 @@ class WGSLCodeGenerator : public CodeGenerator { }; WGSLCodeGenerator(const Context* context, const Program* program, OutputStream* out) - : INHERITED(context, program, out) - , fReservedWords({"array", - "FSIn", - "FSOut", - "_globalUniforms", - "_GlobalUniforms", - "_return", - "_stageIn", - "_stageOut", - "VSIn", - "VSOut"}) {} + : INHERITED(context, program, out) {} bool generateCode() override; @@ -182,7 +172,8 @@ class WGSLCodeGenerator : public CodeGenerator { // Write a function definition. void writeFunction(const FunctionDefinition& f); - void writeFunctionDeclaration(const FunctionDeclaration& f); + void writeFunctionDeclaration(const FunctionDeclaration& f, + SkSpan paramNeedsDedicatedStorage); // Write the program entry point. void writeEntryPoint(const FunctionDefinition& f); @@ -213,6 +204,8 @@ class WGSLCodeGenerator : public CodeGenerator { std::string variableReferenceNameForLValue(const VariableReference& r); std::string variablePrefix(const Variable& v); + bool binaryOpNeedsComponentwiseMatrixPolyfill(const Type& left, const Type& right, Operator op); + // Writers for expressions. These return the final expression text as a string, and emit any // necessary setup code directly into the program as necessary. The returned expression may be // a `let`-alias that cannot be assigned-into; use `makeLValue` for an assignable expression. @@ -223,10 +216,6 @@ class WGSLCodeGenerator : public CodeGenerator { const Expression& right, const Type& resultType, Precedence parentPrecedence); - std::string assembleBinaryExpressionElement(const Expression& expr, - Operator op, - const Expression& other, - Precedence parentPrecedence); std::string assembleFieldAccess(const FieldAccess& f); std::string assembleFunctionCall(const FunctionCall& call, Precedence parentPrecedence); std::string assembleIndexExpression(const IndexExpression& i); @@ -255,19 +244,19 @@ class WGSLCodeGenerator : public CodeGenerator { const Expression& sampler, const Expression& coords); std::string assembleInversePolyfill(const FunctionCall& call); + std::string assembleComponentwiseMatrixBinary(const Type& leftType, + const Type& rightType, + const std::string& left, + const std::string& right, + Operator op); // Constructor expressions - std::string assembleAnyConstructor(const AnyConstructor& c, Precedence parentPrecedence); - std::string assembleConstructorCompound(const ConstructorCompound& c, - Precedence parentPrecedence); - std::string assembleConstructorCompoundVector(const ConstructorCompound& c, - Precedence parentPrecedence); - std::string assembleConstructorCompoundMatrix(const ConstructorCompound& c, - Precedence parentPrecedence); - std::string assembleConstructorDiagonalMatrix(const ConstructorDiagonalMatrix& c, - Precedence parentPrecedence); - std::string assembleConstructorMatrixResize(const ConstructorMatrixResize& ctor, - Precedence parentPrecedence); + std::string assembleAnyConstructor(const AnyConstructor& c); + std::string assembleConstructorCompound(const ConstructorCompound& c); + std::string assembleConstructorCompoundVector(const ConstructorCompound& c); + std::string assembleConstructorCompoundMatrix(const ConstructorCompound& c); + std::string assembleConstructorDiagonalMatrix(const ConstructorDiagonalMatrix& c); + std::string assembleConstructorMatrixResize(const ConstructorMatrixResize& ctor); // Synthesized helper functions for comparison operators that are not supported by WGSL. std::string assembleEqualityExpression(const Type& left, @@ -309,7 +298,10 @@ class WGSLCodeGenerator : public CodeGenerator { void writeStageInputStruct(); void writeStageOutputStruct(); void writeUniformsAndBuffers(); - void writeUniformPolyfills(const Type& structType, MemoryLayout::Standard nativeLayout); + void prepareUniformPolyfillsForInterfaceBlock(const InterfaceBlock* interfaceBlock, + std::string_view instanceName, + MemoryLayout::Standard nativeLayout); + void writeUniformPolyfills(); void writeTextureOrSampler(const Variable& var, int bindingLocation, @@ -343,7 +335,6 @@ class WGSLCodeGenerator : public CodeGenerator { skia_private::THashMap fInterfaceBlockNameMap; // Stores the disallowed identifier names. - skia_private::THashSet fReservedWords; ProgramRequirements fRequirements; int fPipelineInputCount = 0; @@ -353,12 +344,20 @@ class WGSLCodeGenerator : public CodeGenerator { bool fWrittenInverse3 = false; bool fWrittenInverse4 = false; - // These fields control uniform-matrix polyfill support. Because our uniform data is provided in - // std140 layout, matrices need to be represented as arrays of @size(16)-aligned vectors, and - // are unpacked as they are referenced. - skia_private::THashSet fMatrixPolyfillFields; - bool fWrittenUniformMatrixPolyfill[5][5] = {}; // m[column][row] for each matrix type - bool fWrittenUniformRowPolyfill[5] = {}; // for each matrix row-size + // These fields control uniform polyfill support in cases where WGSL and std140 disagree. + // In std140 layout, matrices need to be represented as arrays of @size(16)-aligned vectors, and + // array elements are wrapped in a struct containing a single @size(16)-aligned element. Arrays + // of matrices combine both wrappers. These wrapper structs are unpacked into natively-typed + // globals at the shader entrypoint. + struct FieldPolyfillInfo { + const InterfaceBlock* fInterfaceBlock; + std::string fReplacementName; + bool fIsArray = false; + bool fIsMatrix = false; + bool fWasAccessed = false; + }; + using FieldPolyfillMap = skia_private::THashMap; + FieldPolyfillMap fFieldPolyfillMap; // Output processing state. int fIndentation = 0; diff --git a/src/sksl/generated/sksl_gpu.minified.sksl b/src/sksl/generated/sksl_gpu.minified.sksl index beb7f44c0076..ac32b57c307c 100644 --- a/src/sksl/generated/sksl_gpu.minified.sksl +++ b/src/sksl/generated/sksl_gpu.minified.sksl @@ -9,36 +9,35 @@ static constexpr char SKSL_MINIFIED_sksl_gpu[] = "(uint);$pure uint packHalf2x16(float2);$pure float2 unpackHalf2x16(uint);$pure" " $genIType bitCount($genIType);$pure $genIType bitCount($genUType);$pure $genIType" " findLSB($genIType);$pure $genIType findLSB($genUType);$pure $genIType findMSB" -"($genIType);$pure $genIType findMSB($genUType);$pure sampler2D makeSampler2D" -"(texture2D,sampler);$pure half4 sample(sampler2D,float2);$pure half4 sample" -"(sampler2D,float3);$pure half4 sample(sampler2D,float3,float);$pure half4 sample" -"(samplerExternalOES,float2);$pure half4 sample(samplerExternalOES,float2,float" -");$pure half4 sample(sampler2DRect,float2);$pure half4 sample(sampler2DRect" -",float3);$pure half4 sampleLod(sampler2D,float2,float);$pure half4 sampleLod" -"(sampler2D,float3,float);$pure half4 sampleGrad(sampler2D,float2,float2,float2" -");$pure half4 subpassLoad(subpassInput);$pure half4 subpassLoad(subpassInputMS" -",int);$pure uint atomicLoad(atomicUint);void atomicStore(atomicUint,uint);uint" -" atomicAdd(atomicUint,uint);$pure half4 blend_clear(half4 a,half4 b){return" -" half4(0.);}$pure half4 blend_src(half4 a,half4 b){return a;}$pure half4 blend_dst" -"(half4 a,half4 b){return b;}$pure half4 blend_src_over(half4 a,half4 b){return" -" a+(1.-a.w)*b;}$pure half4 blend_dst_over(half4 a,half4 b){return(1.-b.w)*a" -"+b;}$pure half4 blend_src_in(half4 a,half4 b){return a*b.w;}$pure half4 blend_dst_in" -"(half4 a,half4 b){return b*a.w;}$pure half4 blend_src_out(half4 a,half4 b){" -"return(1.-b.w)*a;}$pure half4 blend_dst_out(half4 a,half4 b){return(1.-a.w)" -"*b;}$pure half4 blend_src_atop(half4 a,half4 b){return b.w*a+(1.-a.w)*b;}$pure" -" half4 blend_dst_atop(half4 a,half4 b){return(1.-b.w)*a+a.w*b;}$pure half4 blend_xor" -"(half4 a,half4 b){return(1.-b.w)*a+(1.-a.w)*b;}$pure half4 blend_plus(half4" -" a,half4 b){return min(a+b,1.);}$pure half4 blend_porter_duff(half4 a,half4" -" b,half4 c){half2 d=a.xy+a.zw*(half2(c.w,b.w)+min(a.zw,0.));return min(half4" -"(1.),b*d.x+c*d.y);}$pure half4 blend_modulate(half4 a,half4 b){return a*b;}" -"$pure half4 blend_screen(half4 a,half4 b){return a+(1.-a)*b;}$pure half $b(" -"half2 a,half2 b){return 2.*b.x<=b.y?(2.*a.x)*b.x:a.y*b.y-(2.*(b.y-b.x))*(a." -"y-a.x);}$pure half4 blend_overlay(half4 a,half4 b){half4 c=half4($b(a.xw,b." -"xw),$b(a.yw,b.yw),$b(a.zw,b.zw),a.w+(1.-a.w)*b.w);c.xyz+=b.xyz*(1.-a.w)+a.xyz" -"*(1.-b.w);return c;}$pure half4 blend_overlay(half c,half4 d,half4 e){return" -" blend_overlay(bool(c)?e:d,bool(c)?d:e);}$pure half4 blend_lighten(half4 a," -"half4 b){half4 c=blend_src_over(a,b);c.xyz=max(c.xyz,(1.-b.w)*a.xyz+b.xyz);" -"return c;}$pure half4 blend_darken(half c,half4 d,half4 e){half4 f=blend_src_over" +"($genIType);$pure $genIType findMSB($genUType);$pure half4 sample(sampler2D" +",float2);$pure half4 sample(sampler2D,float3);$pure half4 sample(sampler2D," +"float3,float);$pure half4 sample(samplerExternalOES,float2);$pure half4 sample" +"(samplerExternalOES,float2,float);$pure half4 sample(sampler2DRect,float2);" +"$pure half4 sample(sampler2DRect,float3);$pure half4 sampleLod(sampler2D,float2" +",float);$pure half4 sampleLod(sampler2D,float3,float);$pure half4 sampleGrad" +"(sampler2D,float2,float2,float2);$pure half4 subpassLoad(subpassInput);$pure" +" half4 subpassLoad(subpassInputMS,int);$pure uint atomicLoad(atomicUint);void" +" atomicStore(atomicUint,uint);uint atomicAdd(atomicUint,uint);$pure half4 blend_clear" +"(half4 a,half4 b){return half4(0.);}$pure half4 blend_src(half4 a,half4 b){" +"return a;}$pure half4 blend_dst(half4 a,half4 b){return b;}$pure half4 blend_src_over" +"(half4 a,half4 b){return a+(1.-a.w)*b;}$pure half4 blend_dst_over(half4 a,half4" +" b){return(1.-b.w)*a+b;}$pure half4 blend_src_in(half4 a,half4 b){return a*" +"b.w;}$pure half4 blend_dst_in(half4 a,half4 b){return b*a.w;}$pure half4 blend_src_out" +"(half4 a,half4 b){return(1.-b.w)*a;}$pure half4 blend_dst_out(half4 a,half4" +" b){return(1.-a.w)*b;}$pure half4 blend_src_atop(half4 a,half4 b){return b." +"w*a+(1.-a.w)*b;}$pure half4 blend_dst_atop(half4 a,half4 b){return(1.-b.w)*" +"a+a.w*b;}$pure half4 blend_xor(half4 a,half4 b){return(1.-b.w)*a+(1.-a.w)*b" +";}$pure half4 blend_plus(half4 a,half4 b){return min(a+b,1.);}$pure half4 blend_porter_duff" +"(half4 a,half4 b,half4 c){half2 d=a.xy+a.zw*(half2(c.w,b.w)+min(a.zw,0.));return" +" min(half4(1.),b*d.x+c*d.y);}$pure half4 blend_modulate(half4 a,half4 b){return" +" a*b;}$pure half4 blend_screen(half4 a,half4 b){return a+(1.-a)*b;}$pure half" +" $b(half2 a,half2 b){return 2.*b.x<=b.y?(2.*a.x)*b.x:a.y*b.y-(2.*(b.y-b.x))" +"*(a.y-a.x);}$pure half4 blend_overlay(half4 a,half4 b){half4 c=half4($b(a.xw" +",b.xw),$b(a.yw,b.yw),$b(a.zw,b.zw),a.w+(1.-a.w)*b.w);c.xyz+=b.xyz*(1.-a.w)+" +"a.xyz*(1.-b.w);return c;}$pure half4 blend_overlay(half c,half4 d,half4 e){" +"return blend_overlay(bool(c)?e:d,bool(c)?d:e);}$pure half4 blend_lighten(half4" +" a,half4 b){half4 c=blend_src_over(a,b);c.xyz=max(c.xyz,(1.-b.w)*a.xyz+b.xyz" +");return c;}$pure half4 blend_darken(half c,half4 d,half4 e){half4 f=blend_src_over" "(d,e);half3 g=(1.-e.w)*d.xyz+e.xyz;f.xyz=c*min(f.xyz*c,g*c);return f;}$pure" " half4 blend_darken(half4 a,half4 b){return blend_darken(1.,a,b);}const half" " $kGuardedDivideEpsilon=half(sk_Caps.mustGuardDivisionEvenAfterExplicitZeroCheck" diff --git a/src/sksl/generated/sksl_gpu.unoptimized.sksl b/src/sksl/generated/sksl_gpu.unoptimized.sksl index 0b09c7d46154..2c19df6072f9 100644 --- a/src/sksl/generated/sksl_gpu.unoptimized.sksl +++ b/src/sksl/generated/sksl_gpu.unoptimized.sksl @@ -11,39 +11,38 @@ static constexpr char SKSL_MINIFIED_sksl_gpu[] = " $genIType bitCount($genIType value);$pure $genIType bitCount($genUType value" ");$pure $genIType findLSB($genIType value);$pure $genIType findLSB($genUType" " value);$pure $genIType findMSB($genIType value);$pure $genIType findMSB($genUType" -" value);$pure sampler2D makeSampler2D(texture2D texture,sampler s);$pure half4" -" sample(sampler2D s,float2 P);$pure half4 sample(sampler2D s,float3 P);$pure" -" half4 sample(sampler2D s,float3 P,float bias);$pure half4 sample(samplerExternalOES" -" s,float2 P);$pure half4 sample(samplerExternalOES s,float2 P,float bias);$pure" -" half4 sample(sampler2DRect s,float2 P);$pure half4 sample(sampler2DRect s," -"float3 P);$pure half4 sampleLod(sampler2D s,float2 P,float lod);$pure half4" -" sampleLod(sampler2D s,float3 P,float lod);$pure half4 sampleGrad(sampler2D" -" s,float2,float2 dPdx,float2 dPdy);$pure half4 subpassLoad(subpassInput subpass" -");$pure half4 subpassLoad(subpassInputMS subpass,int sample);$pure uint atomicLoad" -"(atomicUint a);void atomicStore(atomicUint a,uint value);uint atomicAdd(atomicUint" -" a,uint value);$pure half4 blend_clear(half4 src,half4 dst){return half4(0." -");}$pure half4 blend_src(half4 src,half4 dst){return src;}$pure half4 blend_dst" -"(half4 src,half4 dst){return dst;}$pure half4 blend_src_over(half4 src,half4" -" dst){return src+(1.-src.w)*dst;}$pure half4 blend_dst_over(half4 src,half4" -" dst){return(1.-dst.w)*src+dst;}$pure half4 blend_src_in(half4 src,half4 dst" -"){return src*dst.w;}$pure half4 blend_dst_in(half4 src,half4 dst){return dst" -"*src.w;}$pure half4 blend_src_out(half4 src,half4 dst){return(1.-dst.w)*src" -";}$pure half4 blend_dst_out(half4 src,half4 dst){return(1.-src.w)*dst;}$pure" -" half4 blend_src_atop(half4 src,half4 dst){return dst.w*src+(1.-src.w)*dst;" -"}$pure half4 blend_dst_atop(half4 src,half4 dst){return(1.-dst.w)*src+src.w" -"*dst;}$pure half4 blend_xor(half4 src,half4 dst){return(1.-dst.w)*src+(1.-src" -".w)*dst;}$pure half4 blend_plus(half4 src,half4 dst){return min(src+dst,1.)" -";}$pure half4 blend_porter_duff(half4 blendOp,half4 src,half4 dst){half2 coeff" -"=blendOp.xy+blendOp.zw*(half2(dst.w,src.w)+min(blendOp.zw,0.));return min(half4" -"(1.),src*coeff.x+dst*coeff.y);}$pure half4 blend_modulate(half4 src,half4 dst" -"){return src*dst;}$pure half4 blend_screen(half4 src,half4 dst){return src+" -"(1.-src)*dst;}$pure half $blend_overlay_component(half2 s,half2 d){return 2." -"*d.x<=d.y?(2.*s.x)*d.x:s.y*d.y-(2.*(d.y-d.x))*(s.y-s.x);}$pure half4 blend_overlay" -"(half4 src,half4 dst){half4 result=half4($blend_overlay_component(src.xw,dst" -".xw),$blend_overlay_component(src.yw,dst.yw),$blend_overlay_component(src.zw" -",dst.zw),src.w+(1.-src.w)*dst.w);result.xyz+=dst.xyz*(1.-src.w)+src.xyz*(1." -"-dst.w);return result;}$pure half4 blend_overlay(half flip,half4 a,half4 b)" -"{return blend_overlay(bool(flip)?b:a,bool(flip)?a:b);}$pure half4 blend_lighten" +" value);$pure half4 sample(sampler2D s,float2 P);$pure half4 sample(sampler2D" +" s,float3 P);$pure half4 sample(sampler2D s,float3 P,float bias);$pure half4" +" sample(samplerExternalOES s,float2 P);$pure half4 sample(samplerExternalOES" +" s,float2 P,float bias);$pure half4 sample(sampler2DRect s,float2 P);$pure half4" +" sample(sampler2DRect s,float3 P);$pure half4 sampleLod(sampler2D s,float2 P" +",float lod);$pure half4 sampleLod(sampler2D s,float3 P,float lod);$pure half4" +" sampleGrad(sampler2D s,float2,float2 dPdx,float2 dPdy);$pure half4 subpassLoad" +"(subpassInput subpass);$pure half4 subpassLoad(subpassInputMS subpass,int sample" +");$pure uint atomicLoad(atomicUint a);void atomicStore(atomicUint a,uint value" +");uint atomicAdd(atomicUint a,uint value);$pure half4 blend_clear(half4 src" +",half4 dst){return half4(0.);}$pure half4 blend_src(half4 src,half4 dst){return" +" src;}$pure half4 blend_dst(half4 src,half4 dst){return dst;}$pure half4 blend_src_over" +"(half4 src,half4 dst){return src+(1.-src.w)*dst;}$pure half4 blend_dst_over" +"(half4 src,half4 dst){return(1.-dst.w)*src+dst;}$pure half4 blend_src_in(half4" +" src,half4 dst){return src*dst.w;}$pure half4 blend_dst_in(half4 src,half4 dst" +"){return dst*src.w;}$pure half4 blend_src_out(half4 src,half4 dst){return(1." +"-dst.w)*src;}$pure half4 blend_dst_out(half4 src,half4 dst){return(1.-src.w" +")*dst;}$pure half4 blend_src_atop(half4 src,half4 dst){return dst.w*src+(1." +"-src.w)*dst;}$pure half4 blend_dst_atop(half4 src,half4 dst){return(1.-dst." +"w)*src+src.w*dst;}$pure half4 blend_xor(half4 src,half4 dst){return(1.-dst." +"w)*src+(1.-src.w)*dst;}$pure half4 blend_plus(half4 src,half4 dst){return min" +"(src+dst,1.);}$pure half4 blend_porter_duff(half4 blendOp,half4 src,half4 dst" +"){half2 coeff=blendOp.xy+blendOp.zw*(half2(dst.w,src.w)+min(blendOp.zw,0.))" +";return min(half4(1.),src*coeff.x+dst*coeff.y);}$pure half4 blend_modulate(" +"half4 src,half4 dst){return src*dst;}$pure half4 blend_screen(half4 src,half4" +" dst){return src+(1.-src)*dst;}$pure half $blend_overlay_component(half2 s," +"half2 d){return 2.*d.x<=d.y?(2.*s.x)*d.x:s.y*d.y-(2.*(d.y-d.x))*(s.y-s.x);}" +"$pure half4 blend_overlay(half4 src,half4 dst){half4 result=half4($blend_overlay_component" +"(src.xw,dst.xw),$blend_overlay_component(src.yw,dst.yw),$blend_overlay_component" +"(src.zw,dst.zw),src.w+(1.-src.w)*dst.w);result.xyz+=dst.xyz*(1.-src.w)+src." +"xyz*(1.-dst.w);return result;}$pure half4 blend_overlay(half flip,half4 a,half4" +" b){return blend_overlay(bool(flip)?b:a,bool(flip)?a:b);}$pure half4 blend_lighten" "(half4 src,half4 dst){half4 result=blend_src_over(src,dst);result.xyz=max(result" ".xyz,(1.-dst.w)*src.xyz+dst.xyz);return result;}$pure half4 blend_darken(half" " mode,half4 src,half4 dst){half4 a=blend_src_over(src,dst);half3 b=(1.-dst." diff --git a/src/sksl/generated/sksl_graphite_frag.dehydrated.sksl b/src/sksl/generated/sksl_graphite_frag.dehydrated.sksl deleted file mode 100644 index 93d4e47b8a4a..000000000000 --- a/src/sksl/generated/sksl_graphite_frag.dehydrated.sksl +++ /dev/null @@ -1,3119 +0,0 @@ -static constexpr uint8_t SKSL_INCLUDE_sksl_graphite_frag[] = {14,0,27,6, -8,115,107,95,101,114,114,111,114, -5,104,97,108,102,52, -5,99,111,108,111,114, -14,115,107,95,112,97,115,115,116,104,114,111,117,103,104, -10,99,111,108,111,114,80,97,114,97,109, -6,102,108,111,97,116,52, -15,115,107,95,115,111,108,105,100,95,115,104,97,100,101,114, -2,116,109, -3,105,110,116, -1,102, -5,102,108,111,97,116, -3,108,111,119, -4,104,105,103,104, -5,36,116,105,108,101, -6,99,111,111,114,100,115, -6,102,108,111,97,116,50, -6,115,117,98,115,101,116, -3,116,109,88, -3,116,109,89, -8,105,109,103,87,105,100,116,104, -9,105,109,103,72,101,105,103,104,116, -1,115, -9,115,97,109,112,108,101,114,50,68, -15,115,107,95,105,109,97,103,101,95,115,104,97,100,101,114, -8,116,105,108,101,77,111,100,101, -1,116, -10,36,116,105,108,101,95,103,114,97,100, -11,99,111,108,111,114,115,80,97,114,97,109, -12,111,102,102,115,101,116,115,80,97,114,97,109, -16,36,99,111,108,111,114,105,122,101,95,103,114,97,100,95,52, -16,36,99,111,108,111,114,105,122,101,95,103,114,97,100,95,56, -11,112,111,105,110,116,48,80,97,114,97,109, -11,112,111,105,110,116,49,80,97,114,97,109, -3,112,111,115, -19,36,108,105,110,101,97,114,95,103,114,97,100,95,108,97,121,111,117,116, -11,99,101,110,116,101,114,80,97,114,97,109, -11,114,97,100,105,117,115,80,97,114,97,109, -19,36,114,97,100,105,97,108,95,103,114,97,100,95,108,97,121,111,117,116, -9,98,105,97,115,80,97,114,97,109, -10,115,99,97,108,101,80,97,114,97,109, -18,36,115,119,101,101,112,95,103,114,97,100,95,108,97,121,111,117,116, -2,112,48, -2,112,49, -14,36,109,97,112,95,116,111,95,117,110,105,116,95,120, -8,102,108,111,97,116,51,120,51, -12,114,97,100,105,117,115,48,80,97,114,97,109, -12,114,97,100,105,117,115,49,80,97,114,97,109, -20,36,99,111,110,105,99,97,108,95,103,114,97,100,95,108,97,121,111,117,116, -23,115,107,95,108,105,110,101,97,114,95,103,114,97,100,95,52,95,115,104,97,100,101,114, -23,115,107,95,108,105,110,101,97,114,95,103,114,97,100,95,56,95,115,104,97,100,101,114, -23,115,107,95,114,97,100,105,97,108,95,103,114,97,100,95,52,95,115,104,97,100,101,114, -23,115,107,95,114,97,100,105,97,108,95,103,114,97,100,95,56,95,115,104,97,100,101,114, -22,115,107,95,115,119,101,101,112,95,103,114,97,100,95,52,95,115,104,97,100,101,114, -22,115,107,95,115,119,101,101,112,95,103,114,97,100,95,56,95,115,104,97,100,101,114, -24,115,107,95,99,111,110,105,99,97,108,95,103,114,97,100,95,52,95,115,104,97,100,101,114, -24,115,107,95,99,111,110,105,99,97,108,95,103,114,97,100,95,56,95,115,104,97,100,101,114, -7,99,111,108,111,114,73,110, -1,109, -8,102,108,111,97,116,52,120,52, -1,118, -6,105,110,72,83,76,65, -21,115,107,95,109,97,116,114,105,120,95,99,111,108,111,114,102,105,108,116,101,114, -9,98,108,101,110,100,77,111,100,101, -3,115,114,99, -3,100,115,116, -8,115,107,95,98,108,101,110,100, -15,115,107,95,98,108,101,110,100,95,115,104,97,100,101,114, -8,100,115,116,67,111,108,111,114, -8,115,114,99,67,111,108,111,114, -20,115,107,95,98,108,101,110,100,95,99,111,108,111,114,102,105,108,116,101,114, -7,105,110,67,111,108,111,114, -20,115,107,95,116,97,98,108,101,95,99,111,108,111,114,102,105,108,116,101,114, -23,115,107,95,103,97,117,115,115,105,97,110,95,99,111,108,111,114,102,105,108,116,101,114, -4,104,97,108,102, -6,107,67,108,97,109,112, -7,107,82,101,112,101,97,116, -13,107,77,105,114,114,111,114,82,101,112,101,97,116, -5,99,108,97,109,112, -6,108,101,110,103,116,104, -3,109,111,100, -7,108,101,110,103,116,104,50, -3,116,109,112, -3,109,105,120, -4,115,116,101,112, -10,105,110,115,101,116,67,108,97,109,112, -10,99,108,97,109,112,101,100,80,111,115, -5,102,108,111,111,114, -4,99,101,105,108, -6,115,97,109,112,108,101, -5,102,114,97,99,116, -3,116,95,49, -26,109,117,115,116,68,111,79,112,66,101,116,119,101,101,110,70,108,111,111,114,65,110,100,65,98,115, -3,97,98,115, -11,36,105,110,116,76,105,116,101,114,97,108, -5,100,101,108,116,97, -3,100,111,116, -8,100,105,115,116,97,110,99,101, -5,97,110,103,108,101, -28,97,116,97,110,50,73,109,112,108,101,109,101,110,116,101,100,65,115,65,116,97,110,89,79,118,101,114,88, -4,97,116,97,110, -7,105,110,118,101,114,115,101, -19,83,75,95,83,99,97,108,97,114,78,101,97,114,108,121,90,101,114,111, -7,100,67,101,110,116,101,114, -7,100,82,97,100,105,117,115, -6,114,97,100,105,97,108, -4,98,111,111,108, -5,115,116,114,105,112, -5,115,99,97,108,101, -9,115,99,97,108,101,83,105,103,110, -4,98,105,97,115, -2,112,116, -4,115,105,103,110, -9,116,114,97,110,115,102,111,114,109, -1,114, -3,114,95,50, -6,102,108,111,97,116,51, -4,115,113,114,116, -9,105,115,83,119,97,112,112,101,100, -2,67,102, -6,115,99,97,108,101,88, -6,115,99,97,108,101,89, -2,114,49, -15,105,115,70,111,99,97,108,79,110,67,105,114,99,108,101, -5,105,110,118,82,49, -11,100,82,97,100,105,117,115,83,105,103,110, -13,105,115,87,101,108,108,66,101,104,97,118,101,100, -3,120,95,116, -5,116,109,112,80,116, -4,116,101,109,112, -8,99,111,108,111,114,79,117,116, -11,36,114,103,98,95,116,111,95,104,115,108, -8,117,110,112,114,101,109,117,108, -11,36,104,115,108,95,116,111,95,114,103,98, -8,115,97,116,117,114,97,116,101, -11,98,108,101,110,100,95,99,108,101,97,114, -9,98,108,101,110,100,95,115,114,99, -9,98,108,101,110,100,95,100,115,116, -17,98,108,101,110,100,95,112,111,114,116,101,114,95,100,117,102,102, -14,98,108,101,110,100,95,109,111,100,117,108,97,116,101, -12,98,108,101,110,100,95,115,99,114,101,101,110, -13,98,108,101,110,100,95,111,118,101,114,108,97,121, -12,98,108,101,110,100,95,100,97,114,107,101,110, -17,98,108,101,110,100,95,99,111,108,111,114,95,100,111,100,103,101, -16,98,108,101,110,100,95,99,111,108,111,114,95,98,117,114,110, -16,98,108,101,110,100,95,115,111,102,116,95,108,105,103,104,116, -16,98,108,101,110,100,95,100,105,102,102,101,114,101,110,99,101, -15,98,108,101,110,100,95,101,120,99,108,117,115,105,111,110, -14,98,108,101,110,100,95,109,117,108,116,105,112,108,121, -10,98,108,101,110,100,95,104,115,108,99, -5,104,97,108,102,50, -6,102,97,99,116,111,114, -3,101,120,112, -52,1,139,0, -28,1,0, -39, -16,0,64,0,0,2,0,0, -51,255,255,11,0, -54,2,0, -17,17,0, -51,255,255,11,0,3, -28,3,0, -39, -16,0,64,0,0,23,0,1, -51,2,0, -51,255,255,11,0, -54,4,0, -17,38,0, -51,255,255,49,0,3, -28,5,0, -39, -16,0,64,0,0,56,0,1, -51,4,0, -51,255,255,11,0, -54,6,0, -17,72,0, -51,255,255,75,0,3, -54,7,0, -17,79,0, -51,255,255,81,0,3, -54,8,0, -17,87,0, -51,255,255,81,0,3, -54,9,0, -17,91,0, -51,255,255,81,0,3, -28,10,0, -39, -16,0,64,0,0,96,0,4, -51,6,0, -51,7,0, -51,8,0, -51,9,0, -51,255,255,81,0, -54,11,0, -17,102,0, -51,255,255,109,0,3, -54,12,0, -17,116,0, -51,255,255,49,0,3, -54,13,0, -17,123,0, -51,255,255,75,0,3, -54,14,0, -17,127,0, -51,255,255,75,0,3, -54,15,0, -17,131,0, -51,255,255,75,0,3, -54,16,0, -17,140,0, -51,255,255,75,0,3, -54,17,0, -17,150,0, -51,255,255,152,0,3, -28,18,0, -39, -16,0,64,0,0,162,0,7, -51,11,0, -51,12,0, -51,13,0, -51,14,0, -51,15,0, -51,16,0, -51,17,0, -51,255,255,11,0, -54,19,0, -17,178,0, -51,255,255,75,0,3, -54,20,0, -17,187,0, -51,255,255,109,0,3, -28,21,0, -39, -16,0,64,0,0,189,0,2, -51,19,0, -51,20,0, -51,255,255,109,0, -0,22,0, -51,255,255,49,0,4, -0,23,0, -51,255,255,81,0,4, -54,24,0, -17,200,0, -51,22,0,3, -54,25,0, -17,212,0, -51,23,0,3, -54,26,0, -17,187,0, -51,255,255,109,0,3, -28,27,0, -39, -16,0,64,0,0,225,0,3, -51,24,0, -51,25,0, -51,26,0, -51,255,255,11,0, -0,28,0, -51,255,255,49,0,8, -0,29,0, -51,255,255,81,0,8, -54,30,0, -17,200,0, -51,28,0,3, -54,31,0, -17,212,0, -51,29,0,3, -54,32,0, -17,187,0, -51,255,255,109,0,3, -28,33,0, -39, -16,0,64,0,0,242,0,3, -51,30,0, -51,31,0, -51,32,0, -51,255,255,11,0, -54,34,0, -17,3,1, -51,255,255,109,0,3, -54,35,0, -17,15,1, -51,255,255,109,0,3, -54,36,0, -17,27,1, -51,255,255,109,0,3, -28,37,0, -39, -16,0,64,0,0,31,1,3, -51,34,0, -51,35,0, -51,36,0, -51,255,255,109,0, -54,38,0, -17,51,1, -51,255,255,109,0,3, -54,39,0, -17,63,1, -51,255,255,81,0,3, -54,40,0, -17,27,1, -51,255,255,109,0,3, -28,41,0, -39, -16,0,64,0,0,75,1,3, -51,38,0, -51,39,0, -51,40,0, -51,255,255,109,0, -54,42,0, -17,51,1, -51,255,255,109,0,3, -54,43,0, -17,95,1, -51,255,255,81,0,3, -54,44,0, -17,105,1, -51,255,255,81,0,3, -54,45,0, -17,27,1, -51,255,255,109,0,3, -28,46,0, -39, -16,0,64,0,0,116,1,4, -51,42,0, -51,43,0, -51,44,0, -51,45,0, -51,255,255,109,0, -54,47,0, -17,135,1, -51,255,255,109,0,3, -54,48,0, -17,138,1, -51,255,255,109,0,3, -28,49,0, -39, -16,0,64,0,0,141,1,2, -51,47,0, -51,48,0, -51,255,255,156,1, -54,50,0, -17,3,1, -51,255,255,109,0,3, -54,51,0, -17,15,1, -51,255,255,109,0,3, -54,52,0, -17,165,1, -51,255,255,81,0,3, -54,53,0, -17,178,1, -51,255,255,81,0,3, -54,54,0, -17,27,1, -51,255,255,109,0,3, -28,55,0, -39, -16,0,64,0,0,191,1,5, -51,50,0, -51,51,0, -51,52,0, -51,53,0, -51,54,0, -51,255,255,109,0, -54,56,0, -17,102,0, -51,255,255,109,0,3, -54,57,0, -17,200,0, -51,22,0,3, -54,58,0, -17,212,0, -51,23,0,3, -54,59,0, -17,3,1, -51,255,255,109,0,3, -54,60,0, -17,15,1, -51,255,255,109,0,3, -54,61,0, -17,178,0, -51,255,255,75,0,3, -28,62,0, -39, -16,0,64,0,0,212,1,6, -51,56,0, -51,57,0, -51,58,0, -51,59,0, -51,60,0, -51,61,0, -51,255,255,11,0, -54,63,0, -17,102,0, -51,255,255,109,0,3, -54,64,0, -17,200,0, -51,28,0,3, -54,65,0, -17,212,0, -51,29,0,3, -54,66,0, -17,3,1, -51,255,255,109,0,3, -54,67,0, -17,15,1, -51,255,255,109,0,3, -54,68,0, -17,178,0, -51,255,255,75,0,3, -28,69,0, -39, -16,0,64,0,0,236,1,6, -51,63,0, -51,64,0, -51,65,0, -51,66,0, -51,67,0, -51,68,0, -51,255,255,11,0, -54,70,0, -17,102,0, -51,255,255,109,0,3, -54,71,0, -17,200,0, -51,22,0,3, -54,72,0, -17,212,0, -51,23,0,3, -54,73,0, -17,51,1, -51,255,255,109,0,3, -54,74,0, -17,63,1, -51,255,255,81,0,3, -54,75,0, -17,178,0, -51,255,255,75,0,3, -28,76,0, -39, -16,0,64,0,0,4,2,6, -51,70,0, -51,71,0, -51,72,0, -51,73,0, -51,74,0, -51,75,0, -51,255,255,11,0, -54,77,0, -17,102,0, -51,255,255,109,0,3, -54,78,0, -17,200,0, -51,28,0,3, -54,79,0, -17,212,0, -51,29,0,3, -54,80,0, -17,51,1, -51,255,255,109,0,3, -54,81,0, -17,63,1, -51,255,255,81,0,3, -54,82,0, -17,178,0, -51,255,255,75,0,3, -28,83,0, -39, -16,0,64,0,0,28,2,6, -51,77,0, -51,78,0, -51,79,0, -51,80,0, -51,81,0, -51,82,0, -51,255,255,11,0, -54,84,0, -17,102,0, -51,255,255,109,0,3, -54,85,0, -17,200,0, -51,22,0,3, -54,86,0, -17,212,0, -51,23,0,3, -54,87,0, -17,51,1, -51,255,255,109,0,3, -54,88,0, -17,95,1, -51,255,255,81,0,3, -54,89,0, -17,105,1, -51,255,255,81,0,3, -54,90,0, -17,178,0, -51,255,255,75,0,3, -28,91,0, -39, -16,0,64,0,0,52,2,7, -51,84,0, -51,85,0, -51,86,0, -51,87,0, -51,88,0, -51,89,0, -51,90,0, -51,255,255,11,0, -54,92,0, -17,102,0, -51,255,255,109,0,3, -54,93,0, -17,200,0, -51,28,0,3, -54,94,0, -17,212,0, -51,29,0,3, -54,95,0, -17,51,1, -51,255,255,109,0,3, -54,96,0, -17,95,1, -51,255,255,81,0,3, -54,97,0, -17,105,1, -51,255,255,81,0,3, -54,98,0, -17,178,0, -51,255,255,75,0,3, -28,99,0, -39, -16,0,64,0,0,75,2,7, -51,92,0, -51,93,0, -51,94,0, -51,95,0, -51,96,0, -51,97,0, -51,98,0, -51,255,255,11,0, -54,100,0, -17,102,0, -51,255,255,109,0,3, -54,101,0, -17,200,0, -51,22,0,3, -54,102,0, -17,212,0, -51,23,0,3, -54,103,0, -17,3,1, -51,255,255,109,0,3, -54,104,0, -17,15,1, -51,255,255,109,0,3, -54,105,0, -17,165,1, -51,255,255,81,0,3, -54,106,0, -17,178,1, -51,255,255,81,0,3, -54,107,0, -17,178,0, -51,255,255,75,0,3, -28,108,0, -39, -16,0,64,0,0,98,2,8, -51,100,0, -51,101,0, -51,102,0, -51,103,0, -51,104,0, -51,105,0, -51,106,0, -51,107,0, -51,255,255,11,0, -54,109,0, -17,102,0, -51,255,255,109,0,3, -54,110,0, -17,200,0, -51,28,0,3, -54,111,0, -17,212,0, -51,29,0,3, -54,112,0, -17,3,1, -51,255,255,109,0,3, -54,113,0, -17,15,1, -51,255,255,109,0,3, -54,114,0, -17,165,1, -51,255,255,81,0,3, -54,115,0, -17,178,1, -51,255,255,81,0,3, -54,116,0, -17,178,0, -51,255,255,75,0,3, -28,117,0, -39, -16,0,64,0,0,123,2,8, -51,109,0, -51,110,0, -51,111,0, -51,112,0, -51,113,0, -51,114,0, -51,115,0, -51,116,0, -51,255,255,11,0, -54,118,0, -17,148,2, -51,255,255,11,0,3, -54,119,0, -17,156,2, -51,255,255,158,2,3, -54,120,0, -17,167,2, -51,255,255,49,0,3, -54,121,0, -17,169,2, -51,255,255,75,0,3, -28,122,0, -39, -16,0,64,0,0,176,2,4, -51,118,0, -51,119,0, -51,120,0, -51,121,0, -51,255,255,11,0, -54,123,0, -17,198,2, -51,255,255,75,0,3, -54,124,0, -17,208,2, -51,255,255,11,0,3, -54,125,0, -17,212,2, -51,255,255,11,0,3, -28,126,0, -39, -16,0,64,0,0,216,2,3, -51,123,0, -51,124,0, -51,125,0, -51,255,255,11,0, -54,127,0, -17,198,2, -51,255,255,75,0,3, -54,128,0, -17,208,2, -51,255,255,11,0,3, -54,129,0, -17,212,2, -51,255,255,11,0,3, -28,130,0, -39, -16,0,64,0,0,225,2,3, -51,127,0, -51,128,0, -51,129,0, -51,255,255,11,0, -54,131,0, -17,241,2, -51,255,255,11,0,3, -54,132,0, -17,198,2, -51,255,255,75,0,3, -54,133,0, -17,250,2, -51,255,255,49,0,3, -28,134,0, -39, -16,0,64,0,0,3,3,3, -51,131,0, -51,132,0, -51,133,0, -51,255,255,11,0, -54,135,0, -17,24,3, -51,255,255,11,0,3, -54,136,0, -17,150,0, -51,255,255,152,0,3, -28,137,0, -39, -16,0,64,0,0,32,3,2, -51,135,0, -51,136,0, -51,255,255,11,0, -54,138,0, -17,24,3, -51,255,255,11,0,3, -28,139,0, -39, -16,0,64,0,0,53,3,1, -51,138,0, -51,255,255,11,0,31,0, -26,0, -32,0, -54,0, -36,0, -48,0, -40,0, -45,0, -9,0, -20,0, -21,0, -27,0, -22,0, -28,0, -125,0, -133,0, -129,0, -107,0, -116,0, -0,0, -138,0, -17,0, -61,0, -68,0, -121,0, -2,0, -75,0, -82,0, -4,0, -90,0, -98,0, -136,0, -20, -29,1,0, -2, -52,1,0,0,0,0,1, -44, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,128,63,1, -29,3,0, -2, -52,1,0,0,0,0,1, -44, -56,2,0,0,1, -29,5,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -56,4,0,0,1, -29,10,0, -2, -52,1,3,0, -54,140,0, -38, -16,4,82,3, -51,255,255,75,0,2, -54,141,0, -38, -16,4,89,3, -51,255,255,75,0,2, -54,142,0, -38, -16,4,97,3, -51,255,255,75,0,2,3,0, -0,0, -2,0, -1,0,4, -55,140,0, -51,255,255,75,0,0, -36, -51,255,255,75,0,0,0,0,0, -55,141,0, -51,255,255,75,0,0, -36, -51,255,255,75,0,1,0,0,0, -55,142,0, -51,255,255,75,0,0, -36, -51,255,255,75,0,2,0,0,0, -32,0, -1, -56,6,0,0,16, -56,140,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,81,0,255,255,111,3,3, -56,7,0,0, -56,8,0,0, -56,9,0,0,1, -32,0, -1, -56,6,0,0,16, -56,141,0,0, -2, -52,1,1,0, -54,143,0, -17,117,3, -51,255,255,81,0,2,1,0, -0,0,2, -55,143,0, -51,255,255,81,0,0, -1, -56,9,0,0,1, -56,8,0,0, -44, -1, -27, -51,255,255,81,0,255,255,124,3,2, -1, -56,7,0,0,1, -56,8,0,0, -56,143,0,0,0, -56,8,0,0,1, -32,0, -1, -56,6,0,0,16, -56,142,0,0, -2, -52,1,3,0, -54,144,0, -17,117,3, -51,255,255,81,0,2, -54,145,0, -17,128,3, -51,255,255,81,0,2, -54,146,0, -17,136,3, -51,255,255,81,0,2,3,0, -0,0, -1,0, -2,0,4, -55,144,0, -51,255,255,81,0,0, -1, -56,9,0,0,1, -56,8,0,0, -55,145,0, -51,255,255,81,0,0, -1, -25, -51,255,255,81,0,0,0,0,64,2, -56,144,0,0, -55,146,0, -51,255,255,81,0,0, -27, -51,255,255,81,0,255,255,124,3,2, -1, -56,7,0,0,1, -56,8,0,0, -56,145,0,0, -44, -1, -27, -51,255,255,81,0,255,255,140,3,3, -56,146,0,0, -1, -56,145,0,0,1, -56,146,0,0, -27, -51,255,255,81,0,255,255,144,3,2, -56,144,0,0, -56,146,0,0,0, -56,8,0,0,1, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,81,0,255,255,111,3,3, -56,7,0,0, -56,8,0,0, -56,9,0,0,1,1, -29,18,0, -2, -52,1,2,0, -54,147,0, -17,149,3, -51,255,255,49,0,2, -54,148,0, -17,160,3, -51,255,255,109,0,2,2,0, -1,0, -0,0,5, -22, -1, -50, -56,11,0,1,1,0,15, -27, -51,255,255,81,0,10,0,4, -56,13,0,0, -50, -56,11,0,0,1,0, -50, -56,12,0,0,1,0, -50, -56,12,0,0,1,2, -22, -1, -50, -56,11,0,1,1,1,15, -27, -51,255,255,81,0,10,0,4, -56,14,0,0, -50, -56,11,0,0,1,1, -50, -56,12,0,0,1,1, -50, -56,12,0,0,1,3, -55,147,0, -51,255,255,49,0,0, -8, -51,255,255,49,0,2, -1, -27, -51,255,255,109,0,255,255,171,3,1, -50, -56,12,0,0,2,0,1,0, -25, -51,255,255,81,0,0,0,0,63, -1, -27, -51,255,255,109,0,255,255,177,3,1, -50, -56,12,0,0,2,2,3,1, -25, -51,255,255,81,0,0,0,0,63, -55,148,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,255,255,111,3,3, -56,11,0,0, -50, -56,147,0,0,2,0,1, -50, -56,147,0,0,2,2,3, -44, -27, -51,255,255,11,0,255,255,182,3,2, -56,17,0,0, -1, -56,148,0,0,3, -8, -51,255,255,109,0,2, -12, -51,255,255,81,0,1, -56,15,0,0, -12, -51,255,255,81,0,1, -56,16,0,0,1, -29,21,0, -2, -52,1,0,0,0,0,2, -49,0, -52,1,0,0,0,0, -56,19,0,0,4,0,0,0,0,0, -2, -57,2, -22, -1, -50, -56,20,0,1,1,0,15, -27, -51,255,255,81,0,255,255,111,3,3, -50, -56,20,0,0,1,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,63, -4,0,0,1,0,0,0, -2, -57,2, -22, -1, -50, -56,20,0,1,1,0,15, -27, -51,255,255,81,0,255,255,189,3,1, -50, -56,20,0,0,1,0, -4,0,0,2,0,0,0, -2, -52,1,1,0, -54,149,0, -17,195,3, -51,255,255,81,0,2,1,0, -0,0,5, -55,149,0, -51,255,255,81,0,0, -1, -50, -56,20,0,0,1,0,1, -25, -51,255,255,81,0,0,0,128,63, -22, -1, -50, -56,20,0,1,1,0,15, -1, -1, -56,149,0,0,1, -1, -25, -51,255,255,81,0,0,0,0,64,2, -27, -51,255,255,81,0,255,255,171,3,1, -1, -56,149,0,0,2, -25, -51,255,255,81,0,0,0,0,63,1, -25, -51,255,255,81,0,0,0,128,63, -32,0, -45,199,3, -2, -52,1,0,0,0,0,1, -22, -1, -50, -56,20,0,1,1,0,15, -27, -51,255,255,81,0,255,255,111,3,3, -50, -56,20,0,0,1,0, -25, -51,255,255,81,0,0,0,128,191, -25, -51,255,255,81,0,0,0,128,63,1, -57, -22, -1, -50, -56,20,0,1,1,0,15, -27, -51,255,255,81,0,255,255,226,3,1, -50, -56,20,0,0,1,0, -4,1,0,3,0,0,0, -2, -57,2, -32,0, -1, -1, -50, -56,20,0,0,1,0,18, -25, -51,255,255,81,0,0,0,0,0,9, -1, -50, -56,20,0,0,1,0,19, -25, -51,255,255,81,0,0,0,128,63, -2, -52,1,0,0,0,0,1, -44, -8, -51,255,255,109,0,2, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,191,1, -57, -4,0, -44, -56,20,0,0,1, -29,27,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,26,0,0,1,1,18, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -13, -51,255,255,11,0,1, -25, -51,255,255,77,3,0,0,0,0,1, -32,0, -1, -50, -56,26,0,0,1,0,20, -33, -56,25,0,0, -36, -51,255,255,230,3,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -33, -56,24,0,0, -36, -51,255,255,230,3,0,0,0,0,1, -32,0, -1, -50, -56,26,0,0,1,0,18, -33, -56,25,0,0, -36, -51,255,255,230,3,1,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,24,0,0, -36, -51,255,255,230,3,0,0,0,0, -33, -56,24,0,0, -36, -51,255,255,230,3,1,0,0,0, -1, -1, -50, -56,26,0,0,1,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,0,0,0,0,3, -1, -33, -56,25,0,0, -36, -51,255,255,230,3,1,0,0,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,0,0,0,0,1, -32,0, -1, -50, -56,26,0,0,1,0,18, -33, -56,25,0,0, -36, -51,255,255,230,3,2,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,24,0,0, -36, -51,255,255,230,3,1,0,0,0, -33, -56,24,0,0, -36, -51,255,255,230,3,2,0,0,0, -1, -1, -50, -56,26,0,0,1,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,1,0,0,0,3, -1, -33, -56,25,0,0, -36, -51,255,255,230,3,2,0,0,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,1,0,0,0,1, -32,0, -1, -50, -56,26,0,0,1,0,18, -33, -56,25,0,0, -36, -51,255,255,230,3,3,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,24,0,0, -36, -51,255,255,230,3,2,0,0,0, -33, -56,24,0,0, -36, -51,255,255,230,3,3,0,0,0, -1, -1, -50, -56,26,0,0,1,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,2,0,0,0,3, -1, -33, -56,25,0,0, -36, -51,255,255,230,3,3,0,0,0,1, -33, -56,25,0,0, -36, -51,255,255,230,3,2,0,0,0,1, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -33, -56,24,0,0, -36, -51,255,255,230,3,3,0,0,0,1,1, -29,33,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,1,18, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -13, -51,255,255,11,0,1, -25, -51,255,255,77,3,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,4,0,0,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,2,0,0,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,20, -33, -56,31,0,0, -36, -51,255,255,230,3,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -33, -56,30,0,0, -36, -51,255,255,230,3,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,1,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,0,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,1,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,0,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,1,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,0,0,0,0,1, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,1,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,2,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,1,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,2,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,1,0,0,0,1,1, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,3,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,2,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,3,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,2,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,3,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,2,0,0,0,1, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,3,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,4,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,3,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,4,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,3,0,0,0,1,1,1, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,6,0,0,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,5,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,4,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,5,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,4,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,5,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,4,0,0,0,1, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,5,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,6,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,5,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,6,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,5,0,0,0,1,1, -2, -52,1,0,0,0,0,1, -32,0, -1, -50, -56,32,0,0,1,0,18, -33, -56,31,0,0, -36, -51,255,255,230,3,7,0,0,0, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -27, -51,255,255,49,0,255,255,140,3,3, -33, -56,30,0,0, -36, -51,255,255,230,3,6,0,0,0, -33, -56,30,0,0, -36, -51,255,255,230,3,7,0,0,0, -1, -1, -50, -56,32,0,0,1,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,6,0,0,0,3, -1, -33, -56,31,0,0, -36, -51,255,255,230,3,7,0,0,0,1, -33, -56,31,0,0, -36, -51,255,255,230,3,6,0,0,0,1, -2, -52,1,0,0,0,0,1, -44, -9, -51,255,255,11,0,1, -33, -56,30,0,0, -36, -51,255,255,230,3,7,0,0,0,1,1,1,1, -29,37,0, -2, -52,1,2,0, -54,150,0, -17,242,3, -51,255,255,109,0,2, -54,151,0, -17,187,0, -51,255,255,81,0,2,2,0, -0,0, -1,0,4, -22, -1, -56,36,0,2,23, -56,34,0,0, -55,150,0, -51,255,255,109,0,0, -1, -56,35,0,0,1, -56,34,0,0, -55,151,0, -51,255,255,81,0,0, -1, -27, -51,255,255,81,0,255,255,248,3,2, -56,36,0,0, -56,150,0,0,3, -27, -51,255,255,81,0,255,255,248,3,2, -56,150,0,0, -56,150,0,0, -44, -8, -51,255,255,109,0,2, -56,151,0,0, -25, -51,255,255,81,0,0,0,128,63,1, -29,41,0, -2, -52,1,1,0, -54,152,0, -17,187,0, -51,255,255,81,0,2,1,0, -0,0,2, -55,152,0, -51,255,255,81,0,0, -1, -27, -51,255,255,81,0,255,255,252,3,2, -56,40,0,0, -56,38,0,0,3, -56,39,0,0, -44, -8, -51,255,255,109,0,2, -56,152,0,0, -25, -51,255,255,81,0,0,0,128,63,1, -29,46,0, -2, -52,1,2,0, -54,153,0, -17,5,4, -51,255,255,81,0,2, -54,154,0, -17,187,0, -51,255,255,81,0,2,2,0, -0,0, -1,0,4, -22, -1, -56,45,0,2,23, -56,42,0,0, -55,153,0, -51,255,255,81,0,0, -53, -45,11,4, -1, -25, -51,255,255,81,0,0,0,0,64,2, -27, -51,255,255,81,0,255,255,40,4,2, -42,1, -50, -56,45,0,0,1,1, -1, -27, -51,255,255,81,0,255,255,117,3,1, -56,45,0,0,1, -50, -56,45,0,0,1,0, -27, -51,255,255,81,0,255,255,40,4,2, -42,1, -50, -56,45,0,0,1,1, -42,1, -50, -56,45,0,0,1,0, -55,154,0, -51,255,255,81,0,0, -1, -1, -1, -1, -56,153,0,0,2, -25, -51,255,255,81,0,131,249,34,62,0, -25, -51,255,255,81,0,0,0,0,63,0, -56,43,0,0,2, -56,44,0,0, -44, -8, -51,255,255,109,0,2, -56,154,0,0, -25, -51,255,255,81,0,0,0,128,63,1, -29,49,0, -2, -52,1,0,0,0,0,1, -44, -1, -8, -51,255,255,156,1,9, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,191, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,63, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,63,2, -27, -51,255,255,156,1,255,255,45,4,1, -8, -51,255,255,156,1,9, -1, -50, -56,48,0,0,1,1,1, -50, -56,47,0,0,1,1, -1, -50, -56,47,0,0,1,0,1, -50, -56,48,0,0,1,0, -25, -51,255,255,81,0,0,0,0,0, -1, -50, -56,48,0,0,1,0,1, -50, -56,47,0,0,1,0, -1, -50, -56,48,0,0,1,1,1, -50, -56,47,0,0,1,1, -25, -51,255,255,81,0,0,0,0,0, -50, -56,47,0,0,1,0, -50, -56,47,0,0,1,1, -25, -51,255,255,81,0,0,0,128,63,1, -29,55,0, -2, -52,1,5,0, -54,155,0, -38, -16,4,53,4, -51,255,255,81,0,2, -54,156,0, -17,73,4, -51,255,255,81,0,2, -54,157,0, -17,81,4, -51,255,255,81,0,2, -54,158,0, -17,89,4, -51,255,255,96,4,2, -54,159,0, -17,101,4, -51,255,255,96,4,2,5,0, -0,0, -1,0, -2,0, -3,0, -4,0,6, -55,155,0, -51,255,255,81,0,0, -25, -51,255,255,81,0,0,0,128,57, -55,156,0, -51,255,255,81,0,0, -27, -51,255,255,81,0,255,255,252,3,2, -56,50,0,0, -56,51,0,0, -55,157,0, -51,255,255,81,0,0, -1, -56,53,0,0,1, -56,52,0,0, -55,158,0, -51,255,255,96,4,0, -1, -56,156,0,0,18, -56,155,0,0, -55,159,0, -51,255,255,96,4,0, -1, -27, -51,255,255,81,0,255,255,226,3,1, -56,157,0,0,18, -56,155,0,0, -32,0, -56,158,0,0, -2, -52,1,5,0, -54,160,0, -17,107,4, -51,255,255,81,0,2, -54,161,0, -17,113,4, -51,255,255,81,0,2, -54,162,0, -17,123,4, -51,255,255,81,0,2, -54,163,0, -17,128,4, -51,255,255,109,0,2, -54,164,0, -17,187,0, -51,255,255,81,0,2,5,0, -2,0, -3,0, -0,0, -1,0, -4,0,7, -32,0, -56,159,0,0, -2, -52,1,0,0,0,0,1, -44, -8, -51,255,255,109,0,2, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,191,1, -57, -55,160,0, -51,255,255,81,0,0, -1, -25, -51,255,255,81,0,0,0,128,63,3, -56,157,0,0, -55,161,0, -51,255,255,81,0,0, -27, -51,255,255,81,0,255,255,131,4,1, -56,157,0,0, -55,162,0, -51,255,255,81,0,0, -1, -56,52,0,0,3, -56,157,0,0, -55,163,0, -51,255,255,109,0,0, -1, -1, -56,54,0,0,1, -56,50,0,0,2, -56,160,0,0, -55,164,0, -51,255,255,81,0,0, -1, -1, -27, -51,255,255,81,0,255,255,117,3,1, -56,163,0,0,2, -56,161,0,0,1, -56,162,0,0, -44, -8, -51,255,255,109,0,2, -56,164,0,0, -25, -51,255,255,81,0,0,0,128,63,1, -32,0, -56,159,0,0, -2, -52,1,5,0, -54,165,0, -17,136,4, -51,255,255,156,1,2, -54,166,0, -17,146,4, -51,255,255,81,0,2, -54,167,0, -17,148,4, -51,255,255,81,0,2, -54,168,0, -17,128,4, -51,255,255,109,0,2, -54,169,0, -17,187,0, -51,255,255,81,0,2,5,0, -3,0, -1,0, -2,0, -4,0, -0,0,8, -55,165,0, -51,255,255,156,1,0, -27, -51,255,255,156,1,49,0,2, -56,50,0,0, -56,51,0,0, -55,166,0, -51,255,255,81,0,0, -1, -56,52,0,0,3, -56,156,0,0, -55,167,0, -51,255,255,81,0,0, -1, -56,166,0,0,2, -56,166,0,0, -55,168,0, -51,255,255,109,0,0, -50, -1, -56,165,0,0,2, -8, -51,255,255,152,4,2, -56,54,0,0, -25, -51,255,255,81,0,0,0,128,63,2,0,1, -55,169,0, -51,255,255,81,0,0, -1, -56,167,0,0,1, -1, -50, -56,168,0,0,1,1,2, -50, -56,168,0,0,1,1, -32,0, -1, -56,169,0,0,18, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -8, -51,255,255,109,0,2, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,191,1, -57, -22, -1, -56,169,0,1,15, -1, -50, -56,168,0,0,1,0,0, -27, -51,255,255,81,0,255,255,159,4,1, -56,169,0,0, -44, -8, -51,255,255,109,0,2, -56,169,0,0, -25, -51,255,255,81,0,0,0,128,63,1, -2, -52,1,14,0, -54,170,0, -17,79,0, -51,255,255,81,0,2, -54,171,0, -17,164,4, -51,255,255,96,4,2, -54,172,0, -17,174,4, -51,255,255,109,0,2, -54,173,0, -17,136,4, -51,255,255,156,1,2, -54,174,0, -17,177,4, -51,255,255,81,0,2, -54,175,0, -17,184,4, -51,255,255,81,0,2, -54,176,0, -17,191,4, -51,255,255,81,0,2, -54,177,0, -17,194,4, -51,255,255,96,4,2, -54,178,0, -17,128,4, -51,255,255,109,0,2, -54,179,0, -17,210,4, -51,255,255,81,0,2, -54,180,0, -17,216,4, -51,255,255,81,0,2, -54,181,0, -17,228,4, -51,255,255,96,4,2, -54,182,0, -17,242,4, -51,255,255,81,0,2, -54,183,0, -17,187,0, -51,255,255,81,0,2,14,0, -2,0, -10,0, -0,0, -9,0, -7,0, -1,0, -11,0, -8,0, -6,0, -4,0, -5,0, -13,0, -3,0, -12,0,21, -55,170,0, -51,255,255,81,0,0, -1, -56,52,0,0,3, -1, -56,52,0,0,1, -56,53,0,0, -55,171,0, -51,255,255,96,4,0, -1, -27, -51,255,255,81,0,255,255,226,3,1, -1, -56,170,0,0,1, -25, -51,255,255,81,0,0,0,128,63,18, -56,155,0,0, -32,0, -56,171,0,0, -2, -52,1,1,0, -54,184,0, -17,246,4, -51,255,255,109,0,2,1,0, -0,0,4, -55,184,0, -51,255,255,109,0,0, -56,50,0,0, -22, -1, -56,50,0,1,15, -56,51,0,0, -22, -1, -56,51,0,1,15, -56,184,0,0, -22, -1, -56,170,0,1,15, -25, -51,255,255,81,0,0,0,0,0,1, -57, -55,172,0, -51,255,255,109,0,0, -1, -1, -56,50,0,0,2, -1, -25, -51,255,255,81,0,0,0,128,63,1, -56,170,0,0,0, -1, -56,51,0,0,2, -56,170,0,0, -55,173,0, -51,255,255,156,1,0, -27, -51,255,255,156,1,49,0,2, -56,172,0,0, -56,51,0,0, -55,174,0, -51,255,255,81,0,0, -27, -51,255,255,81,0,255,255,226,3,1, -1, -25, -51,255,255,81,0,0,0,128,63,1, -56,170,0,0, -55,175,0, -51,255,255,81,0,0, -56,174,0,0, -55,176,0, -51,255,255,81,0,0, -1, -27, -51,255,255,81,0,255,255,226,3,1, -1, -56,53,0,0,1, -56,52,0,0,3, -56,156,0,0, -55,177,0, -51,255,255,96,4,0, -1, -27, -51,255,255,81,0,255,255,226,3,1, -1, -56,176,0,0,1, -25, -51,255,255,81,0,0,0,128,63,18, -56,155,0,0, -32,0, -56,177,0,0, -2, -52,1,0,0,0,0,2, -22, -1, -56,174,0,2,24, -25, -51,255,255,81,0,0,0,0,63, -22, -1, -56,175,0,2,24, -25, -51,255,255,81,0,0,0,0,63,1, -2, -52,1,0,0,0,0,2, -22, -1, -56,174,0,2,24, -1, -56,176,0,0,3, -1, -1, -56,176,0,0,2, -56,176,0,0,1, -25, -51,255,255,81,0,0,0,128,63, -22, -1, -56,175,0,2,25, -27, -51,255,255,81,0,255,255,159,4,1, -27, -51,255,255,81,0,255,255,226,3,1, -1, -1, -56,176,0,0,2, -56,176,0,0,1, -25, -51,255,255,81,0,0,0,128,63,1, -22, -1, -56,173,0,1,15, -1, -8, -51,255,255,156,1,9, -56,174,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -56,175,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,63,2, -56,173,0,0, -55,178,0, -51,255,255,109,0,0, -50, -1, -56,173,0,0,2, -8, -51,255,255,152,4,2, -56,54,0,0, -25, -51,255,255,81,0,0,0,128,63,2,0,1, -55,179,0, -51,255,255,81,0,0, -1, -25, -51,255,255,81,0,0,0,128,63,3, -56,176,0,0, -55,180,0, -51,255,255,81,0,0, -27, -51,255,255,81,0,255,255,131,4,1, -1, -25, -51,255,255,81,0,0,0,128,63,1, -56,170,0,0, -55,181,0, -51,255,255,96,4,0, -1, -42,7, -56,177,0,0,8, -1, -56,176,0,0,19, -25, -51,255,255,81,0,0,0,128,63, -55,182,0, -51,255,255,81,0,0, -25, -51,255,255,81,0,0,0,128,191, -32,0, -56,177,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,182,0,1,15, -1, -27, -51,255,255,81,0,255,255,248,3,2, -56,178,0,0, -56,178,0,0,3, -50, -56,178,0,0,1,0,1, -32,0, -56,181,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,182,0,1,15, -1, -27, -51,255,255,81,0,255,255,117,3,1, -56,178,0,0,1, -1, -50, -56,178,0,0,1,0,2, -56,179,0,0,1, -2, -52,1,1,0, -54,185,0, -17,252,4, -51,255,255,81,0,2,1,0, -0,0,2, -55,185,0, -51,255,255,81,0,0, -1, -1, -50, -56,178,0,0,1,0,2, -50, -56,178,0,0,1,0,1, -1, -50, -56,178,0,0,1,1,2, -50, -56,178,0,0,1,1, -32,0, -1, -56,185,0,0,21, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -32,0, -1, -56,171,0,0,9, -1, -56,180,0,0,18, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,182,0,1,15, -1, -42,1, -27, -51,255,255,81,0,255,255,159,4,1, -56,185,0,0,1, -1, -50, -56,178,0,0,1,0,2, -56,179,0,0,1, -2, -52,1,0,0,0,0,1, -22, -1, -56,182,0,1,15, -1, -27, -51,255,255,81,0,255,255,159,4,1, -56,185,0,0,1, -1, -50, -56,178,0,0,1,0,2, -56,179,0,0,1,1, -57,1, -32,0, -1, -42,7, -56,181,0,0,8, -1, -56,182,0,0,18, -25, -51,255,255,81,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -8, -51,255,255,109,0,2, -25, -51,255,255,81,0,0,0,0,0, -25, -51,255,255,81,0,0,0,128,191,1, -57, -55,183,0, -51,255,255,81,0,0, -1, -56,170,0,0,0, -1, -56,180,0,0,2, -56,182,0,0, -32,0, -56,171,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,183,0,1,15, -1, -25, -51,255,255,81,0,0,0,128,63,1, -56,183,0,0,1, -57, -44, -8, -51,255,255,109,0,2, -56,183,0,0, -25, -51,255,255,81,0,0,0,128,63,1,1, -29,62,0, -2, -52,1,1,0, -54,186,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,186,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,37,0,3, -56,59,0,0, -56,60,0,0, -56,56,0,0, -22, -1, -56,186,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,61,0,0, -56,186,0,0, -44, -27, -51,255,255,11,0,27,0,3, -56,57,0,0, -56,58,0,0, -56,186,0,0,1, -29,69,0, -2, -52,1,1,0, -54,187,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,187,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,37,0,3, -56,66,0,0, -56,67,0,0, -56,63,0,0, -22, -1, -56,187,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,68,0,0, -56,187,0,0, -44, -27, -51,255,255,11,0,33,0,3, -56,64,0,0, -56,65,0,0, -56,187,0,0,1, -29,76,0, -2, -52,1,1,0, -54,188,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,188,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,41,0,3, -56,73,0,0, -56,74,0,0, -56,70,0,0, -22, -1, -56,188,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,75,0,0, -56,188,0,0, -44, -27, -51,255,255,11,0,27,0,3, -56,71,0,0, -56,72,0,0, -56,188,0,0,1, -29,83,0, -2, -52,1,1,0, -54,189,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,189,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,41,0,3, -56,80,0,0, -56,81,0,0, -56,77,0,0, -22, -1, -56,189,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,82,0,0, -56,189,0,0, -44, -27, -51,255,255,11,0,33,0,3, -56,78,0,0, -56,79,0,0, -56,189,0,0,1, -29,91,0, -2, -52,1,1,0, -54,190,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,190,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,46,0,4, -56,87,0,0, -56,88,0,0, -56,89,0,0, -56,84,0,0, -22, -1, -56,190,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,90,0,0, -56,190,0,0, -44, -27, -51,255,255,11,0,27,0,3, -56,85,0,0, -56,86,0,0, -56,190,0,0,1, -29,99,0, -2, -52,1,1,0, -54,191,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,191,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,46,0,4, -56,95,0,0, -56,96,0,0, -56,97,0,0, -56,92,0,0, -22, -1, -56,191,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,98,0,0, -56,191,0,0, -44, -27, -51,255,255,11,0,33,0,3, -56,93,0,0, -56,94,0,0, -56,191,0,0,1, -29,108,0, -2, -52,1,1,0, -54,192,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,192,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,55,0,5, -56,103,0,0, -56,104,0,0, -56,105,0,0, -56,106,0,0, -56,100,0,0, -22, -1, -56,192,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,107,0,0, -56,192,0,0, -44, -27, -51,255,255,11,0,27,0,3, -56,101,0,0, -56,102,0,0, -56,192,0,0,1, -29,117,0, -2, -52,1,1,0, -54,193,0, -17,187,0, -51,255,255,109,0,2,1,0, -0,0,3, -55,193,0, -51,255,255,109,0,0, -27, -51,255,255,109,0,55,0,5, -56,112,0,0, -56,113,0,0, -56,114,0,0, -56,115,0,0, -56,109,0,0, -22, -1, -56,193,0,1,15, -27, -51,255,255,109,0,21,0,2, -56,116,0,0, -56,193,0,0, -44, -27, -51,255,255,11,0,33,0,3, -56,110,0,0, -56,111,0,0, -56,193,0,0,1, -29,122,0, -2, -52,1,1,0, -54,194,0, -17,1,5, -51,255,255,11,0,2,1,0, -0,0,4, -32,0, -12, -51,255,255,96,4,1, -56,121,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,118,0,1,15, -27, -51,255,255,11,0,255,255,10,5,2, -50, -56,118,0,0,3,0,1,2, -50, -56,118,0,0,1,3,1, -2, -52,1,0,0,0,0,1, -22, -1, -56,118,0,1,15, -27, -51,255,255,11,0,255,255,22,5,1, -56,118,0,0,1, -55,194,0, -51,255,255,11,0,0, -9, -51,255,255,11,0,1, -1, -1, -56,119,0,0,2, -9, -51,255,255,49,0,1, -56,118,0,0,0, -56,120,0,0, -32,0, -12, -51,255,255,96,4,1, -56,121,0,0, -2, -52,1,0,0,0,0,1, -22, -1, -56,194,0,1,15, -27, -51,255,255,11,0,255,255,31,5,2, -50, -56,194,0,0,3,0,1,2, -50, -56,194,0,0,1,3,1, -2, -52,1,0,0,0,0,2, -22, -1, -56,194,0,1,15, -27, -51,255,255,11,0,255,255,43,5,1, -56,194,0,0, -22, -1, -50, -56,194,0,2,3,0,1,2,24, -50, -56,194,0,0,1,3,1, -44, -56,194,0,0,1, -29,126,0, -2, -52,1,0,0,0,0,1, -49,0, -52,1,0,0,0,0, -56,123,0,0,30,0,0,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,52,5,2, -56,124,0,0, -56,125,0,0,1,0,1,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,64,5,2, -56,124,0,0, -56,125,0,0,1,0,2,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,74,5,2, -56,124,0,0, -56,125,0,0,1,0,3,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,191, -56,124,0,0, -56,125,0,0,1,0,4,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,128,191, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,5,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,6,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,7,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,191, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,8,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,191, -56,124,0,0, -56,125,0,0,1,0,9,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,128,191, -56,124,0,0, -56,125,0,0,1,0,10,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,191, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,11,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,191, -25, -51,255,255,77,3,0,0,128,191, -56,124,0,0, -56,125,0,0,1,0,12,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,84,5,3, -8, -51,255,255,11,0,4, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,13,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,102,5,2, -56,124,0,0, -56,125,0,0,1,0,14,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,117,5,2, -56,124,0,0, -56,125,0,0,1,0,15,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,130,5,3, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,16,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,144,5,3, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,17,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,144,5,3, -25, -51,255,255,77,3,0,0,128,191, -56,124,0,0, -56,125,0,0,1,0,18,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,157,5,2, -56,124,0,0, -56,125,0,0,1,0,19,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,175,5,2, -56,124,0,0, -56,125,0,0,1,0,20,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,130,5,3, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,21,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,192,5,2, -56,124,0,0, -56,125,0,0,1,0,22,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,209,5,2, -56,124,0,0, -56,125,0,0,1,0,23,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,226,5,2, -56,124,0,0, -56,125,0,0,1,0,24,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,242,5,2, -56,124,0,0, -56,125,0,0,1,0,25,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,1,6,3, -8, -51,255,255,12,6,2, -25, -51,255,255,77,3,0,0,0,0, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,26,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,1,6,3, -13, -51,255,255,12,6,1, -25, -51,255,255,77,3,0,0,128,63, -56,124,0,0, -56,125,0,0,1,0,27,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,1,6,3, -13, -51,255,255,12,6,1, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,0,28,0,0,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,255,255,1,6,3, -8, -51,255,255,12,6,2, -25, -51,255,255,77,3,0,0,128,63, -25, -51,255,255,77,3,0,0,0,0, -56,124,0,0, -56,125,0,0,1,1, -44, -13, -51,255,255,11,0,1, -25, -51,255,255,77,3,0,0,0,0,1, -29,130,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,126,0,3, -56,127,0,0, -56,128,0,0, -56,129,0,0,1, -29,134,0, -2, -52,1,0,0,0,0,1, -44, -27, -51,255,255,11,0,126,0,3, -56,132,0,0, -9, -51,255,255,11,0,1, -56,133,0,0, -56,131,0,0,1, -29,137,0, -2, -52,1,2,0, -54,195,0, -17,102,0, -51,255,255,11,0,2, -54,196,0, -17,17,0, -51,255,255,11,0,2,2,0, -1,0, -0,0,3, -55,195,0, -51,255,255,11,0,0, -1, -1, -1, -27, -51,255,255,11,0,255,255,22,5,1, -56,135,0,0,2, -25, -51,255,255,77,3,0,0,127,67,3, -25, -51,255,255,77,3,0,0,128,67,0, -25, -51,255,255,77,3,0,0,0,59, -55,196,0, -51,255,255,11,0,0, -8, -51,255,255,11,0,4, -50, -27, -51,255,255,11,0,255,255,182,3,2, -56,136,0,0, -9, -51,255,255,109,0,1, -8, -51,255,255,12,6,2, -50, -56,195,0,0,1,0, -25, -51,255,255,77,3,0,0,192,62,1,0, -50, -27, -51,255,255,11,0,255,255,182,3,2, -56,136,0,0, -9, -51,255,255,109,0,1, -8, -51,255,255,12,6,2, -50, -56,195,0,0,1,1, -25, -51,255,255,77,3,0,0,32,63,1,0, -50, -27, -51,255,255,11,0,255,255,182,3,2, -56,136,0,0, -9, -51,255,255,109,0,1, -8, -51,255,255,12,6,2, -50, -56,195,0,0,1,2, -25, -51,255,255,77,3,0,0,96,63,1,0, -25, -51,255,255,77,3,0,0,128,63, -44, -1, -56,196,0,0,2, -50, -27, -51,255,255,11,0,255,255,182,3,2, -56,136,0,0, -9, -51,255,255,109,0,1, -8, -51,255,255,12,6,2, -50, -56,195,0,0,1,3, -25, -51,255,255,77,3,0,0,0,62,1,0,1, -29,139,0, -2, -52,1,1,0, -54,197,0, -17,18,6, -51,255,255,77,3,2,1,0, -0,0,3, -55,197,0, -51,255,255,77,3,0, -1, -25, -51,255,255,77,3,0,0,128,63,1, -50, -56,138,0,0,1,3, -22, -1, -56,197,0,1,15, -1, -27, -51,255,255,77,3,255,255,25,6,1, -1, -1, -42,1, -56,197,0,0,2, -56,197,0,0,2, -25, -51,255,255,77,3,0,0,128,64,1, -25, -51,255,255,77,3,188,116,147,60, -44, -13, -51,255,255,11,0,1, -56,197,0,0,1, -21,}; -static constexpr size_t SKSL_INCLUDE_sksl_graphite_frag_LENGTH = sizeof(SKSL_INCLUDE_sksl_graphite_frag); diff --git a/src/sksl/generated/sksl_graphite_frag.minified.sksl b/src/sksl/generated/sksl_graphite_frag.minified.sksl index c6b98f704746..62e2872ee8bd 100644 --- a/src/sksl/generated/sksl_graphite_frag.minified.sksl +++ b/src/sksl/generated/sksl_graphite_frag.minified.sksl @@ -1,161 +1,162 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_frag[] = "$pure half4 sk_error(){return half4(1.,0.,1.,1.);}$pure half4 sk_passthrough" "(half4 a){return a;}$pure half4 sk_solid_shader(float4 a){return half4(a);}" -"$pure half4 $k(int a,half4 b){half4 c=b;switch(a){case 0:break;case 1:c=half4" -"(b.xyz,1.);break;case 2:c=b.xxxx;break;case 3:c=half4(b.xxx,1.);break;case 4" -":c=b.zyxw;break;}return c;}$pure float $l(int a,float b,half[7]c){float d=float" -"(c[0]);float e=float(c[1]);float f=float(c[2]);float g=float(c[3]);float h=" -"float(c[4]);float i=float(c[5]);float j=float(c[6]);float k=sign(b);b=abs(b" -");switch(a){case 1:b=bc.z){return half4(0.);}}if(e==3&&f==0){float i=floor(a" -".y)+.5;if(ic.w){return half4(0.);}}a.x=$m(d,a.x,c.x,c.z);a.y=$m(e,a" -".y,c.y,c.w);float4 i;if(f==0){i=float4(floor(c.xy)+.5,ceil(c.zw)-.5);}else{" -"i=float4(c.xy+.5,c.zw-.5);}float2 j=clamp(a,i.xy,i.zw);half4 k=sample(h,j/b" -");k=$k(g,k);if(f==1){half2 l=half2(a-j);half2 m=abs(l);bool n=d==1;bool o=e" -"==1;if(n||o){float p;float q;half4 r;half4 t;if(n){p=l.x>0.?i.x:i.z;r=sample" -"(h,float2(p,j.y)/b);r=$k(g,r);}if(o){q=l.y>0.?i.y:i.w;t=sample(h,float2(j.x" -",q)/b);t=$k(g,t);}if(n&&o){half4 u=sample(h,float2(p,q)/b);u=$k(g,u);k=mix(" -"mix(k,r,m.x),mix(t,u,m.x),m.y);}else if(n){k=mix(k,r,m.x);}else if(o){k=mix" -"(k,t,m.y);}}if(d==3){k*=max(1.-m.x,0.);}if(e==3){k*=max(1.-m.y,0.);}}return" -" k;}$pure half4 $o(float2 a,float2 b,float4 c,int d,int e,half4x4 g,int h,sampler2D" -" i){float2 j=fract(a-.5);a-=1.5;a=floor(a)+.5;half4 k=g*half4(1.,half(j.x)," -"half(j.x*j.x),half((j.x*j.x)*j.x));half4 l=g*half4(1.,half(j.y),half(j.y*j." -"y),half((j.y*j.y)*j.y));half4 m=half4(0.);for(int n=0;n<4;++n){half4 o=half4" -"(0.);for(int p=0;p<4;++p){o+=k[p]*$n(a+float2(float(p),float(n)),b,c,d,e,0," -"h,i);}m+=l[n]*o;}m.w=saturate(m.w);m.xyz=clamp(m.xyz,half3(0.),m.www);return" -" m;}$pure half4 sk_image_shader(float2 a,float2 b,float4 c,int d,int e,int f" -",int g,int h,int i,half[7]j,half3x3 k,int l,half[7]m,sampler2D n){half4 o=$n" -"(a,b,c,d,e,f,g,n);return sk_color_space_transform(o,h,i,j,k,l,m);}$pure half4" -" sk_cubic_image_shader(float2 a,float2 b,float4 c,int d,int e,half4x4 f,int" -" g,int h,int i,half[7]j,half3x3 k,int l,half[7]m,sampler2D n){half4 o=$o(a," -"b,c,d,e,f,g,n);return sk_color_space_transform(o,h,i,j,k,l,m);}$pure half4 sk_yuv_image_shader" -"(float2 a,float2 b,float4 c,int d,int e,int f,int g,half4x4 h,half4 i,half4" -" j,half4 k,half4 l,half3x3 m,float3 n,int o,int p,half[7]q,half3x3 r,int s," -"half[7]t,sampler2D u,sampler2D v,sampler2D w,sampler2D x){half4 y=g!=0?$o(a" -",b,c,d,e,h,0,u):$n(a,b,c,d,e,f,0,u);half4 z=g!=0?$o(a,b,c,d,e,h,0,v):$n(a,b" -",c,d,e,f,0,v);half4 A=g!=0?$o(a,b,c,d,e,h,0,u):$n(a,b,c,d,e,f,0,w);float B=" -"float(dot(i,y));float C=float(dot(j,z));float D=float(dot(k,A));half3 E=half3" -"(half(B),half(C),half(D));half4 F;F.xyz=saturate(E*m+half3(n));if(l==half4(" -"0.)){F.w=1.;}else{half4 G=g!=0?$o(a,b,c,d,e,h,0,x):$n(a,b,c,d,e,f,0,x);F.w=" -"dot(l,G);F.xyz*=F.w;}return sk_color_space_transform(F,o,p,q,r,s,t);}$pure half4" -" sk_dither_shader(half4 a,float2 b,half c,sampler2D d){half f=sample(d,b*.125" -").x-.5;return half4(clamp(a.xyz+f*c,0.,a.w),a.w);}$pure float2 $p(int a,float2" -" b){switch(a){case 0:b.x=saturate(b.x);break;case 1:b.x=fract(b.x);break;case" -" 2:{float c=b.x-1.;b.x=(c-2.*floor(c*.5))-1.;if(sk_Caps.mustDoOpBetweenFloorAndAbs" -"){b.x=clamp(b.x,-1.,1.);}b.x=abs(b.x);break;}case 3:if(b.x<0.||b.x>1.){return" -" float2(0.,-1.);}break;}return b;}$pure half4 $q(float4[4]a,float4 b,float2" -" c){if(c.y<0.){return half4(0.);}else if(c.x<=b.x){return half4(a[0]);}else" -" if(c.x1.;float x=-1.;if(r){x=dot(s,s)/s.x;}else if(w){x=length(s" -")-s.x*u;}else{float y=s.x*s.x-s.y*s.y;if(y>=0.){if(l||v<0.){x=-sqrt(y)-s.x*" -"u;}else{x=sqrt(y)-s.x*u;}}}if(!w&&x<0.){return float2(0.,-1.);}float y=k+v*" -"x;if(l){y=1.-y;}return float2(y,1.);}}$pure half4 sk_linear_grad_4_shader(float2" -" a,float4[4]b,float4 c,float2 d,float2 e,int f,int g,int h){float2 i=$t(d,e" -",a);i=$p(f,i);half4 j=$q(b,c,i);return $interpolated_to_rgb_unpremul(j,g,h)" -";}$pure half4 sk_linear_grad_8_shader(float2 a,float4[8]b,float4[2]c,float2" -" d,float2 e,int f,int g,int h){float2 i=$t(d,e,a);i=$p(f,i);half4 j=$r(b,c," -"i);return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_linear_grad_tex_shader" -"(float2 a,float2 b,float2 c,int d,int e,int f,int g,sampler2D h){float2 i=$t" +"$pure half4 $k(int a,half4 b){switch(a){case 1:return half4(b.xyz,1.);case 2" +":return b.xxxx;case 3:return half4(b.xxx,1.);case 4:return b.zyxw;default:return" +" b;}}$pure float $l(int a,float b,half4[2]c){float d=float(c[0].x);float e=" +"float(c[0].y);float f=float(c[0].z);float g=float(c[0].w);float h=float(c[1" +"].x);float i=float(c[1].y);float j=float(c[1].z);float k=sign(b);b=abs(b);switch" +"(a){case 1:b=bc" +".z){return half4(0.);}}if(e==3&&f==0){float i=floor(a.y)+.5;if(ic.w" +"){return half4(0.);}}a.x=$m(d,a.x,c.x,c.z);a.y=$m(e,a.y,c.y,c.w);float4 i;if" +"(f==0){i=float4(floor(c.xy)+.5,ceil(c.zw)-.5);}else{i=float4(c.xy+.5,c.zw-.5" +");}float2 j=clamp(a,i.xy,i.zw);half4 k=sample(h,j/b);k=$k(g,k);if(f==1){half2" +" l=half2(a-j);half2 m=abs(l);bool n=d==1;bool o=e==1;if(n||o){float p;float" +" q;half4 r;half4 t;if(n){p=l.x>0.?i.x:i.z;r=sample(h,float2(p,j.y)/b);r=$k(" +"g,r);}if(o){q=l.y>0.?i.y:i.w;t=sample(h,float2(j.x,q)/b);t=$k(g,t);}if(n&&o" +"){half4 u=sample(h,float2(p,q)/b);u=$k(g,u);k=mix(mix(k,r,m.x),mix(t,u,m.x)" +",m.y);}else if(n){k=mix(k,r,m.x);}else if(o){k=mix(k,t,m.y);}}if(d==3){k*=max" +"(1.-m.x,0.);}if(e==3){k*=max(1.-m.y,0.);}}return k;}$pure half4 $o(float2 a" +",float2 b,float4 c,int d,int e,half4x4 g,int h,sampler2D i){float2 j=fract(" +"a-.5);a-=1.5;a=floor(a)+.5;half4 k=g*half4(1.,half(j.x),half(j.x*j.x),half(" +"(j.x*j.x)*j.x));half4 l=g*half4(1.,half(j.y),half(j.y*j.y),half((j.y*j.y)*j" +".y));half4 m=half4(0.);for(int n=0;n<4;++n){half4 o=half4(0.);for(int p=0;p" +"<4;++p){o+=k[p]*$n(a+float2(float(p),float(n)),b,c,d,e,0,h,i);}m+=l[n]*o;}m" +".w=saturate(m.w);m.xyz=clamp(m.xyz,half3(0.),m.www);return m;}$pure half4 sk_image_shader" +"(float2 a,float2 b,float4 c,int d,int e,int f,int g,int h,int i,half3x3 j,int" +" k,half4x4 l,sampler2D m){half4 n=$n(a,b,c,d,e,f,g,m);return sk_color_space_transform" +"(n,h,i,j,k,l);}$pure half4 sk_cubic_image_shader(float2 a,float2 b,float4 c" +",int d,int e,half4x4 f,int g,int h,int i,half3x3 j,int k,half4x4 l,sampler2D" +" m){half4 n=$o(a,b,c,d,e,f,g,m);return sk_color_space_transform(n,h,i,j,k,l" +");}$pure half4 sk_yuv_image_shader(float2 a,float2 b,float4 c,int d,int e,int" +" f,int g,half4x4 h,half4 i,half4 j,half4 k,half4 l,half3x3 m,float3 n,int o" +",int p,half3x3 q,int r,half4x4 s,sampler2D t,sampler2D u,sampler2D v,sampler2D" +" w){half4 x=g!=0?$o(a,b,c,d,e,h,0,t):$n(a,b,c,d,e,f,0,t);half4 y=g!=0?$o(a," +"b,c,d,e,h,0,u):$n(a,b,c,d,e,f,0,u);half4 z=g!=0?$o(a,b,c,d,e,h,0,t):$n(a,b," +"c,d,e,f,0,v);float A=float(dot(i,x));float B=float(dot(j,y));float C=float(" +"dot(k,z));half3 D=half3(half(A),half(B),half(C));half4 E;E.xyz=saturate(D*m" +"+half3(n));if(l==half4(0.)){E.w=1.;}else{half4 F=g!=0?$o(a,b,c,d,e,h,0,w):$n" +"(a,b,c,d,e,f,0,w);E.w=dot(l,F);E.xyz*=E.w;}return sk_color_space_transform(" +"E,o,p,q,r,s);}$pure half4 sk_dither_shader(half4 a,float2 b,half c,sampler2D" +" d){half f=sample(d,b*.125).x-.5;return half4(clamp(a.xyz+f*c,0.,a.w),a.w);" +"}$pure float2 $p(int a,float2 b){switch(a){case 0:b.x=saturate(b.x);break;case" +" 1:b.x=fract(b.x);break;case 2:{float c=b.x-1.;b.x=(c-2.*floor(c*.5))-1.;if" +"(sk_Caps.mustDoOpBetweenFloorAndAbs){b.x=clamp(b.x,-1.,1.);}b.x=abs(b.x);break" +";}case 3:if(b.x<0.||b.x>1.){return float2(0.,-1.);}break;}return b;}$pure half4" +" $q(float4[4]a,float4 b,float2 c){if(c.y<0.){return half4(0.);}else if(c.x<=" +"b.x){return half4(a[0]);}else if(c.x1.;float x=" +"-1.;if(r){x=dot(s,s)/s.x;}else if(w){x=length(s)-s.x*u;}else{float y=s.x*s." +"x-s.y*s.y;if(y>=0.){if(l||v<0.){x=-sqrt(y)-s.x*u;}else{x=sqrt(y)-s.x*u;}}}if" +"(!w&&x<0.){return float2(0.,-1.);}float y=k+v*x;if(l){y=1.-y;}return float2" +"(y,1.);}}$pure half4 sk_linear_grad_4_shader(float2 a,float4[4]b,float4 c,float2" +" d,float2 e,int f,int g,int h){float2 i=$t(d,e,a);i=$p(f,i);half4 j=$q(b,c," +"i);return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_linear_grad_8_shader" +"(float2 a,float4[8]b,float4[2]c,float2 d,float2 e,int f,int g,int h){float2" +" i=$t(d,e,a);i=$p(f,i);half4 j=$r(b,c,i);return $interpolated_to_rgb_unpremul" +"(j,g,h);}$pure half4 sk_linear_grad_tex_shader(float2 a,float2 b,float2 c,int" +" d,int e,int f,int g,sampler2D h){float2 i=$t(b,c,a);i=$p(e,i);half4 j=$s(h" +",d,i);return $interpolated_to_rgb_unpremul(j,f,g);}$pure half4 sk_radial_grad_4_shader" +"(float2 a,float4[4]b,float4 c,float2 d,float e,int f,int g,int h){float2 i=" +"$u(d,e,a);i=$p(f,i);half4 j=$q(b,c,i);return $interpolated_to_rgb_unpremul(" +"j,g,h);}$pure half4 sk_radial_grad_8_shader(float2 a,float4[8]b,float4[2]c," +"float2 d,float e,int f,int g,int h){float2 i=$u(d,e,a);i=$p(f,i);half4 j=$r" +"(b,c,i);return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_radial_grad_tex_shader" +"(float2 a,float2 b,float c,int d,int e,int f,int g,sampler2D h){float2 i=$u" "(b,c,a);i=$p(e,i);half4 j=$s(h,d,i);return $interpolated_to_rgb_unpremul(j," -"f,g);}$pure half4 sk_radial_grad_4_shader(float2 a,float4[4]b,float4 c,float2" -" d,float e,int f,int g,int h){float2 i=$u(d,e,a);i=$p(f,i);half4 j=$q(b,c,i" -");return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_radial_grad_8_shader" -"(float2 a,float4[8]b,float4[2]c,float2 d,float e,int f,int g,int h){float2 i" -"=$u(d,e,a);i=$p(f,i);half4 j=$r(b,c,i);return $interpolated_to_rgb_unpremul" -"(j,g,h);}$pure half4 sk_radial_grad_tex_shader(float2 a,float2 b,float c,int" -" d,int e,int f,int g,sampler2D h){float2 i=$u(b,c,a);i=$p(e,i);half4 j=$s(h" -",d,i);return $interpolated_to_rgb_unpremul(j,f,g);}$pure half4 sk_sweep_grad_4_shader" -"(float2 a,float4[4]b,float4 c,float2 d,float e,float f,int g,int h,int i){float2" -" j=$v(d,e,f,a);j=$p(g,j);half4 k=$q(b,c,j);return $interpolated_to_rgb_unpremul" -"(k,h,i);}$pure half4 sk_sweep_grad_8_shader(float2 a,float4[8]b,float4[2]c," -"float2 d,float e,float f,int g,int h,int i){float2 j=$v(d,e,f,a);j=$p(g,j);" -"half4 k=$r(b,c,j);return $interpolated_to_rgb_unpremul(k,h,i);}$pure half4 sk_sweep_grad_tex_shader" -"(float2 a,float2 b,float c,float d,int e,int f,int g,int h,sampler2D i){float2" -" j=$v(b,c,d,a);j=$p(f,j);half4 k=$s(i,e,j);return $interpolated_to_rgb_unpremul" -"(k,g,h);}$pure half4 sk_conical_grad_4_shader(float2 a,float4[4]b,float4 c," -"float2 d,float2 e,float f,float g,int h,int i,int j){float2 k=$x(d,e,f,g,a)" -";k=$p(h,k);half4 l=$q(b,c,k);return $interpolated_to_rgb_unpremul(l,i,j);}$pure" -" half4 sk_conical_grad_8_shader(float2 a,float4[8]b,float4[2]c,float2 d,float2" -" e,float f,float g,int h,int i,int j){float2 k=$x(d,e,f,g,a);k=$p(h,k);half4" -" l=$r(b,c,k);return $interpolated_to_rgb_unpremul(l,i,j);}$pure half4 sk_conical_grad_tex_shader" -"(float2 a,float2 b,float2 c,float d,float e,int f,int g,int h,int i,sampler2D" -" j){float2 k=$x(b,c,d,e,a);k=$p(g,k);half4 l=$s(j,f,k);return $interpolated_to_rgb_unpremul" -"(l,h,i);}$pure half4 sk_matrix_colorfilter(half4 a,float4x4 b,float4 c,int d" -"){if(bool(d)){a=$rgb_to_hsl(a.xyz,a.w);}else{a=unpremul(a);}half4 e=half4(b" -"*float4(a)+c);if(bool(d)){e=$hsl_to_rgb(e.xyz,e.w);}else{e=saturate(e);e.xyz" -"*=e.w;}return e;}$pure half4 noise_helper(half2 a,half2 b,int c,sampler2D d" -"){half4 f;f.xy=floor(a);f.zw=f.xy+half2(1.);if(bool(c)){f-=step(b.xyxy,f)*b" -".xyxy;}half g=sample(d,float2(half2(f.x*.00390625,.5))).x;half h=sample(d,float2" -"(half2(f.z*.00390625,.5))).x;half2 i=half2(g,h);if(sk_Caps.PerlinNoiseRoundingFix" -"){i=floor(i*half2(255.)+half2(.5))*half2(.003921569);}half4 j=256.*i.xyxy+f" -".yyww;j*=half4(.00390625);return j;}$pure half4 noise_function(half2 a,half4" -" b,sampler2D c){half2 d=fract(a);half2 e=(d*d)*(half2(3.)-2.*d);const half f" -"=.00390625;half4 g;for(int h=0;h<4;h++){half i=(half(h)+.5)*.25;half4 j=sample" -"(c,float2(half2(b.x,i)));half4 k=sample(c,float2(half2(b.y,i)));half4 l=sample" -"(c,float2(half2(b.w,i)));half4 m=sample(c,float2(half2(b.z,i)));half2 n;half2" -" o=d;n.x=dot((j.yw+j.xz*f)*2.-half2(1.),o);o.x-=1.;n.y=dot((k.yw+k.xz*f)*2." -"-half2(1.),o);half2 p;p.x=mix(n.x,n.y,e.x);o.y-=1.;n.y=dot((l.yw+l.xz*f)*2." -"-half2(1.),o);o.x+=1.;n.x=dot((m.yw+m.xz*f)*2.-half2(1.),o);p.y=mix(n.x,n.y" -",e.x);g[h]=mix(p.x,p.y,e.y);}return g;}$pure half4 perlin_noise_shader(float2" -" a,float2 b,float2 c,int d,int e,int f,sampler2D g,sampler2D h){half2 k=half2" -"(floor(a)*b);half4 l=half4(0.);half2 m=half2(c);half n=1.;for(int o=0;o0.&&g.y>0.){if(f.x>0.&&f.y>0.||c.x>0.&&c.y<0.){float2 h=$z(g*e," -"f,c.x,b);if(f.x-c.x<=0.){h.y=1.;}else{h.y*=-1.;}a=min(a,h);}else if(c.y==0." -"){float h=((c.x-g.x)-g.y)*$y(e,b);a.x=min(a.x,h);}}}void $B(inout float2 a," -"float2x2 b,float2 c,float4 e,float4 f,float4 g){$A(a,b,c,e.xy,float2(-1.),float2" -"(f.x,g.x));$A(a,b,c,e.zy,float2(1.,-1.),float2(f.y,g.y));$A(a,b,c,e.zw,float2" -"(1.),float2(f.z,g.z));$A(a,b,c,e.xw,float2(-1.,1.),float2(f.w,g.w));}$pure half4" +"b=exp((-b*b)*4.)-.018;return half4(b);}$pure half4 sample_indexed_atlas(float2" +" a,int b,sampler2D c,sampler2D d,sampler2D e,sampler2D f){switch(b){case 1:" +"return sample(d,a);case 2:return sample(e,a);case 3:return sample(f,a);default" +":return sample(c,a);}}$pure half4 bitmap_text_coverage_fn(half4 a,int b){switch" +"(b){case 0:return a.xxxx;case 1:return half4(a.xyz,max(max(a.x,a.y),a.z));default" +":return a;}}$pure half4 sdf_text_coverage_fn(half a,half b,float2 c){half d" +"=7.96875*(a-.5019608);d-=b;half2 e=half2(dFdx(d),dFdy(d));half f=dot(e,e);e" +"=f>=.0001?e*inversesqrt(f):half2(.7071);half2 g=half2(dFdx(c));half2 h=half2" +"(dFdy(c));half2 i=half2(e.x*g.x+e.y*h.x,e.x*g.y+e.y*h.y);half j=.65*length(" +"i);return half4(smoothstep(-j,j,d));}$pure float $y(float2 a,float2x2 b){float2" +" c=a*b;return inversesqrt(dot(c,c));}$pure float2 $z(float2 a,float2 b,float" +" c,float2x2 d){float2 e=1./(b*b+c*c);float2 g=e*a;float h=$y(g,d);float i=(" +".5*h)*(dot(a,g)-1.);float j=((b.x*c)*e.x)*h;return float2(j-i,j+i);}void $A" +"(inout float2 a,float2x2 b,float2 c,float2 d,float2 e,float2 f){float2 g=f-" +"d;if(g.x>0.&&g.y>0.){if(f.x>0.&&f.y>0.||c.x>0.&&c.y<0.){float2 h=$z(g*e,f,c" +".x,b);if(f.x-c.x<=0.){h.y=1.;}else{h.y*=-1.;}a=min(a,h);}else if(c.y==0.){float" +" h=((c.x-g.x)-g.y)*$y(e,b);a.x=min(a.x,h);}}}void $B(inout float2 a,float2x2" +" b,float2 c,float4 e,float4 f,float4 g){$A(a,b,c,e.xy,float2(-1.),float2(f." +"x,g.x));$A(a,b,c,e.zy,float2(1.,-1.),float2(f.y,g.y));$A(a,b,c,e.zw,float2(" +"1.),float2(f.z,g.z));$A(a,b,c,e.xw,float2(-1.,1.),float2(f.w,g.w));}$pure half4" " analytic_rrect_coverage_fn(float4 a,float4 b,float4 c,float4 d,float4 e,float2" " f,float2 g){if(g.x>0.){return half4(1.);}else if(g.y>1.){float2 h=min(c.xy" ",c.zw);float i=min(h.x,h.y)*a.w;float j=(g.y-1.)*a.w;float k=coverage_bias(" diff --git a/src/sksl/generated/sksl_graphite_frag.unoptimized.sksl b/src/sksl/generated/sksl_graphite_frag.unoptimized.sksl index 6f32721e53b9..65da8663a749 100644 --- a/src/sksl/generated/sksl_graphite_frag.unoptimized.sksl +++ b/src/sksl/generated/sksl_graphite_frag.unoptimized.sksl @@ -1,41 +1,38 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_frag[] = -"const int $kTileModeClamp=0;const int $kTileModeRepeat=1;const int $kTileModeMirror" -"=2;const int $kTileModeDecal=3;const int $kReadSwizzleNormalRGBA=0;const int" -" $kReadSwizzleRGB1=1;const int $kReadSwizzleRRRR=2;const int $kReadSwizzleRRR1" -"=3;const int $kReadSwizzleBGRA=4;const int $kFilterModeNearest=0;const int $kFilterModeLinear" -"=1;const int $kTFTypeSRGB=1;const int $kTFTypePQ=2;const int $kTFTypeHLG=3;" -"const int $kTFTypeHLGinv=4;const int $kColorSpaceXformFlagUnpremul=1;const int" -" $kColorSpaceXformFlagLinearize=2;const int $kColorSpaceXformFlagGamutTransform" -"=4;const int $kColorSpaceXformFlagEncode=8;const int $kColorSpaceXformFlagPremul" -"=16;$pure half4 sk_error(){return half4(1.,0.,1.,1.);}$pure half4 sk_passthrough" -"(half4 color){return color;}$pure half4 sk_solid_shader(float4 colorParam){" -"return half4(colorParam);}$pure half4 $apply_swizzle(int swizzleType,half4 color" -"){half4 resultantColor=color;switch(swizzleType){case 0:break;case 1:resultantColor" -"=half4(color.xyz,1.);break;case 2:resultantColor=color.xxxx;break;case 3:resultantColor" -"=half4(color.xxx,1.);break;case 4:resultantColor=color.zyxw;break;}return resultantColor" -";}$pure float $apply_xfer_fn(int kind,float x,half[7]cs){float G=float(cs[0" -"]);float A=float(cs[1]);float B=float(cs[2]);float C=float(cs[3]);float D=float" -"(cs[4]);float E=float(cs[5]);float F=float(cs[6]);float s=sign(x);x=abs(x);" -"switch(kind){case 1:x=xsubset.z){return half4(0.);" "}}if(tileModeY==$kTileModeDecal&&filterMode==$kFilterModeNearest){float snappedY" "=floor(pos.y)+.5;if(snappedYsubset.w){return half4(0.);" @@ -69,55 +66,53 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_frag[] = ",readSwizzle,s);}color+=wy[y]*rowColor;}color.w=saturate(color.w);color.xyz" "=clamp(color.xyz,half3(0.),color.www);return color;}$pure half4 sk_image_shader" "(float2 coords,float2 imgSize,float4 subset,int tileModeX,int tileModeY,int" -" filterMode,int readSwizzle,int csXformFlags,int csXformSrcKind,half[7]csXformSrcCoeffs" -",half3x3 csXformGamutTransform,int csXformDstKind,half[7]csXformDstCoeffs,sampler2D" -" s){half4 sampleColor=$sample_image(coords,imgSize,subset,tileModeX,tileModeY" -",filterMode,readSwizzle,s);return sk_color_space_transform(sampleColor,csXformFlags" -",csXformSrcKind,csXformSrcCoeffs,csXformGamutTransform,csXformDstKind,csXformDstCoeffs" -");}$pure half4 sk_cubic_image_shader(float2 coords,float2 imgSize,float4 subset" -",int tileModeX,int tileModeY,half4x4 cubicCoeffs,int readSwizzle,int csXformFlags" -",int csXformSrcKind,half[7]csXformSrcCoeffs,half3x3 csXformGamutTransform,int" -" csXformDstKind,half[7]csXformDstCoeffs,sampler2D s){half4 sampleColor=$cubic_filter_image" +" filterMode,int readSwizzle,int csXformFlags,int csXformSrcKind,half3x3 csXformGamutTransform" +",int csXformDstKind,half4x4 csXformCoeffs,sampler2D s){half4 sampleColor=$sample_image" +"(coords,imgSize,subset,tileModeX,tileModeY,filterMode,readSwizzle,s);return" +" sk_color_space_transform(sampleColor,csXformFlags,csXformSrcKind,csXformGamutTransform" +",csXformDstKind,csXformCoeffs);}$pure half4 sk_cubic_image_shader(float2 coords" +",float2 imgSize,float4 subset,int tileModeX,int tileModeY,half4x4 cubicCoeffs" +",int readSwizzle,int csXformFlags,int csXformSrcKind,half3x3 csXformGamutTransform" +",int csXformDstKind,half4x4 csXformCoeffs,sampler2D s){half4 sampleColor=$cubic_filter_image" "(coords,imgSize,subset,tileModeX,tileModeY,cubicCoeffs,readSwizzle,s);return" -" sk_color_space_transform(sampleColor,csXformFlags,csXformSrcKind,csXformSrcCoeffs" -",csXformGamutTransform,csXformDstKind,csXformDstCoeffs);}$pure half4 sk_yuv_image_shader" -"(float2 coords,float2 imgSize,float4 subset,int tileModeX,int tileModeY,int" -" filterMode,int useCubic,half4x4 cubicCoeffs,half4 channelSelectY,half4 channelSelectU" -",half4 channelSelectV,half4 channelSelectA,half3x3 yuvToRGBMatrix,float3 yuvToRGBTranslate" -",int csXformFlags,int csXformSrcKind,half[7]csXformSrcCoeffs,half3x3 csXformGamutTransform" -",int csXformDstKind,half[7]csXformDstCoeffs,sampler2D sY,sampler2D sU,sampler2D" -" sV,sampler2D sA){half4 sampleColorY=useCubic!=0?$cubic_filter_image(coords" -",imgSize,subset,tileModeX,tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA,sY)" -":$sample_image(coords,imgSize,subset,tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA" -",sY);half4 sampleColorU=useCubic!=0?$cubic_filter_image(coords,imgSize,subset" -",tileModeX,tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA,sU):$sample_image(" -"coords,imgSize,subset,tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA" -",sU);half4 sampleColorV=useCubic!=0?$cubic_filter_image(coords,imgSize,subset" -",tileModeX,tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA,sY):$sample_image(" +" sk_color_space_transform(sampleColor,csXformFlags,csXformSrcKind,csXformGamutTransform" +",csXformDstKind,csXformCoeffs);}$pure half4 sk_yuv_image_shader(float2 coords" +",float2 imgSize,float4 subset,int tileModeX,int tileModeY,int filterMode,int" +" useCubic,half4x4 cubicCoeffs,half4 channelSelectY,half4 channelSelectU,half4" +" channelSelectV,half4 channelSelectA,half3x3 yuvToRGBMatrix,float3 yuvToRGBTranslate" +",int csXformFlags,int csXformSrcKind,half3x3 csXformGamutTransform,int csXformDstKind" +",half4x4 csXformCoeffs,sampler2D sY,sampler2D sU,sampler2D sV,sampler2D sA)" +"{half4 sampleColorY=useCubic!=0?$cubic_filter_image(coords,imgSize,subset,tileModeX" +",tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA,sY):$sample_image(coords,imgSize" +",subset,tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA,sY);half4 sampleColorU" +"=useCubic!=0?$cubic_filter_image(coords,imgSize,subset,tileModeX,tileModeY," +"cubicCoeffs,$kReadSwizzleNormalRGBA,sU):$sample_image(coords,imgSize,subset" +",tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA,sU);half4 sampleColorV" +"=useCubic!=0?$cubic_filter_image(coords,imgSize,subset,tileModeX,tileModeY," +"cubicCoeffs,$kReadSwizzleNormalRGBA,sY):$sample_image(coords,imgSize,subset" +",tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA,sV);float Y=float(dot" +"(channelSelectY,sampleColorY));float U=float(dot(channelSelectU,sampleColorU" +"));float V=float(dot(channelSelectV,sampleColorV));half3 preColor=half3(half" +"(Y),half(U),half(V));half4 sampleColor;sampleColor.xyz=saturate(preColor*yuvToRGBMatrix" +"+half3(yuvToRGBTranslate));if(channelSelectA==half4(0.)){sampleColor.w=1.;}" +"else{half4 sampleColorA=useCubic!=0?$cubic_filter_image(coords,imgSize,subset" +",tileModeX,tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA,sA):$sample_image(" "coords,imgSize,subset,tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA" -",sV);float Y=float(dot(channelSelectY,sampleColorY));float U=float(dot(channelSelectU" -",sampleColorU));float V=float(dot(channelSelectV,sampleColorV));half3 preColor" -"=half3(half(Y),half(U),half(V));half4 sampleColor;sampleColor.xyz=saturate(" -"preColor*yuvToRGBMatrix+half3(yuvToRGBTranslate));if(channelSelectA==half4(" -"0.)){sampleColor.w=1.;}else{half4 sampleColorA=useCubic!=0?$cubic_filter_image" -"(coords,imgSize,subset,tileModeX,tileModeY,cubicCoeffs,$kReadSwizzleNormalRGBA" -",sA):$sample_image(coords,imgSize,subset,tileModeX,tileModeY,filterMode,$kReadSwizzleNormalRGBA" ",sA);sampleColor.w=dot(channelSelectA,sampleColorA);sampleColor.xyz*=sampleColor" ".w;}return sk_color_space_transform(sampleColor,csXformFlags,csXformSrcKind" -",csXformSrcCoeffs,csXformGamutTransform,csXformDstKind,csXformDstCoeffs);}$pure" -" half4 sk_dither_shader(half4 colorIn,float2 coords,half range,sampler2D lut" -"){const float kImgSize=8.;half value=sample(lut,coords*.125).x-.5;return half4" -"(clamp(colorIn.xyz+value*range,0.,colorIn.w),colorIn.w);}$pure float2 $tile_grad" -"(int tileMode,float2 t){switch(tileMode){case 0:t.x=saturate(t.x);break;case" -" 1:t.x=fract(t.x);break;case 2:{float t_1=t.x-1.;t.x=(t_1-2.*floor(t_1*.5))" -"-1.;if(sk_Caps.mustDoOpBetweenFloorAndAbs){t.x=clamp(t.x,-1.,1.);}t.x=abs(t" -".x);break;}case 3:if(t.x<0.||t.x>1.){return float2(0.,-1.);}break;}return t" -";}$pure half4 $colorize_grad_4(float4[4]colorsParam,float4 offsetsParam,float2" -" t){if(t.y<0.){return half4(0.);}else if(t.x<=offsetsParam.x){return half4(" -"colorsParam[0]);}else if(t.x1.){return" +" float2(0.,-1.);}break;}return t;}$pure half4 $colorize_grad_4(float4[4]colorsParam" +",float4 offsetsParam,float2 t){if(t.y<0.){return half4(0.);}else if(t.x<=offsetsParam" +".x){return half4(colorsParam[0]);}else if(t.x0.&&uv.y>0.){if(radii.x>0.&&radii.y>0.||strokeParams" -".x>0.&&strokeParams.y<0.){float2 d=$elliptical_distance(uv*xyFlip,radii,strokeParams" -".x,jacobian);if(radii.x-strokeParams.x<=0.){d.y=1.;}else{d.y*=-1.;}dist=min" -"(dist,d);}else if(strokeParams.y==0.){float bevelDist=((strokeParams.x-uv.x" -")-uv.y)*$inverse_grad_len(xyFlip,jacobian);dist.x=min(dist.x,bevelDist);}}}" -"void $corner_distances(inout float2 d,float2x2 J,float2 stroke,float4 edgeDists" -",float4 xRadii,float4 yRadii){$corner_distance(d,J,stroke,edgeDists.xy,float2" -"(-1.),float2(xRadii.x,yRadii.x));$corner_distance(d,J,stroke,edgeDists.zy,float2" -"(1.,-1.),float2(xRadii.y,yRadii.y));$corner_distance(d,J,stroke,edgeDists.zw" -",float2(1.),float2(xRadii.z,yRadii.z));$corner_distance(d,J,stroke,edgeDists" -".xw,float2(-1.,1.),float2(xRadii.w,yRadii.w));}$pure half4 analytic_rrect_coverage_fn" -"(float4 coords,float4 jacobian,float4 edgeDistances,float4 xRadii,float4 yRadii" -",float2 strokeParams,float2 perPixelControl){if(perPixelControl.x>0.){return" -" half4(1.);}else if(perPixelControl.y>1.){float2 outerDist=min(edgeDistances" -".xy,edgeDistances.zw);float c=min(outerDist.x,outerDist.y)*coords.w;float scale" -"=(perPixelControl.y-1.)*coords.w;float bias=coverage_bias(scale);return half4" -"(half(saturate(scale*(c+bias))));}else{float2x2 J=float2x2(jacobian)*(1./coords" -".w);float2 invGradLen=float2($inverse_grad_len(float2(1.,0.),J),$inverse_grad_len" -"(float2(0.,1.),J));float2 outerDist=invGradLen*(strokeParams.x+min(edgeDistances" -".xy,edgeDistances.zw));float2 d=float2(min(outerDist.x,outerDist.y),-1.);float" -" scale;float bias;if(perPixelControl.x>-.95){float2 dim=invGradLen*((edgeDistances" -".xy+edgeDistances.zw)+2.*strokeParams.xx);scale=min(min(dim.x,dim.y),1.);bias" -"=coverage_bias(scale);}else{float2 strokeWidth=(2.*strokeParams.x)*invGradLen" -";float2 innerDist=strokeWidth-outerDist;d.y=-max(innerDist.x,innerDist.y);if" -"(strokeParams.x>0.){float strokeDim=min(strokeWidth.x,strokeWidth.y);if(innerDist" -".y>=-.5&&strokeWidth.y>strokeDim){strokeDim=strokeWidth.y;}if(innerDist.x>=" -"-.5&&strokeWidth.x>strokeDim){strokeDim=strokeWidth.x;}scale=min(strokeDim," -"1.);bias=coverage_bias(scale);}else{scale=(bias=1.);}}$corner_distances(d,J" -",strokeParams,edgeDistances,xRadii,yRadii);float outsetDist=min(perPixelControl" +"){latticeIdx=floor(latticeIdx*half2(255.)+half2(.5))*half2(.003921569);}half4" +" noiseXCoords=kBlockSize*latticeIdx.xyxy+floorVal.yyww;noiseXCoords*=half4(" +".00390625);return noiseXCoords;}$pure half4 noise_function(half2 noiseVec,half4" +" noiseXCoords,sampler2D noiseSampler){half2 fractVal=fract(noiseVec);half2 noiseSmooth" +"=(fractVal*fractVal)*(half2(3.)-2.*fractVal);const half kInv256=.00390625;half4" +" result;for(int channel=0;channel<4;channel++){half chanCoord=(half(channel" +")+.5)*.25;half4 sampleA=sample(noiseSampler,float2(half2(noiseXCoords.x,chanCoord" +")));half4 sampleB=sample(noiseSampler,float2(half2(noiseXCoords.y,chanCoord" +")));half4 sampleC=sample(noiseSampler,float2(half2(noiseXCoords.w,chanCoord" +")));half4 sampleD=sample(noiseSampler,float2(half2(noiseXCoords.z,chanCoord" +")));half2 uv;half2 tmpFractVal=fractVal;uv.x=dot((sampleA.yw+sampleA.xz*kInv256" +")*2.-half2(1.),tmpFractVal);tmpFractVal.x-=1.;uv.y=dot((sampleB.yw+sampleB." +"xz*kInv256)*2.-half2(1.),tmpFractVal);half2 ab;ab.x=mix(uv.x,uv.y,noiseSmooth" +".x);tmpFractVal.y-=1.;uv.y=dot((sampleC.yw+sampleC.xz*kInv256)*2.-half2(1.)" +",tmpFractVal);tmpFractVal.x+=1.;uv.x=dot((sampleD.yw+sampleD.xz*kInv256)*2." +"-half2(1.),tmpFractVal);ab.y=mix(uv.x,uv.y,noiseSmooth.x);result[channel]=mix" +"(ab.x,ab.y,noiseSmooth.y);}return result;}$pure half4 perlin_noise_shader(float2" +" coords,float2 baseFrequency,float2 stitchDataIn,int noiseType,int numOctaves" +",int stitching,sampler2D permutationSampler,sampler2D noiseSampler){const int" +" kFractalNoise_Type=0;half2 noiseVec=half2(floor(coords)*baseFrequency);half4" +" color=half4(0.);half2 stitchData=half2(stitchDataIn);half ratio=1.;for(int" +" octave=0;octave=.0001?dist_grad*inversesqrt(dg_len2):half2(.7071);half2" +" Jdx=half2(dFdx(unormTexCoords));half2 Jdy=half2(dFdy(unormTexCoords));half2" +" grad=half2(dist_grad.x*Jdx.x+dist_grad.y*Jdy.x,dist_grad.x*Jdx.y+dist_grad" +".y*Jdy.y);half afwidth=.65*length(grad);return half4(smoothstep(-afwidth,afwidth" +",dist));}$pure float $inverse_grad_len(float2 localGrad,float2x2 jacobian){" +"float2 devGrad=localGrad*jacobian;return inversesqrt(dot(devGrad,devGrad));" +"}$pure float2 $elliptical_distance(float2 uv,float2 radii,float strokeRadius" +",float2x2 jacobian){float2 invR2=1./(radii*radii+strokeRadius*strokeRadius)" +";float2 normUV=invR2*uv;float invGradLength=$inverse_grad_len(normUV,jacobian" +");float f=(.5*invGradLength)*(dot(uv,normUV)-1.);float width=((radii.x*strokeRadius" +")*invR2.x)*invGradLength;return float2(width-f,width+f);}void $corner_distance" +"(inout float2 dist,float2x2 jacobian,float2 strokeParams,float2 cornerEdgeDist" +",float2 xyFlip,float2 radii){float2 uv=radii-cornerEdgeDist;if(uv.x>0.&&uv." +"y>0.){if(radii.x>0.&&radii.y>0.||strokeParams.x>0.&&strokeParams.y<0.){float2" +" d=$elliptical_distance(uv*xyFlip,radii,strokeParams.x,jacobian);if(radii.x" +"-strokeParams.x<=0.){d.y=1.;}else{d.y*=-1.;}dist=min(dist,d);}else if(strokeParams" +".y==0.){float bevelDist=((strokeParams.x-uv.x)-uv.y)*$inverse_grad_len(xyFlip" +",jacobian);dist.x=min(dist.x,bevelDist);}}}void $corner_distances(inout float2" +" d,float2x2 J,float2 stroke,float4 edgeDists,float4 xRadii,float4 yRadii){$corner_distance" +"(d,J,stroke,edgeDists.xy,float2(-1.),float2(xRadii.x,yRadii.x));$corner_distance" +"(d,J,stroke,edgeDists.zy,float2(1.,-1.),float2(xRadii.y,yRadii.y));$corner_distance" +"(d,J,stroke,edgeDists.zw,float2(1.),float2(xRadii.z,yRadii.z));$corner_distance" +"(d,J,stroke,edgeDists.xw,float2(-1.,1.),float2(xRadii.w,yRadii.w));}$pure half4" +" analytic_rrect_coverage_fn(float4 coords,float4 jacobian,float4 edgeDistances" +",float4 xRadii,float4 yRadii,float2 strokeParams,float2 perPixelControl){if" +"(perPixelControl.x>0.){return half4(1.);}else if(perPixelControl.y>1.){float2" +" outerDist=min(edgeDistances.xy,edgeDistances.zw);float c=min(outerDist.x,outerDist" +".y)*coords.w;float scale=(perPixelControl.y-1.)*coords.w;float bias=coverage_bias" +"(scale);return half4(half(saturate(scale*(c+bias))));}else{float2x2 J=float2x2" +"(jacobian)*(1./coords.w);float2 invGradLen=float2($inverse_grad_len(float2(" +"1.,0.),J),$inverse_grad_len(float2(0.,1.),J));float2 outerDist=invGradLen*(" +"strokeParams.x+min(edgeDistances.xy,edgeDistances.zw));float2 d=float2(min(" +"outerDist.x,outerDist.y),-1.);float scale;float bias;if(perPixelControl.x>-" +".95){float2 dim=invGradLen*((edgeDistances.xy+edgeDistances.zw)+2.*strokeParams" +".xx);scale=min(min(dim.x,dim.y),1.);bias=coverage_bias(scale);}else{float2 strokeWidth" +"=(2.*strokeParams.x)*invGradLen;float2 innerDist=strokeWidth-outerDist;d.y=" +"-max(innerDist.x,innerDist.y);if(strokeParams.x>0.){float strokeDim=min(strokeWidth" +".x,strokeWidth.y);if(innerDist.y>=-.5&&strokeWidth.y>strokeDim){strokeDim=strokeWidth" +".y;}if(innerDist.x>=-.5&&strokeWidth.x>strokeDim){strokeDim=strokeWidth.x;}" +"scale=min(strokeDim,1.);bias=coverage_bias(scale);}else{scale=(bias=1.);}}$corner_distances" +"(d,J,strokeParams,edgeDistances,xRadii,yRadii);float outsetDist=min(perPixelControl" ".y,0.)*coords.w;float finalCoverage=scale*(min(d.x+outsetDist,-d.y)+bias);return" " half4(half(saturate(finalCoverage)));}}"; diff --git a/src/sksl/generated/sksl_graphite_vert.minified.sksl b/src/sksl/generated/sksl_graphite_vert.minified.sksl index bc2dc4871735..5c95987f91b9 100644 --- a/src/sksl/generated/sksl_graphite_vert.minified.sksl +++ b/src/sksl/generated/sksl_graphite_vert.minified.sksl @@ -94,12 +94,15 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_vert[] = "(V);W=-Y*perp(W);}}S.xy+=S.z*normalize(V+W);if(y){l-=S.z;}else{p.y=-S.z;}}else" " if(!y){p.y=0.;}if(d!=0.){p.x=1.;}else{p.x=float(x?-1.:0.);}if(C){k=float4(" "float2x2(H.x,-H.y,-G.x,G.y)*float2x2(k));}q=P;return float4(S.xy,S.z*i,S.z)" -";}float4 atlas_shape_vertex_fn(float2 a,float2 b,float4 c,float2 d,float2 e" -",float2 f,float g,float3x3 h,out float4 i,out float2 j,out float2 k){float2" -" l=c.xy+a*max(c.zw-c.xy,f);float3 m=h*float3(l,1.);k=m.xy/m.z;if(all(greaterThan" -"(f,float2(0.)))){i=float4(e,(e+f)+float2(1.))*b.xyxy;j=(((e+float2(1.))+l)-" -"d)*b;}else{i=float4(0.);j=float2(0.);}return float4(l,g,1.);}float4 cover_bounds_vertex_fn" -"(float2 a,float4 b,float c,float3x3 d,out float2 e){if(all(lessThanEqual(b." -"xy,b.zw))){a=mix(b.xy,b.zw,a);float3 f=d*float3(a,1.);e=a;return float4(f.xy" -",c,f.z);}else{a=mix(b.zw,b.xy,a);float3 f=d*float3(a,1.);e=f.xy/f.z;return float4" -"(a,c,1.);}}"; +";}float4 text_vertex_fn(float2 a,float4x4 b,float4x4 c,float2 d,float2 e,float2" +" f,float2 g,float h,float i,out float2 j,out float2 k,out float2 l){a*=e;float2" +" m=h*a+g;float4 n=b*float4(m,0.,1.);l=(c*n).xy;k=a+f;j=k*d;return float4(n." +"xy,i,n.w);}float4 atlas_shape_vertex_fn(float2 a,float2 b,float4 c,float2 d" +",float2 e,float2 f,float g,float3x3 h,out float4 i,out float2 j,out float2 k" +"){float2 l=c.xy+a*max(c.zw-c.xy,f);float3 m=h*float3(l,1.);k=m.xy/m.z;if(all" +"(greaterThan(f,float2(0.)))){i=float4(e,(e+f)+float2(1.))*b.xyxy;j=(((e+float2" +"(1.))+l)-d)*b;}else{i=float4(0.);j=float2(0.);}return float4(l,g,1.);}float4" +" cover_bounds_vertex_fn(float2 a,float4 b,float c,float3x3 d,out float2 e){" +"if(all(lessThanEqual(b.xy,b.zw))){a=mix(b.xy,b.zw,a);float3 f=d*float3(a,1." +");e=a;return float4(f.xy,c,f.z);}else{a=mix(b.zw,b.xy,a);float3 f=d*float3(" +"a,1.);e=f.xy/f.z;return float4(a,c,1.);}}"; diff --git a/src/sksl/generated/sksl_graphite_vert.unoptimized.sksl b/src/sksl/generated/sksl_graphite_vert.unoptimized.sksl index 95c55519decb..3584450048d8 100644 --- a/src/sksl/generated/sksl_graphite_vert.unoptimized.sksl +++ b/src/sksl/generated/sksl_graphite_vert.unoptimized.sksl @@ -5,13 +5,13 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_vert[] = ".w)){return $kConicCurveType;}return $kCubicCurveType;}$pure bool $is_conic_curve" "(float curveType){return curveType!=$kCubicCurveType;}$pure bool $is_triangular_conic_curve" "(float curveType){return curveType==$kTriangularConicCurveType;}const float" -" $kDegree=3.;const float $kPrecision=4.;const float $kLengthTerm=3.;const float" -" $kLengthTermPow2=9.;$pure float $wangs_formula_max_fdiff_p2(float2 p0,float2" -" p1,float2 p2,float2 p3,float2x2 matrix){float2 d0=matrix*(fma(float2(-2.)," -"p1,p2)+p0);float2 d1=matrix*(fma(float2(-2.),p2,p3)+p1);return max(dot(d0,d0" -"),dot(d1,d1));}$pure float $wangs_formula_cubic(float2 p0,float2 p1,float2 p2" -",float2 p3,float2x2 matrix){float m=$wangs_formula_max_fdiff_p2(p0,p1,p2,p3" -",matrix);return max(ceil(sqrt($kLengthTerm*sqrt(m))),1.);}$pure float $wangs_formula_cubic_log2" +" $kPrecision=4.;const float $kLengthTerm=3.;const float $kLengthTermPow2=9." +";$pure float $wangs_formula_max_fdiff_p2(float2 p0,float2 p1,float2 p2,float2" +" p3,float2x2 matrix){float2 d0=matrix*(fma(float2(-2.),p1,p2)+p0);float2 d1" +"=matrix*(fma(float2(-2.),p2,p3)+p1);return max(dot(d0,d0),dot(d1,d1));}$pure" +" float $wangs_formula_cubic(float2 p0,float2 p1,float2 p2,float2 p3,float2x2" +" matrix){float m=$wangs_formula_max_fdiff_p2(p0,p1,p2,p3,matrix);return max" +"(ceil(sqrt($kLengthTerm*sqrt(m))),1.);}$pure float $wangs_formula_cubic_log2" "(float2 p0,float2 p1,float2 p2,float2 p3,float2x2 matrix){float m=$wangs_formula_max_fdiff_p2" "(p0,p1,p2,p3,matrix);return ceil(log2(max($kLengthTermPow2*m,1.))*.25);}$pure" " float $wangs_formula_conic_p2(float2 p0,float2 p1,float2 p2,float w){float2" @@ -182,17 +182,24 @@ static constexpr char SKSL_MINIFIED_sksl_graphite_vert[] = ".y=0.;}if(centerWeight!=0.){perPixelControl.x=1.;}else{perPixelControl.x=float" "(bidirectionalCoverage?-1.:0.);}if(strokedLine){jacobian=float4(float2x2(dy" ".x,-dy.y,-dx.x,dx.y)*float2x2(jacobian));}stepLocalCoords=localPos;return float4" -"(devPos.xy,devPos.z*depth,devPos.z);}float4 atlas_shape_vertex_fn(float2 quadCoords" -",float2 atlasSizeInv,float4 drawBounds,float2 deviceOrigin,float2 uvPos,float2" -" maskDims,float depth,float3x3 deviceToLocal,out float4 maskBounds,out float2" -" textureCoords,out float2 stepLocalCoords){float2 drawCoords=drawBounds.xy+" -"quadCoords*max(drawBounds.zw-drawBounds.xy,maskDims);float3 localCoords=deviceToLocal" -"*float3(drawCoords,1.);stepLocalCoords=localCoords.xy/localCoords.z;if(all(" -"greaterThan(maskDims,float2(0.)))){maskBounds=float4(uvPos,(uvPos+maskDims)" -"+float2(1.))*atlasSizeInv.xyxy;textureCoords=(((uvPos+float2(1.))+drawCoords" -")-deviceOrigin)*atlasSizeInv;}else{maskBounds=float4(0.);textureCoords=float2" -"(0.);}return float4(drawCoords,depth,1.);}float4 cover_bounds_vertex_fn(float2" -" corner,float4 bounds,float depth,float3x3 matrix,out float2 stepLocalCoords" +"(devPos.xy,devPos.z*depth,devPos.z);}float4 text_vertex_fn(float2 baseCoords" +",float4x4 subRunDeviceMatrix,float4x4 deviceToLocal,float2 atlasSizeInv,float2" +" size,float2 uvPos,float2 xyPos,float strikeToSourceScale,float depth,out float2" +" textureCoords,out float2 unormTexCoords,out float2 stepLocalCoords){baseCoords" +"*=size;float2 subRunCoords=strikeToSourceScale*baseCoords+xyPos;float4 position" +"=subRunDeviceMatrix*float4(subRunCoords,0.,1.);stepLocalCoords=(deviceToLocal" +"*position).xy;unormTexCoords=baseCoords+uvPos;textureCoords=unormTexCoords*" +"atlasSizeInv;return float4(position.xy,depth,position.w);}float4 atlas_shape_vertex_fn" +"(float2 quadCoords,float2 atlasSizeInv,float4 drawBounds,float2 deviceOrigin" +",float2 uvPos,float2 maskDims,float depth,float3x3 deviceToLocal,out float4" +" maskBounds,out float2 textureCoords,out float2 stepLocalCoords){float2 drawCoords" +"=drawBounds.xy+quadCoords*max(drawBounds.zw-drawBounds.xy,maskDims);float3 localCoords" +"=deviceToLocal*float3(drawCoords,1.);stepLocalCoords=localCoords.xy/localCoords" +".z;if(all(greaterThan(maskDims,float2(0.)))){maskBounds=float4(uvPos,(uvPos" +"+maskDims)+float2(1.))*atlasSizeInv.xyxy;textureCoords=(((uvPos+float2(1.))" +"+drawCoords)-deviceOrigin)*atlasSizeInv;}else{maskBounds=float4(0.);textureCoords" +"=float2(0.);}return float4(drawCoords,depth,1.);}float4 cover_bounds_vertex_fn" +"(float2 corner,float4 bounds,float depth,float3x3 matrix,out float2 stepLocalCoords" "){if(all(lessThanEqual(bounds.xy,bounds.zw))){corner=mix(bounds.xy,bounds.zw" ",corner);float3 devCorner=matrix*float3(corner,1.);stepLocalCoords=corner;return" " float4(devCorner.xy,depth,devCorner.z);}else{corner=mix(bounds.zw,bounds.xy" diff --git a/src/sksl/generated/sksl_shared.unoptimized.sksl b/src/sksl/generated/sksl_shared.unoptimized.sksl index c1ad2cb5affc..31b232ee8c92 100644 --- a/src/sksl/generated/sksl_shared.unoptimized.sksl +++ b/src/sksl/generated/sksl_shared.unoptimized.sksl @@ -131,33 +131,31 @@ static constexpr char SKSL_MINIFIED_sksl_shared[] = "half3(0.,.6666667,.333333343);half3 q=saturate(abs(fract(p)*6.-3.)-1.);return" "(q-.5)*C+hsl.z;}$export $pure half4 $hsl_to_rgb(half3 hsl,half a){return saturate" "(half4($hsl_to_rgb(hsl)*a,a));}$export $pure half3 $css_lab_to_xyz(half3 lab" -"){const half k=903.2963;const half e=.008856452;half3 f;f.y=(lab.x+16.)*.00862069" -";f.x=lab.y*.002+f.y;f.z=f.y-lab.z*.005;half3 f_cubed=pow(f,half3(3.));half3" -" xyz=half3(f_cubed.x>e?f_cubed.x:(116.*f.x-16.)*.00110705639,lab.x>8.000001" -"?f_cubed.y:lab.x*.00110705639,f_cubed.z>e?f_cubed.z:(116.*f.z-16.)*.00110705639" -");const half3 D50=half3(.9642956,1.,.825104535);return xyz*D50;}$pure half3" -" $css_hcl_to_lab(half3 hcl){return half3(hcl.z,hcl.y*cos(radians(hcl.x)),hcl" -".y*sin(radians(hcl.x)));}$export $pure half3 $css_hcl_to_xyz(half3 hcl){return" -" $css_lab_to_xyz($css_hcl_to_lab(hcl));}$export $pure half3 $css_oklab_to_linear_srgb" -"(half3 oklab){half l_=(oklab.x+.396337777*oklab.y)+.215803757*oklab.z;half m_" -"=(oklab.x-.105561346*oklab.y)-.06385417*oklab.z;half s_=(oklab.x-.08948418*" -"oklab.y)-1.29148555*oklab.z;half l=(l_*l_)*l_;half m=(m_*m_)*m_;half s=(s_*" -"s_)*s_;return half3((4.0767417*l-3.3077116*m)+.230969936*s,(-1.268438*l+2.60975742" -"*m)-.341319382*s,(-.00419608643*l-.7034186*m)+1.70761466*s);}$export $pure half3" -" $css_okhcl_to_linear_srgb(half3 okhcl){return $css_oklab_to_linear_srgb($css_hcl_to_lab" -"(okhcl));}$export $pure half3 $css_hsl_to_srgb(half3 hsl){hsl.x=mod(hsl.x,360." -");if(hsl.x<0.){hsl.x+=360.;}hsl.yz*=.01;half3 k=mod(half3(0.,8.,4.)+hsl.x*.0333333351" -",12.);half a=hsl.y*min(hsl.z,1.-hsl.z);return hsl.z-a*clamp(min(k-3.,9.-k)," -"-1.,1.);}$export $pure half3 $css_hwb_to_srgb(half3 hwb){hwb.yz*=.01;if(hwb" -".y+hwb.z>=1.){half gray=hwb.y/(hwb.y+hwb.z);return half3(gray);}half3 rgb=$css_hsl_to_srgb" +"){const half e=.008856452;half3 f;f.y=(lab.x+16.)*.00862069;f.x=lab.y*.002+" +"f.y;f.z=f.y-lab.z*.005;half3 f_cubed=pow(f,half3(3.));half3 xyz=half3(f_cubed" +".x>e?f_cubed.x:(116.*f.x-16.)*.00110705639,lab.x>8.000001?f_cubed.y:lab.x*.00110705639" +",f_cubed.z>e?f_cubed.z:(116.*f.z-16.)*.00110705639);const half3 D50=half3(.9642956" +",1.,.825104535);return xyz*D50;}$pure half3 $css_hcl_to_lab(half3 hcl){return" +" half3(hcl.z,hcl.y*cos(radians(hcl.x)),hcl.y*sin(radians(hcl.x)));}$export $pure" +" half3 $css_hcl_to_xyz(half3 hcl){return $css_lab_to_xyz($css_hcl_to_lab(hcl" +"));}$export $pure half3 $css_oklab_to_linear_srgb(half3 oklab){half l_=(oklab" +".x+.396337777*oklab.y)+.215803757*oklab.z;half m_=(oklab.x-.105561346*oklab" +".y)-.06385417*oklab.z;half s_=(oklab.x-.08948418*oklab.y)-1.29148555*oklab." +"z;half l=(l_*l_)*l_;half m=(m_*m_)*m_;half s=(s_*s_)*s_;return half3((4.0767417" +"*l-3.3077116*m)+.230969936*s,(-1.268438*l+2.60975742*m)-.341319382*s,(-.00419608643" +"*l-.7034186*m)+1.70761466*s);}$export $pure half3 $css_okhcl_to_linear_srgb" +"(half3 okhcl){return $css_oklab_to_linear_srgb($css_hcl_to_lab(okhcl));}$export" +" $pure half3 $css_hsl_to_srgb(half3 hsl){hsl.x=mod(hsl.x,360.);if(hsl.x<0.)" +"{hsl.x+=360.;}hsl.yz*=.01;half3 k=mod(half3(0.,8.,4.)+hsl.x*.0333333351,12." +");half a=hsl.y*min(hsl.z,1.-hsl.z);return hsl.z-a*clamp(min(k-3.,9.-k),-1.," +"1.);}$export $pure half3 $css_hwb_to_srgb(half3 hwb){hwb.yz*=.01;if(hwb.y+hwb" +".z>=1.){half gray=hwb.y/(hwb.y+hwb.z);return half3(gray);}half3 rgb=$css_hsl_to_srgb" "(half3(hwb.x,100.,50.));rgb*=(1.-hwb.y)-hwb.z;rgb+=hwb.y;return rgb;}$export" " $pure half4 $interpolated_to_rgb_unpremul(half4 color,int colorSpace,int doUnpremul" -"){const int kDestination=0;const int kSRGBLinear=1;const int kLab=2;const int" -" kOKLab=3;const int kLCH=4;const int kOKLCH=5;const int kSRGB=6;const int kHSL" -"=7;const int kHWB=8;if(bool(doUnpremul)){switch(colorSpace){case 2:;case 3:" -"color=unpremul(color);break;case 4:;case 5:;case 7:;case 8:color=$unpremul_polar" -"(color);break;}}switch(colorSpace){case 2:{color.xyz=$css_lab_to_xyz(color." -"xyz);break;}case 3:{color.xyz=$css_oklab_to_linear_srgb(color.xyz);break;}case" -" 4:{color.xyz=$css_hcl_to_xyz(color.xyz);break;}case 5:{color.xyz=$css_okhcl_to_linear_srgb" +"){if(bool(doUnpremul)){switch(colorSpace){case 2:;case 3:color=unpremul(color" +");break;case 4:;case 5:;case 7:;case 8:color=$unpremul_polar(color);break;}" +"}switch(colorSpace){case 2:{color.xyz=$css_lab_to_xyz(color.xyz);break;}case" +" 3:{color.xyz=$css_oklab_to_linear_srgb(color.xyz);break;}case 4:{color.xyz" +"=$css_hcl_to_xyz(color.xyz);break;}case 5:{color.xyz=$css_okhcl_to_linear_srgb" "(color.xyz);break;}case 7:{color.xyz=$css_hsl_to_srgb(color.xyz);break;}case" " 8:{color.xyz=$css_hwb_to_srgb(color.xyz);break;}}return color;}"; diff --git a/src/sksl/ir/SkSLBinaryExpression.cpp b/src/sksl/ir/SkSLBinaryExpression.cpp index be5d16e7853a..2cdbb2ebb824 100644 --- a/src/sksl/ir/SkSLBinaryExpression.cpp +++ b/src/sksl/ir/SkSLBinaryExpression.cpp @@ -108,17 +108,24 @@ std::unique_ptr BinaryExpression::Convert(const Context& context, "' are not permitted"); return nullptr; } - if (context.fConfig->strictES2Mode()) { - if (!op.isAllowedInStrictES2Mode()) { - context.fErrors->error(pos, "operator '" + std::string(op.tightOperatorName()) + - "' is not allowed"); - return nullptr; - } - if (leftType->isOrContainsArray()) { - // Most operators are already rejected on arrays, but GLSL ES 1.0 is very explicit that - // the *only* operator allowed on arrays is subscripting (and the rules against - // assignment, comparison, and even sequence apply to structs containing arrays as well) - context.fErrors->error(pos, "operator '" + std::string(op.tightOperatorName()) + + if (context.fConfig->strictES2Mode() && !op.isAllowedInStrictES2Mode()) { + context.fErrors->error(pos, "operator '" + std::string(op.tightOperatorName()) + + "' is not allowed"); + return nullptr; + } + if (context.fConfig->strictES2Mode() || op.kind() == OperatorKind::COMMA) { + // Most operators are already rejected on arrays, but GLSL ES 1.0 is very explicit that the + // *only* operator allowed on arrays is subscripting (and the rules against assignment, + // comparison, and even sequence apply to structs containing arrays as well). + // WebGL2 also restricts the usage of the sequence operator with arrays (section 5.26, + // "Disallowed variants of GLSL ES 3.00 operators"). Since there is very little practical + // application for sequenced array expressions, we disallow it in SkSL. + const Expression* arrayExpr = leftType->isOrContainsArray() ? left.get() : + rightType->isOrContainsArray() ? right.get() : + nullptr; + if (arrayExpr) { + context.fErrors->error(arrayExpr->position(), + "operator '" + std::string(op.tightOperatorName()) + "' can not operate on arrays (or structs containing arrays)"); return nullptr; } diff --git a/src/sksl/ir/SkSLFunctionCall.cpp b/src/sksl/ir/SkSLFunctionCall.cpp index b14f2d9bd36c..a49531b198de 100644 --- a/src/sksl/ir/SkSLFunctionCall.cpp +++ b/src/sksl/ir/SkSLFunctionCall.cpp @@ -29,6 +29,7 @@ #include "src/sksl/ir/SkSLConstructorCompound.h" #include "src/sksl/ir/SkSLFunctionDeclaration.h" #include "src/sksl/ir/SkSLFunctionReference.h" +#include "src/sksl/ir/SkSLLayout.h" #include "src/sksl/ir/SkSLLiteral.h" #include "src/sksl/ir/SkSLMethodReference.h" #include "src/sksl/ir/SkSLModifierFlags.h" @@ -1017,25 +1018,66 @@ std::string FunctionCall::description(OperatorPrecedence) const { return result; } +static bool argument_and_parameter_flags_match(const Expression& argument, + const Variable& parameter) { + // If the function parameter has a pixel format, the argument being passed in must have a + // matching pixel format. + LayoutFlags paramPixelFormat = parameter.layout().fFlags & LayoutFlag::kAllPixelFormats; + if (paramPixelFormat != LayoutFlag::kNone) { + // The only SkSL type that supports pixel-format qualifiers is a storage texture. + if (parameter.type().typeKind() == Type::TypeKind::kTexture) { + // Storage textures are opaquely typed, so there's no way to specify one other than by + // directly accessing a variable. + if (!argument.is()) { + return false; + } + + // The variable's pixel-format flags must match. (Only one pixel-format bit can be set.) + const Variable& var = *argument.as().variable(); + if ((var.layout().fFlags & LayoutFlag::kAllPixelFormats) != paramPixelFormat) { + return false; + } + } + } + + // The only other supported parameter flags are `const` and `in/out`, which do not allow + // multiple overloads. + return true; +} + /** - * Determines the cost of coercing the arguments of a function to the required types. Cost has no - * particular meaning other than "lower costs are preferred". Returns CoercionCost::Impossible() if - * the call is not valid. + * Used to determine the best overload for a function call by calculating the cost of coercing the + * arguments of the function to the required types. Cost has no particular meaning other than "lower + * costs are preferred". Returns CoercionCost::Impossible() if the call is not valid. This is never + * called for functions with only one definition. */ static CoercionCost call_cost(const Context& context, const FunctionDeclaration& function, const ExpressionArray& arguments) { + // Strict-ES2 programs can never call an `$es3` function. if (context.fConfig->strictES2Mode() && function.modifierFlags().isES3()) { return CoercionCost::Impossible(); } + // Functions with the wrong number of parameters are never a match. if (function.parameters().size() != SkToSizeT(arguments.size())) { return CoercionCost::Impossible(); } + // If the arguments cannot be coerced to the parameter types, the function is never a match. FunctionDeclaration::ParamTypes types; const Type* ignored; if (!function.determineFinalTypes(arguments, &types, &ignored)) { return CoercionCost::Impossible(); } + // If the arguments do not match the parameter types due to mismatched modifiers, the function + // is never a match. + for (int i = 0; i < arguments.size(); i++) { + const Expression& arg = *arguments[i]; + const Variable& param = *function.parameters()[i]; + if (!argument_and_parameter_flags_match(arg, param)) { + return CoercionCost::Impossible(); + } + } + // Return the sum of coercion costs of each argument. CoercionCost total = CoercionCost::Free(); for (int i = 0; i < arguments.size(); i++) { total = total + arguments[i]->coercionCost(*types[i]); @@ -1141,6 +1183,20 @@ std::unique_ptr FunctionCall::Convert(const Context& context, return nullptr; } + // If the arguments do not match the parameter types due to mismatched modifiers, reject the + // function call. + for (int i = 0; i < arguments.size(); i++) { + const Expression& arg = *arguments[i]; + const Variable& param = *function.parameters()[i]; + if (!argument_and_parameter_flags_match(arg, param)) { + context.fErrors->error(arg.position(), "expected argument of type '" + + param.layout().paddedDescription() + + param.modifierFlags().paddedDescription() + + param.type().description() + "'"); + return nullptr; + } + } + // Resolve generic types. FunctionDeclaration::ParamTypes types; const Type* returnType; @@ -1167,8 +1223,6 @@ std::unique_ptr FunctionCall::Convert(const Context& context, return nullptr; } } - // TODO(skia:13609): Make sure that we don't pass writeonly objects to readonly parameters, - // or vice-versa. } if (function.isMain()) { diff --git a/src/sksl/ir/SkSLFunctionDeclaration.cpp b/src/sksl/ir/SkSLFunctionDeclaration.cpp index 0dd555e078c1..d610d906edb6 100644 --- a/src/sksl/ir/SkSLFunctionDeclaration.cpp +++ b/src/sksl/ir/SkSLFunctionDeclaration.cpp @@ -70,21 +70,34 @@ static bool check_return_type(const Context& context, Position pos, const Type& static bool check_parameters(const Context& context, TArray>& parameters, - ModifierFlags modifierFlags) { + ModifierFlags modifierFlags, + IntrinsicKind intrinsicKind) { // Check modifiers on each function parameter. for (auto& param : parameters) { const Type& type = param->type(); ModifierFlags permittedFlags = ModifierFlag::kConst | ModifierFlag::kIn; + LayoutFlags permittedLayoutFlags = LayoutFlag::kNone; if (!type.isOpaque()) { permittedFlags |= ModifierFlag::kOut; } if (type.typeKind() == Type::TypeKind::kTexture) { + // We allow `readonly` `writeonly` and `layout(pixel-format)` on storage textures. permittedFlags |= ModifierFlag::kReadOnly | ModifierFlag::kWriteOnly; + permittedLayoutFlags |= LayoutFlag::kAllPixelFormats; + + // Intrinsics are allowed to accept any pixel format, but user code must explicitly + // specify a pixel format like `layout(rgba32f)`. + if (intrinsicKind == kNotIntrinsic && + !(param->layout().fFlags & LayoutFlag::kAllPixelFormats)) { + context.fErrors->error(param->fPosition, "storage texture parameters must specify " + "a pixel format layout-qualifier"); + return false; + } } param->modifierFlags().checkPermittedFlags(context, param->modifiersPosition(), permittedFlags); param->layout().checkPermittedLayout(context, param->modifiersPosition(), - /*permittedLayoutFlags=*/LayoutFlag::kNone); + permittedLayoutFlags); // Only the (builtin) declarations of 'sample' are allowed to have shader/colorFilter or FP // parameters. You can pass other opaque types to functions safely; this restriction is // specific to "child" objects. @@ -331,6 +344,7 @@ static bool parameters_match(SkSpan> params, static bool find_existing_declaration(const Context& context, Position pos, ModifierFlags modifierFlags, + IntrinsicKind intrinsicKind, std::string_view name, TArray>& parameters, Position returnTypePos, @@ -348,7 +362,7 @@ static bool find_existing_declaration(const Context& context, name, std::move(paramPtrs), returnType, - context.fConfig->fIsBuiltinCode) + intrinsicKind) .description(); }; @@ -402,14 +416,14 @@ FunctionDeclaration::FunctionDeclaration(const Context& context, std::string_view name, TArray parameters, const Type* returnType, - bool builtin) + IntrinsicKind intrinsicKind) : INHERITED(pos, kIRNodeKind, name, /*type=*/nullptr) , fDefinition(nullptr) , fParameters(std::move(parameters)) , fReturnType(returnType) , fModifierFlags(modifierFlags) - , fIntrinsicKind(builtin ? FindIntrinsicKind(name) : kNotIntrinsic) - , fBuiltin(builtin) + , fIntrinsicKind(intrinsicKind) + , fBuiltin(context.fConfig->fIsBuiltinCode) , fIsMain(name == "main") { int builtinColorIndex = 0; for (const Variable* param : fParameters) { @@ -463,13 +477,14 @@ FunctionDeclaration* FunctionDeclaration::Convert(const Context& context, } bool isMain = (name == "main"); - + IntrinsicKind intrinsicKind = context.fConfig->fIsBuiltinCode ? FindIntrinsicKind(name) + : kNotIntrinsic; FunctionDeclaration* decl = nullptr; if (!check_modifiers(context, modifiers.fPosition, modifierFlags) || !check_return_type(context, returnTypePos, *returnType) || - !check_parameters(context, parameters, modifierFlags) || + !check_parameters(context, parameters, modifierFlags, intrinsicKind) || (isMain && !check_main_signature(context, pos, *returnType, parameters)) || - !find_existing_declaration(context, pos, modifierFlags, name, parameters, + !find_existing_declaration(context, pos, modifierFlags, intrinsicKind, name, parameters, returnTypePos, returnType, &decl)) { return nullptr; } @@ -488,7 +503,7 @@ FunctionDeclaration* FunctionDeclaration::Convert(const Context& context, name, std::move(finalParameters), returnType, - context.fConfig->fIsBuiltinCode)); + intrinsicKind)); } void FunctionDeclaration::addParametersToSymbolTable(const Context& context) { diff --git a/src/sksl/ir/SkSLFunctionDeclaration.h b/src/sksl/ir/SkSLFunctionDeclaration.h index 0ce869e4dd23..6de6ecf55f3e 100644 --- a/src/sksl/ir/SkSLFunctionDeclaration.h +++ b/src/sksl/ir/SkSLFunctionDeclaration.h @@ -43,7 +43,7 @@ class FunctionDeclaration final : public Symbol { std::string_view name, skia_private::TArray parameters, const Type* returnType, - bool builtin); + IntrinsicKind intrinsicKind); static FunctionDeclaration* Convert(const Context& context, Position pos, diff --git a/src/sksl/ir/SkSLLayout.cpp b/src/sksl/ir/SkSLLayout.cpp index bff9c62c4164..a61b9990d502 100644 --- a/src/sksl/ir/SkSLLayout.cpp +++ b/src/sksl/ir/SkSLLayout.cpp @@ -19,14 +19,26 @@ namespace SkSL { std::string Layout::paddedDescription() const { std::string result; auto separator = SkSL::String::Separator(); - if (fFlags & LayoutFlag::kSPIRV) { - result += separator() + "spirv"; + if (fFlags & LayoutFlag::kVulkan) { + result += separator() + "vulkan"; } if (fFlags & LayoutFlag::kMetal) { result += separator() + "metal"; } - if (fFlags & LayoutFlag::kWGSL) { - result += separator() + "wgsl"; + if (fFlags & LayoutFlag::kWebGPU) { + result += separator() + "webgpu"; + } + if (fFlags & LayoutFlag::kDirect3D) { + result += separator() + "direct3d"; + } + if (fFlags & LayoutFlag::kRGBA8) { + result += separator() + "rgba8"; + } + if (fFlags & LayoutFlag::kRGBA32F) { + result += separator() + "rgba32f"; + } + if (fFlags & LayoutFlag::kR32F) { + result += separator() + "r32f"; } if (fLocation >= 0) { result += separator() + "location = " + std::to_string(fLocation); @@ -53,8 +65,7 @@ std::string Layout::paddedDescription() const { result += separator() + "builtin = " + std::to_string(fBuiltin); } if (fInputAttachmentIndex >= 0) { - result += separator() + "input_attachment_index = " + - std::to_string(fInputAttachmentIndex); + result += separator() + "input_attachment_index = " + std::to_string(fInputAttachmentIndex); } if (fFlags & LayoutFlag::kOriginUpperLeft) { result += separator() + "origin_upper_left"; @@ -108,9 +119,13 @@ bool Layout::checkPermittedLayout(const Context& context, { LayoutFlag::kSet, "set"}, { LayoutFlag::kBuiltin, "builtin"}, { LayoutFlag::kInputAttachmentIndex, "input_attachment_index"}, - { LayoutFlag::kSPIRV, "spirv"}, + { LayoutFlag::kVulkan, "vulkan"}, { LayoutFlag::kMetal, "metal"}, - { LayoutFlag::kWGSL, "wgsl"}, + { LayoutFlag::kWebGPU, "webgpu"}, + { LayoutFlag::kDirect3D, "direct3d"}, + { LayoutFlag::kRGBA8, "rgba8"}, + { LayoutFlag::kRGBA32F, "rgba32f"}, + { LayoutFlag::kR32F, "r32f"}, { LayoutFlag::kLocalSizeX, "local_size_x"}, { LayoutFlag::kLocalSizeY, "local_size_y"}, { LayoutFlag::kLocalSizeZ, "local_size_z"}, @@ -125,23 +140,30 @@ bool Layout::checkPermittedLayout(const Context& context, success = false; } + LayoutFlags pixelFormatFlags = layoutFlags & LayoutFlag::kAllPixelFormats; + if (SkPopCount(pixelFormatFlags.value()) > 1) { + context.fErrors->error(pos, "only one pixel format qualifier can be used"); + success = false; + } + if ((layoutFlags & (LayoutFlag::kTexture | LayoutFlag::kSampler)) && layoutFlags & LayoutFlag::kBinding) { context.fErrors->error(pos, "'binding' modifier cannot coexist with 'texture'/'sampler'"); success = false; } - // The `texture` and `sampler` flags are only allowed when explicitly targeting Metal and WGSL. - if (!(layoutFlags & (LayoutFlag::kMetal | LayoutFlag::kWGSL))) { + // The `texture` and `sampler` flags are only allowed when targeting Metal, WebGPU or Direct3D. + if (!(layoutFlags & (LayoutFlag::kMetal | LayoutFlag::kWebGPU | LayoutFlag::kDirect3D))) { permittedLayoutFlags &= ~LayoutFlag::kTexture; permittedLayoutFlags &= ~LayoutFlag::kSampler; } - // The `set` flag is not allowed when explicitly targeting Metal. It is currently allowed when - // no backend flag is present. - // TODO(skia:14023): Further restrict the `set` flag to SPIR-V and WGSL + // The `push_constant` flag is only allowed when targeting Vulkan or WebGPU. + if (!(layoutFlags & (LayoutFlag::kVulkan | LayoutFlag::kWebGPU))) { + permittedLayoutFlags &= ~LayoutFlag::kPushConstant; + } + // The `set` flag is not allowed when explicitly targeting Metal. if (layoutFlags & LayoutFlag::kMetal) { permittedLayoutFlags &= ~LayoutFlag::kSet; } - // TODO(skia:14023): Restrict the `push_constant` flag to SPIR-V and WGSL. for (const auto& lf : kLayoutFlags) { if (layoutFlags & lf.flag) { diff --git a/src/sksl/ir/SkSLLayout.h b/src/sksl/ir/SkSLLayout.h index 42a6d9334e61..3263f9e901e5 100644 --- a/src/sksl/ir/SkSLLayout.h +++ b/src/sksl/ir/SkSLLayout.h @@ -38,16 +38,25 @@ enum class LayoutFlag : int { kInputAttachmentIndex = 1 << 12, // These flags indicate the backend type; only one at most can be set. - kSPIRV = 1 << 13, + kVulkan = 1 << 13, kMetal = 1 << 14, - kWGSL = 1 << 15, + kWebGPU = 1 << 15, + kDirect3D = 1 << 16, - kAllBackends = kSPIRV | kMetal | kWGSL, + kAllBackends = kVulkan | kMetal | kWebGPU | kDirect3D, + + // These flags indicate the pixel format; only one at most can be set. + // (https://www.khronos.org/opengl/wiki/Layout_Qualifier_(GLSL)#Image_formats) + kRGBA8 = 1 << 17, + kRGBA32F = 1 << 18, + kR32F = 1 << 19, + + kAllPixelFormats = kRGBA8 | kRGBA32F | kR32F, // The local invocation size of a compute program. - kLocalSizeX = 1 << 16, - kLocalSizeY = 1 << 17, - kLocalSizeZ = 1 << 18, + kLocalSizeX = 1 << 20, + kLocalSizeY = 1 << 21, + kLocalSizeZ = 1 << 22, }; } // namespace SkSL diff --git a/src/sksl/ir/SkSLType.cpp b/src/sksl/ir/SkSLType.cpp index 589bd994bf17..5dbcc4c73c59 100644 --- a/src/sksl/ir/SkSLType.cpp +++ b/src/sksl/ir/SkSLType.cpp @@ -517,7 +517,12 @@ class SamplerType final : public Type { SamplerType(const char* name, const Type& textureType) : INHERITED(name, "Z", kTypeKind) - , fTextureType(textureType.as()) {} + , fTextureType(textureType.as()) { + // Samplers require sampled texture access. + SkASSERT(this->textureAccess() == TextureAccess::kSample); + // Subpass inputs cannot be sampled. + SkASSERT(this->dimensions() != SpvDimSubpassData); + } const TextureType& textureType() const override { return fTextureType; @@ -936,28 +941,33 @@ const Type* Type::applyAccessQualifiers(const Context& context, Position pos) const { ModifierFlags accessQualifiers = *modifierFlags & (ModifierFlag::kReadOnly | ModifierFlag::kWriteOnly); - if (!accessQualifiers) { - // No access qualifiers here. Return the type as-is. - return this; - } - // We're going to return a whole new type, so the modifier bits can be cleared out. + // We're going to return a whole new type, so the modifier bits must be cleared out. *modifierFlags &= ~(ModifierFlag::kReadOnly | ModifierFlag::kWriteOnly); - if (this->matches(*context.fTypes.fReadWriteTexture2D)) { + if (this->matches(*context.fTypes.fTexture2D)) { + // We require all texture2Ds to be qualified with `readonly` or `writeonly`. + // (Read-write textures are not yet supported in WGSL.) if (accessQualifiers == ModifierFlag::kReadOnly) { return context.fTypes.fReadOnlyTexture2D.get(); } if (accessQualifiers == ModifierFlag::kWriteOnly) { return context.fTypes.fWriteOnlyTexture2D.get(); } - context.fErrors->error(pos, "'readonly' and 'writeonly' qualifiers cannot be combined"); + context.fErrors->error( + pos, + accessQualifiers + ? "'readonly' and 'writeonly' qualifiers cannot be combined" + : "'texture2D' requires a 'readonly' or 'writeonly' access qualifier"); return this; } - context.fErrors->error(pos, "type '" + this->displayName() + "' does not support qualifier '" + - accessQualifiers.description() + "'"); + if (accessQualifiers) { + context.fErrors->error(pos, "type '" + this->displayName() + "' does not support " + "qualifier '" + accessQualifiers.description() + "'"); + } + return this; } diff --git a/src/sksl/ir/SkSLVarDeclarations.cpp b/src/sksl/ir/SkSLVarDeclarations.cpp index 6beaa07321a5..0b62a6f363e7 100644 --- a/src/sksl/ir/SkSLVarDeclarations.cpp +++ b/src/sksl/ir/SkSLVarDeclarations.cpp @@ -39,46 +39,49 @@ static bool check_valid_uniform_type(Position pos, // In RuntimeEffects we only allow a restricted set of types, namely shader/blender/colorFilter, // 32-bit signed integers, 16-bit and 32-bit floats, and their composites. - { - bool error = false; - if (ProgramConfig::IsRuntimeEffect(context.fConfig->fKind)) { - // `shader`, `blender`, `colorFilter` - if (t->isEffectChild()) { - return true; - } - - // `int`, `int2`, `int3`, `int4` - if (ct.isSigned() && ct.bitWidth() == 32 && (t->isScalar() || t->isVector())) { - return true; - } + bool error = false; + if (ProgramConfig::IsRuntimeEffect(context.fConfig->fKind)) { + // `shader`, `blender`, `colorFilter` + if (t->isEffectChild()) { + return true; + } - // `float`, `float2`, `float3`, `float4`, `float2x2`, `float3x3`, `float4x4` - // `half`, `half2`, `half3`, `half4`, `half2x2`, `half3x3`, `half4x4` - if (ct.isFloat() && - (t->isScalar() || t->isVector() || (t->isMatrix() && t->rows() == t->columns()))) { - return true; - } + // `int`, `int2`, `int3`, `int4` + if (ct.isSigned() && ct.bitWidth() == 32 && (t->isScalar() || t->isVector())) { + return true; + } - // Everything else is an error. - error = true; + // `float`, `float2`, `float3`, `float4`, `float2x2`, `float3x3`, `float4x4` + // `half`, `half2`, `half3`, `half4`, `half2x2`, `half3x3`, `half4x4` + if (ct.isFloat() && + (t->isScalar() || t->isVector() || (t->isMatrix() && t->rows() == t->columns()))) { + return true; } + // Everything else is an error. + error = true; + } else { + // We don't allow samplers, textures or atomics to be marked as uniforms. This rules out + // any possible opaque type. + error = error || ct.isOpaque(); + // We disallow boolean uniforms in SkSL since they are not well supported by backend - // platforms and drivers. We disallow atomic variables in uniforms as that doesn't map - // cleanly to all backends. - if (error || (ct.isBoolean() && (t->isScalar() || t->isVector())) || ct.isAtomic()) { - context.fErrors->error( - pos, "variables of type '" + t->displayName() + "' may not be uniform"); - return false; - } + // platforms and drivers. + error = error || (ct.isBoolean() && (t->isScalar() || t->isVector())); + } + + if (error) { + context.fErrors->error(pos, "variables of type '" + t->displayName() + + "' may not be uniform"); + return false; } // In non-RTE SkSL we allow structs and interface blocks to be uniforms but we must make sure // their fields are allowed. if (t->isStruct()) { for (const Field& field : t->fields()) { - if (!check_valid_uniform_type( - field.fPosition, field.fType, context, /*topLevel=*/false)) { + if (!check_valid_uniform_type(field.fPosition, field.fType, context, + /*topLevel=*/false)) { // Emit a "caused by" line only for the top-level uniform type and not for any // nested structs. if (topLevel) { @@ -177,8 +180,8 @@ void VarDeclaration::ErrorCheck(const Context& context, check_valid_uniform_type(pos, baseType, context); } if (baseType->isEffectChild() && !modifierFlags.isUniform()) { - context.fErrors->error(pos, - "variables of type '" + baseType->displayName() + "' must be uniform"); + context.fErrors->error(pos, "variables of type '" + baseType->displayName() + + "' must be uniform"); } if (baseType->isEffectChild() && (context.fConfig->fKind == ProgramKind::kMeshVertex || context.fConfig->fKind == ProgramKind::kMeshFragment)) { @@ -300,9 +303,7 @@ void VarDeclaration::ErrorCheck(const Context& context, !permitBindingAndSet)) { permittedLayoutFlags &= ~LayoutFlag::kBinding; permittedLayoutFlags &= ~LayoutFlag::kSet; - permittedLayoutFlags &= ~LayoutFlag::kSPIRV; - permittedLayoutFlags &= ~LayoutFlag::kMetal; - permittedLayoutFlags &= ~LayoutFlag::kWGSL; + permittedLayoutFlags &= ~LayoutFlag::kAllBackends; } if (ProgramConfig::IsRuntimeEffect(context.fConfig->fKind)) { // Disallow all layout flags except 'color' in runtime effects @@ -379,7 +380,7 @@ bool VarDeclaration::ErrorCheckAndCoerce(const Context& context, if (var.storage() == Variable::Storage::kInterfaceBlock) { if (var.type().isOpaque()) { context.fErrors->error(var.fPosition, "opaque type '" + var.type().displayName() + - "' is not permitted in an interface block"); + "' is not permitted in an interface block"); return false; } } diff --git a/src/sksl/lex/Main.cpp b/src/sksl/lex/Main.cpp index ab4e3a618bfe..d751363abc92 100644 --- a/src/sksl/lex/Main.cpp +++ b/src/sksl/lex/Main.cpp @@ -129,31 +129,28 @@ static void writeCPP(const DFA& dfa, const char* lexer, const char* token, const // input. SkASSERT(startChar < 18); out << "static constexpr uint8_t kInvalidChar = 18;"; - out << "static constexpr int8_t kMappings[" << dfa.fCharMappings.size() - startChar << "] = {\n" - " "; - const char* separator = ""; + out << "static constexpr uint8_t kMappings[" << dfa.fCharMappings.size() - startChar << "] = {"; for (size_t index = startChar; index < dfa.fCharMappings.size(); ++index) { - out << separator << std::to_string(dfa.fCharMappings[index]); - separator = ", "; + out << std::to_string(dfa.fCharMappings[index]) << ", "; } - out << "\n};\n"; + out << "};\n"; WriteTransitionTable(out, dfa, states); - out << "static const int8_t kAccepts[" << states << "] = {"; + out << "static const uint8_t kAccepts[" << states << "] = {"; for (size_t i = 0; i < states; ++i) { - if (i < dfa.fAccepts.size()) { + if (i < dfa.fAccepts.size() && dfa.fAccepts[i] != INVALID) { out << " " << dfa.fAccepts[i] << ","; } else { - out << " " << INVALID << ","; + out << " 255,"; } } - out << " };\n"; + out << "};\n"; out << "\n"; out << token << " " << lexer << "::next() {"; out << R"( - // note that we cheat here: normally a lexer needs to worry about the case + // Note that we cheat here: normally a lexer needs to worry about the case // where a token has a prefix which is not itself a valid token - for instance, // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid // tokens. Our grammar doesn't have this property, so we can simplify the logic @@ -162,7 +159,7 @@ static void writeCPP(const DFA& dfa, const char* lexer, const char* token, const State state = 1; for (;;) { if (fOffset >= (int32_t)fText.length()) { - if (startOffset == (int32_t)fText.length() || kAccepts[state] == -1) { + if (startOffset == (int32_t)fText.length() || kAccepts[state] == 255) { return )" << token << "(" << token << R"(::Kind::TK_END_OF_FILE, startOffset, 0); } break; diff --git a/src/sksl/lex/TransitionTable.cpp b/src/sksl/lex/TransitionTable.cpp index 83720fca1c1a..604bea5df81c 100644 --- a/src/sksl/lex/TransitionTable.cpp +++ b/src/sksl/lex/TransitionTable.cpp @@ -228,7 +228,7 @@ void WriteTransitionTable(std::ofstream& out, const DFA& dfa, size_t states) { } } out << "};\n" - << "State get_transition(int transition, int state) {\n" + << "static State get_transition(uint8_t transition, State state) {\n" << " IndexEntry index = kIndices[state];\n" << " if (index < 0) { return kFull[~index].data[transition]; }\n" << " const CompactEntry& entry = kCompact[index];\n" diff --git a/src/sksl/sksl_gpu.sksl b/src/sksl/sksl_gpu.sksl index 80ac013a55f3..75c9cdedad98 100644 --- a/src/sksl/sksl_gpu.sksl +++ b/src/sksl/sksl_gpu.sksl @@ -25,8 +25,6 @@ $pure $genIType findLSB($genUType value); $pure $genIType findMSB($genIType value); $pure $genIType findMSB($genUType value); -$pure sampler2D makeSampler2D(texture2D texture, sampler s); - $pure half4 sample(sampler2D s, float2 P); $pure half4 sample(sampler2D s, float3 P); $pure half4 sample(sampler2D s, float3 P, float bias); diff --git a/src/sksl/sksl_graphite_frag.sksl b/src/sksl/sksl_graphite_frag.sksl index 6a52fe98c94f..94fd327f9d87 100644 --- a/src/sksl/sksl_graphite_frag.sksl +++ b/src/sksl/sksl_graphite_frag.sksl @@ -38,28 +38,23 @@ $pure half4 sk_solid_shader(float4 colorParam) { } $pure half4 $apply_swizzle(int swizzleType, half4 color) { - half4 resultantColor = color; switch (swizzleType) { - case $kReadSwizzleNormalRGBA: - break; case $kReadSwizzleRGB1: - resultantColor = color.rgb1; - break; + return color.rgb1; case $kReadSwizzleRRRR: - resultantColor = color.rrrr; - break; + return color.rrrr; case $kReadSwizzleRRR1: - resultantColor = color.rrr1; - break; + return color.rrr1; case $kReadSwizzleBGRA: - resultantColor = color.bgra; - break; + return color.bgra; + default: + return color; } - return resultantColor; } -$pure float $apply_xfer_fn(int kind, float x, half cs[7]) { - float G = cs[0], A = cs[1], B = cs[2], C = cs[3], D = cs[4], E = cs[5], F = cs[6]; +$pure float $apply_xfer_fn(int kind, float x, half4 cs[2]) { + float G = cs[0][0], A = cs[0][1], B = cs[0][2], C = cs[0][3], + D = cs[1][0], E = cs[1][1], F = cs[1][2]; float s = sign(x); x = abs(x); switch (kind) { @@ -87,10 +82,9 @@ $pure float $apply_xfer_fn(int kind, float x, half cs[7]) { $pure half4 sk_color_space_transform(half4 halfColor, int flags, int srcKind, - half srcCoeffs[7], half3x3 gamutTransform, int dstKind, - half dstCoeffs[7]) { + half4x4 coeffs) { float4 color = float4(halfColor); if (bool(flags & $kColorSpaceXformFlagUnpremul)) { @@ -98,6 +92,9 @@ $pure half4 sk_color_space_transform(half4 halfColor, } if (bool(flags & $kColorSpaceXformFlagLinearize)) { + half4 srcCoeffs[2]; + srcCoeffs[0] = coeffs[0]; + srcCoeffs[1] = coeffs[1]; color.r = $apply_xfer_fn(srcKind, color.r, srcCoeffs); color.g = $apply_xfer_fn(srcKind, color.g, srcCoeffs); color.b = $apply_xfer_fn(srcKind, color.b, srcCoeffs); @@ -106,6 +103,9 @@ $pure half4 sk_color_space_transform(half4 halfColor, color.rgb = gamutTransform * color.rgb; } if (bool(flags & $kColorSpaceXformFlagEncode)) { + half4 dstCoeffs[2]; + dstCoeffs[0] = coeffs[2]; + dstCoeffs[1] = coeffs[3]; color.r = $apply_xfer_fn(dstKind, color.r, dstCoeffs); color.g = $apply_xfer_fn(dstKind, color.g, dstCoeffs); color.b = $apply_xfer_fn(dstKind, color.b, dstCoeffs); @@ -271,15 +271,14 @@ $pure half4 sk_image_shader(float2 coords, int readSwizzle, int csXformFlags, int csXformSrcKind, - half csXformSrcCoeffs[7], half3x3 csXformGamutTransform, int csXformDstKind, - half csXformDstCoeffs[7], + half4x4 csXformCoeffs, sampler2D s) { half4 sampleColor = $sample_image(coords, imgSize, subset, tileModeX, tileModeY, filterMode, readSwizzle, s); - return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, csXformSrcCoeffs, - csXformGamutTransform, csXformDstKind, csXformDstCoeffs); + return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, + csXformGamutTransform, csXformDstKind, csXformCoeffs); } $pure half4 sk_cubic_image_shader(float2 coords, @@ -291,15 +290,14 @@ $pure half4 sk_cubic_image_shader(float2 coords, int readSwizzle, int csXformFlags, int csXformSrcKind, - half csXformSrcCoeffs[7], half3x3 csXformGamutTransform, int csXformDstKind, - half csXformDstCoeffs[7], + half4x4 csXformCoeffs, sampler2D s) { half4 sampleColor = $cubic_filter_image(coords, imgSize, subset, tileModeX, tileModeY, cubicCoeffs, readSwizzle, s); - return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, csXformSrcCoeffs, - csXformGamutTransform, csXformDstKind, csXformDstCoeffs); + return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, + csXformGamutTransform, csXformDstKind, csXformCoeffs); } $pure half4 sk_yuv_image_shader(float2 coords, @@ -318,10 +316,9 @@ $pure half4 sk_yuv_image_shader(float2 coords, float3 yuvToRGBTranslate, int csXformFlags, int csXformSrcKind, - half csXformSrcCoeffs[7], half3x3 csXformGamutTransform, int csXformDstKind, - half csXformDstCoeffs[7], + half4x4 csXformCoeffs, sampler2D sY, sampler2D sU, sampler2D sV, @@ -360,8 +357,8 @@ $pure half4 sk_yuv_image_shader(float2 coords, sampleColor.rgb *= sampleColor.a; } - return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, csXformSrcCoeffs, - csXformGamutTransform, csXformDstKind, csXformDstCoeffs); + return sk_color_space_transform(sampleColor, csXformFlags, csXformSrcKind, + csXformGamutTransform, csXformDstKind, csXformCoeffs); } $pure half4 sk_dither_shader(half4 colorIn, @@ -1110,6 +1107,77 @@ $pure half4 sk_gaussian_colorfilter(half4 inColor) { return half4(factor); } +$pure half4 sample_indexed_atlas(float2 textureCoords, + int atlasIndex, + sampler2D atlas0, + sampler2D atlas1, + sampler2D atlas2, + sampler2D atlas3) { + switch (atlasIndex) { + case 1: + return sample(atlas1, textureCoords); + case 2: + return sample(atlas2, textureCoords); + case 3: + return sample(atlas3, textureCoords); + default: + return sample(atlas0, textureCoords); + } +} + +$pure half4 bitmap_text_coverage_fn(half4 texColor, int maskFormat) { + switch (maskFormat) { + case 0: // A8 + return texColor.rrrr; + case 1: // LCD + return half4(texColor.rgb, max(max(texColor.r, texColor.g), texColor.b)); + default: + return texColor; + } +} + +$pure half4 sdf_text_coverage_fn(half texColor, + half distAdjust, + float2 unormTexCoords) { + // TODO: To minimize the number of shaders generated this is the full affine shader. + // For best performance it may be worth creating the uniform scale shader as well, + // as that's the most common case. + // TODO: Need to add 565 support. + + // The distance field is constructed as uchar8_t values, so that the zero value is at 128, + // and the supported range of distances is [-4 * 127/128, 4]. + // Hence to convert to floats our multiplier (width of the range) is 4 * 255/128 = 7.96875 + // and zero threshold is 128/255 = 0.50196078431. + half dist = 7.96875 * (texColor - 0.50196078431); + + // We may further adjust the distance for gamma correction. + dist -= half(distAdjust); + + // After the distance is unpacked, we need to correct it by a factor dependent on the + // current transformation. For general transforms, to determine the amount of correction + // we multiply a unit vector pointing along the SDF gradient direction by the Jacobian of + // unormTexCoords (which is the inverse transform for this fragment) and take the length of + // the result. + half2 dist_grad = half2(dFdx(dist), dFdy(dist)); + half dg_len2 = dot(dist_grad, dist_grad); + + // The length of the gradient may be near 0, so we need to check for that. This also + // compensates for the Adreno, which likes to drop tiles on division by 0. + dist_grad = (dg_len2 >= 0.0001) ? dist_grad * inversesqrt(dg_len2) + : half2(0.7071); + + // Computing the Jacobian and multiplying by the gradient. + half2 Jdx = half2(dFdx(unormTexCoords)); + half2 Jdy = half2(dFdy(unormTexCoords)); + half2 grad = half2(dist_grad.x * Jdx.x + dist_grad.y * Jdy.x, + dist_grad.x * Jdx.y + dist_grad.y * Jdy.y); + + // This gives us a smooth step across approximately one fragment. + half afwidth = 0.65 * length(grad); + + // TODO: handle aliased and sRGB rendering + return half4(smoothstep(-afwidth, afwidth, dist)); +} /////////////////////////////////////////////////////////////////////////////////////////////////// // Support functions for analytic round rectangles diff --git a/src/sksl/sksl_graphite_vert.sksl b/src/sksl/sksl_graphite_vert.sksl index b901125c5235..3a28d2c9d4d6 100644 --- a/src/sksl/sksl_graphite_vert.sksl +++ b/src/sksl/sksl_graphite_vert.sksl @@ -843,6 +843,41 @@ float4 analytic_rrect_vertex_fn(// Vertex Attributes return float4(devPos.xy, devPos.z*depth, devPos.z); } +float4 text_vertex_fn(float2 baseCoords, + // Uniforms + float4x4 subRunDeviceMatrix, + float4x4 deviceToLocal, + float2 atlasSizeInv, + // Instance Attributes + float2 size, + float2 uvPos, + float2 xyPos, + float strikeToSourceScale, + float depth, + // Varyings + out float2 textureCoords, + out float2 unormTexCoords, // used as varying in SDFText + // Render Step + out float2 stepLocalCoords) { + baseCoords.xy *= float2(size); + + // Sub runs have a decomposed transform and are sometimes already transformed into device + // space, in which `subRunCoords` represents the bounds projected to device space without + // the local-to-device translation and `subRunDeviceMatrix` contains the translation. + float2 subRunCoords = strikeToSourceScale * baseCoords + xyPos; + float4 position = subRunDeviceMatrix * subRunCoords.xy01; + + // Calculate the local coords used for shading. + // TODO(b/246963258): This is incorrect if the transform has perspective, which would + // require a division + a valid z coordinate (which is currently set to 0). + stepLocalCoords = (deviceToLocal * position).xy; + + unormTexCoords = baseCoords + uvPos; + textureCoords = unormTexCoords * atlasSizeInv; + + return float4(position.xy, depth, position.w); +} + float4 atlas_shape_vertex_fn(float2 quadCoords, // Uniforms float2 atlasSizeInv, diff --git a/src/svg/SkSVGDevice.h b/src/svg/SkSVGDevice.h index e78dc2d77b56..1d36215c5401 100644 --- a/src/svg/SkSVGDevice.h +++ b/src/svg/SkSVGDevice.h @@ -31,6 +31,7 @@ class SkBlender; class SkClipStack; class SkData; class SkImage; +class SkMesh; class SkPaint; class SkPath; class SkRRect; @@ -40,9 +41,6 @@ struct SkISize; struct SkPoint; struct SkRect; struct SkSamplingOptions; -#ifdef SK_ENABLE_SKSL -class SkMesh; -#endif class SkSVGDevice final : public SkClipStackDevice { public: diff --git a/src/text/StrikeForGPU.cpp b/src/text/StrikeForGPU.cpp index 033a823b72df..aacec75462c0 100644 --- a/src/text/StrikeForGPU.cpp +++ b/src/text/StrikeForGPU.cpp @@ -7,9 +7,7 @@ #include "src/text/StrikeForGPU.h" -#include "include/private/chromium/SkChromeRemoteGlyphCache.h" #include "src/core/SkDescriptor.h" -#include "src/core/SkReadBuffer.h" #include "src/core/SkStrike.h" #include "src/core/SkStrikeCache.h" #include "src/core/SkStrikeSpec.h" @@ -53,30 +51,6 @@ void SkStrikePromise::flatten(SkWriteBuffer& buffer) const { this->descriptor().flatten(buffer); } -std::optional SkStrikePromise::MakeFromBuffer( - SkReadBuffer& buffer, const SkStrikeClient* client, SkStrikeCache* strikeCache) { - std::optional descriptor = SkAutoDescriptor::MakeFromBuffer(buffer); - if (!buffer.validate(descriptor.has_value())) { - return std::nullopt; - } - - // If there is a client, then this from a different process. Translate the SkTypefaceID from - // the strike server (Renderer) process to strike client (GPU) process. - if (client != nullptr) { - if (!client->translateTypefaceID(&descriptor.value())) { - return std::nullopt; - } - } - - sk_sp strike = strikeCache->findStrike(*descriptor->getDesc()); - SkASSERT(strike != nullptr); - if (!buffer.validate(strike != nullptr)) { - return std::nullopt; - } - - return SkStrikePromise{std::move(strike)}; -} - // -- StrikeMutationMonitor ------------------------------------------------------------------------ StrikeMutationMonitor::StrikeMutationMonitor(StrikeForGPU* strike) : fStrike{strike} { diff --git a/src/text/StrikeForGPU.h b/src/text/StrikeForGPU.h index 968faf1a20e6..0e7a829cf07b 100644 --- a/src/text/StrikeForGPU.h +++ b/src/text/StrikeForGPU.h @@ -47,6 +47,7 @@ class SkStrikePromise { explicit SkStrikePromise(sk_sp&& strike); explicit SkStrikePromise(const SkStrikeSpec& spec); + // This only works when the GPU code is compiled in. static std::optional MakeFromBuffer(SkReadBuffer& buffer, const SkStrikeClient* client, SkStrikeCache* strikeCache); diff --git a/src/text/gpu/BUILD.bazel b/src/text/gpu/BUILD.bazel index 19c25d0dde8f..162fbc70fbcb 100644 --- a/src/text/gpu/BUILD.bazel +++ b/src/text/gpu/BUILD.bazel @@ -17,6 +17,7 @@ GPU_FILES = [ "Slug.cpp", "SlugImpl.cpp", "SlugImpl.h", + "SkChromeRemoteGlyphCache.cpp", "StrikeCache.cpp", "StrikeCache.h", "SubRunAllocator.cpp", diff --git a/src/core/SkChromeRemoteGlyphCache.cpp b/src/text/gpu/SkChromeRemoteGlyphCache.cpp similarity index 95% rename from src/core/SkChromeRemoteGlyphCache.cpp rename to src/text/gpu/SkChromeRemoteGlyphCache.cpp index ff32bc4874a6..7a3383b191d1 100644 --- a/src/core/SkChromeRemoteGlyphCache.cpp +++ b/src/text/gpu/SkChromeRemoteGlyphCache.cpp @@ -7,50 +7,54 @@ #include "include/private/chromium/SkChromeRemoteGlyphCache.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkData.h" #include "include/core/SkDrawable.h" -#include "include/core/SkFont.h" -#include "include/core/SkSpan.h" +#include "include/core/SkFontMetrics.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPicture.h" +#include "include/core/SkRect.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" +#include "include/core/SkSurfaceProps.h" #include "include/core/SkTypeface.h" +#include "include/private/base/SkAssert.h" #include "include/private/base/SkDebug.h" -#include "src/base/SkTLazy.h" -#include "src/core/SkChecksum.h" +#include "include/private/base/SkPoint_impl.h" +#include "include/private/base/SkTFitsIn.h" +#include "include/private/base/SkTo.h" +#include "include/private/chromium/Slug.h" +#include "src/base/SkArenaAlloc.h" #include "src/core/SkDescriptor.h" #include "src/core/SkDevice.h" -#include "src/core/SkDistanceFieldGen.h" -#include "src/core/SkDraw.h" -#include "src/core/SkEnumerate.h" #include "src/core/SkFontMetricsPriv.h" #include "src/core/SkGlyph.h" #include "src/core/SkReadBuffer.h" #include "src/core/SkScalerContext.h" #include "src/core/SkStrike.h" #include "src/core/SkStrikeCache.h" +#include "src/core/SkStrikeSpec.h" #include "src/core/SkTHash.h" #include "src/core/SkTraceEvent.h" #include "src/core/SkTypeface_remote.h" #include "src/core/SkWriteBuffer.h" #include "src/text/GlyphRun.h" #include "src/text/StrikeForGPU.h" +#include "src/text/gpu/SDFTControl.h" +#include "src/text/gpu/SubRunAllocator.h" +#include "src/text/gpu/SubRunContainer.h" +#include "src/text/gpu/TextBlob.h" -#include -#include -#include +#include +#include #include -#include #include -#include -#include #include +#include -#if defined(SK_GANESH) -#include "include/gpu/GrContextOptions.h" -#include "include/private/chromium/Slug.h" -#include "src/gpu/ganesh/GrDrawOpAtlas.h" -#include "src/text/gpu/SDFTControl.h" -#include "src/text/gpu/SubRunAllocator.h" -#include "src/text/gpu/SubRunContainer.h" -#include "src/text/gpu/TextBlob.h" -#endif +class SkPaint; using namespace skia_private; using namespace sktext; @@ -440,7 +444,6 @@ sk_sp SkStrikeServerImpl::getOrCreateCache(const SkStrikeSpec& str } // -- GlyphTrackingDevice -------------------------------------------------------------------------- -#if defined(SK_GANESH) class GlyphTrackingDevice final : public SkNoPixelsDevice { public: GlyphTrackingDevice( @@ -505,7 +508,6 @@ class GlyphTrackingDevice final : public SkNoPixelsDevice { SkStrikeServerImpl* const fStrikeServerImpl; const sktext::gpu::SDFTControl fSDFTControl; }; -#endif // defined(SK_GANESH) // -- SkStrikeServer ------------------------------------------------------------------------------- SkStrikeServer::SkStrikeServer(DiscardableHandleManager* dhm) @@ -518,14 +520,24 @@ std::unique_ptr SkStrikeServer::makeAnalysisCanvas(int width, int heig sk_sp colorSpace, bool DFTSupport, bool DFTPerspSupport) { -#if defined(SK_GANESH) - GrContextOptions ctxOptions; #if !defined(SK_DISABLE_SDF_TEXT) + // These are copied from the defaults in GrContextOptions for historical reasons. + // TODO(herb, jvanverth) pipe in parameters that can be used for both Ganesh and Graphite + // backends instead of just using the defaults. + constexpr float kMinDistanceFieldFontSize = 18.f; + +#if defined(SK_BUILD_FOR_ANDROID) + constexpr float kGlyphsAsPathsFontSize = 384.f; +#elif defined(SK_BUILD_FOR_MAC) + constexpr float kGlyphsAsPathsFontSize = 256.f; +#else + constexpr float kGlyphsAsPathsFontSize = 324.f; +#endif auto control = sktext::gpu::SDFTControl{DFTSupport, props.isUseDeviceIndependentFonts(), DFTPerspSupport, - ctxOptions.fMinDistanceFieldFontSize, - ctxOptions.fGlyphsAsPathsFontSize}; + kMinDistanceFieldFontSize, + kGlyphsAsPathsFontSize}; #else auto control = sktext::gpu::SDFTControl{}; #endif @@ -535,10 +547,6 @@ std::unique_ptr SkStrikeServer::makeAnalysisCanvas(int width, int heig props, this->impl(), std::move(colorSpace), control)); -#else - sk_sp trackingDevice(new SkNoPixelsDevice( - SkIRect::MakeWH(width, height), props, std::move(colorSpace))); -#endif return std::make_unique(std::move(trackingDevice)); } @@ -802,8 +810,6 @@ bool SkStrikeClient::translateTypefaceID(SkAutoDescriptor* descriptor) const { return fImpl->translateTypefaceID(descriptor); } -#if defined(SK_GANESH) sk_sp SkStrikeClient::deserializeSlugForTest(const void* data, size_t size) const { return sktext::gpu::Slug::Deserialize(data, size, this); } -#endif // defined(SK_GANESH) diff --git a/src/text/gpu/StrikeCache.cpp b/src/text/gpu/StrikeCache.cpp index 2945e450ff5b..67b94fd6d0aa 100644 --- a/src/text/gpu/StrikeCache.cpp +++ b/src/text/gpu/StrikeCache.cpp @@ -6,11 +6,21 @@ */ #include "src/text/gpu/StrikeCache.h" +#include "include/private/base/SkAssert.h" +#include "include/private/chromium/SkChromeRemoteGlyphCache.h" #include "src/base/SkArenaAlloc.h" #include "src/core/SkGlyph.h" +#include "src/core/SkReadBuffer.h" +#include "src/core/SkStrikeCache.h" #include "src/core/SkStrikeSpec.h" +#include "src/text/StrikeForGPU.h" #include "src/text/gpu/Glyph.h" +#include +#include + +class SkStrike; + namespace sktext::gpu { StrikeCache::~StrikeCache() { @@ -62,3 +72,29 @@ uint32_t TextStrike::HashTraits::Hash(SkPackedGlyphID key) { } } // namespace sktext::gpu + +namespace sktext { +std::optional SkStrikePromise::MakeFromBuffer( + SkReadBuffer& buffer, const SkStrikeClient* client, SkStrikeCache* strikeCache) { + std::optional descriptor = SkAutoDescriptor::MakeFromBuffer(buffer); + if (!buffer.validate(descriptor.has_value())) { + return std::nullopt; + } + + // If there is a client, then this from a different process. Translate the SkTypefaceID from + // the strike server (Renderer) process to strike client (GPU) process. + if (client != nullptr) { + if (!client->translateTypefaceID(&descriptor.value())) { + return std::nullopt; + } + } + + sk_sp strike = strikeCache->findStrike(*descriptor->getDesc()); + SkASSERT(strike != nullptr); + if (!buffer.validate(strike != nullptr)) { + return std::nullopt; + } + + return SkStrikePromise{std::move(strike)}; +} +} // namespace sktext diff --git a/src/text/gpu/SubRunContainer.cpp b/src/text/gpu/SubRunContainer.cpp index df977f24a8c6..3cf0ad8d9e44 100644 --- a/src/text/gpu/SubRunContainer.cpp +++ b/src/text/gpu/SubRunContainer.cpp @@ -725,7 +725,7 @@ class DirectMaskSubRun final : public SubRun, public AtlasSubRun { sk_sp subRunStorage, AtlasDrawDelegate drawAtlas) const override { drawAtlas(this, drawOrigin, paint, std::move(subRunStorage), - {/* isSDF = */false, /* isLCD = */false}); + {/* isSDF = */false, fVertexFiller.isLCD()}); } int unflattenSize() const override { @@ -963,7 +963,7 @@ class TransformedMaskSubRun final : public SubRun, public AtlasSubRun { sk_sp subRunStorage, AtlasDrawDelegate drawAtlas) const override { drawAtlas(this, drawOrigin, paint, std::move(subRunStorage), - {/* isSDF = */false, /* isLCD = */false}); + {/* isSDF = */false, fVertexFiller.isLCD()}); } #if defined(SK_GANESH) diff --git a/src/text/gpu/TextBlob.cpp b/src/text/gpu/TextBlob.cpp index 74cb1da02a6c..c5d69ea2af66 100644 --- a/src/text/gpu/TextBlob.cpp +++ b/src/text/gpu/TextBlob.cpp @@ -243,7 +243,7 @@ void TextBlob::draw(SkCanvas* canvas, fSubRuns->draw(canvas, drawOrigin, paint, this, atlasDelegate); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) struct SubRunContainerPeer { static const AtlasSubRun* getAtlasSubRun(const SubRunContainer& subRuns) { if (subRuns.isEmpty()) { @@ -255,7 +255,7 @@ struct SubRunContainerPeer { #endif const AtlasSubRun* TextBlob::testingOnlyFirstSubRun() const { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) return SubRunContainerPeer::getAtlasSubRun(*fSubRuns); #else return nullptr; diff --git a/src/text/gpu/VertexFiller.cpp b/src/text/gpu/VertexFiller.cpp index 57bf28937c47..5f906effdada 100644 --- a/src/text/gpu/VertexFiller.cpp +++ b/src/text/gpu/VertexFiller.cpp @@ -347,6 +347,8 @@ AtlasTextOp::MaskType VertexFiller::opMaskType() const { } #endif // defined(SK_GANESH) +bool VertexFiller::isLCD() const { return fMaskType == MaskFormat::kA565; } + // Return true if the positionMatrix represents an integer translation. Return the device // bounding box of all the glyphs. If the bounding box is empty, then something went singular // and this operation should be dropped. diff --git a/src/text/gpu/VertexFiller.h b/src/text/gpu/VertexFiller.h index de5e8e32f41a..a50ab4a0d0b5 100644 --- a/src/text/gpu/VertexFiller.h +++ b/src/text/gpu/VertexFiller.h @@ -108,6 +108,7 @@ class VertexFiller { std::tuple deviceRectAndCheckTransform(const SkMatrix &positionMatrix) const; skgpu::MaskFormat grMaskType() const { return fMaskType; } + bool isLCD() const; int count() const { return SkCount(fLeftTop); } diff --git a/src/utils/BUILD.bazel b/src/utils/BUILD.bazel index 97ea999f4e33..7fc1700a9fd1 100644 --- a/src/utils/BUILD.bazel +++ b/src/utils/BUILD.bazel @@ -10,6 +10,8 @@ CORE_SKSLC_FILES = [ "SkParse.cpp", "SkOSPath.h", "SkOSPath.cpp", + "SkShaderUtils.cpp", + "SkShaderUtils.h", ] split_srcs_and_hdrs( @@ -51,6 +53,8 @@ CORE_FILES = [ "SkPatchUtils.h", "SkPolyUtils.cpp", "SkPolyUtils.h", + "SkShaderUtils.cpp", + "SkShaderUtils.h", "SkShadowTessellator.cpp", "SkShadowTessellator.h", "SkShadowUtils.cpp", @@ -106,17 +110,6 @@ selects.config_setting_group( ], ) -# In separate group to avoid exporting to a *.gni file. -SKSL_FILES = [ - "SkShaderUtils.cpp", - "SkShaderUtils.h", -] - -split_srcs_and_hdrs( - name = "sksl", - files = SKSL_FILES, -) - skia_filegroup( name = "chromium_hdrs", # We allow chromium to use this as a diagnostic tool, but it is not @@ -133,9 +126,6 @@ skia_filegroup( ":core_skslc_srcs", ":core_srcs", ] + select({ - "//src/sksl:needs_sksl": [":sksl_srcs"], - "//conditions:default": [], - }) + select({ ":needs_json": [":json_srcs"], "//conditions:default": [], }) + select({ @@ -152,9 +142,6 @@ skia_filegroup( ":core_hdrs", ":core_skslc_hdrs", ] + select({ - "//src/sksl:needs_sksl": [":sksl_hdrs"], - "//conditions:default": [], - }) + select({ ":needs_json": [":json_hdrs"], "//conditions:default": [], }) + select({ diff --git a/src/xml/SkXMLParser.cpp b/src/xml/SkXMLParser.cpp index 7a9f0f087936..41b0b6dec4df 100644 --- a/src/xml/SkXMLParser.cpp +++ b/src/xml/SkXMLParser.cpp @@ -163,29 +163,41 @@ bool SkXMLParser::parse(SkStream& docStream) // Disable entity processing, to inhibit internal entity expansion. See expat CVE-2013-0340. XML_SetEntityDeclHandler(ctx.fXMLParser, entity_decl_handler); - static constexpr int kBufferSize = 4096; - bool done = false; - do { - void* buffer = XML_GetBuffer(ctx.fXMLParser, kBufferSize); - if (!buffer) { - SkDEBUGF("could not buffer enough to continue\n"); - return false; - } - - size_t len = docStream.read(buffer, kBufferSize); - done = docStream.isAtEnd(); - XML_Status status = XML_ParseBuffer(ctx.fXMLParser, SkToS32(len), done); - if (XML_STATUS_ERROR == status) { - #if defined(SK_DEBUG) - XML_Error error = XML_GetErrorCode(ctx.fXMLParser); - int line = XML_GetCurrentLineNumber(ctx.fXMLParser); - int column = XML_GetCurrentColumnNumber(ctx.fXMLParser); - const XML_LChar* errorString = XML_ErrorString(error); - SkDEBUGF("parse error @%d:%d: %d (%s).\n", line, column, error, errorString); - #endif - return false; - } - } while (!done); + XML_Status status = XML_STATUS_OK; + if (docStream.getMemoryBase() && docStream.hasLength()) { + const char* base = reinterpret_cast(docStream.getMemoryBase()); + status = XML_Parse(ctx.fXMLParser, + base + docStream.getPosition(), + docStream.getLength() - docStream.getPosition(), + true); + } else { + static constexpr int kBufferSize = 4096; + bool done = false; + do { + void* buffer = XML_GetBuffer(ctx.fXMLParser, kBufferSize); + if (!buffer) { + SkDEBUGF("could not buffer enough to continue\n"); + return false; + } + + size_t len = docStream.read(buffer, kBufferSize); + done = docStream.isAtEnd(); + status = XML_ParseBuffer(ctx.fXMLParser, SkToS32(len), done); + if (XML_STATUS_ERROR == status) { + break; + } + } while (!done); + } + if (XML_STATUS_ERROR == status) { +#if defined(SK_DEBUG) + XML_Error error = XML_GetErrorCode(ctx.fXMLParser); + int line = XML_GetCurrentLineNumber(ctx.fXMLParser); + int column = XML_GetCurrentColumnNumber(ctx.fXMLParser); + const XML_LChar* errorString = XML_ErrorString(error); + SkDEBUGF("parse error @%d:%d: %d (%s).\n", line, column, error, errorString); +#endif + return false; + } return true; } diff --git a/tests/ApplyGammaTest.cpp b/tests/ApplyGammaTest.cpp index 0ab8d767ca76..ca1224b2a2a7 100644 --- a/tests/ApplyGammaTest.cpp +++ b/tests/ApplyGammaTest.cpp @@ -23,7 +23,7 @@ #include "include/gpu/GrDirectContext.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "include/private/base/SkTemplates.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrShaderCaps.h" diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index e58a7a2ace6b..2bef79931d2a 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -42,13 +42,11 @@ skia_cc_library( deps = [ "//:skia_internal", "//tools:registry", + "//tools:runtime_blend_utils", "//tools:tool_utils", ] + select({ "//src/gpu:has_ganesh_backend": ["//tools/gpu:utils"], "//conditions:default": [], - }) + select({ - "//src/sksl:needs_sksl": ["//tools:runtime_blend_utils"], - "//conditions:default": [], }), ) @@ -116,7 +114,6 @@ skia_cpu_tests( name = "cpu_only_tests", flags = { "fontmgr_factory": ["custom_directory_fontmgr_factory"], - "enable_sksl": ["True"], "enable_sksl_tracing": ["True"], "include_decoder": [ "jpeg_decode_codec", @@ -374,7 +371,6 @@ android_unit_test( }), flags = { "fontmgr_factory": ["custom_directory_fontmgr_factory"], - "enable_sksl": ["True"], "enable_sksl_tracing": ["True"], "include_decoder": [ "jpeg_decode_codec", diff --git a/tests/BackendAllocationTest.cpp b/tests/BackendAllocationTest.cpp index c1edd6ada3b6..88af3c8e145c 100644 --- a/tests/BackendAllocationTest.cpp +++ b/tests/BackendAllocationTest.cpp @@ -50,6 +50,7 @@ #include "tests/Test.h" #include "tests/TestUtils.h" #include "tools/ToolUtils.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/ManagedBackendTexture.h" #include "tools/gpu/ProxyUtils.h" @@ -59,10 +60,6 @@ #include #include -#if defined(SK_DAWN) -#include -#endif - #if defined(SK_GL) #include "include/gpu/ganesh/gl/GrGLBackendSurface.h" #include "include/gpu/gl/GrGLInterface.h" @@ -84,6 +81,7 @@ #endif #if defined(SK_VULKAN) +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "src/gpu/ganesh/vk/GrVkCaps.h" #include @@ -190,7 +188,7 @@ static bool isBGRA8(const GrBackendFormat& format) { case GrBackendApi::kVulkan: { #ifdef SK_VULKAN VkFormat vkFormat; - format.asVkFormat(&vkFormat); + GrBackendFormats::AsVkFormat(format, &vkFormat); return vkFormat == VK_FORMAT_B8G8R8A8_UNORM; #else return false; @@ -209,15 +207,6 @@ static bool isBGRA8(const GrBackendFormat& format) { return d3dFormat == DXGI_FORMAT_B8G8R8A8_UNORM; #else return false; -#endif - } - case GrBackendApi::kDawn: { -#ifdef SK_DAWN - wgpu::TextureFormat dawnFormat; - format.asDawnFormat(&dawnFormat); - return dawnFormat == wgpu::TextureFormat::BGRA8Unorm; -#else - return false; #endif } case GrBackendApi::kMock: { @@ -228,6 +217,9 @@ static bool isBGRA8(const GrBackendFormat& format) { return format.asMockColorType() == GrColorType::kBGRA_8888; } + case GrBackendApi::kUnsupported: { + return false; + } } SkUNREACHABLE; } @@ -243,7 +235,7 @@ static bool isRGB(const GrBackendFormat& format) { case GrBackendApi::kVulkan: { #ifdef SK_VULKAN VkFormat vkFormat; - format.asVkFormat(&vkFormat); + GrBackendFormats::AsVkFormat(format, &vkFormat); return vkFormat == VK_FORMAT_R8G8B8_UNORM; #else return false; @@ -253,10 +245,10 @@ static bool isRGB(const GrBackendFormat& format) { return false; // Metal doesn't even pretend to support this case GrBackendApi::kDirect3D: return false; // Not supported in Direct3D 12 - case GrBackendApi::kDawn: - return false; case GrBackendApi::kMock: return format.asMockColorType() == GrColorType::kRGB_888; + case GrBackendApi::kUnsupported: + return false; } SkUNREACHABLE; } @@ -590,7 +582,7 @@ enum class VkLayout { void check_vk_tiling(const GrBackendTexture& backendTex) { #if defined(SK_VULKAN) && defined(SK_DEBUG) GrVkImageInfo vkII; - if (backendTex.getVkImageInfo(&vkII)) { + if (GrBackendTextures::GetVkImageInfo(backendTex, &vkII)) { SkASSERT(VK_IMAGE_TILING_OPTIMAL == vkII.fImageTiling); } #endif @@ -766,9 +758,9 @@ void color_type_backend_allocation_test(const sk_gpu_test::ContextInfo& ctxInfo, } DEF_GANESH_TEST(ColorTypeBackendAllocationTest, reporter, options, CtsEnforcement::kApiLevel_T) { - for (int t = 0; t < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++t) { - auto type = static_cast(t); - if (!sk_gpu_test::GrContextFactory::IsRenderingContext(type)) { + for (int t = 0; t < skgpu::kContextTypeCount; ++t) { + auto type = static_cast(t); + if (!skgpu::IsRenderingContext(type)) { continue; } sk_gpu_test::GrContextFactory factory(options); @@ -793,10 +785,10 @@ DEF_GANESH_TEST(ColorTypeBackendAllocationTest, reporter, options, CtsEnforcemen /////////////////////////////////////////////////////////////////////////////// #ifdef SK_GL -DEF_GANESH_TEST_FOR_ALL_GL_CONTEXTS(GLBackendAllocationTest, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(GLBackendAllocationTest, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { sk_gpu_test::GLTestContext* glCtx = ctxInfo.glContext(); GrGLStandard standard = glCtx->gl()->fStandard; auto context = ctxInfo.directContext(); @@ -1008,7 +1000,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendAllocationTest, continue; } - GrBackendFormat format = GrBackendFormat::MakeVk(combo.fFormat); + GrBackendFormat format = GrBackendFormats::MakeVk(combo.fFormat); for (auto mipmapped : { GrMipmapped::kNo, GrMipmapped::kYes }) { if (GrMipmapped::kYes == mipmapped && !vkCaps->mipmapSupport()) { @@ -1021,7 +1013,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendAllocationTest, // We must also check whether we allow rendering to the format using the // color type. if (!vkCaps->isFormatAsColorTypeRenderable( - combo.fColorType, GrBackendFormat::MakeVk(combo.fFormat), 1)) { + combo.fColorType, GrBackendFormats::MakeVk(combo.fFormat), 1)) { continue; } } diff --git a/tests/BackendSurfaceMutableStateTest.cpp b/tests/BackendSurfaceMutableStateTest.cpp index 59ab7900dbe2..4985d947724f 100644 --- a/tests/BackendSurfaceMutableStateTest.cpp +++ b/tests/BackendSurfaceMutableStateTest.cpp @@ -20,6 +20,7 @@ #include "include/gpu/GrTypes.h" #include "include/gpu/MutableTextureState.h" #include "include/gpu/ganesh/SkImageGanesh.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrSurfaceProxy.h" @@ -43,14 +44,14 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); - GrBackendFormat format = GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); + GrBackendFormat format = GrBackendFormats::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); GrBackendTexture backendTex = dContext->createBackendTexture( 32, 32, format, GrMipmapped::kNo, GrRenderable::kNo, GrProtected::kNo); REPORTER_ASSERT(reporter, backendTex.isValid()); GrVkImageInfo info; - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); VkImageLayout initLayout = info.fImageLayout; uint32_t initQueue = info.fCurrentQueueFamily; skgpu::MutableTextureState initState(initLayout, initQueue); @@ -58,7 +59,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, // Verify that setting that state via a copy of a backendTexture is reflected in all the // backendTextures. GrBackendTexture backendTexCopy = backendTex; - REPORTER_ASSERT(reporter, backendTexCopy.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexCopy, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); @@ -66,11 +67,11 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, VK_QUEUE_FAMILY_IGNORED); backendTexCopy.setMutableState(newState); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, VK_QUEUE_FAMILY_IGNORED == info.fCurrentQueueFamily); - REPORTER_ASSERT(reporter, backendTexCopy.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexCopy, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, VK_QUEUE_FAMILY_IGNORED == info.fCurrentQueueFamily); @@ -97,14 +98,14 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, REPORTER_ASSERT(reporter, initQueue == vkTexture->currentQueueFamilyIndex()); vkTexture->updateImageLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); GrBackendTexture backendTexImage; bool ok = SkImages::GetBackendTextureFromImage(wrappedImage, &backendTexImage, false); REPORTER_ASSERT(reporter, ok); - REPORTER_ASSERT(reporter, backendTexImage.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexImage, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); @@ -117,15 +118,15 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, vkTexture->setQueueFamilyIndex(initQueue); vkTexture->updateImageLayout(initLayout); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); - REPORTER_ASSERT(reporter, backendTexCopy.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexCopy, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); - REPORTER_ASSERT(reporter, backendTexImage.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexImage, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); REPORTER_ASSERT(reporter, initQueue == info.fCurrentQueueFamily); @@ -137,7 +138,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, dContext->setBackendTextureState(backendTex, newState, &previousState); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, gpu->queueIndex() == info.fCurrentQueueFamily); @@ -149,7 +150,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, // Make sure passing in VK_IMAGE_LAYOUT_UNDEFINED does not change the layout skgpu::MutableTextureState noopState(VK_IMAGE_LAYOUT_UNDEFINED, VK_QUEUE_FAMILY_IGNORED); dContext->setBackendTextureState(backendTex, noopState, &previousState); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); REPORTER_ASSERT(reporter, gpu->queueIndex() == info.fCurrentQueueFamily); @@ -166,7 +167,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, dContext->setBackendTextureState(backendTex, externalState, &previousState); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_GENERAL == info.fImageLayout); REPORTER_ASSERT(reporter, VK_QUEUE_FAMILY_EXTERNAL == info.fCurrentQueueFamily); @@ -183,7 +184,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkBackendSurfaceMutableStateTest, skgpu::MutableTextureState externalState2(VK_IMAGE_LAYOUT_UNDEFINED, initQueue); dContext->setBackendTextureState(backendTex, externalState2, &previousState); - REPORTER_ASSERT(reporter, backendTex.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_GENERAL == info.fImageLayout); REPORTER_ASSERT(reporter, gpu->queueIndex() == info.fCurrentQueueFamily); diff --git a/tests/BazelTestRunner.cpp b/tests/BazelTestRunner.cpp index e3b016ba855e..f100df86fa41 100644 --- a/tests/BazelTestRunner.cpp +++ b/tests/BazelTestRunner.cpp @@ -21,6 +21,7 @@ #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrTypes.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/TestContext.h" #endif @@ -50,55 +51,49 @@ class BazelReporter : public skiatest::Reporter { #if defined(SK_GANESH) namespace skiatest { -bool IsGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kOpenGL == sk_gpu_test::GrContextFactory::ContextTypeBackend(type); +bool IsGLContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kOpenGL; } -bool IsVulkanContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kVulkan == sk_gpu_test::GrContextFactory::ContextTypeBackend(type); +bool IsVulkanContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kVulkan; } -bool IsMetalContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kMetal == sk_gpu_test::GrContextFactory::ContextTypeBackend(type); +bool IsMetalContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kMetal; } -bool IsDirect3DContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kDirect3D == sk_gpu_test::GrContextFactory::ContextTypeBackend(type); +bool IsDirect3DContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kDirect3D; } -bool IsDawnContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kDawn == sk_gpu_test::GrContextFactory::ContextTypeBackend(type); -} -bool IsRenderingGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return IsGLContextType(type) && sk_gpu_test::GrContextFactory::IsRenderingContext(type); -} -bool IsMockContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return type == sk_gpu_test::GrContextFactory::kMock_ContextType; +bool IsMockContextType(skgpu::ContextType type) { + return type == skgpu::ContextType::kMock; } -sk_gpu_test::GrContextFactory::ContextType compiledInContextTypes[] = { +skgpu::ContextType compiledInContextTypes[] = { #if defined(SK_GL) // Use "native" instead of explicitly trying both OpenGL and OpenGL ES. Do not use GLES on // desktop since tests do not account for not fixing http://skbug.com/2809 #if defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_MAC) - sk_gpu_test::GrContextFactory::kGL_ContextType, + skgpu::ContextType::kGL, #else - sk_gpu_test::GrContextFactory::kGLES_ContextType, + skgpu::ContextType::kGLES, #endif #endif // defined(SK_GL) #if defined(SK_VULKAN) - sk_gpu_test::GrContextFactory::kVulkan_ContextType, + skgpu::ContextType::kVulkan, #endif #if defined(SK_DAWN) - sk_gpu_test::GrContextFactory::kDawn_ContextType, + skgpu::ContextType::kDawn, #endif // TODO(kjlubick) Other Ganesh backends - sk_gpu_test::GrContextFactory::kMock_ContextType, + skgpu::ContextType::kMock, }; // The macros defined in Test.h eventually call into this function. For each GPU backend that is // compiled in, we run the testFn with a freshly created -void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* filter, +void RunWithGaneshTestContexts(GrContextTestFn* testFn, ContextTypeFilterFn* filter, Reporter* reporter, const GrContextOptions& options) { sk_gpu_test::GrContextFactory factory(options); - for (sk_gpu_test::GrContextFactory::ContextType ctxType : compiledInContextTypes) { + for (skgpu::ContextType ctxType : compiledInContextTypes) { if (filter && !(*filter)(ctxType)) { continue; } diff --git a/tests/BigImageTest.cpp b/tests/BigImageTest.cpp index 89af95083342..a19b5302a51b 100644 --- a/tests/BigImageTest.cpp +++ b/tests/BigImageTest.cpp @@ -540,7 +540,8 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(TiledDrawCacheTest_Ganesh, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(BigImageTest_Graphite, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(ToolUtils::CreateTestingRecorderOptions()); @@ -549,7 +550,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(BigImageTest_Graphite, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(TiledDrawCacheTest_Graphite, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(ToolUtils::CreateTestingRecorderOptions()); diff --git a/tests/BitmapCopyTest.cpp b/tests/BitmapCopyTest.cpp index bc6ca63ac154..dfa013ba688b 100644 --- a/tests/BitmapCopyTest.cpp +++ b/tests/BitmapCopyTest.cpp @@ -17,7 +17,7 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkSize.h" #include "include/core/SkTypes.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "tests/Test.h" #include "tools/ToolUtils.h" diff --git a/tests/BlendTest.cpp b/tests/BlendTest.cpp index 12c6858951a3..30e8def8fc59 100644 --- a/tests/BlendTest.cpp +++ b/tests/BlendTest.cpp @@ -89,10 +89,10 @@ DEF_TEST(Blend_byte_multiply, r) { } // Tests blending to a surface with no texture available. -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(ES2BlendWithNoTexture, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(ES2BlendWithNoTexture, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto context = ctxInfo.directContext(); static constexpr SkISize kDimensions{10, 10}; const SkColorType kColorType = kRGBA_8888_SkColorType; diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp index 92d4ed2b5a52..5090aa296454 100644 --- a/tests/CachedDecodingPixelRefTest.cpp +++ b/tests/CachedDecodingPixelRefTest.cpp @@ -16,7 +16,7 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkTypes.h" #include "include/private/SkColorData.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "tests/Test.h" #include "tools/ToolUtils.h" diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp index 13a255768068..238ca96a6634 100644 --- a/tests/CanvasTest.cpp +++ b/tests/CanvasTest.cpp @@ -12,7 +12,6 @@ #include "include/core/SkColor.h" #include "include/core/SkColorType.h" #include "include/core/SkDocument.h" -#include "include/core/SkFlattenable.h" #include "include/core/SkImageFilter.h" #include "include/core/SkImageInfo.h" #include "include/core/SkMatrix.h" @@ -38,10 +37,8 @@ #include "include/utils/SkNWayCanvas.h" #include "include/utils/SkPaintFilterCanvas.h" #include "src/core/SkBigPicture.h" -#include "src/core/SkImageFilter_Base.h" #include "src/core/SkRecord.h" #include "src/core/SkRecords.h" -#include "src/core/SkSpecialImage.h" #include "src/utils/SkCanvasStack.h" #include "tests/Test.h" @@ -53,11 +50,6 @@ using namespace skia_private; class SkPicture; -class SkReadBuffer; - -namespace skif { -class Context; -} #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK #include "include/core/SkColorSpace.h" @@ -620,40 +612,10 @@ DEF_TEST(Canvas_LegacyColorBehavior, r) { } #endif -namespace { - -class ZeroBoundsImageFilter : public SkImageFilter_Base { -public: - static sk_sp Make() { return sk_sp(new ZeroBoundsImageFilter); } - -protected: - sk_sp onFilterImage(const skif::Context&, SkIPoint*) const override { - return nullptr; - } - SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, - MapDirection, const SkIRect* inputRect) const override { - return SkIRect::MakeEmpty(); - } - -private: - SK_FLATTENABLE_HOOKS(ZeroBoundsImageFilter) - - ZeroBoundsImageFilter() : INHERITED(nullptr, 0, nullptr) {} - - using INHERITED = SkImageFilter_Base; -}; - -sk_sp ZeroBoundsImageFilter::CreateProc(SkReadBuffer& buffer) { - SkDEBUGFAIL("Should never get here"); - return nullptr; -} - -} // anonymous namespace - DEF_TEST(Canvas_SaveLayerWithNullBoundsAndZeroBoundsImageFilter, r) { SkCanvas canvas(10, 10); SkPaint p; - p.setImageFilter(ZeroBoundsImageFilter::Make()); + p.setImageFilter(SkImageFilters::Empty()); // This should not fail any assert. canvas.saveLayer(nullptr, &p); REPORTER_ASSERT(r, canvas.getDeviceClipBounds().isEmpty()); diff --git a/tests/CopySurfaceTest.cpp b/tests/CopySurfaceTest.cpp index d0f161037639..495394118cf2 100644 --- a/tests/CopySurfaceTest.cpp +++ b/tests/CopySurfaceTest.cpp @@ -16,7 +16,7 @@ #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrTypes.h" #include "include/private/base/SkTemplates.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrImageInfo.h" #include "src/gpu/ganesh/GrPixmap.h" diff --git a/tests/DMSAATest.cpp b/tests/DMSAATest.cpp index 9489fbf4fe5c..0f0cfff3f4dc 100644 --- a/tests/DMSAATest.cpp +++ b/tests/DMSAATest.cpp @@ -43,6 +43,7 @@ #include "src/gpu/ganesh/SurfaceDrawContext.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include #include @@ -118,7 +119,7 @@ static void check_sdc_color(skiatest::Reporter* reporter, } DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_preserve_contents, - &sk_gpu_test::GrContextFactory::IsRenderingContext, + &skgpu::IsRenderingContext, reporter, ctxInfo, nullptr, @@ -157,7 +158,7 @@ static void require_dst_reads(GrContextOptions* options) { } DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_dst_read, - &sk_gpu_test::GrContextFactory::IsRenderingContext, + &skgpu::IsRenderingContext, reporter, ctxInfo, require_dst_reads, @@ -188,7 +189,7 @@ DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_dst_read, } DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_aa_dst_read_after_dmsaa, - &sk_gpu_test::GrContextFactory::IsRenderingContext, + &skgpu::IsRenderingContext, reporter, ctxInfo, require_dst_reads, @@ -220,7 +221,7 @@ DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_aa_dst_read_after_dmsaa, } DEF_GANESH_TEST_FOR_CONTEXTS(DMSAA_dst_read_with_existing_barrier, - &sk_gpu_test::GrContextFactory::IsRenderingContext, + &skgpu::IsRenderingContext, reporter, ctxInfo, require_dst_reads, diff --git a/tests/DefaultPathRendererTest.cpp b/tests/DefaultPathRendererTest.cpp index 38b407ce8066..e6018283690c 100644 --- a/tests/DefaultPathRendererTest.cpp +++ b/tests/DefaultPathRendererTest.cpp @@ -28,6 +28,7 @@ #include "src/gpu/ganesh/SurfaceDrawContext.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include #include @@ -136,7 +137,7 @@ static void run_test(GrDirectContext* dContext, skiatest::Reporter* reporter) { } DEF_GANESH_TEST_FOR_CONTEXTS(DefaultPathRendererTest, - sk_gpu_test::GrContextFactory::IsRenderingContext, + skgpu::IsRenderingContext, reporter, ctxInfo, only_allow_default, diff --git a/tests/DeferredDisplayListTest.cpp b/tests/DeferredDisplayListTest.cpp index afdf1ec825f4..8a51bc6d566f 100644 --- a/tests/DeferredDisplayListTest.cpp +++ b/tests/DeferredDisplayListTest.cpp @@ -90,7 +90,7 @@ class SurfaceParameters { #ifdef SK_VULKAN if (rContext->backend() == GrBackendApi::kVulkan) { auto vkCaps = static_cast(rContext->priv().caps()); - fCanBeProtected = vkCaps->supportsProtectedMemory(); + fCanBeProtected = vkCaps->supportsProtectedContent(); if (fCanBeProtected) { fIsProtected = GrProtected::kYes; } @@ -636,10 +636,10 @@ void DDLSurfaceCharacterizationTestImpl(GrDirectContext* dContext, skiatest::Rep // FBO0 w/ MSAA, FBO0 w/o MSAA, not-FBO0 w/ MSAA, not-FBO0 w/o MSAA // and then tries all sixteen combinations to check the expected compatibility. // Note: this is a GL-only test -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(CharacterizationFBO0nessTest, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(CharacterizationFBO0nessTest, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto context = ctxInfo.directContext(); const GrCaps* caps = context->priv().caps(); sk_sp proxy = context->threadSafeProxy(); @@ -1250,10 +1250,7 @@ static sk_sp noop_fulfill_proc(void*) { //////////////////////////////////////////////////////////////////////////////// // Check that the texture-specific flags (i.e., for external & rectangle textures) work // for promise images. As such, this is a GL-only test. -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(DDLTextureFlagsTest, - reporter, - ctxInfo, - CtsEnforcement::kNever) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(DDLTextureFlagsTest, reporter, ctxInfo, CtsEnforcement::kNever) { auto context = ctxInfo.directContext(); SkImageInfo ii = SkImageInfo::MakeN32Premul(32, 32); @@ -1305,10 +1302,7 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(DDLTextureFlagsTest, //////////////////////////////////////////////////////////////////////////////// // Test colorType and pixelConfig compatibility. -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(DDLCompatibilityTest, - reporter, - ctxInfo, - CtsEnforcement::kNever) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(DDLCompatibilityTest, reporter, ctxInfo, CtsEnforcement::kNever) { auto context = ctxInfo.directContext(); for (int ct = 0; ct <= kLastEnum_SkColorType; ++ct) { diff --git a/tests/EGLImageTest.cpp b/tests/EGLImageTest.cpp index 29103d2e11f3..a8069ac2d039 100644 --- a/tests/EGLImageTest.cpp +++ b/tests/EGLImageTest.cpp @@ -76,10 +76,7 @@ static void cleanup(GLTestContext* glctx0, } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(EGLImageTest, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(EGLImageTest, reporter, ctxInfo, CtsEnforcement::kApiLevel_T) { auto context0 = ctxInfo.directContext(); sk_gpu_test::GLTestContext* glCtx0 = ctxInfo.glContext(); diff --git a/tests/FilterResultTest.cpp b/tests/FilterResultTest.cpp index d883dfa07ca0..485fe0aa7fd5 100644 --- a/tests/FilterResultTest.cpp +++ b/tests/FilterResultTest.cpp @@ -42,6 +42,7 @@ #include "tests/CtsEnforcement.h" #include "tests/Test.h" #include "tests/TestUtils.h" +#include "tools/gpu/ContextType.h" #include #include @@ -56,10 +57,10 @@ using namespace skia_private; #if defined(SK_GRAPHITE) #include "include/gpu/graphite/Context.h" #include "src/gpu/graphite/ContextPriv.h" -#include "src/gpu/graphite/ImageUtils.h" #include "src/gpu/graphite/RecorderPriv.h" #include "src/gpu/graphite/SpecialImage_Graphite.h" #include "src/gpu/graphite/TextureProxyView.h" +#include "src/gpu/graphite/TextureUtils.h" #endif @@ -1000,47 +1001,50 @@ sk_sp affect_transparent(SkColor4f color) { // TODO(skbug.com/14607) - Run FilterResultTests on Dawn and ANGLE backends, too #if defined(SK_GANESH) -#define DEF_GANESH_TEST_SUITE(name) \ - DEF_GANESH_TEST_FOR_CONTEXTS( \ - FilterResult_ganesh_##name, \ - sk_gpu_test::GrContextFactory::IsNativeBackend, \ - r, ctxInfo, nullptr, CtsEnforcement::kApiLevel_T) { \ - TestRunner runner(r, ctxInfo.directContext()); \ - test_suite_##name(runner); \ +#define DEF_GANESH_TEST_SUITE(name, ctsEnforcement) \ + DEF_GANESH_TEST_FOR_CONTEXTS(FilterResult_ganesh_##name, \ + skgpu::IsNativeBackend, \ + r, \ + ctxInfo, \ + nullptr, \ + ctsEnforcement) { \ + TestRunner runner(r, ctxInfo.directContext()); \ + test_suite_##name(runner); \ } #else #define DEF_GANESH_TEST_SUITE(name) // do nothing #endif #if defined(SK_GRAPHITE) -#define DEF_GRAPHITE_TEST_SUITE(name) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS( \ - FilterResult_graphite_##name, \ - sk_gpu_test::GrContextFactory::IsNativeBackend, \ - r, context) { \ - using namespace skgpu::graphite; \ - auto recorder = context->makeRecorder(); \ - TestRunner runner(r, recorder.get()); \ - test_suite_##name(runner); \ +#define DEF_GRAPHITE_TEST_SUITE(name, ctsEnforcement) \ + DEF_GRAPHITE_TEST_FOR_CONTEXTS(FilterResult_graphite_##name, \ + skgpu::IsNativeBackend, \ + r, \ + context, \ + ctsEnforcement) { \ + using namespace skgpu::graphite; \ + auto recorder = context->makeRecorder(); \ + TestRunner runner(r, recorder.get()); \ + test_suite_##name(runner); \ std::unique_ptr recording = recorder->snap(); \ - if (!recording) { \ - ERRORF(r, "Failed to make recording"); \ - return; \ - } \ - InsertRecordingInfo insertInfo; \ - insertInfo.fRecording = recording.get(); \ - context->insertRecording(insertInfo); \ - context->submit(SyncToCpu::kYes); \ + if (!recording) { \ + ERRORF(r, "Failed to make recording"); \ + return; \ + } \ + InsertRecordingInfo insertInfo; \ + insertInfo.fRecording = recording.get(); \ + context->insertRecording(insertInfo); \ + context->submit(SyncToCpu::kYes); \ } #else #define DEF_GRAPHITE_TEST_SUITE(name) // do nothing #endif -#define DEF_TEST_SUITE(name, runner) \ +#define DEF_TEST_SUITE(name, runner, ganeshCtsEnforcement, graphiteCtsEnforcement) \ static void test_suite_##name(TestRunner&); \ /* TODO(b/274901800): Uncomment to enable Graphite test execution. */ \ - /* DEF_GRAPHITE_TEST_SUITE(name) */ \ - DEF_GANESH_TEST_SUITE(name) \ + /* DEF_GRAPHITE_TEST_SUITE(name, graphiteCtsEnforcement) */ \ + DEF_GANESH_TEST_SUITE(name, ganeshCtsEnforcement) \ DEF_TEST(FilterResult_raster_##name, reporter) { \ TestRunner runner(reporter); \ test_suite_##name(runner); \ @@ -1050,7 +1054,7 @@ sk_sp affect_transparent(SkColor4f color) { // ---------------------------------------------------------------------------- // Empty input/output tests -DEF_TEST_SUITE(EmptySource, r) { +DEF_TEST_SUITE(EmptySource, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { // This is testing that an empty input image is handled by the applied actions without having // to generate new images, or that it can produce a new image from nothing when it affects // transparent black. @@ -1078,7 +1082,7 @@ DEF_TEST_SUITE(EmptySource, r) { .run(/*requestedOutput=*/{0, 0, 10, 10}); } -DEF_TEST_SUITE(EmptyDesiredOutput, r) { +DEF_TEST_SUITE(EmptyDesiredOutput, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { // This is testing that an empty requested output is propagated through the applied actions so // that no actual images are generated. for (SkTileMode tm : kTileModes) { @@ -1107,7 +1111,7 @@ DEF_TEST_SUITE(EmptyDesiredOutput, r) { // ---------------------------------------------------------------------------- // applyCrop() tests -DEF_TEST_SUITE(Crop, r) { +DEF_TEST_SUITE(Crop, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { // This is testing all the combinations of how the src, crop, and requested output rectangles // can interact while still resulting in a deferred image. The exception is non-decal tile // modes where the crop rect includes transparent pixels not filled by the source, which @@ -1154,7 +1158,8 @@ DEF_TEST_SUITE(Crop, r) { } } -DEF_TEST_SUITE(CropDisjointFromSourceAndOutput, r) { +DEF_TEST_SUITE(CropDisjointFromSourceAndOutput, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { // This tests all the combinations of src, crop, and requested output rectangles that result in // an empty image without any of the rectangles being empty themselves. The exception is for // non-decal tile modes when the source and crop still intersect. In that case the non-empty @@ -1199,7 +1204,7 @@ DEF_TEST_SUITE(CropDisjointFromSourceAndOutput, r) { } } -DEF_TEST_SUITE(EmptyCrop, r) { +DEF_TEST_SUITE(EmptyCrop, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { for (SkTileMode tm : kTileModes) { TestCase(r, "applyCrop() is empty") .source({0, 0, 10, 10}) @@ -1214,7 +1219,7 @@ DEF_TEST_SUITE(EmptyCrop, r) { } } -DEF_TEST_SUITE(DisjointCrops, r) { +DEF_TEST_SUITE(DisjointCrops, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { for (SkTileMode tm : kTileModes) { TestCase(r, "Disjoint applyCrop() after kDecal become empty") .source({0, 0, 10, 10}) @@ -1239,7 +1244,7 @@ DEF_TEST_SUITE(DisjointCrops, r) { } } -DEF_TEST_SUITE(IntersectingCrops, r) { +DEF_TEST_SUITE(IntersectingCrops, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { for (SkTileMode tm : kTileModes) { TestCase(r, "Decal applyCrop() always combines with any other crop") .source({0, 0, 20, 20}) @@ -1265,7 +1270,7 @@ DEF_TEST_SUITE(IntersectingCrops, r) { } } -DEF_TEST_SUITE(PeriodicTileCrops, r) { +DEF_TEST_SUITE(PeriodicTileCrops, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { for (SkTileMode tm : {SkTileMode::kRepeat, SkTileMode::kMirror}) { // In these tests, the crop periodically tiles such that it covers the desired output so // the prior image can be simply transformed. @@ -1311,7 +1316,7 @@ DEF_TEST_SUITE(PeriodicTileCrops, r) { } } -DEF_TEST_SUITE(DecalThenClamp, r) { +DEF_TEST_SUITE(DecalThenClamp, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { TestCase(r, "Decal then clamp crop uses 1px buffer around intersection") .source({0, 0, 20, 20}) .applyCrop({3, 3, 17, 17}, SkTileMode::kDecal, Expect::kDeferredImage) @@ -1330,7 +1335,7 @@ DEF_TEST_SUITE(DecalThenClamp, r) { // ---------------------------------------------------------------------------- // applyTransform() tests -DEF_TEST_SUITE(Transform, r) { +DEF_TEST_SUITE(Transform, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { TestCase(r, "applyTransform() integer translate") .source({0, 0, 10, 10}) .applyTransform(SkMatrix::Translate(5, 5), Expect::kDeferredImage) @@ -1353,7 +1358,8 @@ DEF_TEST_SUITE(Transform, r) { .run(/*requestedOutput=*/{0, 0, 16, 16}); } -DEF_TEST_SUITE(CompatibleSamplingConcatsTransforms, r) { +DEF_TEST_SUITE(CompatibleSamplingConcatsTransforms, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "linear + linear combine") .source({0, 0, 8, 8}) .applyTransform(SkMatrix::RotateDeg(2.f, {4.f, 4.f}), @@ -1425,7 +1431,8 @@ DEF_TEST_SUITE(CompatibleSamplingConcatsTransforms, r) { // mipmaps right now). } -DEF_TEST_SUITE(IncompatibleSamplingResolvesImages, r) { +DEF_TEST_SUITE(IncompatibleSamplingResolvesImages, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "different bicubics do not combine") .source({0, 0, 8, 8}) .applyTransform(SkMatrix::RotateDeg(2.f, {4.f, 4.f}), @@ -1475,7 +1482,8 @@ DEF_TEST_SUITE(IncompatibleSamplingResolvesImages, r) { .run(/*requestedOutput=*/{0, 0, 16, 16}); } -DEF_TEST_SUITE(IntegerOffsetIgnoresNearestSampling, r) { +DEF_TEST_SUITE(IntegerOffsetIgnoresNearestSampling, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { // Bicubic is used here to reflect that it should use the non-NN sampling and just needs to be // something other than the default to detect that it got carried through. TestCase(r, "integer translate+NN then bicubic combines") @@ -1500,7 +1508,8 @@ DEF_TEST_SUITE(IntegerOffsetIgnoresNearestSampling, r) { // ---------------------------------------------------------------------------- // applyTransform() interacting with applyCrop() -DEF_TEST_SUITE(TransformBecomesEmpty, r) { +DEF_TEST_SUITE(TransformBecomesEmpty, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "Transform moves src image outside of requested output") .source({0, 0, 8, 8}) .applyTransform(SkMatrix::Translate(10.f, 10.f), Expect::kEmptyImage) @@ -1519,7 +1528,7 @@ DEF_TEST_SUITE(TransformBecomesEmpty, r) { .run(/*requestedOutput=*/{0, 0, 8, 8}); } -DEF_TEST_SUITE(TransformAndCrop, r) { +DEF_TEST_SUITE(TransformAndCrop, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { TestCase(r, "Crop after transform can always apply") .source({0, 0, 16, 16}) .applyTransform(SkMatrix::RotateDeg(45.f, {3.f, 4.f}), Expect::kDeferredImage) @@ -1564,7 +1573,7 @@ DEF_TEST_SUITE(TransformAndCrop, r) { .run(/*requestedOutput=*/{0, 0, 64, 64}); } -DEF_TEST_SUITE(TransformAndTile, r) { +DEF_TEST_SUITE(TransformAndTile, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { // Test interactions of non-decal tile modes and transforms for (SkTileMode tm : kTileModes) { if (tm == SkTileMode::kDecal) { @@ -1601,7 +1610,7 @@ DEF_TEST_SUITE(TransformAndTile, r) { // ---------------------------------------------------------------------------- // applyColorFilter() and interactions with transforms/crops -DEF_TEST_SUITE(ColorFilter, r) { +DEF_TEST_SUITE(ColorFilter, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { TestCase(r, "applyColorFilter() defers image") .source({0, 0, 24, 24}) .applyColorFilter(alpha_modulate(0.5f), Expect::kDeferredImage) @@ -1639,7 +1648,8 @@ DEF_TEST_SUITE(ColorFilter, r) { .run(/*requestedOutput=*/{-8, -8, 32, 32}); } -DEF_TEST_SUITE(TransformedColorFilter, r) { +DEF_TEST_SUITE(TransformedColorFilter, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "Transform composes with regular CF") .source({0, 0, 24, 24}) .applyTransform(SkMatrix::RotateDeg(45.f, {12, 12}), Expect::kDeferredImage) @@ -1669,7 +1679,8 @@ DEF_TEST_SUITE(TransformedColorFilter, r) { .run(/*requestedOutput=*/{-50, -50, 50, 50}); } -DEF_TEST_SUITE(TransformBetweenColorFilters, r) { +DEF_TEST_SUITE(TransformBetweenColorFilters, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { // NOTE: The lack of explicit crops allows all of these operations to be optimized as well. TestCase(r, "Transform between regular color filters") .source({0, 0, 24, 24}) @@ -1700,7 +1711,8 @@ DEF_TEST_SUITE(TransformBetweenColorFilters, r) { .run(/*requestedOutput=*/{0, 0, 24, 24}); } -DEF_TEST_SUITE(ColorFilterBetweenTransforms, r) { +DEF_TEST_SUITE(ColorFilterBetweenTransforms, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "Regular color filter between transforms") .source({0, 0, 24, 24}) .applyTransform(SkMatrix::RotateDeg(20.f, {12, 12}), Expect::kDeferredImage) @@ -1716,7 +1728,7 @@ DEF_TEST_SUITE(ColorFilterBetweenTransforms, r) { .run(/*requestedOutput=*/{0, 0, 24, 24}); } -DEF_TEST_SUITE(CroppedColorFilter, r) { +DEF_TEST_SUITE(CroppedColorFilter, r, CtsEnforcement::kApiLevel_T, CtsEnforcement::kNextRelease) { for (SkTileMode tm : kTileModes) { TestCase(r, "Regular color filter after empty crop stays empty") .source({0, 0, 16, 16}) @@ -1757,7 +1769,8 @@ DEF_TEST_SUITE(CroppedColorFilter, r) { } } -DEF_TEST_SUITE(CropBetweenColorFilters, r) { +DEF_TEST_SUITE(CropBetweenColorFilters, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { for (SkTileMode tm : kTileModes) { TestCase(r, "Crop between regular color filters") .source({0, 0, 32, 32}) @@ -1805,7 +1818,8 @@ DEF_TEST_SUITE(CropBetweenColorFilters, r) { } } -DEF_TEST_SUITE(ColorFilterBetweenCrops, r) { +DEF_TEST_SUITE(ColorFilterBetweenCrops, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { for (SkTileMode firstTM : kTileModes) { for (SkTileMode secondTM : kTileModes) { Expect newImageIfNotDecalOrDoubleClamp = @@ -1832,7 +1846,8 @@ DEF_TEST_SUITE(ColorFilterBetweenCrops, r) { } } -DEF_TEST_SUITE(CroppedTransformedColorFilter, r) { +DEF_TEST_SUITE(CroppedTransformedColorFilter, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { TestCase(r, "Transform -> crop -> regular color filter") .source({0, 0, 32, 32}) .applyTransform(SkMatrix::RotateDeg(30.f, {16, 16}), Expect::kDeferredImage) @@ -1876,7 +1891,8 @@ DEF_TEST_SUITE(CroppedTransformedColorFilter, r) { .run(/*requestedOutput=*/{0, 0, 32, 32}); } -DEF_TEST_SUITE(CroppedTransformedTransparencyAffectingColorFilter, r) { +DEF_TEST_SUITE(CroppedTransformedTransparencyAffectingColorFilter, r, CtsEnforcement::kApiLevel_T, + CtsEnforcement::kNextRelease) { // When the crop is not between the transform and transparency-affecting color filter, // either the order of operations or the bounds propagation means that every action can be // deferred. Below, when the crop is between the two actions, new images are triggered. diff --git a/tests/GLBackendSurfaceTest.cpp b/tests/GLBackendSurfaceTest.cpp index e24d2498a37b..4f3295e34398 100644 --- a/tests/GLBackendSurfaceTest.cpp +++ b/tests/GLBackendSurfaceTest.cpp @@ -63,10 +63,10 @@ static bool params_valid(const GrGLTextureParameters& parameters, const GrGLCaps return caps->useSamplerObjects() == sampler_params_invalid(parameters); } -DEF_GANESH_TEST_FOR_ALL_GL_CONTEXTS(GLTextureParameters, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(GLTextureParameters, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); auto caps = static_cast(dContext->priv().caps()); diff --git a/tests/GpuDrawPathTest.cpp b/tests/GpuDrawPathTest.cpp index bc72f5fee4b2..60551f66291f 100644 --- a/tests/GpuDrawPathTest.cpp +++ b/tests/GpuDrawPathTest.cpp @@ -81,7 +81,7 @@ static void test_drawSameRectOvals(skiatest::Reporter*, SkCanvas* canvas) { fill_and_stroke(canvas, oval1, oval2, SkDashPathEffect::Make(intervals, 2, 0)); } -DEF_GANESH_TEST_FOR_ALL_GL_CONTEXTS(GpuDrawPath, reporter, ctxInfo, CtsEnforcement::kNever) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(GpuDrawPath, reporter, ctxInfo, CtsEnforcement::kNever) { for (auto& test_func : { &test_drawPathEmpty, &test_drawSameRectOvals }) { for (auto& sampleCount : {1, 4, 16}) { SkImageInfo info = SkImageInfo::MakeN32Premul(255, 255); diff --git a/tests/GrClipStackTest.cpp b/tests/GrClipStackTest.cpp index a42ff434558d..46d553e79aec 100644 --- a/tests/GrClipStackTest.cpp +++ b/tests/GrClipStackTest.cpp @@ -2091,7 +2091,7 @@ static void disable_tessellation_atlas(GrContextOptions* options) { } DEF_GANESH_TEST_FOR_CONTEXTS(ClipStack_SWMask, - sk_gpu_test::GrContextFactory::IsRenderingContext, + skgpu::IsRenderingContext, r, ctxInfo, disable_tessellation_atlas, diff --git a/tests/GrContextAbandonTest.cpp b/tests/GrContextAbandonTest.cpp index 0aac2eeed811..af5031162183 100644 --- a/tests/GrContextAbandonTest.cpp +++ b/tests/GrContextAbandonTest.cpp @@ -9,6 +9,7 @@ #include "include/gpu/GrDirectContext.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/FenceSync.h" struct GrContextOptions; @@ -17,9 +18,9 @@ using namespace sk_gpu_test; DEF_GANESH_TEST(GrContext_abandonContext, reporter, options, CtsEnforcement::kApiLevel_T) { for (int testType = 0; testType < 6; ++testType) { - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { GrContextFactory testFactory(options); - GrContextFactory::ContextType ctxType = (GrContextFactory::ContextType) i; + auto ctxType = static_cast(i); ContextInfo info = testFactory.getContextInfo(ctxType); if (auto context = info.directContext()) { switch (testType) { diff --git a/tests/GrContextFactoryTest.cpp b/tests/GrContextFactoryTest.cpp index 85ca362a7082..44cf7a545511 100644 --- a/tests/GrContextFactoryTest.cpp +++ b/tests/GrContextFactoryTest.cpp @@ -12,6 +12,7 @@ #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/FenceSync.h" #include @@ -19,9 +20,9 @@ using namespace sk_gpu_test; DEF_GANESH_TEST(GrContextFactory_abandon, reporter, options, CtsEnforcement::kNever) { - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { GrContextFactory testFactory(options); - GrContextFactory::ContextType ctxType = (GrContextFactory::ContextType) i; + skgpu::ContextType ctxType = static_cast(i); ContextInfo info1 = testFactory.getContextInfo(ctxType); if (!info1.directContext()) { continue; @@ -44,9 +45,9 @@ DEF_GANESH_TEST(GrContextFactory_abandon, reporter, options, CtsEnforcement::kNe } DEF_GANESH_TEST(GrContextFactory_sharedContexts, reporter, options, CtsEnforcement::kApiLevel_T) { - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { GrContextFactory testFactory(options); - GrContextFactory::ContextType ctxType = static_cast(i); + skgpu::ContextType ctxType = static_cast(i); ContextInfo info1 = testFactory.getContextInfo(ctxType); if (!info1.directContext()) { continue; @@ -82,7 +83,7 @@ DEF_GANESH_TEST(GrContextFactory_sharedContexts, reporter, options, CtsEnforceme } DEF_GANESH_TEST(GrContextFactory_executorAndTaskGroup, reporter, options, CtsEnforcement::kNever) { - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { // Verify that contexts have a task group iff we supply an executor with context options GrContextOptions contextOptions = options; contextOptions.fExecutor = nullptr; @@ -92,7 +93,7 @@ DEF_GANESH_TEST(GrContextFactory_executorAndTaskGroup, reporter, options, CtsEnf contextOptions.fExecutor = threadPool.get(); GrContextFactory threadedFactory(contextOptions); - GrContextFactory::ContextType ctxType = static_cast(i); + skgpu::ContextType ctxType = static_cast(i); ContextInfo serialInfo = serialFactory.getContextInfo(ctxType); if (auto serialContext = serialInfo.directContext()) { REPORTER_ASSERT(reporter, nullptr == serialContext->priv().getTaskGroup()); diff --git a/tests/GrContextOOM.cpp b/tests/GrContextOOM.cpp index 95fa815eaf78..47d53140cef1 100644 --- a/tests/GrContextOOM.cpp +++ b/tests/GrContextOOM.cpp @@ -21,14 +21,15 @@ #include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" DEF_GANESH_TEST(GrContext_oomed, reporter, originalOptions, CtsEnforcement::kApiLevel_T) { GrContextOptions options = originalOptions; options.fRandomGLOOM = true; options.fSkipGLErrorChecks = GrContextOptions::Enable::kNo; sk_gpu_test::GrContextFactory factory(options); - for (int ct = 0; ct < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++ct) { - auto contextType = static_cast(ct); + for (int ct = 0; ct < skgpu::kContextTypeCount; ++ct) { + auto contextType = static_cast(ct); auto context = factory.get(contextType); if (!context) { continue; diff --git a/tests/GrDDLImageTest.cpp b/tests/GrDDLImageTest.cpp index 9ae143c07b4d..b0ee84b77895 100644 --- a/tests/GrDDLImageTest.cpp +++ b/tests/GrDDLImageTest.cpp @@ -24,14 +24,15 @@ #include "include/private/chromium/GrSurfaceCharacterization.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" class GrRecordingContext; struct GrContextOptions; DEF_GANESH_TEST(GrDDLImage_MakeSubset, reporter, options, CtsEnforcement::kApiLevel_T) { sk_gpu_test::GrContextFactory factory(options); - for (int ct = 0; ct < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++ct) { - auto contextType = static_cast(ct); + for (int ct = 0; ct < skgpu::kContextTypeCount; ++ct) { + auto contextType = static_cast(ct); auto dContext = factory.get(contextType); if (!dContext) { continue; diff --git a/tests/GrFinishedFlushTest.cpp b/tests/GrFinishedFlushTest.cpp index a0258c47fe21..b947b94d5efc 100644 --- a/tests/GrFinishedFlushTest.cpp +++ b/tests/GrFinishedFlushTest.cpp @@ -89,12 +89,10 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(FlushFinishedProcTest, dContext->submit(); bool fenceSupport = dContext->priv().caps()->fenceSyncSupport(); - bool expectAsyncCallback = - dContext->backend() == GrBackendApi::kVulkan || - ((dContext->backend() == GrBackendApi::kOpenGL) && fenceSupport) || - ((dContext->backend() == GrBackendApi::kMetal) && fenceSupport) || - dContext->backend() == GrBackendApi::kDawn || - dContext->backend() == GrBackendApi::kDirect3D; + bool expectAsyncCallback = dContext->backend() == GrBackendApi::kVulkan || + ((dContext->backend() == GrBackendApi::kOpenGL) && fenceSupport) || + ((dContext->backend() == GrBackendApi::kMetal) && fenceSupport) || + dContext->backend() == GrBackendApi::kDirect3D; if (expectAsyncCallback) { // On Vulkan the command buffer we just submitted may or may not have finished immediately // so the finish proc may not have been called. diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp index 9947f413215e..dda48f7f02da 100644 --- a/tests/GrMeshTest.cpp +++ b/tests/GrMeshTest.cpp @@ -76,7 +76,7 @@ using namespace skia_private; #if 0 #include "tools/ToolUtils.h" -#define WRITE_PNG_CONTEXT_TYPE kANGLE_D3D11_ES3_ContextType +#define WRITE_PNG_CONTEXT_TYPE kANGLE_D3D11_ES3 #endif SKGPU_DECLARE_STATIC_UNIQUE_KEY(gIndexBufferKey); @@ -149,8 +149,8 @@ static void run_test(GrDirectContext*, std::function executeFn); #ifdef WRITE_PNG_CONTEXT_TYPE -static bool IsContextTypeForOutputPNGs(skiatest::GrContextFactoryContextType type) { - return type == skiatest::GrContextFactoryContextType::WRITE_PNG_CONTEXT_TYPE; +static bool IsContextTypeForOutputPNGs(skgpu::ContextType type) { + return type == skgpu::ContextType::WRITE_PNG_CONTEXT_TYPE; } DEF_GANESH_TEST_FOR_CONTEXTS(GrMeshTest, IsContextTypeForOutputPNGs, reporter, ctxInfo, nullptr) { #else diff --git a/tests/GrMipMappedTest.cpp b/tests/GrMipMappedTest.cpp index a0abcbed5cc0..dfde0ecab688 100644 --- a/tests/GrMipMappedTest.cpp +++ b/tests/GrMipMappedTest.cpp @@ -77,14 +77,10 @@ class GrRenderTask; #endif #if defined(SK_VULKAN) +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #endif -#if defined(SK_DAWN) -#include "include/gpu/dawn/GrDawnTypes.h" -#include "dawn/webgpu_cpp.h" -#endif - static constexpr int kSize = 8; // Test that the correct mip map states are on the GrTextures when wrapping GrBackendTextures in @@ -263,8 +259,8 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(GrBackendTextureImageMipMappedTest, } else if (GrBackendApi::kVulkan == genBackendTex.backend()) { GrVkImageInfo genImageInfo; GrVkImageInfo origImageInfo; - if (genBackendTex.getVkImageInfo(&genImageInfo) && - backendTex.getVkImageInfo(&origImageInfo)) { + if (GrBackendTextures::GetVkImageInfo(genBackendTex, &genImageInfo) && + GrBackendTextures::GetVkImageInfo(backendTex, &origImageInfo)) { if (requestMipmapped == GrMipmapped::kYes && betMipmapped == GrMipmapped::kNo) { // We did a copy so the texture IDs should be different REPORTER_ASSERT(reporter, origImageInfo.fImage != genImageInfo.fImage); @@ -308,24 +304,6 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(GrBackendTextureImageMipMappedTest, } else { ERRORF(reporter, "Failed to get GrMtlTextureInfo"); } -#endif -#ifdef SK_DAWN - } else if (GrBackendApi::kDawn == genBackendTex.backend()) { - GrDawnTextureInfo genImageInfo; - GrDawnTextureInfo origImageInfo; - if (genBackendTex.getDawnTextureInfo(&genImageInfo) && - backendTex.getDawnTextureInfo(&origImageInfo)) { - if (requestMipmapped == GrMipmapped::kYes && betMipmapped == GrMipmapped::kNo) { - // We did a copy so the texture IDs should be different - REPORTER_ASSERT(reporter, - origImageInfo.fTexture.Get() != genImageInfo.fTexture.Get()); - } else { - REPORTER_ASSERT(reporter, - origImageInfo.fTexture.Get() == genImageInfo.fTexture.Get()); - } - } else { - ERRORF(reporter, "Failed to get GrDawnTextureInfo"); - } #endif } else { REPORTER_ASSERT(reporter, false); diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp index 0843cbf760c0..d02c825e38bb 100644 --- a/tests/GrPorterDuffTest.cpp +++ b/tests/GrPorterDuffTest.cpp @@ -35,6 +35,7 @@ #include "src/gpu/ganesh/effects/GrPorterDuffXferProcessor.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/ManagedBackendTexture.h" #include @@ -1086,7 +1087,7 @@ DEF_GANESH_TEST(PorterDuffNoDualSourceBlending, reporter, options, CtsEnforcemen GrContextOptions opts = options; opts.fSuppressDualSourceBlending = true; sk_gpu_test::GrContextFactory mockFactory(opts); - auto ctx = mockFactory.get(sk_gpu_test::GrContextFactory::kMock_ContextType); + auto ctx = mockFactory.get(skgpu::ContextType::kMock); if (!ctx) { SK_ABORT("Failed to create mock context without ARB_blend_func_extended."); } diff --git a/tests/GrSurfaceTest.cpp b/tests/GrSurfaceTest.cpp index d6489c0fd069..a6cd8444f39d 100644 --- a/tests/GrSurfaceTest.cpp +++ b/tests/GrSurfaceTest.cpp @@ -53,6 +53,7 @@ #include "src/gpu/ganesh/TestFormatColorTypeCombination.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/ManagedBackendTexture.h" #include @@ -280,10 +281,10 @@ DEF_GANESH_TEST(InitialTextureClear, reporter, baseOptions, CtsEnforcement::kApi SkISize desc; desc.fWidth = desc.fHeight = kSize; - for (int ct = 0; ct < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++ct) { + for (int ct = 0; ct < skgpu::kContextTypeCount; ++ct) { sk_gpu_test::GrContextFactory factory(options); - auto contextType = static_cast(ct); - if (!sk_gpu_test::GrContextFactory::IsRenderingContext(contextType)) { + auto contextType = static_cast(ct); + if (!skgpu::IsRenderingContext(contextType)) { continue; } auto dContext = factory.get(contextType); diff --git a/tests/GradientTest.cpp b/tests/GradientTest.cpp index 0552e6014371..0790d7dbfa1d 100644 --- a/tests/GradientTest.cpp +++ b/tests/GradientTest.cpp @@ -15,17 +15,21 @@ #include "include/core/SkImageInfo.h" #include "include/core/SkMatrix.h" #include "include/core/SkPaint.h" +#include "include/core/SkPixmap.h" #include "include/core/SkPoint.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" #include "include/core/SkScalar.h" #include "include/core/SkShader.h" +#include "include/core/SkSize.h" #include "include/core/SkSurface.h" #include "include/core/SkSurfaceProps.h" #include "include/core/SkTileMode.h" #include "include/core/SkTypes.h" #include "include/effects/SkGradientShader.h" +#include "include/gpu/GpuTypes.h" #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "include/gpu/mock/GrMockTypes.h" #include "include/private/base/SkTemplates.h" #include "include/private/base/SkTo.h" @@ -35,12 +39,20 @@ #include "src/gpu/ganesh/GrFPArgs.h" #include "src/gpu/ganesh/GrFragmentProcessors.h" #include "src/shaders/SkShaderBase.h" +#include "tests/CtsEnforcement.h" #include "tests/Test.h" #include #include #include +// #if defined(SK_GRAPHITE) +// #include "include/gpu/graphite/Context.h" +// #include "include/gpu/graphite/Surface.h" +// #endif + +struct GrContextOptions; + using namespace skia_private; // https://code.google.com/p/chromium/issues/detail?id=448299 @@ -612,6 +624,67 @@ static void test_sweep_fuzzer(skiatest::Reporter*) { } } +// Draw a sweep gradient in a translated canvas such that the colors in the center pixels of the +// gradient will be evaluated at x = 0. The gradient implementation must not call atan2(y, x) with +// x == 0, as this will result in undefined behavior and likely incorrect results. +// https://crbug.com/1468916 +void test_sweep_gradient_zero_x(skiatest::Reporter* reporter, SkSurface* surface) { + // The gradient drawn has yellow for the first half and blue for the second half, using hard + // stops and running clockwise from (1, 0), so we should draw a rectangle with a blue top-half + // and yellow bottom-half. + constexpr float pts[4] = {0.0f, 0.5f, 0.5f, 1.0f}; + constexpr SkColor colors[4] = {SK_ColorYELLOW, SK_ColorYELLOW, SK_ColorBLUE, SK_ColorBLUE}; + SkCanvas* canvas = surface->getCanvas(); + canvas->save(); + canvas->translate(2.5f, 2.5f); + SkPaint paint; + paint.setShader(SkGradientShader::MakeSweep(0.0f, 0.0f, colors, pts, 4)); + canvas->drawRect(SkRect::MakeXYWH(-2.5f, -2.5f, 5.0f, 5.0f), paint); + canvas->restore(); + + // Read pixels. + SkBitmap bitmap; + SkPixmap pixmap; + bitmap.allocPixels(surface->imageInfo()); + SkAssertResult(bitmap.peekPixels(&pixmap)); + if (!surface->readPixels(pixmap, 0, 0)) { + ERRORF(reporter, "readPixels failed"); + return; + } + + // Check the results. + SkColor4f topColor = pixmap.getColor4f(2, 0); + SkColor4f bottomColor = pixmap.getColor4f(2, 4); + REPORTER_ASSERT(reporter, topColor == SkColors::kBlue); + REPORTER_ASSERT(reporter, bottomColor == SkColors::kYellow); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(TestSweepGradientZeroXGanesh, + reporter, + contextInfo, + CtsEnforcement::kNextRelease) { + SkImageInfo ii = SkImageInfo::Make(SkISize::Make(5, 5), + SkColorType::kRGBA_8888_SkColorType, + SkAlphaType::kPremul_SkAlphaType); + GrDirectContext* context = contextInfo.directContext(); + sk_sp surface = SkSurfaces::RenderTarget(context, skgpu::Budgeted::kYes, ii); + test_sweep_gradient_zero_x(reporter, surface.get()); +} + +// TODO: Fix this bug in Graphite as well. +// #if defined(SK_GRAPHITE) +// DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(TestSweepGradientZeroXGraphite, reporter, context, +// CtsEnforcement::kNextRelease) { +// using namespace skgpu::graphite; +// SkImageInfo ii = SkImageInfo::Make(SkISize::Make(5, 5), +// SkColorType::kRGBA_8888_SkColorType, +// SkAlphaType::kPremul_SkAlphaType); +// std::unique_ptr recorder = context->makeRecorder(); +// sk_sp surface = SkSurfaces::RenderTarget(recorder.get(), ii); +// test_sweep_gradient_zero_x(reporter, surface.get()); +// } +// #endif + DEF_TEST(Gradient, reporter) { TestGradientShaders(reporter); TestGradientOptimization(reporter); diff --git a/tests/HashTest.cpp b/tests/HashTest.cpp index 406a80b151b0..0f14acb2f18e 100644 --- a/tests/HashTest.cpp +++ b/tests/HashTest.cpp @@ -53,6 +53,21 @@ DEF_TEST(HashMap, r) { map.set(i, 2.0*i); } + // Test walking the map with foreach(const K&, V) + map.foreach([&](const int& key, double value) { + REPORTER_ASSERT(r, key * 2 == value); + }); + + // Test walking the map with foreach(const K&, V*) + map.foreach([&](const int& key, double* value) { + REPORTER_ASSERT(r, key * 2 == *value); + }); + + // Test walking the map with foreach(const Pair&) + map.foreach([&](const THashMap::Pair& pair) { + REPORTER_ASSERT(r, pair.first * 2 == pair.second); + }); + // Test walking the map with iterators, using preincrement (++iter). for (THashMap::Iter iter = map.begin(); iter != map.end(); ++iter) { REPORTER_ASSERT(r, iter->first * 2 == (*iter).second); diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp index d861b8263c87..9d73774c9567 100644 --- a/tests/ImageFilterTest.cpp +++ b/tests/ImageFilterTest.cpp @@ -39,10 +39,7 @@ #include "include/effects/SkImageFilters.h" #include "include/effects/SkPerlinNoiseShader.h" #include "include/gpu/GpuTypes.h" -#include "include/gpu/GrDirectContext.h" -#include "include/gpu/GrRecordingContext.h" #include "include/gpu/GrTypes.h" -#include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "include/private/base/SkTArray.h" #include "include/private/base/SkTo.h" #include "src/core/SkImageFilterTypes.h" @@ -51,15 +48,31 @@ #include "src/core/SkSpecialImage.h" #include "src/core/SkSpecialSurface.h" #include "src/effects/colorfilters/SkColorFilterBase.h" -#include "src/gpu/ganesh/GrCaps.h" -#include "src/gpu/ganesh/GrRecordingContextPriv.h" -#include "src/gpu/ganesh/image/GrImageUtils.h" -#include "src/gpu/ganesh/image/SkSpecialImage_Ganesh.h" +#include "src/effects/imagefilters/SkCropImageFilter.h" +#include "src/image/SkImage_Base.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" #include "tools/Resources.h" #include "tools/ToolUtils.h" +#if defined(SK_GANESH) +#include "include/gpu/GrDirectContext.h" +#include "include/gpu/GrRecordingContext.h" +#include "include/gpu/ganesh/SkImageGanesh.h" +#include "include/gpu/ganesh/SkSurfaceGanesh.h" +#include "src/gpu/ganesh/GrCaps.h" +#include "src/gpu/ganesh/GrRecordingContextPriv.h" +#include "src/gpu/ganesh/image/GrImageUtils.h" +#include "src/gpu/ganesh/image/SkImage_GaneshBase.h" +#include "src/gpu/ganesh/image/SkSpecialImage_Ganesh.h" +#endif + +#if defined(SK_GRAPHITE) +#include "include/gpu/graphite/Context.h" +#include "include/gpu/graphite/Image.h" +#include "include/gpu/graphite/Surface.h" +#endif + #include #include #include @@ -80,56 +93,27 @@ static constexpr GrSurfaceOrigin kTestSurfaceOrigin = kTopLeft_GrSurfaceOrigin; class MatrixTestImageFilter : public SkImageFilter_Base { public: - static sk_sp Make(skiatest::Reporter* reporter, - const SkMatrix& expectedMatrix) { - return sk_sp(new MatrixTestImageFilter(reporter, expectedMatrix)); - } - -protected: - sk_sp onFilterImage(const skif::Context& ctx, SkIPoint* offset) const override { - REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); - offset->fX = offset->fY = 0; - return sk_ref_sp(ctx.sourceImage()); - } - - void flatten(SkWriteBuffer& buffer) const override { - SkDEBUGFAIL("Should never get here"); - } + MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expectedMatrix) + : SkImageFilter_Base(nullptr, 0, nullptr) + , fReporter(reporter) + , fExpectedMatrix(expectedMatrix) {} private: - SK_FLATTENABLE_HOOKS(MatrixTestImageFilter) + Factory getFactory() const override { + SK_ABORT("Does not participate in serialization"); + return nullptr; + } + const char* getTypeName() const override { return "MatrixTestImageFilter"; } - MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expectedMatrix) - : INHERITED(nullptr, 0, nullptr) - , fReporter(reporter) - , fExpectedMatrix(expectedMatrix) { + skif::FilterResult onFilterImage(const skif::Context& ctx) const override { + REPORTER_ASSERT(fReporter, ctx.mapping().layerMatrix() == fExpectedMatrix); + return ctx.source(); } skiatest::Reporter* fReporter; SkMatrix fExpectedMatrix; - - using INHERITED = SkImageFilter_Base; -}; - -class FailImageFilter : public SkImageFilter_Base { -public: - FailImageFilter() : INHERITED(nullptr, 0, nullptr) { } - - sk_sp onFilterImage(const skif::Context& ctx, SkIPoint* offset) const override { - return nullptr; - } - - SK_FLATTENABLE_HOOKS(FailImageFilter) - -private: - using INHERITED = SkImageFilter_Base; }; -sk_sp FailImageFilter::CreateProc(SkReadBuffer& buffer) { - SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 0); - return sk_sp(new FailImageFilter()); -} - void draw_gradient_circle(SkCanvas* canvas, int width, int height) { SkScalar x = SkIntToScalar(width / 2); SkScalar y = SkIntToScalar(height / 2); @@ -288,35 +272,8 @@ class FilterList { TArray fFilters; }; -class FixedBoundsImageFilter : public SkImageFilter_Base { -public: - FixedBoundsImageFilter(const SkIRect& bounds) - : INHERITED(nullptr, 0, nullptr), fBounds(bounds) {} - -private: - Factory getFactory() const override { return nullptr; } - const char* getTypeName() const override { return nullptr; } - - sk_sp onFilterImage(const skif::Context&, SkIPoint* offset) const override { - return nullptr; - } - - SkIRect onFilterBounds(const SkIRect&, const SkMatrix&, - MapDirection, const SkIRect*) const override { - return fBounds; - } - - SkIRect fBounds; - - using INHERITED = SkImageFilter_Base; -}; } // namespace -sk_sp MatrixTestImageFilter::CreateProc(SkReadBuffer& buffer) { - SkDEBUGFAIL("Should never get here"); - return nullptr; -} - static skif::Context make_context(const SkIRect& out, const SkSpecialImage* src) { skif::Mapping mapping{SkMatrix::I()}; skif::LayerSpace desiredOutput{out}; @@ -410,16 +367,6 @@ static sk_sp create_empty_special_surface(GrRecordingContext* } } -static sk_sp create_surface(GrRecordingContext* rContext, int width, int height) { - const SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); - if (rContext) { - return SkSurfaces::RenderTarget( - rContext, skgpu::Budgeted::kNo, info, 0, kTestSurfaceOrigin, nullptr); - } else { - return SkSurfaces::Raster(info); - } -} - static sk_sp create_empty_special_image(GrRecordingContext* rContext, int widthHeight) { sk_sp surf(create_empty_special_surface(rContext, widthHeight)); @@ -579,13 +526,14 @@ static bool special_image_to_bitmap(GrDirectContext* dContext, const SkSpecialIm static void test_negative_blur_sigma(skiatest::Reporter* reporter, GrDirectContext* dContext) { - // Check that SkBlurImageFilter will accept a negative sigma, either in - // the given arguments or after CTM application. + // Check that SkBlurImageFilter will reject a negative sigma on creation, but properly uses the + // absolute value of the mapped sigma after CTM application. static const int kWidth = 32, kHeight = 32; static const SkScalar kBlurSigma = SkIntToScalar(5); sk_sp positiveFilter(SkImageFilters::Blur(kBlurSigma, kBlurSigma, nullptr)); sk_sp negativeFilter(SkImageFilters::Blur(-kBlurSigma, kBlurSigma, nullptr)); + REPORTER_ASSERT(reporter, !negativeFilter); sk_sp gradient = make_gradient_circle(kWidth, kHeight).asImage(); sk_sp imgSrc; @@ -599,57 +547,31 @@ static void test_negative_blur_sigma(skiatest::Reporter* reporter, SkIPoint offset; skif::Context ctx = make_context(32, 32, imgSrc.get()); - sk_sp positiveResult1( + sk_sp positiveResult( as_IFB(positiveFilter)->filterImage(ctx).imageAndOffset(ctx, &offset)); - REPORTER_ASSERT(reporter, positiveResult1); - - sk_sp negativeResult1( - as_IFB(negativeFilter)->filterImage(ctx).imageAndOffset(ctx, &offset)); - REPORTER_ASSERT(reporter, negativeResult1); + REPORTER_ASSERT(reporter, positiveResult); SkMatrix negativeScale; negativeScale.setScale(-SK_Scalar1, SK_Scalar1); skif::Context negativeCTX = ctx.withNewMapping(skif::Mapping(negativeScale)); - sk_sp negativeResult2( + sk_sp negativeResult( as_IFB(positiveFilter)->filterImage(negativeCTX).imageAndOffset(ctx, &offset)); - REPORTER_ASSERT(reporter, negativeResult2); - - sk_sp positiveResult2( - as_IFB(negativeFilter)->filterImage(negativeCTX).imageAndOffset(ctx, &offset)); - REPORTER_ASSERT(reporter, positiveResult2); + REPORTER_ASSERT(reporter, negativeResult); - SkBitmap positiveResultBM1, positiveResultBM2; - SkBitmap negativeResultBM1, negativeResultBM2; + SkBitmap positiveResultBM; + SkBitmap negativeResultBM; - REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, positiveResult1.get(), - &positiveResultBM1)); - REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, positiveResult2.get(), - &positiveResultBM2)); - REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, negativeResult1.get(), - &negativeResultBM1)); - REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, negativeResult2.get(), - &negativeResultBM2)); + REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, positiveResult.get(), + &positiveResultBM)); + REPORTER_ASSERT(reporter, special_image_to_bitmap(dContext, negativeResult.get(), + &negativeResultBM)); for (int y = 0; y < kHeight; y++) { - int diffs = memcmp(positiveResultBM1.getAddr32(0, y), - negativeResultBM1.getAddr32(0, y), - positiveResultBM1.rowBytes()); - REPORTER_ASSERT(reporter, !diffs); - if (diffs) { - break; - } - diffs = memcmp(positiveResultBM1.getAddr32(0, y), - negativeResultBM2.getAddr32(0, y), - positiveResultBM1.rowBytes()); - REPORTER_ASSERT(reporter, !diffs); - if (diffs) { - break; - } - diffs = memcmp(positiveResultBM1.getAddr32(0, y), - positiveResultBM2.getAddr32(0, y), - positiveResultBM1.rowBytes()); + int diffs = memcmp(positiveResultBM.getAddr32(0, y), + negativeResultBM.getAddr32(0, y), + positiveResultBM.rowBytes()); REPORTER_ASSERT(reporter, !diffs); if (diffs) { break; @@ -806,7 +728,7 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageFilterZeroBlurSigma_Gpu, // downstream filter that affects transparent black still does so even with a nullptr input. static void test_fail_affects_transparent_black(skiatest::Reporter* reporter, GrDirectContext* dContext) { - sk_sp failFilter(new FailImageFilter()); + sk_sp failFilter = SkImageFilters::Empty(); sk_sp source(create_empty_special_image(dContext, 5)); skif::Context ctx = make_context(1, 1, source.get()); @@ -978,8 +900,14 @@ DEF_TEST(ImageFilterShadowThenBlurBounds, reporter) { sk_sp filter2(make_blur(std::move(filter1))); SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); - // Drop shadow offset pads 1px on top-left for linear filtering - SkIRect expectedBounds = SkIRect::MakeXYWH(-134, -134, 237, 237); + // NOTE: 'bounds' is used as both the desired output and the available content bounds. + // The outer blur requires [-3,-3,103,103] for its input ('bounds' outset by 3*sigma). + // However, the blend at the root of the drop shadow dag is able to realize that it will not + // output anything to the left or above (0,0) so the drop shadow's blur and offset are only + // applied to [0,0,103,103], which is simply an outset by 31px (3*sigma + 1 for bilerp) and + // translate by -100,-100. This produces [-131,-131,34,34] which is then unioned with the + // original foreground bounds of the drop shadow to produce 'expectedBounds': + SkIRect expectedBounds = SkIRect::MakeLTRB(-131, -131, 103, 103); bounds = filter2->filterBounds(bounds, SkMatrix::I(), SkImageFilter::kReverse_MapDirection, &bounds); @@ -1309,7 +1237,7 @@ DEF_TEST(ImageFilterMatrix, reporter) { SkCanvas* recordingCanvas = recorder.beginRecording(100, 100, &factory); SkPaint paint; - paint.setImageFilter(MatrixTestImageFilter::Make(reporter, expectedMatrix)); + paint.setImageFilter(sk_sp(new MatrixTestImageFilter(reporter, expectedMatrix))); recordingCanvas->saveLayer(nullptr, &paint); SkPaint solidPaint; solidPaint.setColor(0xFFFFFFFF); @@ -1786,8 +1714,16 @@ DEF_TEST(ImageFilterBlurLargeImage, reporter) { test_large_blur_input(reporter, surface->getCanvas()); } -static void test_make_with_filter(skiatest::Reporter* reporter, GrRecordingContext* rContext) { - sk_sp surface(create_surface(rContext, 192, 128)); +static void test_make_with_filter( + skiatest::Reporter* reporter, + const std::function(int width, int height)>& createSurface, + const std::function(sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset)>& makeWithFilter) { + sk_sp surface(createSurface(192, 128)); surface->getCanvas()->clear(SK_ColorRED); SkPaint bluePaint; bluePaint.setColor(SK_ColorBLUE); @@ -1801,44 +1737,36 @@ static void test_make_with_filter(skiatest::Reporter* reporter, GrRecordingConte SkIPoint offset; sk_sp result; - result = sourceImage->makeWithFilter(rContext, nullptr, subset, clipBounds, - &outSubset, &offset); - REPORTER_ASSERT(reporter, !result); + result = makeWithFilter(sourceImage, nullptr, subset, clipBounds, &outSubset, &offset); + REPORTER_ASSERT(reporter, !result); // filter is required - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, clipBounds, - nullptr, &offset); - REPORTER_ASSERT(reporter, !result); + result = makeWithFilter(sourceImage, filter.get(), subset, clipBounds, nullptr, &offset); + REPORTER_ASSERT(reporter, !result); // outSubset is required - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, clipBounds, - &outSubset, nullptr); - REPORTER_ASSERT(reporter, !result); + result = makeWithFilter(sourceImage, filter.get(), subset, clipBounds, &outSubset, nullptr); + REPORTER_ASSERT(reporter, !result); // offset is required SkIRect bigSubset = SkIRect::MakeXYWH(-10000, -10000, 20000, 20000); - result = sourceImage->makeWithFilter(rContext, filter.get(), bigSubset, clipBounds, - &outSubset, &offset); - REPORTER_ASSERT(reporter, !result); + result = makeWithFilter(sourceImage, filter.get(), bigSubset, clipBounds, &outSubset, &offset); + REPORTER_ASSERT(reporter, !result); // subset needs to be w/in source's bounds - SkIRect empty = SkIRect::MakeEmpty(); - result = sourceImage->makeWithFilter(rContext, filter.get(), empty, clipBounds, - &outSubset, &offset); - REPORTER_ASSERT(reporter, !result); + const SkIRect kEmpty = SkIRect::MakeEmpty(); + result = makeWithFilter(sourceImage, filter.get(), kEmpty, clipBounds, &outSubset, &offset); + REPORTER_ASSERT(reporter, !result); // subset can't be empty - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, empty, - &outSubset, &offset); - REPORTER_ASSERT(reporter, !result); + result = makeWithFilter(sourceImage, filter.get(), subset, kEmpty, &outSubset, &offset); + REPORTER_ASSERT(reporter, !result); // clipBounds can't be empty - SkIRect leftField = SkIRect::MakeXYWH(-1000, 0, 100, 100); - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, leftField, - &outSubset, &offset); + const SkIRect kLeftField = SkIRect::MakeXYWH(-1000, 0, 100, 100); + result = makeWithFilter(sourceImage, filter.get(), subset, kLeftField, &outSubset, &offset); REPORTER_ASSERT(reporter, !result); - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, clipBounds, - &outSubset, &offset); + result = makeWithFilter(sourceImage, filter.get(), subset, clipBounds, &outSubset, &offset); REPORTER_ASSERT(reporter, result); REPORTER_ASSERT(reporter, result->bounds().contains(outSubset)); SkIRect destRect = SkIRect::MakeXYWH(offset.x(), offset.y(), - outSubset.width(), outSubset.height()); + outSubset.width(), outSubset.height()); REPORTER_ASSERT(reporter, clipBounds.contains(destRect)); // In GPU-mode, this case creates a special image with a backing size that differs from @@ -1848,30 +1776,149 @@ static void test_make_with_filter(skiatest::Reporter* reporter, GrRecordingConte subset.setXYWH(0, 0, 160, 90); filter = SkImageFilters::Blend(SkBlendMode::kSrcOver, nullptr); - result = sourceImage->makeWithFilter(rContext, filter.get(), subset, clipBounds, - &outSubset, &offset); + result = makeWithFilter(sourceImage, filter.get(), subset, clipBounds, &outSubset, &offset); REPORTER_ASSERT(reporter, result); - // In GPU-mode, we want the result image (and all intermediate steps) to have used the same + // In Ganesh, we want the result image (and all intermediate steps) to have used the same // origin as the original surface. - if (rContext) { - auto [proxyView, _] = skgpu::ganesh::AsView(rContext, result, GrMipmapped::kNo); - REPORTER_ASSERT(reporter, proxyView && proxyView.origin() == kTestSurfaceOrigin); + if (result && as_IB(result)->isGaneshBacked()) { + SkImage_GaneshBase* base = static_cast(result.get()); + REPORTER_ASSERT(reporter, base->origin() == kTestSurfaceOrigin); } } } DEF_TEST(ImageFilterMakeWithFilter, reporter) { - test_make_with_filter(reporter, nullptr); + auto createRasterSurface = [](int width, int height) -> sk_sp { + const SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); + return SkSurfaces::Raster(info); + }; + + auto raster = [](sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) -> sk_sp { + return SkImages::MakeWithFilter(std::move(src), + filter, + subset, + clipBounds, + outSubset, + offset); + }; + + test_make_with_filter(reporter, createRasterSurface, raster); +} + +// TODO(b/293326072): remove when SkImage::makeWithFilter is removed +DEF_TEST(ImageFilterMakeWithFilter_LegacyRaster, reporter) { + auto createRasterSurface = [](int width, int height) -> sk_sp { + const SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); + return SkSurfaces::Raster(info); + }; + + auto legacy = [](sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) -> sk_sp { + return src->makeWithFilter(nullptr, filter, subset, clipBounds, outSubset, offset); + }; + + test_make_with_filter(reporter, createRasterSurface, legacy); } -DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageFilterMakeWithFilter_Gpu, +// TODO(b/293326072): remove when SkImage::makeWithFilter is removed +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageFilterMakeWithFilter_LegacyGanesh, reporter, ctxInfo, CtsEnforcement::kNever) { - test_make_with_filter(reporter, ctxInfo.directContext()); + GrRecordingContext* rContext = ctxInfo.directContext(); + + auto createGaneshSurface = [rContext](int width, int height) -> sk_sp { + const SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); + return SkSurfaces::RenderTarget( + rContext, skgpu::Budgeted::kNo, info, 0, kTestSurfaceOrigin, nullptr); + }; + + auto legacy = [rContext](sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) -> sk_sp { + return src->makeWithFilter(rContext, filter, subset, clipBounds, outSubset, offset); + }; + + test_make_with_filter(reporter, createGaneshSurface, legacy); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageFilterMakeWithFilter_Ganesh, + reporter, + ctxInfo, + CtsEnforcement::kNever) { + GrRecordingContext* rContext = ctxInfo.directContext(); + + auto createGaneshSurface = [rContext](int width, int height) -> sk_sp { + const SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); + return SkSurfaces::RenderTarget( + rContext, skgpu::Budgeted::kNo, info, 0, kTestSurfaceOrigin, nullptr); + }; + + auto ganesh = [rContext](sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) -> sk_sp { + return SkImages::MakeWithFilter(rContext, + std::move(src), + filter, + subset, + clipBounds, + outSubset, + offset); + }; + + test_make_with_filter(reporter, createGaneshSurface, ganesh); +} + +#if defined(SK_GRAPHITE) + +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageFilterMakeWithFilter_Graphite, + reporter, + context, + CtsEnforcement::kNextRelease) { + std::unique_ptr recorder = + context->makeRecorder(ToolUtils::CreateTestingRecorderOptions()); + + auto createGraphiteSurface = [r = recorder.get()](int width, int height) -> sk_sp { + const SkImageInfo info = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType); + return SkSurfaces::RenderTarget(r, info); + }; + + auto graphite = [r = recorder.get()](sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset) -> sk_sp { + return SkImages::MakeWithFilter(r, + std::move(src), + filter, + subset, + clipBounds, + outSubset, + offset); + }; + + test_make_with_filter(reporter, createGraphiteSurface, graphite); } +#endif + DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageFilterHugeBlur_Gpu, reporter, ctxInfo, @@ -1944,8 +1991,8 @@ DEF_TEST(ImageFilterComplexCTM, reporter) { DEF_TEST(XfermodeImageFilterBounds, reporter) { SkIRect background_rect = SkIRect::MakeXYWH(0, 0, 100, 100); SkIRect foreground_rect = SkIRect::MakeXYWH(50, 50, 100, 100); - sk_sp background(new FixedBoundsImageFilter(background_rect)); - sk_sp foreground(new FixedBoundsImageFilter(foreground_rect)); + sk_sp background = SkMakeCropImageFilter(SkRect::Make(background_rect), nullptr); + sk_sp foreground = SkMakeCropImageFilter(SkRect::Make(foreground_rect), nullptr); SkIRect expectedBounds[kSkBlendModeCount]; // Expect union of input rects by default. @@ -1967,8 +2014,9 @@ DEF_TEST(XfermodeImageFilterBounds, reporter) { expectedBounds[static_cast(SkBlendMode::kDstATop)] = foreground_rect; expectedBounds[static_cast(SkBlendMode::kModulate)] = intersection; - // The value of this variable doesn't matter because we use inputs with fixed bounds. - SkIRect src = SkIRect::MakeXYWH(11, 22, 33, 44); + // Use a very large input bounds so that the crop rects stored in 'background' and 'foreground' + // aren't restricted. + SkIRect src = SkRectPriv::MakeILarge(); for (int i = 0; i < kSkBlendModeCount; ++i) { sk_sp xfermode(SkImageFilters::Blend(static_cast(i), background, foreground, nullptr)); @@ -1978,8 +2026,10 @@ DEF_TEST(XfermodeImageFilterBounds, reporter) { } // Test empty intersection. - sk_sp background2(new FixedBoundsImageFilter(SkIRect::MakeXYWH(0, 0, 20, 20))); - sk_sp foreground2(new FixedBoundsImageFilter(SkIRect::MakeXYWH(40, 40, 50, 50))); + sk_sp background2 = + SkMakeCropImageFilter(SkRect::MakeXYWH(0, 0, 20, 20), nullptr); + sk_sp foreground2 = + SkMakeCropImageFilter(SkRect::MakeXYWH(40, 40, 50, 50), nullptr); sk_sp xfermode(SkImageFilters::Blend( SkBlendMode::kSrcIn, std::move(background2), std::move(foreground2), nullptr)); auto bounds = xfermode->filterBounds(src, SkMatrix::I(), @@ -2040,8 +2090,10 @@ static void test_arithmetic_bounds(skiatest::Reporter* reporter, float k1, float const SkIRect* crop, const SkIRect& expected) { sk_sp arithmetic( SkImageFilters::Arithmetic(k1, k2, k3, k4, false, background, foreground, crop)); - // The value of the input rect doesn't matter because we use inputs with fixed bounds. - SkIRect bounds = arithmetic->filterBounds(SkIRect::MakeXYWH(11, 22, 33, 44), SkMatrix::I(), + // Use a very large input bounds so that the crop rects stored in 'background' and 'foreground' + // aren't restricted. + SkIRect src = SkRectPriv::MakeILarge(); + SkIRect bounds = arithmetic->filterBounds(src, SkMatrix::I(), SkImageFilter::kForward_MapDirection, nullptr); REPORTER_ASSERT(reporter, expected == bounds); } @@ -2049,8 +2101,8 @@ static void test_arithmetic_bounds(skiatest::Reporter* reporter, float k1, float static void test_arithmetic_combinations(skiatest::Reporter* reporter, float v) { SkIRect bgRect = SkIRect::MakeXYWH(0, 0, 100, 100); SkIRect fgRect = SkIRect::MakeXYWH(50, 50, 100, 100); - sk_sp background(new FixedBoundsImageFilter(bgRect)); - sk_sp foreground(new FixedBoundsImageFilter(fgRect)); + sk_sp background = SkMakeCropImageFilter(SkRect::Make(bgRect), nullptr); + sk_sp foreground = SkMakeCropImageFilter(SkRect::Make(fgRect), nullptr); SkIRect unionRect = bgRect; unionRect.join(fgRect); diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp index 4edc46cd3d19..3b3d0fe0b941 100644 --- a/tests/ImageTest.cpp +++ b/tests/ImageTest.cpp @@ -54,7 +54,7 @@ #include "src/core/SkBitmapCache.h" #include "src/core/SkColorSpacePriv.h" #include "src/core/SkImagePriv.h" -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "src/gpu/ResourceKey.h" #include "src/gpu/ganesh/GrCaps.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" @@ -658,7 +658,7 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(UnpremulTextureImage, DEF_GANESH_TEST(AbandonedContextImage, reporter, options, CtsEnforcement::kApiLevel_T) { using Factory = sk_gpu_test::GrContextFactory; - for (int ct = 0; ct < Factory::kContextTypeCnt; ++ct) { + for (int ct = 0; ct < skgpu::kContextTypeCount; ++ct) { auto type = static_cast(ct); std::unique_ptr factory(new Factory); if (!factory->get(type)) { @@ -922,10 +922,10 @@ struct TextureReleaseChecker { } }; -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkImage_NewFromTextureRelease, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { const int kWidth = 10; const int kHeight = 10; @@ -980,9 +980,9 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, static void test_cross_context_image(skiatest::Reporter* reporter, const GrContextOptions& options, const char* testName, std::function(GrDirectContext*)> imageMaker) { - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { GrContextFactory testFactory(options); - GrContextFactory::ContextType ctxType = static_cast(i); + skgpu::ContextType ctxType = static_cast(i); ContextInfo ctxInfo = testFactory.getContextInfo(ctxType); auto dContext = ctxInfo.directContext(); if (!dContext) { @@ -1164,9 +1164,9 @@ DEF_GANESH_TEST(SkImage_CrossContextGrayAlphaConfigs, SkAutoPixmapStorage pixmap; pixmap.alloc(SkImageInfo::Make(4, 4, ct, kPremul_SkAlphaType)); - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { GrContextFactory testFactory(options); - GrContextFactory::ContextType ctxType = static_cast(i); + skgpu::ContextType ctxType = static_cast(i); ContextInfo ctxInfo = testFactory.getContextInfo(ctxType); auto dContext = ctxInfo.directContext(); if (!dContext || !dContext->priv().caps()->crossContextTextureSupport()) { @@ -1187,10 +1187,7 @@ DEF_GANESH_TEST(SkImage_CrossContextGrayAlphaConfigs, } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(makeBackendTexture, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(makeBackendTexture, reporter, ctxInfo, CtsEnforcement::kApiLevel_T) { auto context = ctxInfo.directContext(); sk_gpu_test::TestContext* testContext = ctxInfo.testContext(); sk_sp proxy = context->threadSafeProxy(); diff --git a/tests/JpegGainmapTest.cpp b/tests/JpegGainmapTest.cpp index 1c2bc5a398c9..8b6fae7a4b51 100644 --- a/tests/JpegGainmapTest.cpp +++ b/tests/JpegGainmapTest.cpp @@ -568,7 +568,6 @@ DEF_TEST(AndroidCodec_gainmapInfoEncode, r) { } } -#if defined(SK_ENABLE_SKSL) // Render an applied gainmap. static SkBitmap render_gainmap(const SkImageInfo& renderInfo, float renderHdrRatio, @@ -630,7 +629,6 @@ static SkColor4f render_gainmap_pixel(float renderHdrRatio, testPixelInfo, renderHdrRatio, baseBitmap, gainmapBitmap, gainmapInfo, x, y); return testPixelBitmap.getColor4f(0, 0); } -#endif DEF_TEST(AndroidCodec_jpegGainmapTranscode, r) { const char* path = "images/iphone_13_pro.jpeg"; @@ -692,7 +690,6 @@ DEF_TEST(AndroidCodec_jpegGainmapTranscode, r) { REPORTER_ASSERT( r, approx_eq(gainmapInfo[0].fHdrRatioMax, gainmapInfo[1].fHdrRatioMax, kEpsilon)); -#if defined(SK_ENABLE_SKSL) // Render a few pixels and verify that they come out the same. Rendering requires SkSL. const struct Rec { int x; @@ -732,7 +729,6 @@ DEF_TEST(AndroidCodec_jpegGainmapTranscode, r) { REPORTER_ASSERT(r, approx_eq_rgb(p0, p1, kEpsilon)); } -#endif // !defined(SK_ENABLE_SKSL) } } #endif // !defined(SK_ENABLE_NDK_IMAGES) diff --git a/tests/LazyProxyTest.cpp b/tests/LazyProxyTest.cpp index e74cab1e52d6..34be36889c8e 100644 --- a/tests/LazyProxyTest.cpp +++ b/tests/LazyProxyTest.cpp @@ -76,7 +76,7 @@ class LazyProxyTest final : public GrOnFlushCallbackObject { } bool preFlush(GrOnFlushResourceProvider* onFlushRP) override { -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) if (onFlushRP->failFlushTimeCallbacks()) { return false; } diff --git a/tests/MemsetTest.cpp b/tests/MemsetTest.cpp index 0802153b76fe..180d3bb8cda2 100644 --- a/tests/MemsetTest.cpp +++ b/tests/MemsetTest.cpp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -#include "src/core/SkOpts.h" +#include "src/core/SkMemset.h" #include "tests/Test.h" #include diff --git a/tests/PDFPrimitivesTest.cpp b/tests/PDFPrimitivesTest.cpp index 95413205163f..874db3d348ba 100644 --- a/tests/PDFPrimitivesTest.cpp +++ b/tests/PDFPrimitivesTest.cpp @@ -13,7 +13,6 @@ #include "include/core/SkCanvas.h" #include "include/core/SkColor.h" #include "include/core/SkDocument.h" -#include "include/core/SkFlattenable.h" #include "include/core/SkFont.h" #include "include/core/SkFontStyle.h" #include "include/core/SkFontTypes.h" @@ -37,8 +36,6 @@ #include "src/base/SkRandom.h" #include "src/core/SkImageFilterTypes.h" #include "src/core/SkImageFilter_Base.h" -#include "src/core/SkReadBuffer.h" -#include "src/core/SkSpecialImage.h" #include "src/pdf/SkClusterator.h" #include "src/pdf/SkPDFDocumentPriv.h" #include "src/pdf/SkPDFFont.h" @@ -276,34 +273,25 @@ namespace { class TestImageFilter : public SkImageFilter_Base { public: - static sk_sp Make(bool visited = false) { - return sk_sp(new TestImageFilter(visited)); - } + TestImageFilter() : SkImageFilter_Base(nullptr, 0, nullptr), fVisited(false) {} bool visited() const { return fVisited; } -protected: - sk_sp onFilterImage(const skif::Context& ctx, SkIPoint* offset) const override { - fVisited = true; - offset->fX = offset->fY = 0; - return sk_ref_sp(ctx.sourceImage()); +private: + Factory getFactory() const override { + SK_ABORT("Does not participate in serialization"); + return nullptr; } + const char* getTypeName() const override { return "TestImageFilter"; } -private: - SK_FLATTENABLE_HOOKS(TestImageFilter) - TestImageFilter(bool visited) : INHERITED(nullptr, 0, nullptr), fVisited(visited) {} + skif::FilterResult onFilterImage(const skif::Context& ctx) const override { + fVisited = true; + return ctx.source(); + } mutable bool fVisited; - - using INHERITED = SkImageFilter_Base; }; -sk_sp TestImageFilter::CreateProc(SkReadBuffer& buffer) { - SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 0); - bool visited = buffer.readBool(); - return TestImageFilter::Make(visited); -} - } // namespace // Check that PDF rendering of image filters successfully falls back to @@ -314,7 +302,7 @@ DEF_TEST(SkPDF_ImageFilter, reporter) { auto doc = SkPDF::MakeDocument(&stream); SkCanvas* canvas = doc->beginPage(100.0f, 100.0f); - sk_sp filter(TestImageFilter::Make()); + sk_sp filter(new TestImageFilter()); // Filter just created; should be unvisited. REPORTER_ASSERT(reporter, !filter->visited()); diff --git a/tests/PinnedImageTest.cpp b/tests/PinnedImageTest.cpp index 93285840e398..fc935875729d 100644 --- a/tests/PinnedImageTest.cpp +++ b/tests/PinnedImageTest.cpp @@ -29,6 +29,7 @@ #include "src/gpu/ganesh/image/GrImageUtils.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/FenceSync.h" #include @@ -120,8 +121,8 @@ static void cleanup_test(skiatest::Reporter* reporter) { GrMockOptions options; sk_sp mockContext = GrDirectContext::MakeMock(&options); - for (int i = 0; i < GrContextFactory::kContextTypeCnt; ++i) { - GrContextFactory::ContextType ctxType = (GrContextFactory::ContextType) i; + for (int i = 0; i < skgpu::kContextTypeCount; ++i) { + auto ctxType = static_cast(i); { sk_sp img; diff --git a/tests/ProcessorTest.cpp b/tests/ProcessorTest.cpp index 23e2d8f87add..9bb40f421775 100644 --- a/tests/ProcessorTest.cpp +++ b/tests/ProcessorTest.cpp @@ -268,7 +268,7 @@ static DEFINE_bool(randomProcessorTest, false, static DEFINE_int(processorSeed, 0, "Use specific seed for processor tests. Overridden by --randomProcessorTest."); -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static GrColor input_texel_color(int x, int y, SkScalar delta) { // Delta must be less than 0.5 to prevent over/underflow issues with the input color @@ -582,10 +582,10 @@ static bool legal_modulation(const GrColor inGr[3], const GrColor outGr[3]) { return isLegalColorModulation || isLegalAlphaModulation; } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(ProcessorOptimizationValidationTest, - reporter, - ctxInfo, - CtsEnforcement::kNever) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(ProcessorOptimizationValidationTest, + reporter, + ctxInfo, + CtsEnforcement::kNever) { GrDirectContext* context = ctxInfo.directContext(); GrResourceProvider* resourceProvider = context->priv().resourceProvider(); using FPFactory = GrFragmentProcessorTestFactory; @@ -951,10 +951,7 @@ static void log_clone_failure(skiatest::Reporter* reporter, int renderSize, // Tests that a fragment processor returned by GrFragmentProcessor::clone() is equivalent to its // progenitor. -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(ProcessorCloneTest, - reporter, - ctxInfo, - CtsEnforcement::kNever) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(ProcessorCloneTest, reporter, ctxInfo, CtsEnforcement::kNever) { GrDirectContext* context = ctxInfo.directContext(); GrResourceProvider* resourceProvider = context->priv().resourceProvider(); @@ -1044,4 +1041,4 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(ProcessorCloneTest, } } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) diff --git a/tests/ProgramsTest.cpp b/tests/ProgramsTest.cpp index a8849d5f0bb0..91e6f72426d9 100644 --- a/tests/ProgramsTest.cpp +++ b/tests/ProgramsTest.cpp @@ -102,7 +102,7 @@ class BigKeyProcessor : public GrFragmentProcessor { GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor) -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) std::unique_ptr BigKeyProcessor::TestCreate(GrProcessorTestData*) { return BigKeyProcessor::Make(); } @@ -183,7 +183,7 @@ static std::unique_ptr random_surface_draw_co origin); } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) static void set_random_xpf(GrPaint* paint, GrProcessorTestData* d) { paint->setXPFactory(GrXPFactoryTestFactory::Get(d)); } @@ -264,7 +264,7 @@ static void set_random_color_coverage_stages(GrPaint* paint, #endif -#if !GR_TEST_UTILS +#if !defined(GR_TEST_UTILS) bool GrDrawingManager::ProgramUnitTest(GrDirectContext*, int) { return true; } #else bool GrDrawingManager::ProgramUnitTest(GrDirectContext* direct, int maxStages, int maxLevels) { @@ -396,9 +396,9 @@ static int get_programs_max_stages(const sk_gpu_test::ContextInfo& ctxInfo) { // On Angle D3D we will hit a limit of out variables if we use too many stages. This is // particularly true on D3D9 with a low limit on varyings and the fact that every varying is // packed as though it has 4 components. - if (ctxInfo.type() == sk_gpu_test::GrContextFactory::kANGLE_D3D9_ES2_ContextType) { + if (ctxInfo.type() == skgpu::ContextType::kANGLE_D3D9_ES2) { maxStages = 2; - } else if (ctxInfo.type() == sk_gpu_test::GrContextFactory::kANGLE_D3D11_ES2_ContextType) { + } else if (ctxInfo.type() == skgpu::ContextType::kANGLE_D3D11_ES2) { maxStages = 3; } } @@ -423,8 +423,8 @@ static int get_programs_max_levels(const sk_gpu_test::ContextInfo& ctxInfo) { maxTreeLevels = 3; } #endif - if (ctxInfo.type() == sk_gpu_test::GrContextFactory::kANGLE_D3D9_ES2_ContextType || - ctxInfo.type() == sk_gpu_test::GrContextFactory::kANGLE_D3D11_ES2_ContextType) { + if (ctxInfo.type() == skgpu::ContextType::kANGLE_D3D9_ES2 || + ctxInfo.type() == skgpu::ContextType::kANGLE_D3D11_ES2) { // On Angle D3D we will hit a limit of out variables if we use too many stages. maxTreeLevels = 2; } @@ -459,6 +459,5 @@ DEF_GANESH_TEST(Programs, reporter, options, CtsEnforcement::kNever) { GrContextOptions opts = options; opts.fSuppressPrints = true; sk_gpu_test::GrContextFactory debugFactory(opts); - skiatest::RunWithGaneshTestContexts( - test_programs, &sk_gpu_test::GrContextFactory::IsRenderingContext, reporter, opts); + skiatest::RunWithGaneshTestContexts(test_programs, &skgpu::IsRenderingContext, reporter, opts); } diff --git a/tests/PromiseImageTest.cpp b/tests/PromiseImageTest.cpp index 4c28ccc6b8b5..05737e7de464 100644 --- a/tests/PromiseImageTest.cpp +++ b/tests/PromiseImageTest.cpp @@ -36,6 +36,7 @@ #include "src/gpu/ganesh/GrTexture.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/FenceSync.h" #include "tools/gpu/ManagedBackendTexture.h" @@ -238,14 +239,13 @@ DEF_GANESH_TEST(PromiseImageTextureShutdown, reporter, ctxInfo, CtsEnforcement:: dContext->releaseResourcesAndAbandonContext(); }; - for (int type = 0; type < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++type) { - auto contextType = static_cast(type); + for (int type = 0; type < skgpu::kContextTypeCount; ++type) { + auto contextType = static_cast(type); // These tests are difficult to get working with Vulkan. See http://skbug.com/8705 // and http://skbug.com/8275 - // Also problematic on Dawn; see http://skbug.com/10326 // And Direct3D, for similar reasons. - GrBackendApi api = sk_gpu_test::GrContextFactory::ContextTypeBackend(contextType); - if (api == GrBackendApi::kVulkan || api == GrBackendApi::kDawn || + GrBackendApi api = skgpu::ganesh::ContextTypeBackend(contextType); + if (api == GrBackendApi::kUnsupported || api == GrBackendApi::kVulkan || api == GrBackendApi::kDirect3D) { continue; } diff --git a/tests/ProtectedTest.cpp b/tests/ProtectedTest.cpp index 0474318f2434..cddb78045f9c 100644 --- a/tests/ProtectedTest.cpp +++ b/tests/ProtectedTest.cpp @@ -10,9 +10,11 @@ #if defined(SK_GANESH) #include "include/core/SkBitmap.h" +#include "include/core/SkColorSpace.h" #include "include/core/SkSurface.h" #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/SkImageGanesh.h" #include "tests/CtsEnforcement.h" #include "tools/gpu/ProtectedUtils.h" @@ -21,7 +23,7 @@ static const int kSize = 8; DEF_GANESH_TEST_FOR_ALL_CONTEXTS(Protected_SmokeTest, reporter, ctxInfo, CtsEnforcement::kNever) { auto dContext = ctxInfo.directContext(); - if (!ProtectedUtils::ContextSupportsProtected(dContext)) { + if (!dContext->supportsProtectedContent()) { // Protected content not supported return; } @@ -45,6 +47,7 @@ DEF_GANESH_TEST_FOR_ALL_CONTEXTS(Protected_SmokeTest, reporter, ctxInfo, CtsEnfo dContext->submit(/* syncCpu= */ true); + REPORTER_ASSERT(reporter, image->isProtected() == isProtected); ProtectedUtils::CheckImageBEProtection(image.get(), isProtected); } } @@ -68,6 +71,17 @@ DEF_GANESH_TEST_FOR_ALL_CONTEXTS(Protected_SmokeTest, reporter, ctxInfo, CtsEnfo REPORTER_ASSERT(reporter, beTex.isProtected() == isProtected); dContext->flushAndSubmit(/* syncCpu= */ true); + + { + sk_sp img = SkImages::BorrowTextureFrom(dContext, beTex, + kTopLeft_GrSurfaceOrigin, + kRGBA_8888_SkColorType, + kPremul_SkAlphaType, + /* colorSpace= */ nullptr); + + REPORTER_ASSERT(reporter, img->isProtected() == isProtected); + } + if (beTex.isValid()) { dContext->deleteBackendTexture(beTex); } @@ -80,7 +94,7 @@ DEF_GANESH_TEST_FOR_ALL_CONTEXTS(Protected_readPixelsFromSurfaces, reporter, ctx CtsEnforcement::kNever) { auto dContext = ctxInfo.directContext(); - if (!ProtectedUtils::ContextSupportsProtected(dContext)) { + if (!dContext->supportsProtectedContent()) { // Protected content not supported return; } @@ -120,7 +134,7 @@ DEF_GANESH_TEST_FOR_ALL_CONTEXTS(Protected_asyncRescaleAndReadPixelsFromSurfaces CtsEnforcement::kNever) { auto dContext = ctxInfo.directContext(); - if (!ProtectedUtils::ContextSupportsProtected(dContext)) { + if (!dContext->supportsProtectedContent()) { // Protected content not supported return; } diff --git a/tests/RasterPipelineBuilderTest.cpp b/tests/RasterPipelineBuilderTest.cpp index aeda12ef9748..bf5ab3519366 100644 --- a/tests/RasterPipelineBuilderTest.cpp +++ b/tests/RasterPipelineBuilderTest.cpp @@ -8,7 +8,6 @@ #include "include/core/SkStream.h" #include "src/base/SkArenaAlloc.h" #include "src/base/SkStringView.h" -#include "src/core/SkOpts.h" #include "src/core/SkRasterPipeline.h" #include "src/sksl/codegen/SkSLRasterPipelineBuilder.h" #include "src/sksl/tracing/SkSLDebugTracePriv.h" diff --git a/tests/ReadWritePixelsGpuTest.cpp b/tests/ReadWritePixelsGpuTest.cpp index 4de710cdc821..bbd44b647cb6 100644 --- a/tests/ReadWritePixelsGpuTest.cpp +++ b/tests/ReadWritePixelsGpuTest.cpp @@ -57,6 +57,7 @@ #include "tools/ToolUtils.h" #include "tools/gpu/BackendSurfaceFactory.h" #include "tools/gpu/BackendTextureImageFactory.h" +#include "tools/gpu/ContextType.h" #include #include @@ -199,6 +200,10 @@ struct GpuReadPixelTestRules { bool fAllowUnpremulSrc = true; // Are reads that are overlapping but not contained by the src bounds expected to succeed? bool fUncontainedRectSucceeds = true; + // Skip SRGB src colortype? + bool fSkipSRGBCT = false; + // Skip 16-bit src colortypes? + bool fSkip16BitCT = false; }; // Makes a src populated with the pixmap. The src should get its image info (or equivalent) from @@ -238,8 +243,12 @@ SkPixmap make_pixmap_have_valid_alpha_type(SkPixmap pm) { static SkAutoPixmapStorage make_ref_data(const SkImageInfo& info, bool forceOpaque) { SkAutoPixmapStorage result; - result.alloc(info); - auto surface = SkSurfaces::WrapPixels(make_pixmap_have_valid_alpha_type(result)); + if (info.alphaType() == kUnknown_SkAlphaType) { + result.alloc(info.makeAlphaType(kUnpremul_SkAlphaType)); + } else { + result.alloc(info); + } + auto surface = SkSurfaces::WrapPixels(result); if (!surface) { return result; } @@ -361,7 +370,9 @@ static void gpu_read_pixels_test_driver(skiatest::Reporter* reporter, } int rgbBits = std::min({min_rgb_channel_bits(readCT), min_rgb_channel_bits(srcCT), 8}); float tol = numer / (1 << rgbBits); - float alphaTol = 0; + // Swiftshader is producing alpha errors with 16-bit UNORM. We choose to always allow + // a small tolerance: + float alphaTol = 1.f / (1 << 10); if (readAT != kOpaque_SkAlphaType && srcAT != kOpaque_SkAlphaType) { // Alpha can also get squashed down to 8 bits going through an intermediate // color format. @@ -450,13 +461,22 @@ static void gpu_read_pixels_test_driver(skiatest::Reporter* reporter, // and full complement of alpha types with one successful read in the loop. std::array srcCTTestedThoroughly = {}, readCTTestedThoroughly = {}; - for (int sat = 0; sat < kLastEnum_SkAlphaType; ++sat) { + for (int sat = 0; sat <= kLastEnum_SkAlphaType; ++sat) { const auto srcAT = static_cast(sat); if (srcAT == kUnpremul_SkAlphaType && !rules.fAllowUnpremulSrc) { continue; } for (int sct = 0; sct <= kLastEnum_SkColorType; ++sct) { const auto srcCT = static_cast(sct); + if (rules.fSkipSRGBCT && srcCT == kSRGBA_8888_SkColorType) { + continue; + } + if (rules.fSkip16BitCT && + (srcCT == kR16G16_unorm_SkColorType || + srcCT == kR16G16B16A16_unorm_SkColorType)) { + continue; + } + // We always make our ref data as F32 auto refInfo = SkImageInfo::Make(kW, kH, kRGBA_F32_SkColorType, @@ -470,7 +490,23 @@ static void gpu_read_pixels_test_driver(skiatest::Reporter* reporter, bool forceOpaque = srcAT == kPremul_SkAlphaType && (srcCT == kRGBA_1010102_SkColorType || srcCT == kBGRA_1010102_SkColorType); - SkAutoPixmapStorage srcPixels = make_ref_data(refInfo, forceOpaque); + SkAutoPixmapStorage refPixels = make_ref_data(refInfo, forceOpaque); + // Convert the ref data to our desired src color type. + const auto srcInfo = SkImageInfo::Make(kW, kH, srcCT, srcAT, SkColorSpace::MakeSRGB()); + SkAutoPixmapStorage srcPixels; + srcPixels.alloc(srcInfo); + { + SkPixmap readPixmap = srcPixels; + // Spoof the alpha type to kUnpremul so the read will succeed without doing any + // conversion (because we made our surface also use kUnpremul). + if (srcAT == kUnknown_SkAlphaType) { + readPixmap.reset(srcPixels.info().makeAlphaType(kUnpremul_SkAlphaType), + srcPixels.addr(), + srcPixels.rowBytes()); + } + refPixels.readPixels(readPixmap, 0, 0); + } + auto src = srcFactory(srcPixels); if (!src) { continue; @@ -538,7 +574,7 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextReadPixels, return Result::kSuccess; } else { // Reading from a non-renderable format is not guaranteed to work on GL. - // We'd have to be able to force a copy or draw draw to a renderable format. + // We'd have to be able to force a copy or draw to a renderable format. const auto& caps = *direct->priv().caps(); if (direct->backend() == GrBackendApi::kOpenGL && !caps.isFormatRenderable(surface->asSurfaceProxy()->backendFormat(), 1)) { @@ -659,6 +695,11 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceAsyncReadPixels, GpuReadPixelTestRules rules; rules.fAllowUnpremulSrc = false; rules.fUncontainedRectSucceeds = false; + // TODO: some mobile GPUs have issues reading back sRGB src data with GLES -- skip for now + // b/296440036 + if (ctxInfo.type() == skgpu::ContextType::kGLES) { + rules.fSkipSRGBCT = true; + } for (GrSurfaceOrigin origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) { auto factory = std::function>( @@ -674,11 +715,6 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceAsyncReadPixels, gpu_read_pixels_test_driver(reporter, rules, factory, reader, label); auto backendRTFactory = std::function>( [context = ctxInfo.directContext(), origin](const SkPixmap& src) { - // Dawn backend implementation of backend render targets doesn't support - // reading. - if (context->backend() == GrBackendApi::kDawn) { - return Surface(); - } auto surf = sk_gpu_test::MakeBackendRenderTargetSurface(context, src.info(), origin, @@ -693,10 +729,11 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceAsyncReadPixels, } } -DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +// Manually parameterized by GrRenderable and GrSurfaceOrigin to reduce per-test run time. +static void image_async_read_pixels(GrRenderable renderable, + GrSurfaceOrigin origin, + skiatest::Reporter* reporter, + const sk_gpu_test::ContextInfo& ctxInfo) { using Image = sk_sp; auto context = ctxInfo.directContext(); auto reader = std::function>([context](const Image& image, @@ -733,18 +770,56 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels, GpuReadPixelTestRules rules; rules.fAllowUnpremulSrc = true; rules.fUncontainedRectSucceeds = false; - - for (auto origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) { - for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) { - auto factory = std::function>([&](const SkPixmap& src) { - return sk_gpu_test::MakeBackendTextureImage(ctxInfo.directContext(), src, - renderable, origin, - GrProtected::kNo); - }); - auto label = SkStringPrintf("Renderable: %d, Origin: %d", (int)renderable, origin); - gpu_read_pixels_test_driver(reporter, rules, factory, reader, label); - } + // TODO: some mobile GPUs have issues reading back sRGB src data with GLES -- skip for now + // b/296440036 + if (ctxInfo.type() == skgpu::ContextType::kGLES) { + rules.fSkipSRGBCT = true; + } + // TODO: D3D on Intel has issues reading back 16-bit src data -- skip for now + // b/296440036 + if (ctxInfo.type() == skgpu::ContextType::kDirect3D) { + rules.fSkip16BitCT = true; } + + auto factory = std::function>([&](const SkPixmap& src) { + return sk_gpu_test::MakeBackendTextureImage(ctxInfo.directContext(), src, + renderable, origin, + GrProtected::kNo); + }); + auto label = SkStringPrintf("Renderable: %d, Origin: %d", (int)renderable, origin); + gpu_read_pixels_test_driver(reporter, rules, factory, reader, label); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_NonRenderable_TopLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + image_async_read_pixels(GrRenderable::kNo, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_NonRenderable_BottomLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + image_async_read_pixels(GrRenderable::kNo, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_Renderable_TopLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + image_async_read_pixels(GrRenderable::kYes, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixels_Renderable_BottomLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + image_async_read_pixels(GrRenderable::kYes, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin, + reporter, ctxInfo); } DEF_GANESH_TEST(AsyncReadPixelsContextShutdown, reporter, options, CtsEnforcement::kApiLevel_T) { @@ -760,8 +835,8 @@ DEF_GANESH_TEST(AsyncReadPixelsContextShutdown, reporter, options, CtsEnforcemen kReleaseAndAbandon_DestroyContext_FreeResult, kAbandon_DestroyContext_FreeResult, }; - for (int t = 0; t < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++t) { - auto type = static_cast(t); + for (int t = 0; t < skgpu::kContextTypeCount; ++t) { + auto type = static_cast(t); for (auto sequence : {ShutdownSequence::kFreeResult_DestroyContext, ShutdownSequence::kDestroyContext_FreeResult, ShutdownSequence::kFreeResult_ReleaseAndAbandon_DestroyContext, @@ -772,8 +847,7 @@ DEF_GANESH_TEST(AsyncReadPixelsContextShutdown, reporter, options, CtsEnforcemen ShutdownSequence::kAbandon_DestroyContext_FreeResult}) { // Vulkan and D3D context abandoning without resource release has issues outside of the // scope of this test. - if ((type == sk_gpu_test::GrContextFactory::kVulkan_ContextType || - type == sk_gpu_test::GrContextFactory::kDirect3D_ContextType) && + if ((type == skgpu::ContextType::kVulkan || type == skgpu::ContextType::kDirect3D) && (sequence == ShutdownSequence::kFreeResult_ReleaseAndAbandon_DestroyContext || sequence == ShutdownSequence::kFreeResult_Abandon_DestroyContext || sequence == ShutdownSequence::kReleaseAndAbandon_FreeResult_DestroyContext || @@ -836,7 +910,7 @@ DEF_GANESH_TEST(AsyncReadPixelsContextShutdown, reporter, options, CtsEnforcemen case ReadType::kYUVA: readTypeStr = "yuva"; break; } ERRORF(reporter, "Callback failed on %s. read type is: %s", - sk_gpu_test::GrContextFactory::ContextTypeName(type), readTypeStr); + skgpu::ContextTypeName(type), readTypeStr); continue; } // For vulkan we need to release all refs to the GrDirectContext before trying to @@ -1139,10 +1213,11 @@ static void gpu_write_pixels_test_driver(skiatest::Reporter* reporter, } } -DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +// Manually parameterized by GrRenderable and GrSurfaceOrigin to reduce per-test run time. +static void surface_context_write_pixels(GrRenderable renderable, + GrSurfaceOrigin origin, + skiatest::Reporter* reporter, + const sk_gpu_test::ContextInfo& ctxInfo) { using Surface = std::unique_ptr; GrDirectContext* direct = ctxInfo.directContext(); auto writer = std::function>( @@ -1168,20 +1243,48 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels, return result; }); - for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) { - for (GrSurfaceOrigin origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) { - auto factory = std::function>( - [direct, origin, renderable](const SkImageInfo& info) { - return CreateSurfaceContext(direct, - info, - SkBackingFit::kExact, - origin, - renderable); - }); + auto factory = std::function>( + [direct, origin, renderable](const SkImageInfo& info) { + return CreateSurfaceContext(direct, + info, + SkBackingFit::kExact, + origin, + renderable); + }); - gpu_write_pixels_test_driver(reporter, factory, writer, reader); - } - } + gpu_write_pixels_test_driver(reporter, factory, writer, reader); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_NonRenderable_TopLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + surface_context_write_pixels(GrRenderable::kNo, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_NonRenderable_BottomLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + surface_context_write_pixels(GrRenderable::kNo, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_Renderable_TopLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + surface_context_write_pixels(GrRenderable::kYes, GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin, + reporter, ctxInfo); +} + +DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixels_Renderable_BottomLeft, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { + surface_context_write_pixels(GrRenderable::kYes, GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin, + reporter, ctxInfo); } DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixelsMipped, @@ -1334,10 +1437,10 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceContextWritePixelsMipped, // Tests a bug found in OOP-R canvas2d in Chrome. The GPU backend would incorrectly not bind // buffer 0 to GL_PIXEL_PACK_BUFFER before a glReadPixels() that was supposed to read into // client memory if a GrDirectContext::resetContext() occurred. -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(GLReadPixelsUnbindPBO, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(GLReadPixelsUnbindPBO, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { // Start with a async read so that we bind to GL_PIXEL_PACK_BUFFER. auto info = SkImageInfo::Make(16, 16, kRGBA_8888_SkColorType, kPremul_SkAlphaType); SkAutoPixmapStorage pmap = make_ref_data(info, /*forceOpaque=*/false); diff --git a/tests/RectangleTextureTest.cpp b/tests/RectangleTextureTest.cpp index a6a34bc10ff5..4e3ff1ab09ce 100644 --- a/tests/RectangleTextureTest.cpp +++ b/tests/RectangleTextureTest.cpp @@ -152,10 +152,7 @@ static void test_copy_to_surface(skiatest::Reporter* reporter, } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(RectangleTexture, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(RectangleTexture, reporter, ctxInfo, CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrProxyProvider* proxyProvider = dContext->priv().proxyProvider(); diff --git a/tests/RepeatedClippedBlurTest.cpp b/tests/RepeatedClippedBlurTest.cpp index bafbce273541..f13edd24c171 100644 --- a/tests/RepeatedClippedBlurTest.cpp +++ b/tests/RepeatedClippedBlurTest.cpp @@ -116,8 +116,8 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(RepeatedClippedBlurTest, SkIRect outSubset; SkIPoint offset; - sk_sp filteredImg = smImg->makeWithFilter(dContext, blur.get(), subset, clip, - &outSubset, &offset); + sk_sp filteredImg = SkImages::MakeWithFilter(dContext, smImg, blur.get(), subset, + clip, &outSubset, &offset); SkRect dstRect = SkRect::MakeXYWH(offset.fX, offset.fY, outSubset.width(), outSubset.height()); diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp index 18ff498351f1..bfbffd7da3b1 100644 --- a/tests/ResourceCacheTest.cpp +++ b/tests/ResourceCacheTest.cpp @@ -49,6 +49,7 @@ #include "src/gpu/ganesh/GrTextureProxy.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/ManagedBackendTexture.h" #include @@ -114,13 +115,13 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ResourceCacheCache, context->setResourceCacheLimit(oldMaxBytes); } -static bool is_rendering_and_not_angle_es3(sk_gpu_test::GrContextFactory::ContextType type) { - if (type == sk_gpu_test::GrContextFactory::kANGLE_D3D11_ES3_ContextType || - type == sk_gpu_test::GrContextFactory::kANGLE_GL_ES3_ContextType || - type == sk_gpu_test::GrContextFactory::kANGLE_Metal_ES3_ContextType) { +static bool is_rendering_and_not_angle_es3(skgpu::ContextType type) { + if (type == skgpu::ContextType::kANGLE_D3D11_ES3 || + type == skgpu::ContextType::kANGLE_GL_ES3 || + type == skgpu::ContextType::kANGLE_Metal_ES3) { return false; } - return sk_gpu_test::GrContextFactory::IsRenderingContext(type); + return skgpu::IsRenderingContext(type); } static GrAttachment* get_SB(GrRenderTarget* rt) { return rt->getStencilAttachment(); } diff --git a/tests/ShaderTest.cpp b/tests/ShaderTest.cpp index 85a423375907..c88c5b6edf80 100644 --- a/tests/ShaderTest.cpp +++ b/tests/ShaderTest.cpp @@ -197,7 +197,8 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(ShaderTestNestedBlendsGanesh, #endif #if defined(SK_GRAPHITE) -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ShaderTestNestedBlendsGraphite, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ShaderTestNestedBlendsGraphite, reporter, context, + CtsEnforcement::kNextRelease) { using namespace skgpu::graphite; SkImageInfo ii = SkImageInfo::Make(SkISize::Make(1, 1), diff --git a/tests/SkRemoteGlyphCacheTest.cpp b/tests/SkRemoteGlyphCacheTest.cpp index 34284c7d103a..4a3da5224802 100644 --- a/tests/SkRemoteGlyphCacheTest.cpp +++ b/tests/SkRemoteGlyphCacheTest.cpp @@ -306,7 +306,7 @@ static void use_padding_options(GrContextOptions* options) { } DEF_GANESH_TEST_FOR_CONTEXTS(SkRemoteGlyphCache_StrikeSerializationSlug, - sk_gpu_test::GrContextFactory::IsRenderingContext, + skgpu::IsRenderingContext, reporter, ctxInfo, use_padding_options, @@ -350,7 +350,7 @@ DEF_GANESH_TEST_FOR_CONTEXTS(SkRemoteGlyphCache_StrikeSerializationSlug, } DEF_GANESH_TEST_FOR_CONTEXTS(SkRemoteGlyphCache_StrikeSerializationSlugForcePath, - sk_gpu_test::GrContextFactory::IsRenderingContext, + skgpu::IsRenderingContext, reporter, ctxInfo, use_padding_options, @@ -394,7 +394,7 @@ DEF_GANESH_TEST_FOR_CONTEXTS(SkRemoteGlyphCache_StrikeSerializationSlugForcePath } DEF_GANESH_TEST_FOR_CONTEXTS(SkRemoteGlyphCache_SlugSerialization, - sk_gpu_test::GrContextFactory::IsRenderingContext, + skgpu::IsRenderingContext, reporter, ctxInfo, use_padding_options, diff --git a/tests/SkRuntimeEffectTest.cpp b/tests/SkRuntimeEffectTest.cpp index 337dcede00e4..912b6facd496 100644 --- a/tests/SkRuntimeEffectTest.cpp +++ b/tests/SkRuntimeEffectTest.cpp @@ -717,7 +717,8 @@ DEF_TEST(SkRuntimeEffectSimple, r) { } #if defined(SK_GRAPHITE) -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(SkRuntimeEffectSimple_Graphite, r, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(SkRuntimeEffectSimple_Graphite, r, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); GraphiteInfo graphite = {context, recorder.get()}; test_RuntimeEffect_Shaders(r, /*grContext=*/nullptr, &graphite); diff --git a/tests/SkSLErrorTest.cpp b/tests/SkSLErrorTest.cpp index 98408cbec23d..3bc2729617a1 100644 --- a/tests/SkSLErrorTest.cpp +++ b/tests/SkSLErrorTest.cpp @@ -94,8 +94,9 @@ static void test_expect_fail(skiatest::Reporter* r, const char* testFile, SkSL:: // In a size-optimized build, there are a handful of errors which report differently, or not at // all. Skip over those tests. static const auto* kTestsToSkip = new THashSet{ - // These are tests that have been deleted, but which may still show up (and fail) on bots, + // These are tests that have been deleted, but which may still show up (and fail) on tasks, // because the resources directory isn't properly cleaned up. (skbug.com/12987) + "sksl/errors/InvalidBackendBindingFlagsGL.sksl", "sksl/errors/InvalidThreadgroupRTS.rts", "sksl/errors/StaticIfTest.sksl", "sksl/errors/StaticSwitchConditionalBreak.sksl", diff --git a/tests/SkSLMemoryLayoutTest.cpp b/tests/SkSLMemoryLayoutTest.cpp index 4cee33ccc8e5..c24b3e0f1720 100644 --- a/tests/SkSLMemoryLayoutTest.cpp +++ b/tests/SkSLMemoryLayoutTest.cpp @@ -24,7 +24,7 @@ using namespace skia_private; -DEF_TEST(SkSLMemoryLayout140Test, r) { +DEF_TEST(SkSLMemoryLayoutTest_std140, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; @@ -122,7 +122,7 @@ DEF_TEST(SkSLMemoryLayout140Test, r) { REPORTER_ASSERT(r, 16 == layout.stride(*array2)); } -DEF_TEST(SkSLMemoryLayout430Test, r) { +DEF_TEST(SkSLMemoryLayoutTest_std430, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; @@ -220,55 +220,363 @@ DEF_TEST(SkSLMemoryLayout430Test, r) { REPORTER_ASSERT(r, 16 == layout.stride(*array2)); } -DEF_TEST(SkSLMemoryLayoutWGSLUniformTest, r) { +DEF_TEST(SkSLMemoryLayoutTest_WGSLUniform_Base, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; SkSL::Context context(types, &caps, errors); - SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform_Base); // The values here are taken from https://www.w3.org/TR/WGSL/#alignment-and-size, table titled - // "Alignment and size for host-shareable types". + // "Alignment and size for host-shareable types". WGSL does not have an i16 type, so short and + // unsigned-short integer types are treated as full-size integers in WGSL. + + // scalars (i32, u32, f32, f16) + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fFloat)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fHalf)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fFloat)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fHalf)); + + // vec2, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fFloat2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf2)); + + // vec3, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fFloat3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3)); + + // vec4, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4)); + + // mat2x2, mat2x2 + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fHalf2x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf2x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf2x2)); + + // mat3x2, mat3x2 + REPORTER_ASSERT(r, 24 == layout.size(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 24 == layout.size(*context.fTypes.fHalf3x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf3x2)); + + // mat4x2, mat4x2 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf4x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf4x2)); + + // mat2x3, mat2x3 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf2x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf2x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf2x3)); + + // mat3x3, mat3x3 + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fHalf3x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf3x3)); + + // mat4x3, mat4x3 + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fHalf4x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf4x3)); + + // mat2x4, mat2x4 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf2x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf2x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf2x4)); + + // mat3x4, mat3x4 + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fHalf3x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf3x4)); + + // mat4x4, mat4x4 + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fHalf4x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf4x4)); + + // atomic + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fAtomicUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fAtomicUInt)); + + // bool is not a host-shareable type and returns 0 for WGSL. + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool2)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool3)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool4)); + + // Arrays + // array + { + auto array = SkSL::Type::MakeArrayType("float[4]", *context.fTypes.fFloat, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array + { + auto array = SkSL::Type::MakeArrayType("half[4]", *context.fTypes.fHalf, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float2[4]", *context.fTypes.fFloat2, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float3[4]", *context.fTypes.fFloat3, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float4[4]", *context.fTypes.fFloat4, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("mat3[4]", *context.fTypes.fFloat3x3, 4); + REPORTER_ASSERT(r, 192 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 48 == layout.stride(*array)); + } + + // Structs A and B from example in https://www.w3.org/TR/WGSL/#structure-member-layout, with + // offsets adjusted for uniform address space constraints. + // + // struct A { // align(roundUp(16, 8)) size(roundUp(16, 24)) + // u: f32, // offset(0) align(4) size(4) + // v: f32, // offset(4) align(4) size(4) + // w: vec2, // offset(8) align(8) size(8) + // x: f32 // offset(16) align(4) size(4) + // // padding // offset(20) size(12) + // } + TArray fields; + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("u"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("v"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("w"), + context.fTypes.fFloat2.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("x"), + context.fTypes.fFloat.get()); + std::unique_ptr structA = SkSL::Type::MakeStructType( + context, SkSL::Position(), std::string_view("A"), std::move(fields)); + REPORTER_ASSERT(r, 32 == layout.size(*structA)); + REPORTER_ASSERT(r, 16 == layout.alignment(*structA)); + fields = {}; + + // struct B { // align(16) size(208) + // a: vec2, // offset(0) align(8) size(8) + // // padding // offset(8) size(8) + // b: vec3, // offset(16) align(16) size(12) + // c: f32, // offset(28) align(4) size(4) + // d: f32, // offset(32) align(4) size(4) + // // padding // offset(36) size(12) + // e: A, // offset(48) align(16) size(32) + // f: vec3, // offset(80) align(16) size(12) + // // padding // offset(92) size(4) + // g: array, // offset(96) align(16) size(96) + // h: i32 // offset(192) align(4) size(4) + // // padding // offset(196) size(12) + // } + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("a"), + context.fTypes.fFloat2.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("b"), + context.fTypes.fFloat3.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("c"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("d"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("e"), + structA.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("f"), + context.fTypes.fFloat3.get()); + auto array = SkSL::Type::MakeArrayType("A[3]", *structA, 3); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("g"), + array.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("h"), + context.fTypes.fInt.get()); + std::unique_ptr structB = SkSL::Type::MakeStructType( + context, SkSL::Position(), std::string_view("B"), std::move(fields)); + REPORTER_ASSERT(r, 208 == layout.size(*structB)); + REPORTER_ASSERT(r, 16 == layout.alignment(*structB)); +} + +DEF_TEST(SkSLMemoryLayoutTest_WGSLUniform_EnableF16, r) { + SkSL::TestingOnly_AbortErrorReporter errors; + SkSL::ShaderCaps caps; + SkSL::BuiltinTypes types; + SkSL::Context context(types, &caps, errors); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform_EnableF16); + + // The values here are taken from https://www.w3.org/TR/WGSL/#alignment-and-size, table titled + // "Alignment and size for host-shareable types". WGSL does not have an i16 type, so short and + // unsigned-short integer types are treated as full-size integers in WGSL. // scalars (i32, u32, f32, f16) REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fInt)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUShort)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fFloat)); REPORTER_ASSERT(r, 2 == layout.size(*context.fTypes.fHalf)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fInt)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUShort)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fFloat)); REPORTER_ASSERT(r, 2 == layout.alignment(*context.fTypes.fHalf)); // vec2, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fInt2)); REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUShort2)); REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fFloat2)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fHalf2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fInt2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUShort2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fHalf2)); // vec3, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fInt3)); REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUShort3)); REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fFloat3)); - REPORTER_ASSERT(r, 6 == layout.size(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 6 == layout.size(*context.fTypes.fHalf3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3)); - REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3)); // vec4, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fInt4)); REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUShort4)); REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat4)); - REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4)); - REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4)); // mat2x2, mat2x2 REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat2x2)); @@ -494,12 +802,301 @@ DEF_TEST(SkSLMemoryLayoutWGSLUniformTest, r) { REPORTER_ASSERT(r, 16 == layout.alignment(*structB)); } -DEF_TEST(SkSLMemoryLayoutWGSLStorageTest, r) { +DEF_TEST(SkSLMemoryLayoutTest_WGSLStorage_Base, r) { + SkSL::TestingOnly_AbortErrorReporter errors; + SkSL::ShaderCaps caps; + SkSL::BuiltinTypes types; + SkSL::Context context(types, &caps, errors); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLStorage_Base); + + // The values here are taken from https://www.w3.org/TR/WGSL/#alignment-and-size, table titled + // "Alignment and size for host-shareable types". + + // scalars (i32, u32, f32, f16) + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fFloat)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fHalf)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fFloat)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fHalf)); + + // vec2, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fFloat2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf2)); + + // vec3, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fFloat3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3)); + + // vec4, T: i32, u32, f32, f16 + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4)); + + // mat2x2, mat2x2 + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fHalf2x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf2x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat2x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf2x2)); + + // mat3x2, mat3x2 + REPORTER_ASSERT(r, 24 == layout.size(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 24 == layout.size(*context.fTypes.fHalf3x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat3x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf3x2)); + + // mat4x2, mat4x2 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf4x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fFloat4x2)); + REPORTER_ASSERT(r, 8 == layout.stride(*context.fTypes.fHalf4x2)); + + // mat2x3, mat2x3 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf2x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf2x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat2x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf2x3)); + + // mat3x3, mat3x3 + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fHalf3x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat3x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf3x3)); + + // mat4x3, mat4x3 + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fHalf4x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat4x3)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf4x3)); + + // mat2x4, mat2x4 + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 32 == layout.size(*context.fTypes.fHalf2x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf2x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat2x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf2x4)); + + // mat3x4, mat3x4 + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 48 == layout.size(*context.fTypes.fHalf3x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf3x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat3x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf3x4)); + + // mat4x4, mat4x4 + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 64 == layout.size(*context.fTypes.fHalf4x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fHalf4x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fFloat4x4)); + REPORTER_ASSERT(r, 16 == layout.stride(*context.fTypes.fHalf4x4)); + + // atomic + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fAtomicUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fAtomicUInt)); + + // bool is not a host-shareable type and returns 0 for WGSL. + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool2)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool3)); + REPORTER_ASSERT(r, 0 == layout.size(*context.fTypes.fBool4)); + + // Arrays + // array + { + auto array = SkSL::Type::MakeArrayType("float[4]", *context.fTypes.fFloat, 4); + REPORTER_ASSERT(r, 16 == layout.size(*array)); + REPORTER_ASSERT(r, 4 == layout.alignment(*array)); + REPORTER_ASSERT(r, 4 == layout.stride(*array)); + } + // array + { + auto array = SkSL::Type::MakeArrayType("half[4]", *context.fTypes.fHalf, 4); + REPORTER_ASSERT(r, 16 == layout.size(*array)); + REPORTER_ASSERT(r, 4 == layout.alignment(*array)); + REPORTER_ASSERT(r, 4 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float2[4]", *context.fTypes.fFloat2, 4); + REPORTER_ASSERT(r, 32 == layout.size(*array)); + REPORTER_ASSERT(r, 8 == layout.alignment(*array)); + REPORTER_ASSERT(r, 8 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float3[4]", *context.fTypes.fFloat3, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("float4[4]", *context.fTypes.fFloat4, 4); + REPORTER_ASSERT(r, 64 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 16 == layout.stride(*array)); + } + // array, 4> + { + auto array = SkSL::Type::MakeArrayType("mat3[4]", *context.fTypes.fFloat3x3, 4); + REPORTER_ASSERT(r, 192 == layout.size(*array)); + REPORTER_ASSERT(r, 16 == layout.alignment(*array)); + REPORTER_ASSERT(r, 48 == layout.stride(*array)); + } + + // Structs A and B from example in https://www.w3.org/TR/WGSL/#structure-member-layout + // + // struct A { // align(8) size(24) + // u: f32, // offset(0) align(4) size(4) + // v: f32, // offset(4) align(4) size(4) + // w: vec2, // offset(8) align(8) size(8) + // x: f32 // offset(16) align(4) size(4) + // // padding // offset(20) size(4) + // } + TArray fields; + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("u"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("v"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("w"), + context.fTypes.fFloat2.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("x"), + context.fTypes.fFloat.get()); + std::unique_ptr structA = SkSL::Type::MakeStructType( + context, SkSL::Position(), std::string_view("A"), std::move(fields)); + REPORTER_ASSERT(r, 24 == layout.size(*structA)); + REPORTER_ASSERT(r, 8 == layout.alignment(*structA)); + fields = {}; + + // struct B { // align(16) size(160) + // a: vec2, // offset(0) align(8) size(8) + // // padding // offset(8) size(8) + // b: vec3, // offset(16) align(16) size(12) + // c: f32, // offset(28) align(4) size(4) + // d: f32, // offset(32) align(4) size(4) + // // padding // offset(36) size(4) + // e: A, // offset(40) align(8) size(24) + // f: vec3, // offset(64) align(16) size(12) + // // padding // offset(76) size(4) + // g: array, // offset(80) align(16) size(72) + // h: i32 // offset(152) align(4) size(4) + // // padding // offset(156) size(4) + // } + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("a"), + context.fTypes.fFloat2.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("b"), + context.fTypes.fFloat3.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("c"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("d"), + context.fTypes.fFloat.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("e"), + structA.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("f"), + context.fTypes.fFloat3.get()); + auto array = SkSL::Type::MakeArrayType("A[3]", *structA, 3); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("g"), + array.get()); + fields.emplace_back(SkSL::Position(), + SkSL::Layout(), + SkSL::ModifierFlag::kNone, + std::string_view("h"), + context.fTypes.fInt.get()); + std::unique_ptr structB = SkSL::Type::MakeStructType( + context, SkSL::Position(), std::string_view("B"), std::move(fields)); + REPORTER_ASSERT(r, 160 == layout.size(*structB)); + REPORTER_ASSERT(r, 16 == layout.alignment(*structB)); +} + +DEF_TEST(SkSLMemoryLayoutTest_WGSLStorage_EnableF16, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; SkSL::Context context(types, &caps, errors); - SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLStorage); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLStorage_EnableF16); // The values here are taken from https://www.w3.org/TR/WGSL/#alignment-and-size, table titled // "Alignment and size for host-shareable types". @@ -507,42 +1104,58 @@ DEF_TEST(SkSLMemoryLayoutWGSLStorageTest, r) { // scalars (i32, u32, f32, f16) REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fInt)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fUShort)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fFloat)); REPORTER_ASSERT(r, 2 == layout.size(*context.fTypes.fHalf)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fInt)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fShort)); + REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fUShort)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fFloat)); REPORTER_ASSERT(r, 2 == layout.alignment(*context.fTypes.fHalf)); // vec2, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fInt2)); REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fUShort2)); REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fFloat2)); REPORTER_ASSERT(r, 4 == layout.size(*context.fTypes.fHalf2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fInt2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fUShort2)); REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fFloat2)); REPORTER_ASSERT(r, 4 == layout.alignment(*context.fTypes.fHalf2)); // vec3, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fInt3)); REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fUShort3)); REPORTER_ASSERT(r, 12 == layout.size(*context.fTypes.fFloat3)); - REPORTER_ASSERT(r, 6 == layout.size(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 6 == layout.size(*context.fTypes.fHalf3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort3)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat3)); - REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf3)); // vec4, T: i32, u32, f32, f16 REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fInt4)); REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fUShort4)); REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat4)); - REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 8 == layout.size(*context.fTypes.fHalf4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fInt4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUInt4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fUShort4)); REPORTER_ASSERT(r, 16 == layout.alignment(*context.fTypes.fFloat4)); - REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4)); + REPORTER_ASSERT(r, 8 == layout.alignment(*context.fTypes.fHalf4)); // mat2x2, mat2x2 REPORTER_ASSERT(r, 16 == layout.size(*context.fTypes.fFloat2x2)); @@ -767,7 +1380,7 @@ DEF_TEST(SkSLMemoryLayoutWGSLStorageTest, r) { REPORTER_ASSERT(r, 16 == layout.alignment(*structB)); } -DEF_TEST(SkSLMemoryLayoutWGSLUnsupportedTypesTest, r) { +DEF_TEST(SkSLMemoryLayoutTest_WGSLUnsupportedTypes, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; @@ -784,20 +1397,16 @@ DEF_TEST(SkSLMemoryLayoutWGSLUnsupportedTypesTest, r) { auto testStruct = SkSL::Type::MakeStructType( context, SkSL::Position(), std::string_view("Test"), std::move(fields)); - SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform_EnableF16); REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fBool)); REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fBool2)); REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fBool3)); REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fBool4)); - REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fShort)); - REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fShort2)); - REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fShort3)); - REPORTER_ASSERT(r, !layout.isSupported(*context.fTypes.fShort4)); REPORTER_ASSERT(r, !layout.isSupported(*testArray)); REPORTER_ASSERT(r, !layout.isSupported(*testStruct)); } -DEF_TEST(SkSLMemoryLayoutWGSLSupportedTypesTest, r) { +DEF_TEST(SkSLMemoryLayoutTest_WGSLSupportedTypes, r) { SkSL::TestingOnly_AbortErrorReporter errors; SkSL::ShaderCaps caps; SkSL::BuiltinTypes types; @@ -814,23 +1423,29 @@ DEF_TEST(SkSLMemoryLayoutWGSLSupportedTypesTest, r) { auto testStruct = SkSL::Type::MakeStructType( context, SkSL::Position(), std::string_view("Test"), std::move(fields)); - SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform); + SkSL::MemoryLayout layout(SkSL::MemoryLayout::Standard::kWGSLUniform_EnableF16); // scalars (i32, u32, f32, f16) REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fInt)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUInt)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fShort)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUShort)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fFloat)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fHalf)); // vec2, T: i32, u32, f32, f16 REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fInt2)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUInt2)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fShort2)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUShort2)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fFloat2)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fHalf2)); // vec3, T: i32, u32, f32, f16 REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fInt3)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUInt3)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fShort3)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUShort3)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fFloat3)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fHalf3)); @@ -838,6 +1453,8 @@ DEF_TEST(SkSLMemoryLayoutWGSLSupportedTypesTest, r) { REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fInt4)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUInt4)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fFloat4)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fShort4)); + REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fUShort4)); REPORTER_ASSERT(r, layout.isSupported(*context.fTypes.fHalf4)); // mat2x2, mat2x2 diff --git a/tests/SkSLTest.cpp b/tests/SkSLTest.cpp index c2652087a3a2..f7620ef1a986 100644 --- a/tests/SkSLTest.cpp +++ b/tests/SkSLTest.cpp @@ -60,6 +60,18 @@ #include #include +#if defined(SK_GRAPHITE) +#include "include/gpu/graphite/Context.h" +#include "include/gpu/graphite/ContextOptions.h" +#include "include/gpu/graphite/Recorder.h" +#include "include/gpu/graphite/Surface.h" +#include "src/gpu/graphite/Caps.h" +#include "src/gpu/graphite/ContextPriv.h" +#if defined(SK_DAWN) +#include "src/gpu/graphite/dawn/DawnCaps.h" +#endif +#endif + using namespace skia_private; namespace SkSL { class Context; } @@ -68,7 +80,7 @@ struct GrContextOptions; static constexpr int kWidth = 2; static constexpr int kHeight = 2; -enum class SkSLTestFlags : int { +enum class SkSLTestFlag : int { /** `CPU` tests must pass when painted to a CPU-backed surface via SkRuntimeEffect. */ CPU = 1 << 0, @@ -91,16 +103,18 @@ enum class SkSLTestFlags : int { UsesNaN = 1 << 4, }; -static constexpr bool is_cpu(SkEnumBitMask flags) { - return SkToBool(flags & SkSLTestFlags::CPU); +using SkSLTestFlags = SkEnumBitMask; + +static constexpr bool is_cpu(SkSLTestFlags flags) { + return SkToBool(flags & SkSLTestFlag::CPU); } -static constexpr bool is_gpu(SkEnumBitMask flags) { - return (flags & SkSLTestFlags::GPU) || (flags & SkSLTestFlags::GPU_ES3); +static constexpr bool is_gpu(SkSLTestFlags flags) { + return (flags & SkSLTestFlag::GPU) || (flags & SkSLTestFlag::GPU_ES3); } -static constexpr bool is_strict_es2(SkEnumBitMask flags) { - return !(flags & SkSLTestFlags::GPU_ES3) && !(flags & SkSLTestFlags::ES3); +static constexpr bool is_strict_es2(SkSLTestFlags flags) { + return !(flags & SkSLTestFlag::GPU_ES3) && !(flags & SkSLTestFlag::ES3); } struct UniformData { @@ -275,8 +289,8 @@ static void test_permutations(skiatest::Reporter* r, SkSurface* surface, const char* testFile, bool strictES2) { - SkRuntimeEffect::Options options = - strictES2 ? SkRuntimeEffect::Options{} : SkRuntimeEffectPriv::ES3Options(); + SkRuntimeEffect::Options options = strictES2 ? SkRuntimeEffect::Options{} + : SkRuntimeEffectPriv::ES3Options(); options.forceUnoptimized = false; test_one_permutation(r, surface, testFile, "", options); @@ -284,10 +298,8 @@ static void test_permutations(skiatest::Reporter* r, test_one_permutation(r, surface, testFile, " (Unoptimized)", options); } -static void test_cpu(skiatest::Reporter* r, - const char* testFile, - SkEnumBitMask flags) { - SkASSERT(flags & SkSLTestFlags::CPU); +static void test_cpu(skiatest::Reporter* r, const char* testFile, SkSLTestFlags flags) { + SkASSERT(flags & SkSLTestFlag::CPU); // Create a raster-backed surface. const SkImageInfo info = SkImageInfo::MakeN32Premul(kWidth, kHeight); @@ -296,27 +308,28 @@ static void test_cpu(skiatest::Reporter* r, test_permutations(r, surface.get(), testFile, /*strictES2=*/true); } -static void test_gpu(skiatest::Reporter* r, - GrDirectContext* ctx, - const char* testFile, - SkEnumBitMask flags) { +#if defined(SK_GANESH) +static void test_ganesh(skiatest::Reporter* r, + GrDirectContext* ctx, + const char* testFile, + SkSLTestFlags flags) { // If this is an ES3-only test on a GPU which doesn't support SkSL ES3, return immediately. - bool shouldRunGPU = SkToBool(flags & SkSLTestFlags::GPU); + bool shouldRunGPU = SkToBool(flags & SkSLTestFlag::GPU); bool shouldRunGPU_ES3 = - (flags & SkSLTestFlags::GPU_ES3) && + (flags & SkSLTestFlag::GPU_ES3) && (ctx->priv().caps()->shaderCaps()->supportedSkSLVerion() >= SkSL::Version::k300); if (!shouldRunGPU && !shouldRunGPU_ES3) { return; } // If this is a test that requires the GPU to generate NaN values, check for that first. - if (flags & SkSLTestFlags::UsesNaN) { + if (flags & SkSLTestFlag::UsesNaN) { if (!gpu_generates_nan(r, ctx)) { return; } } - // Create a GPU-backed surface. + // Create a GPU-backed Ganesh surface. const SkImageInfo info = SkImageInfo::MakeN32Premul(kWidth, kHeight); sk_sp surface(SkSurfaces::RenderTarget(ctx, skgpu::Budgeted::kNo, info)); @@ -327,10 +340,60 @@ static void test_gpu(skiatest::Reporter* r, test_permutations(r, surface.get(), testFile, /*strictES2=*/false); } } +#endif + +#if defined(SK_GRAPHITE) +static void test_graphite(skiatest::Reporter* r, + skgpu::graphite::Context* ctx, + const char* testFile, + SkSLTestFlags flags) { + // If this is an ES3-only test on a GPU which doesn't support SkSL ES3, return immediately. + bool shouldRunGPU = SkToBool(flags & SkSLTestFlag::GPU); + bool shouldRunGPU_ES3 = + (flags & SkSLTestFlag::GPU_ES3) && + (ctx->priv().caps()->shaderCaps()->supportedSkSLVerion() >= SkSL::Version::k300); + if (!shouldRunGPU && !shouldRunGPU_ES3) { + return; + } + +#if defined(SK_DAWN) + if (ctx->backend() == skgpu::BackendApi::kDawn) { + // We always force-enable WGSL via `force_wgsl_in_dawn` below. Dawn's SPIR-V Reader has + // known limitations that we will bump into otherwise (some of our tests cause it to emit + // malformed WGSL). + SkASSERT(static_cast(ctx->priv().caps())->enableWGSL()); + + // If this is a test that requires the GPU to generate NaN values, we don't run it in Dawn. + // (WGSL/Dawn does not support infinity or NaN even if the GPU natively does.) + if (flags & SkSLTestFlag::UsesNaN) { + return; + } + } +#endif + +#if defined(SK_BUILD_FOR_UNIX) && !defined(SK_DEBUG) + // TODO(b/297239696): re-enable these tests once Graphite works properly here + return; +#else + // Create a GPU-backed Graphite surface. + std::unique_ptr recorder = ctx->makeRecorder(); + + const SkImageInfo info = SkImageInfo::Make({kWidth, kHeight}, + kRGBA_8888_SkColorType, + kPremul_SkAlphaType); + sk_sp surface = SkSurfaces::RenderTarget(recorder.get(), info); + + if (shouldRunGPU) { + test_permutations(r, surface.get(), testFile, /*strictES2=*/true); + } + if (shouldRunGPU_ES3) { + test_permutations(r, surface.get(), testFile, /*strictES2=*/false); + } +#endif +} +#endif -static void test_clone(skiatest::Reporter* r, - const char* testFile, - SkEnumBitMask flags) { +static void test_clone(skiatest::Reporter* r, const char* testFile, SkSLTestFlags flags) { SkString shaderString = load_source(r, testFile, ""); if (shaderString.isEmpty()) { return; @@ -358,26 +421,24 @@ static void test_clone(skiatest::Reporter* r, SkSL::ThreadContext::End(); } -static void report_rp_pass(skiatest::Reporter* r, - const char* testFile, - SkEnumBitMask flags) { - if (!(flags & SkSLTestFlags::CPU) && !(flags & SkSLTestFlags::ES3)) { +static void report_rp_pass(skiatest::Reporter* r, const char* testFile, SkSLTestFlags flags) { + if (!(flags & SkSLTestFlag::CPU) && !(flags & SkSLTestFlag::ES3)) { ERRORF(r, "NEW: %s", testFile); } } static void report_rp_fail(skiatest::Reporter* r, const char* testFile, - SkEnumBitMask flags, + SkSLTestFlags flags, const char* reason) { - if ((flags & SkSLTestFlags::CPU) || (flags & SkSLTestFlags::ES3)) { + if ((flags & SkSLTestFlag::CPU) || (flags & SkSLTestFlag::ES3)) { ERRORF(r, "%s: %s", testFile, reason); } } static void test_raster_pipeline(skiatest::Reporter* r, const char* testFile, - SkEnumBitMask flags) { + SkSLTestFlags flags) { SkString shaderString = load_source(r, testFile, ""); if (shaderString.isEmpty()) { return; @@ -481,14 +542,51 @@ static void test_raster_pipeline(skiatest::Reporter* r, report_rp_pass(r, testFile, flags); } + +#if defined(SK_GANESH) +#define DEF_GANESH_SKSL_TEST(flags, ctsEnforcement, name, path) \ + DEF_CONDITIONAL_GANESH_TEST_FOR_RENDERING_CONTEXTS(SkSL##name##_Ganesh, \ + r, \ + ctxInfo, \ + is_gpu(flags), \ + ctsEnforcement) { \ + test_ganesh(r, ctxInfo.directContext(), path, flags); \ + } +#else +#define DEF_GANESH_SKSL_TEST(flags, ctsEnforcement, name, path) /* Ganesh is disabled */ +#endif + +#if defined(SK_GRAPHITE) +static bool is_native_context_or_dawn(skgpu::ContextType type) { + // This avoids re-testing Dawn over and over again against every possible API. + return skgpu::IsNativeBackend(type) || + type == skgpu::ContextType::kDawn; +} + +static void force_wgsl_in_dawn(skgpu::graphite::ContextOptions* options) { + options->fEnableWGSL = true; +} + +#define DEF_GRAPHITE_SKSL_TEST(flags, ctsEnforcement, name, path) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_CONTEXTS(SkSL##name##_Graphite, \ + is_native_context_or_dawn, \ + r, \ + context, \ + force_wgsl_in_dawn, \ + is_gpu(flags), \ + ctsEnforcement) { \ + test_graphite(r, context, path, flags); \ + } +#else +#define DEF_GRAPHITE_SKSL_TEST(flags, ctsEnforcement, name, path) /* Graphite is disabled */ +#endif + #define SKSL_TEST(flags, ctsEnforcement, name, path) \ DEF_CONDITIONAL_TEST(SkSL##name##_CPU, r, is_cpu(flags)) { test_cpu(r, path, flags); } \ DEF_TEST(SkSL##name##_RP, r) { test_raster_pipeline(r, path, flags); } \ - DEF_CONDITIONAL_GANESH_TEST_FOR_RENDERING_CONTEXTS( \ - SkSL##name##_GPU, r, ctxInfo, is_gpu(flags), ctsEnforcement) { \ - test_gpu(r, ctxInfo.directContext(), path, flags); \ - } \ - DEF_TEST(SkSL##name##_Clone, r) { test_clone(r, path, flags); } + DEF_TEST(SkSL##name##_Clone, r) { test_clone(r, path, flags); } \ + DEF_GANESH_SKSL_TEST(flags, ctsEnforcement, name, path) \ + DEF_GRAPHITE_SKSL_TEST(flags, ctsEnforcement, name, path) /** * Test flags: @@ -504,11 +602,11 @@ static void test_raster_pipeline(skiatest::Reporter* r, // clang-format off -constexpr SkEnumBitMask CPU = SkSLTestFlags::CPU; -constexpr SkEnumBitMask ES3 = SkSLTestFlags::ES3; -constexpr SkEnumBitMask GPU = SkSLTestFlags::GPU; -constexpr SkEnumBitMask GPU_ES3 = SkSLTestFlags::GPU_ES3; -constexpr SkEnumBitMask UsesNaN = SkSLTestFlags::UsesNaN; +constexpr SkSLTestFlags CPU = SkSLTestFlag::CPU; +constexpr SkSLTestFlags ES3 = SkSLTestFlag::ES3; +constexpr SkSLTestFlags GPU = SkSLTestFlag::GPU; +constexpr SkSLTestFlags GPU_ES3 = SkSLTestFlag::GPU_ES3; +constexpr SkSLTestFlags UsesNaN = SkSLTestFlag::UsesNaN; constexpr auto kApiLevel_T = CtsEnforcement::kApiLevel_T; constexpr auto kApiLevel_U = CtsEnforcement::kApiLevel_U; constexpr auto kNever = CtsEnforcement::kNever; @@ -702,6 +800,7 @@ SKSL_TEST(CPU | GPU, kNextRelease,MatrixSwizzleStore, "shared/M SKSL_TEST(CPU | GPU, kApiLevel_T, MatrixToVectorCast, "shared/MatrixToVectorCast.sksl") SKSL_TEST(CPU | GPU, kApiLevel_T, MultipleAssignments, "shared/MultipleAssignments.sksl") SKSL_TEST(CPU | GPU, kApiLevel_T, NumberCasts, "shared/NumberCasts.sksl") +SKSL_TEST(CPU | GPU, kNextRelease,NestedComparisonIntrinsics, "shared/NestedComparisonIntrinsics.sksl") SKSL_TEST(CPU | GPU, kApiLevel_T, OperatorsES2, "shared/OperatorsES2.sksl") SKSL_TEST(GPU_ES3, kNever, OperatorsES3, "shared/OperatorsES3.sksl") SKSL_TEST(CPU | GPU, kApiLevel_T, Ossfuzz36852, "shared/Ossfuzz36852.sksl") @@ -762,3 +861,5 @@ SKSL_TEST(CPU | GPU, kApiLevel_T, VectorConstructors, "shared/V SKSL_TEST(CPU | GPU, kApiLevel_T, VectorToMatrixCast, "shared/VectorToMatrixCast.sksl") SKSL_TEST(CPU | GPU, kApiLevel_T, VectorScalarMath, "shared/VectorScalarMath.sksl") SKSL_TEST(ES3 | GPU_ES3, kNever, WhileLoopControlFlow, "shared/WhileLoopControlFlow.sksl") + +SKSL_TEST(CPU | GPU, kNextRelease,VoidInSequenceExpressions, "workarounds/VoidInSequenceExpressions.sksl") diff --git a/tests/SpecialSurfaceTest.cpp b/tests/SpecialSurfaceTest.cpp index 02435ceb6782..ae6019e9aed5 100644 --- a/tests/SpecialSurfaceTest.cpp +++ b/tests/SpecialSurfaceTest.cpp @@ -89,7 +89,8 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SpecialSurface_Gpu1, #include "src/gpu/graphite/ContextPriv.h" #include "src/gpu/graphite/SpecialImage_Graphite.h" -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(SpecialSurface_Graphite, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(SpecialSurface_Graphite, reporter, context, + CtsEnforcement::kNextRelease) { using namespace skgpu::graphite; auto caps = context->priv().caps(); diff --git a/tests/SurfaceSemaphoreTest.cpp b/tests/SurfaceSemaphoreTest.cpp index 7fa8e7f7f174..56407167d548 100644 --- a/tests/SurfaceSemaphoreTest.cpp +++ b/tests/SurfaceSemaphoreTest.cpp @@ -31,6 +31,7 @@ #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include "tools/gpu/TestContext.h" #include @@ -46,6 +47,7 @@ #endif #ifdef SK_VULKAN +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "src/gpu/ganesh/vk/GrVkCommandPool.h" #include "src/gpu/ganesh/vk/GrVkGpu.h" #include "src/gpu/ganesh/vk/GrVkUtil.h" @@ -205,7 +207,8 @@ void surface_semaphore_test(skiatest::Reporter* reporter, // In Vulkan we need to make sure we are sending the correct VkImageLayout in with the // backendImage. After the first child draw the layout gets changed to SHADER_READ, so // we just manually set that here. - backendTexture.setVkImageLayout(VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + GrBackendTextures::SetVkImageLayout(&backendTexture, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); } #endif @@ -215,30 +218,28 @@ void surface_semaphore_test(skiatest::Reporter* reporter, #ifdef SK_GL DEF_GANESH_TEST(SurfaceSemaphores, reporter, options, CtsEnforcement::kApiLevel_T) { #if defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_MAC) - static constexpr auto kNativeGLType = sk_gpu_test::GrContextFactory::kGL_ContextType; + static constexpr auto kNativeGLType = skgpu::ContextType::kGL; #else - static constexpr auto kNativeGLType = sk_gpu_test::GrContextFactory::kGLES_ContextType; + static constexpr auto kNativeGLType = skgpu::ContextType::kGLES; #endif - for (int typeInt = 0; typeInt < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++typeInt) { + for (int typeInt = 0; typeInt < skgpu::kContextTypeCount; ++typeInt) { for (auto flushType : {FlushType::kSurface, FlushType::kImage, FlushType::kContext}) { - sk_gpu_test::GrContextFactory::ContextType contextType = - (sk_gpu_test::GrContextFactory::ContextType) typeInt; + skgpu::ContextType contextType = static_cast(typeInt); // Use "native" instead of explicitly trying OpenGL and OpenGL ES. Do not use GLES on // desktop since tests do not account for not fixing http://skbug.com/2809 - if (contextType == sk_gpu_test::GrContextFactory::kGL_ContextType || - contextType == sk_gpu_test::GrContextFactory::kGLES_ContextType) { + if (contextType == skgpu::ContextType::kGL || + contextType == skgpu::ContextType::kGLES) { if (contextType != kNativeGLType) { continue; } } sk_gpu_test::GrContextFactory factory(options); sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(contextType); - if (!sk_gpu_test::GrContextFactory::IsRenderingContext(contextType)) { + if (!skgpu::IsRenderingContext(contextType)) { continue; } - skiatest::ReporterContext ctx( - reporter, SkString(sk_gpu_test::GrContextFactory::ContextTypeName(contextType))); + skiatest::ReporterContext ctx(reporter, SkString(skgpu::ContextTypeName(contextType))); if (ctxInfo.directContext()) { sk_gpu_test::ContextInfo child1 = factory.getSharedContextInfo(ctxInfo.directContext(), 0); diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp index c22775adc63a..2f82aeb347ef 100644 --- a/tests/SurfaceTest.cpp +++ b/tests/SurfaceTest.cpp @@ -871,10 +871,7 @@ static void test_surface_context_clear(skiatest::Reporter* reporter, } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SurfaceClear_Gpu, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SurfaceClear_Gpu, reporter, ctxInfo, CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); // Snaps an image from a surface and then makes a SurfaceContext from the image's texture. auto makeImageSurfaceContext = [dContext](SkSurface* surface) { @@ -1074,10 +1071,10 @@ DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(SurfaceWrappedWithRelease_Gpu, } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SurfaceAttachStencil_Gpu, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SurfaceAttachStencil_Gpu, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto context = ctxInfo.directContext(); const GrCaps* caps = context->priv().caps(); diff --git a/tests/SwizzlerTest.cpp b/tests/SwizzlerTest.cpp index 6246a7a2c0b7..c50a9f7c4151 100644 --- a/tests/SwizzlerTest.cpp +++ b/tests/SwizzlerTest.cpp @@ -11,7 +11,7 @@ #include "include/core/SkImageInfo.h" #include "include/core/SkSwizzle.h" #include "src/codec/SkSampler.h" -#include "src/core/SkOpts.h" +#include "src/core/SkSwizzlePriv.h" #include "tests/Test.h" #include diff --git a/tests/Test.h b/tests/Test.h index 4570119862c6..970d77f098b8 100644 --- a/tests/Test.h +++ b/tests/Test.h @@ -15,6 +15,10 @@ #include "tests/CtsEnforcement.h" #include "tools/Registry.h" +#if defined(SK_GANESH) || defined(SK_GRAPHITE) +namespace skgpu { enum class ContextType; } +#endif + #if defined(SK_GANESH) #include "tools/gpu/GrContextFactory.h" // IWYU pragma: export (because it is used by a macro) #else @@ -27,7 +31,10 @@ namespace sk_gpu_test { class ContextInfo; } struct GrContextOptions; -namespace skgpu::graphite { class Context; } +namespace skgpu::graphite { +class Context; +struct ContextOptions; +} namespace skiatest { @@ -98,29 +105,35 @@ class ReporterContext : SkNoncopyable { Reporter* fReporter; }; -typedef void (*CPUTestProc)(skiatest::Reporter*); -typedef void (*GaneshTestProc)(skiatest::Reporter*, const GrContextOptions&); -typedef void (*GraphiteTestProc)(skiatest::Reporter*); -typedef void (*ContextOptionsProc)(GrContextOptions*); +using CPUTestProc = void (*)(skiatest::Reporter*); +using GaneshTestProc = void (*)(skiatest::Reporter*, const GrContextOptions&); +using GaneshContextOptionsProc = void (*)(GrContextOptions*); +using GraphiteTestProc = void (*)(skiatest::Reporter*, + const skgpu::graphite::ContextOptions&); +using GraphiteContextOptionsProc = void (*)(skgpu::graphite::ContextOptions*); enum class TestType : uint8_t { kCPU, kGanesh, kGraphite }; struct Test { static Test MakeCPU(const char* name, CPUTestProc proc) { - return Test(name, TestType::kCPU, CtsEnforcement::kNever, - proc, nullptr, nullptr, nullptr); + return Test{name, TestType::kCPU, CtsEnforcement::kNever, + proc, nullptr, nullptr, nullptr, nullptr}; } - static Test MakeGanesh(const char* name, CtsEnforcement ctsEnforcement, - GaneshTestProc proc, ContextOptionsProc optionsProc = nullptr) { - return Test(name, TestType::kGanesh, ctsEnforcement, - nullptr, proc, nullptr, optionsProc); + static Test MakeGanesh(const char* name, + CtsEnforcement ctsEnforcement, + GaneshTestProc proc, + GaneshContextOptionsProc optionsProc = nullptr) { + return Test{name, TestType::kGanesh, ctsEnforcement, + nullptr, proc, nullptr, optionsProc, nullptr}; } - static Test MakeGraphite(const char* name, CtsEnforcement ctsEnforcement, - GraphiteTestProc proc) { - return Test(name, TestType::kGraphite, ctsEnforcement, - nullptr, nullptr, proc, nullptr); + static Test MakeGraphite(const char* name, + CtsEnforcement ctsEnforcement, + GraphiteTestProc proc, + GraphiteContextOptionsProc optionsProc = nullptr) { + return Test{name, TestType::kGraphite, ctsEnforcement, + nullptr, nullptr, proc, nullptr, optionsProc}; } const char* fName; @@ -129,11 +142,18 @@ struct Test { CPUTestProc fCPUProc = nullptr; GaneshTestProc fGaneshProc = nullptr; GraphiteTestProc fGraphiteProc = nullptr; - ContextOptionsProc fContextOptionsProc = nullptr; + GaneshContextOptionsProc fGaneshContextOptionsProc = nullptr; + GraphiteContextOptionsProc fGraphiteContextOptionsProc = nullptr; void modifyGrContextOptions(GrContextOptions* options) { - if (fContextOptionsProc) { - (*fContextOptionsProc)(options); + if (fGaneshContextOptionsProc) { + (*fGaneshContextOptionsProc)(options); + } + } + + void modifyGraphiteContextOptions(skgpu::graphite::ContextOptions* options) { + if (fGraphiteContextOptionsProc) { + (*fGraphiteContextOptionsProc)(options); } } @@ -149,10 +169,10 @@ struct Test { this->fGaneshProc(r, options); } - void graphite(skiatest::Reporter* r) const { + void graphite(skiatest::Reporter* r, const skgpu::graphite::ContextOptions& options) const { SkASSERT(this->fTestType == TestType::kGraphite); TRACE_EVENT1("test_graphite", TRACE_FUNC, "name", this->fName/*these are static*/); - this->fGraphiteProc(r); + this->fGraphiteProc(r, options); } private: @@ -162,49 +182,53 @@ struct Test { CPUTestProc cpuProc, GaneshTestProc ganeshProc, GraphiteTestProc graphiteProc, - ContextOptionsProc optionsProc) + GaneshContextOptionsProc ganeshOptionsProc, + GraphiteContextOptionsProc graphiteOptionsProc) : fName(name) , fTestType(testType) , fCTSEnforcement(ctsEnforcement) , fCPUProc(cpuProc) , fGaneshProc(ganeshProc) , fGraphiteProc(graphiteProc) - , fContextOptionsProc(optionsProc) {} + , fGaneshContextOptionsProc(ganeshOptionsProc) + , fGraphiteContextOptionsProc(graphiteOptionsProc) {} }; using TestRegistry = sk_tools::Registry; #if defined(SK_GANESH) -using GrContextFactoryContextType = sk_gpu_test::GrContextFactory::ContextType; +using GpuContextType = skgpu::ContextType; #else -using GrContextFactoryContextType = nullptr_t; +using GpuContextType = nullptr_t; #endif typedef void GrContextTestFn(Reporter*, const sk_gpu_test::ContextInfo&); -typedef bool GrContextTypeFilterFn(GrContextFactoryContextType); +typedef bool ContextTypeFilterFn(GpuContextType); // We want to run the same test against potentially multiple Ganesh backends. Test runners should // implement this function by calling the testFn with a fresh ContextInfo if that backend matches // the provided filter. If filter is nullptr, then all compiled-in Ganesh backends should be used. // The reporter and opts arguments are piped in from Test::run. -void RunWithGaneshTestContexts(GrContextTestFn* testFn, GrContextTypeFilterFn* filter, +void RunWithGaneshTestContexts(GrContextTestFn* testFn, ContextTypeFilterFn* filter, Reporter* reporter, const GrContextOptions& options); // These context filters should be implemented by test runners and return true if the backend was // compiled in (i.e. is supported) and matches the criteria indicated by the name of the filter. -extern bool IsGLContextType(GrContextFactoryContextType); -extern bool IsVulkanContextType(GrContextFactoryContextType); -extern bool IsMetalContextType(GrContextFactoryContextType); -extern bool IsDawnContextType(GrContextFactoryContextType); -extern bool IsDirect3DContextType(GrContextFactoryContextType); -extern bool IsRenderingGLContextType(GrContextFactoryContextType); -extern bool IsMockContextType(GrContextFactoryContextType); +extern bool IsGLContextType(GpuContextType); +extern bool IsVulkanContextType(GpuContextType); +extern bool IsMetalContextType(GpuContextType); +extern bool IsDawnContextType(GpuContextType); +extern bool IsDirect3DContextType(GpuContextType); +extern bool IsMockContextType(GpuContextType); namespace graphite { typedef void GraphiteTestFn(Reporter*, skgpu::graphite::Context*); -void RunWithGraphiteTestContexts(GraphiteTestFn*, GrContextTypeFilterFn* filter, Reporter*); +void RunWithGraphiteTestContexts(GraphiteTestFn*, + ContextTypeFilterFn* filter, + Reporter*, + const skgpu::graphite::ContextOptions&); } // namespace graphite @@ -270,11 +294,9 @@ class Timer { using skiatest::Test; -#define DEF_CONDITIONAL_TEST(name, reporter, condition) \ - static void test_##name(skiatest::Reporter*); \ - skiatest::TestRegistry name##TestRegistry(Test::MakeCPU(#name, \ - test_##name), \ - condition); \ +#define DEF_CONDITIONAL_TEST(name, reporter, condition) \ + static void test_##name(skiatest::Reporter*); \ + skiatest::TestRegistry name##TestRegistry(Test::MakeCPU(#name, test_##name), condition); \ void test_##name(skiatest::Reporter* reporter) #define DEF_TEST(name, reporter) DEF_CONDITIONAL_TEST(name, reporter, true) @@ -287,56 +309,73 @@ using skiatest::Test; #define UNIX_ONLY_TEST DEF_TEST_DISABLED #endif -// TODO update all the callsites to support CtsEnforcement -#define DEF_GRAPHITE_TEST(name, reporter) \ - static void test_##name(skiatest::Reporter*); \ - static void test_graphite_##name(skiatest::Reporter* reporter) { \ - test_##name(reporter); \ - } \ - skiatest::TestRegistry name##TestRegistry(Test::MakeGraphite(#name, \ - CtsEnforcement::kNever, \ - test_graphite_##name)); \ +#define DEF_GRAPHITE_TEST(name, reporter, ctsEnforcement) \ + static void test_##name(skiatest::Reporter*); \ + static void test_graphite_##name(skiatest::Reporter* reporter, \ + const skgpu::graphite::ContextOptions&) { \ + test_##name(reporter); \ + } \ + skiatest::TestRegistry name##TestRegistry(Test::MakeGraphite(#name, ctsEnforcement, \ + test_graphite_##name)); \ void test_##name(skiatest::Reporter* reporter) -// TODO update all the callsites to support CtsEnforcement -#define DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, context_filter, reporter, graphite_context) \ - static void test_##name(skiatest::Reporter*, skgpu::graphite::Context*); \ - static void test_graphite_contexts_##name(skiatest::Reporter* _reporter) { \ - skiatest::graphite::RunWithGraphiteTestContexts(test_##name, context_filter, _reporter); \ - } \ - skiatest::TestRegistry name##TestRegistry(Test::MakeGraphite(#name, \ - CtsEnforcement::kNever, \ - test_graphite_contexts_##name)); \ +#define DEF_CONDITIONAL_GRAPHITE_TEST_FOR_CONTEXTS( \ + name, context_filter, reporter, graphite_context, opt_filter, cond, ctsEnforcement) \ + static void test_##name(skiatest::Reporter*, skgpu::graphite::Context*); \ + static void test_graphite_contexts_##name(skiatest::Reporter* _reporter, \ + const skgpu::graphite::ContextOptions& ctxOptions) { \ + skiatest::graphite::RunWithGraphiteTestContexts(test_##name, context_filter, \ + _reporter, ctxOptions); \ + } \ + skiatest::TestRegistry name##TestRegistry( \ + Test::MakeGraphite(#name, ctsEnforcement, test_graphite_contexts_##name, opt_filter), \ + cond); \ void test_##name(skiatest::Reporter* reporter, skgpu::graphite::Context* graphite_context) -#define DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(name, reporter, graphite_context) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, nullptr, reporter, graphite_context) - -#define DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(name, reporter, graphite_context) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, \ - sk_gpu_test::GrContextFactory::IsRenderingContext, \ - reporter, \ - graphite_context) - -#define DEF_GRAPHITE_TEST_FOR_VULKAN_CONTEXT(name, reporter, graphite_context) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, \ - skiatest::IsVulkanContextType, \ - reporter, \ - graphite_context) - -#define DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(name, reporter, graphite_context) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, \ - skiatest::IsMetalContextType, \ - reporter, \ - graphite_context) +#define DEF_CONDITIONAL_GRAPHITE_TEST_FOR_ALL_CONTEXTS(name, reporter, graphite_context, \ + cond, ctsEnforcement) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_CONTEXTS(name, nullptr, reporter, graphite_context, \ + nullptr, cond, ctsEnforcement) + +#define DEF_CONDITIONAL_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS( \ + name, reporter, graphite_context, cond, ctsEnforcement) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_CONTEXTS(name, \ + skgpu::IsRenderingContext, \ + reporter, \ + graphite_context, \ + nullptr, \ + cond, \ + ctsEnforcement) + +#define DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, context_filter, reporter, graphite_context, \ + ctsEnforcement) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_CONTEXTS( \ + name, context_filter, reporter, graphite_context, nullptr, true, ctsEnforcement) + +#define DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(name, reporter, graphite_context, ctsEnforcement) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_ALL_CONTEXTS(name, reporter, graphite_context, \ + true, ctsEnforcement) + +#define DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(name, reporter, graphite_context, ctsEnforcement) \ + DEF_CONDITIONAL_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(name, reporter, graphite_context, \ + true, ctsEnforcement) + +#define DEF_GRAPHITE_TEST_FOR_VULKAN_CONTEXT(name, reporter, graphite_context, ctsEnforcement) \ + DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, skiatest::IsVulkanContextType, reporter, \ + graphite_context, ctsEnforcement) + +#define DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(name, reporter, graphite_context) \ + DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, skiatest::IsMetalContextType, reporter, graphite_context, \ + CtsEnforcement::kNever) #define DEF_GRAPHITE_TEST_FOR_DAWN_CONTEXT(name, reporter, graphite_context) \ - DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, skiatest::IsDawnContextType, reporter, graphite_context) + DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, skiatest::IsDawnContextType, reporter, graphite_context, \ + CtsEnforcement::kNever) -#define DEF_GANESH_TEST(name, reporter, options, ctsEnforcement) \ - static void test_##name(skiatest::Reporter*, const GrContextOptions&); \ - skiatest::TestRegistry name##TestRegistry(Test::MakeGanesh( \ - #name, ctsEnforcement, test_##name, nullptr)); \ +#define DEF_GANESH_TEST(name, reporter, options, ctsEnforcement) \ + static void test_##name(skiatest::Reporter*, const GrContextOptions&); \ + skiatest::TestRegistry name##TestRegistry( \ + Test::MakeGanesh(#name, ctsEnforcement, test_##name, nullptr)); \ void test_##name(skiatest::Reporter* reporter, const GrContextOptions& options) #define DEF_CONDITIONAL_GANESH_TEST_FOR_CONTEXTS( \ @@ -346,9 +385,9 @@ using skiatest::Test; const GrContextOptions& options) { \ skiatest::RunWithGaneshTestContexts(test_##name, context_filter, reporter, options); \ } \ - skiatest::TestRegistry name##TestRegistry(Test::MakeGanesh( \ - #name, ctsEnforcement, test_gpu_contexts_##name, options_filter), \ - condition); \ + skiatest::TestRegistry name##TestRegistry( \ + Test::MakeGanesh(#name, ctsEnforcement, test_gpu_contexts_##name, options_filter), \ + condition); \ void test_##name(skiatest::Reporter* reporter, const sk_gpu_test::ContextInfo& context_info) #define DEF_CONDITIONAL_GANESH_TEST_FOR_ALL_CONTEXTS( \ @@ -356,14 +395,14 @@ using skiatest::Test; DEF_CONDITIONAL_GANESH_TEST_FOR_CONTEXTS( \ name, nullptr, reporter, context_info, nullptr, condition, ctsEnforcement) -#define DEF_CONDITIONAL_GANESH_TEST_FOR_RENDERING_CONTEXTS( \ - name, reporter, context_info, condition, ctsEnforcement) \ - DEF_CONDITIONAL_GANESH_TEST_FOR_CONTEXTS(name, \ - sk_gpu_test::GrContextFactory::IsRenderingContext, \ - reporter, \ - context_info, \ - nullptr, \ - condition, \ +#define DEF_CONDITIONAL_GANESH_TEST_FOR_RENDERING_CONTEXTS( \ + name, reporter, context_info, condition, ctsEnforcement) \ + DEF_CONDITIONAL_GANESH_TEST_FOR_CONTEXTS(name, \ + skgpu::IsRenderingContext, \ + reporter, \ + context_info, \ + nullptr, \ + condition, \ ctsEnforcement) #define DEF_GANESH_TEST_FOR_CONTEXTS( \ @@ -375,22 +414,21 @@ using skiatest::Test; DEF_GANESH_TEST_FOR_CONTEXTS(name, nullptr, reporter, context_info, nullptr, ctsEnforcement) #define DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(name, reporter, context_info, ctsEnforcement) \ - DEF_GANESH_TEST_FOR_CONTEXTS(name, \ - sk_gpu_test::GrContextFactory::IsRenderingContext, \ - reporter, \ - context_info, \ - nullptr, \ - ctsEnforcement) + DEF_GANESH_TEST_FOR_CONTEXTS( \ + name, skgpu::IsRenderingContext, reporter, context_info, nullptr, ctsEnforcement) + #define DEF_GANESH_TEST_FOR_ALL_GL_CONTEXTS(name, reporter, context_info, ctsEnforcement) \ DEF_GANESH_TEST_FOR_CONTEXTS( \ - name, &skiatest::IsGLContextType, reporter, context_info, nullptr, ctsEnforcement) -#define DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(name, reporter, context_info, ctsEnforcement) \ - DEF_GANESH_TEST_FOR_CONTEXTS(name, \ - &skiatest::IsRenderingGLContextType, \ - reporter, \ - context_info, \ - nullptr, \ + name, skiatest::IsGLContextType, reporter, context_info, nullptr, ctsEnforcement) + +#define DEF_GANESH_TEST_FOR_GL_CONTEXT(name, reporter, context_info, ctsEnforcement) \ + DEF_GANESH_TEST_FOR_CONTEXTS(name, \ + &skiatest::IsGLContextType, \ + reporter, \ + context_info, \ + nullptr, \ ctsEnforcement) + #define DEF_GANESH_TEST_FOR_MOCK_CONTEXT(name, reporter, context_info) \ DEF_GANESH_TEST_FOR_CONTEXTS(name, \ &skiatest::IsMockContextType, \ @@ -398,9 +436,11 @@ using skiatest::Test; context_info, \ nullptr, \ CtsEnforcement::kNever) + #define DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(name, reporter, context_info, ctsEnforcement) \ DEF_GANESH_TEST_FOR_CONTEXTS( \ name, &skiatest::IsVulkanContextType, reporter, context_info, nullptr, ctsEnforcement) + #define DEF_GANESH_TEST_FOR_METAL_CONTEXT(name, reporter, context_info) \ DEF_GANESH_TEST_FOR_CONTEXTS(name, \ &skiatest::IsMetalContextType, \ @@ -415,6 +455,7 @@ using skiatest::Test; context_info, \ nullptr, \ CtsEnforcement::kNever) + #define DEF_GANESH_TEST_FOR_DAWN_CONTEXT(name, reporter, context_info) \ DEF_GANESH_TEST_FOR_CONTEXTS(name, \ &skiatest::IsDawnContextType, \ diff --git a/tests/TextureBindingsResetTest.cpp b/tests/TextureBindingsResetTest.cpp index 3295ee1c4765..527af9276081 100644 --- a/tests/TextureBindingsResetTest.cpp +++ b/tests/TextureBindingsResetTest.cpp @@ -45,10 +45,10 @@ struct GrContextOptions; -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(TextureBindingsResetTest, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(TextureBindingsResetTest, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { #define GL(F) GR_GL_CALL(ctxInfo.glContext()->gl(), F) auto dContext = ctxInfo.directContext(); diff --git a/tests/TextureProxyTest.cpp b/tests/TextureProxyTest.cpp index 32b1e4d1866c..c39a7dedeb23 100644 --- a/tests/TextureProxyTest.cpp +++ b/tests/TextureProxyTest.cpp @@ -272,8 +272,7 @@ static void invalidation_test(GrDirectContext* dContext, // Some of our backends use buffers to do uploads that will live in our resource cache. So we // need to account for those extra resources here. int bufferResources = 0; - if (dContext->backend() == GrBackendApi::kDawn || - dContext->backend() == GrBackendApi::kVulkan || + if (dContext->backend() == GrBackendApi::kVulkan || dContext->backend() == GrBackendApi::kDirect3D || dContext->backend() == GrBackendApi::kMetal) { bufferResources = 1; diff --git a/tests/TextureSizeTest.cpp b/tests/TextureSizeTest.cpp index fec0af64529a..f1f37ccecab9 100644 --- a/tests/TextureSizeTest.cpp +++ b/tests/TextureSizeTest.cpp @@ -92,7 +92,8 @@ DEF_GANESH_TEST_FOR_ALL_CONTEXTS(ImageSizeTest_Ganesh, #if defined(SK_GRAPHITE) -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ImageSizeTest_Graphite, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ImageSizeTest_Graphite, reporter, context, + CtsEnforcement::kNextRelease) { using namespace skgpu::graphite; std::unique_ptr recorder = context->makeRecorder(); diff --git a/tests/TraceMemoryDumpTest.cpp b/tests/TraceMemoryDumpTest.cpp index 3ee83002fb72..f8a62647beb6 100644 --- a/tests/TraceMemoryDumpTest.cpp +++ b/tests/TraceMemoryDumpTest.cpp @@ -88,10 +88,10 @@ void ValidateMemoryDumps(skiatest::Reporter* reporter, GrDirectContext* dContext } } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLBuffer, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_ownedGLBuffer, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); const size_t kMemorySize = 1024; @@ -101,10 +101,10 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLBuffer, ValidateMemoryDumps(reporter, dContext, 2, kMemorySize, true /* isOwned */); } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLTexture, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_ownedGLTexture, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); @@ -125,10 +125,10 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLTexture, ValidateMemoryDumps(reporter, dContext, 2, texture->gpuMemorySize(), true /* isOwned */); } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_unownedGLTexture, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_unownedGLTexture, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); @@ -153,10 +153,10 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_unownedGLTexture, ValidateMemoryDumps(reporter, dContext, 2, texture->gpuMemorySize(), false /* isOwned */); } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLRenderTarget, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_ownedGLRenderTarget, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); @@ -181,10 +181,10 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLRenderTarget, ValidateMemoryDumps(reporter, dContext, 2, rt->gpuMemorySize(), true /* isOwned */); } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_unownedGLRenderTarget, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_unownedGLRenderTarget, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); @@ -209,10 +209,10 @@ DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_unownedGLRenderTarge ValidateMemoryDumps(reporter, dContext, 2, rt->gpuMemorySize(), false /* isOwned */); } -DEF_GANESH_TEST_FOR_GL_RENDERING_CONTEXTS(SkTraceMemoryDump_ownedGLTextureRenderTarget, - reporter, - ctxInfo, - CtsEnforcement::kApiLevel_T) { +DEF_GANESH_TEST_FOR_GL_CONTEXT(SkTraceMemoryDump_ownedGLTextureRenderTarget, + reporter, + ctxInfo, + CtsEnforcement::kApiLevel_T) { auto dContext = ctxInfo.directContext(); GrGLGpu* gpu = static_cast(dContext->priv().getGpu()); diff --git a/tests/VkBackendSurfaceTest.cpp b/tests/VkBackendSurfaceTest.cpp index dd4e3b0e6f72..2e075037a450 100644 --- a/tests/VkBackendSurfaceTest.cpp +++ b/tests/VkBackendSurfaceTest.cpp @@ -20,6 +20,7 @@ #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrTypes.h" #include "include/gpu/ganesh/SkImageGanesh.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" @@ -57,15 +58,15 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkDRMModifierTest, reporter, ctxInfo, CtsEnfo } GrVkImageInfo info; - REPORTER_ASSERT(reporter, mbet->texture().getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(mbet->texture(), &info)); // Next we will use the same VkImageInfo but lie to say tiling is a DRM modifier. This should // cause us to think the resource is eternal/read only internally. Though since we don't // explicitly pass in the tiling to anything, this shouldn't cause us to do anything illegal. info.fImageTiling = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT; - GrBackendTexture drmBETex = GrBackendTexture(1, 1, info); - GrBackendFormat drmFormat = GrBackendFormat::MakeVk(info.fFormat, true); + GrBackendTexture drmBETex = GrBackendTextures::MakeVk(1, 1, info); + GrBackendFormat drmFormat = GrBackendFormats::MakeVk(info.fFormat, true); REPORTER_ASSERT(reporter, drmFormat == drmBETex.getBackendFormat()); REPORTER_ASSERT(reporter, drmBETex.textureType() == GrTextureType::kExternal); @@ -108,26 +109,26 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkImageLayoutTest, reporter, ctxInfo, CtsEnfo } GrVkImageInfo info; - REPORTER_ASSERT(reporter, mbet->texture().getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(mbet->texture(), &info)); VkImageLayout initLayout = info.fImageLayout; // Verify that setting that layout via a copy of a backendTexture is reflected in all the // backendTextures. GrBackendTexture backendTex1 = mbet->texture(); GrBackendTexture backendTex2 = backendTex1; - REPORTER_ASSERT(reporter, backendTex2.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex2, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); - backendTex2.setVkImageLayout(VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + GrBackendTextures::SetVkImageLayout(&backendTex2, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); - REPORTER_ASSERT(reporter, backendTex1.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex1, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); - REPORTER_ASSERT(reporter, backendTex2.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex2, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL == info.fImageLayout); // Setting back the layout since we didn't actually change it - backendTex1.setVkImageLayout(initLayout); + GrBackendTextures::SetVkImageLayout(&backendTex1, initLayout); sk_sp wrappedImage = SkImages::BorrowTextureFrom(dContext, @@ -151,28 +152,28 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkImageLayoutTest, reporter, ctxInfo, CtsEnfo REPORTER_ASSERT(reporter, initLayout == vkTexture->currentLayout()); vkTexture->updateImageLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); - REPORTER_ASSERT(reporter, backendTex1.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex1, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL == info.fImageLayout); GrBackendTexture backendTexImage; bool ok = SkImages::GetBackendTextureFromImage(wrappedImage, &backendTexImage, false); REPORTER_ASSERT(reporter, ok); - REPORTER_ASSERT(reporter, backendTexImage.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexImage, &info)); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL == info.fImageLayout); // Verify that modifying the layout via the GrBackendTexutre is reflected in the GrVkTexture - backendTexImage.setVkImageLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + GrBackendTextures::SetVkImageLayout(&backendTexImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); REPORTER_ASSERT(reporter, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL == vkTexture->currentLayout()); vkTexture->updateImageLayout(initLayout); - REPORTER_ASSERT(reporter, backendTex1.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex1, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); - REPORTER_ASSERT(reporter, backendTex2.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTex2, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); - REPORTER_ASSERT(reporter, backendTexImage.getVkImageInfo(&info)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(backendTexImage, &info)); REPORTER_ASSERT(reporter, initLayout == info.fImageLayout); // Check that we can do things like assigning the backend texture to invalid one, assign an @@ -217,7 +218,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkTransitionExternalQueueTest, reporter, ctxI sk_sp image; // Make a backend texture with an external queue family and general layout. GrVkImageInfo vkInfo; - if (!backendTex.getVkImageInfo(&vkInfo)) { + if (!GrBackendTextures::GetVkImageInfo(backendTex, &vkInfo)) { return; } vkInfo.fCurrentQueueFamily = VK_QUEUE_FAMILY_EXTERNAL; @@ -246,7 +247,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkTransitionExternalQueueTest, reporter, ctxI // Get our image info again and make sure we transitioned queues. GrBackendTexture newBackendTexture = image->getBackendTexture(true); GrVkImageInfo newVkInfo; - REPORTER_ASSERT(reporter, newBackendTexture.getVkImageInfo(&newVkInfo)); + REPORTER_ASSERT(reporter, GrBackendTextures::GetVkImageInfo(newBackendTexture, &newVkInfo)); REPORTER_ASSERT(reporter, newVkInfo.fCurrentQueueFamily == vkGpu->queueIndex()); image.reset(); diff --git a/tests/VkDrawableTest.cpp b/tests/VkDrawableTest.cpp index 7e0b3c1694fb..7ddd0a20e4c0 100644 --- a/tests/VkDrawableTest.cpp +++ b/tests/VkDrawableTest.cpp @@ -36,6 +36,7 @@ #include "src/gpu/ganesh/vk/GrVkUtil.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" +#include "tools/gpu/ContextType.h" #include #include @@ -292,16 +293,14 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkDrawableTest, reporter, ctxInfo, CtsEnforce } DEF_GANESH_TEST(VkDrawableImportTest, reporter, options, CtsEnforcement::kApiLevel_T) { - for (int typeInt = 0; typeInt < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++typeInt) { - sk_gpu_test::GrContextFactory::ContextType contextType = - (sk_gpu_test::GrContextFactory::ContextType) typeInt; - if (contextType != sk_gpu_test::GrContextFactory::kVulkan_ContextType) { + for (int typeInt = 0; typeInt < skgpu::kContextTypeCount; ++typeInt) { + skgpu::ContextType contextType = static_cast(typeInt); + if (contextType != skgpu::ContextType::kVulkan) { continue; } sk_gpu_test::GrContextFactory factory(options); sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(contextType); - skiatest::ReporterContext ctx( - reporter, SkString(sk_gpu_test::GrContextFactory::ContextTypeName(contextType))); + skiatest::ReporterContext ctx(reporter, SkString(skgpu::ContextTypeName(contextType))); if (ctxInfo.directContext()) { sk_gpu_test::ContextInfo child = factory.getSharedContextInfo(ctxInfo.directContext(), 0); diff --git a/tests/VkHardwareBufferTest.cpp b/tests/VkHardwareBufferTest.cpp index ce4eac4b7309..ba42f4546d0e 100644 --- a/tests/VkHardwareBufferTest.cpp +++ b/tests/VkHardwareBufferTest.cpp @@ -22,6 +22,7 @@ #include "include/gpu/ganesh/SkImageGanesh.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" #include "include/gpu/ganesh/gl/GrGLBackendSurface.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkBackendContext.h" #include "include/gpu/vk/VulkanExtensions.h" #include "src/base/SkAutoMalloc.h" @@ -150,7 +151,7 @@ class EGLTestHelper : public BaseTestHelper { }; bool EGLTestHelper::init(skiatest::Reporter* reporter) { - fGLESContextInfo = fFactory.getContextInfo(sk_gpu_test::GrContextFactory::kGLES_ContextType); + fGLESContextInfo = fFactory.getContextInfo(skgpu::ContextType::kGLES); fDirectContext = fGLESContextInfo.directContext(); fGLCtx = fGLESContextInfo.glContext(); if (!fDirectContext || !fGLCtx) { @@ -826,7 +827,7 @@ sk_sp VulkanTestHelper::importHardwareBufferForRead(skiatest::Reporter* return nullptr; } - GrBackendTexture backendTex(DEV_W, DEV_H, imageInfo); + auto backendTex = GrBackendTextures::MakeVk(DEV_W, DEV_H, imageInfo); sk_sp wrappedImage = SkImages::BorrowTextureFrom(fDirectContext.get(), backendTex, @@ -988,7 +989,7 @@ sk_sp VulkanTestHelper::importHardwareBufferForWrite(skiatest::Report return nullptr; } - GrBackendTexture backendTex(DEV_W, DEV_H, imageInfo); + auto backendTex = GrBackendTextures::MakeVk(DEV_W, DEV_H, imageInfo); sk_sp surface = SkSurfaces::WrapBackendTexture(fDirectContext.get(), backendTex, diff --git a/tests/VkWrapTests.cpp b/tests/VkWrapTests.cpp index 5c808d429dbf..3b4e7444a343 100644 --- a/tests/VkWrapTests.cpp +++ b/tests/VkWrapTests.cpp @@ -17,6 +17,7 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrTypes.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/gpu/vk/VulkanTypes.h" #include "include/private/base/SkTo.h" @@ -54,7 +55,7 @@ void wrap_tex_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { GrBackendTexture origBackendTex = mbet->texture(); GrVkImageInfo imageInfo; - SkAssertResult(origBackendTex.getVkImageInfo(&imageInfo)); + SkAssertResult(GrBackendTextures::GetVkImageInfo(origBackendTex, &imageInfo)); { sk_sp tex = gpu->wrapBackendTexture(origBackendTex, kBorrow_GrWrapOwnership, @@ -66,7 +67,7 @@ void wrap_tex_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { { GrVkImageInfo backendCopy = imageInfo; backendCopy.fImage = VK_NULL_HANDLE; - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); sk_sp tex = gpu->wrapBackendTexture( backendTex, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo, kRead_GrIOType); REPORTER_ASSERT(reporter, !tex); @@ -79,7 +80,7 @@ void wrap_tex_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { { GrVkImageInfo backendCopy = imageInfo; backendCopy.fAlloc = skgpu::VulkanAlloc(); - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); sk_sp tex = gpu->wrapBackendTexture( backendTex, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo, kRead_GrIOType); REPORTER_ASSERT(reporter, tex); @@ -91,7 +92,7 @@ void wrap_tex_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { // check adopt creation { GrVkImageInfo backendCopy = imageInfo; - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); sk_sp tex = gpu->wrapBackendTexture( backendTex, kAdopt_GrWrapOwnership, GrWrapCacheable::kNo, kRead_GrIOType); @@ -119,7 +120,8 @@ void wrap_rt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { } GrVkImageInfo imageInfo; - REPORTER_ASSERT(reporter, origBackendRT.getVkImageInfo(&imageInfo)); + REPORTER_ASSERT(reporter, + GrBackendRenderTargets::GetVkImageInfo(origBackendRT, &imageInfo)); sk_sp rt = gpu->wrapBackendRenderTarget(origBackendRT); REPORTER_ASSERT(reporter, rt); @@ -128,7 +130,7 @@ void wrap_rt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { { GrVkImageInfo backendCopy = imageInfo; backendCopy.fImage = VK_NULL_HANDLE; - GrBackendRenderTarget backendRT(kW, kH, 1, backendCopy); + GrBackendRenderTarget backendRT = GrBackendRenderTargets::MakeVk(kW, kH, backendCopy); rt = gpu->wrapBackendRenderTarget(backendRT); REPORTER_ASSERT(reporter, !rt); } @@ -138,7 +140,7 @@ void wrap_rt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { GrVkImageInfo backendCopy = imageInfo; backendCopy.fAlloc = skgpu::VulkanAlloc(); // can wrap null alloc - GrBackendRenderTarget backendRT(kW, kH, 1, backendCopy); + GrBackendRenderTarget backendRT = GrBackendRenderTargets::MakeVk(kW, kH, backendCopy); rt = gpu->wrapBackendRenderTarget(backendRT); REPORTER_ASSERT(reporter, rt); } @@ -159,7 +161,7 @@ void wrap_trt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { GrBackendTexture origBackendTex = mbet->texture(); GrVkImageInfo imageInfo; - SkAssertResult(origBackendTex.getVkImageInfo(&imageInfo)); + SkAssertResult(GrBackendTextures::GetVkImageInfo(origBackendTex, &imageInfo)); sk_sp tex = gpu->wrapRenderableBackendTexture( origBackendTex, 1, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo); @@ -169,7 +171,7 @@ void wrap_trt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { { GrVkImageInfo backendCopy = imageInfo; backendCopy.fImage = VK_NULL_HANDLE; - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); tex = gpu->wrapRenderableBackendTexture(backendTex, 1, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo); REPORTER_ASSERT(reporter, !tex); @@ -182,7 +184,7 @@ void wrap_trt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { { GrVkImageInfo backendCopy = imageInfo; backendCopy.fAlloc = skgpu::VulkanAlloc(); - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); tex = gpu->wrapRenderableBackendTexture(backendTex, 1, kBorrow_GrWrapOwnership, GrWrapCacheable::kNo); REPORTER_ASSERT(reporter, tex); @@ -204,7 +206,7 @@ void wrap_trt_test(skiatest::Reporter* reporter, GrDirectContext* dContext) { // check adopt creation { GrVkImageInfo backendCopy = imageInfo; - GrBackendTexture backendTex = GrBackendTexture(kW, kH, backendCopy); + GrBackendTexture backendTex = GrBackendTextures::MakeVk(kW, kH, backendCopy); tex = gpu->wrapRenderableBackendTexture(backendTex, 1, kAdopt_GrWrapOwnership, GrWrapCacheable::kNo); REPORTER_ASSERT(reporter, tex); diff --git a/tests/VkYcbcrSamplerTest.cpp b/tests/VkYcbcrSamplerTest.cpp index cd3443ee31cd..fe1833a4f618 100644 --- a/tests/VkYcbcrSamplerTest.cpp +++ b/tests/VkYcbcrSamplerTest.cpp @@ -22,6 +22,7 @@ #include "include/gpu/GrTypes.h" #include "include/gpu/ganesh/SkImageGanesh.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "tests/CtsEnforcement.h" #include "tests/Test.h" #include "tools/gpu/vk/VkTestHelper.h" @@ -156,7 +157,7 @@ DEF_GANESH_TEST_FOR_VULKAN_CONTEXT(VkYCbcrSampler_NoYcbcrSurface, } GrBackendTexture texture = testHelper.directContext()->createBackendTexture( - kImageWidth, kImageHeight, GrBackendFormat::MakeVk(VK_FORMAT_G8_B8R8_2PLANE_420_UNORM), + kImageWidth, kImageHeight, GrBackendFormats::MakeVk(VK_FORMAT_G8_B8R8_2PLANE_420_UNORM), GrMipmapped::kNo, GrRenderable::kNo, GrProtected::kNo); if (texture.isValid()) { ERRORF(reporter, diff --git a/tests/WritePixelsTest.cpp b/tests/WritePixelsTest.cpp index a074f6ae6673..2fffaa90c740 100644 --- a/tests/WritePixelsTest.cpp +++ b/tests/WritePixelsTest.cpp @@ -501,7 +501,8 @@ static void test_write_pixels(skiatest::Reporter* reporter, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(WritePixels_Graphite, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); test_write_pixels(reporter, recorder.get(), 1); } @@ -510,12 +511,7 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(WritePixels_Graphite, static void test_write_pixels_non_texture(skiatest::Reporter* reporter, GrDirectContext* dContext, int sampleCnt) { - // Dawn currently doesn't support writePixels to a texture-as-render-target. - // See http://skbug.com/10336. - if (GrBackendApi::kDawn == dContext->backend()) { - return; - } - for (auto& origin : { kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin }) { + for (auto& origin : {kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin}) { SkColorType colorType = kN32_SkColorType; auto surface = sk_gpu_test::MakeBackendRenderTargetSurface(dContext, {DEV_W, DEV_H}, diff --git a/tests/graphite/BackendTextureTest.cpp b/tests/graphite/BackendTextureTest.cpp index 12f8410e8119..513f18aaffd5 100644 --- a/tests/graphite/BackendTextureTest.cpp +++ b/tests/graphite/BackendTextureTest.cpp @@ -26,7 +26,8 @@ namespace { const SkISize kSize = {16, 16}; } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(BackendTextureTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(BackendTextureTest, reporter, context, + CtsEnforcement::kNextRelease) { // TODO: Remove this check once Vulkan supports creating default TexutreInfo from caps and we // implement createBackendTexture. if (context->backend() == BackendApi::kVulkan) { @@ -84,7 +85,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(BackendTextureTest, reporter, context) { } // Tests the wrapping of a BackendTexture in an SkSurface -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(SurfaceBackendTextureTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(SurfaceBackendTextureTest, reporter, context, + CtsEnforcement::kNextRelease) { // TODO: Right now this just tests very basic combinations of surfaces. This should be expanded // to cover a much broader set of things once we add more support in Graphite for different // formats, color types, etc. @@ -145,7 +147,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(SurfaceBackendTextureTest, reporter, context) } // Tests the wrapping of a BackendTexture in an SkImage -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ImageBackendTextureTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ImageBackendTextureTest, reporter, context, + CtsEnforcement::kNextRelease) { // TODO: Right now this just tests very basic combinations of images. This should be expanded // to cover a much broader set of things once we add more support in Graphite for different // formats, color types, etc. @@ -195,7 +198,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ImageBackendTextureTest, reporter, context) { } #ifdef SK_VULKAN -DEF_GRAPHITE_TEST_FOR_VULKAN_CONTEXT(VulkanBackendTextureMutableStateTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_VULKAN_CONTEXT(VulkanBackendTextureMutableStateTest, reporter, context, + CtsEnforcement::kNextRelease) { VulkanTextureInfo info(/*sampleCount=*/1, /*mipmapped=*/Mipmapped::kNo, /*flags=*/0, diff --git a/tests/graphite/BufferManagerTest.cpp b/tests/graphite/BufferManagerTest.cpp index afb5769396ae..92e6589be6df 100644 --- a/tests/graphite/BufferManagerTest.cpp +++ b/tests/graphite/BufferManagerTest.cpp @@ -26,7 +26,8 @@ static bool is_offset_aligned(size_t offset, size_t alignment) { } // namespace -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(BufferManagerGpuOnlyBufferTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(BufferManagerGpuOnlyBufferTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); DrawBufferManager* mgr = recorder->priv().drawBufferManager(); diff --git a/tests/graphite/CacheKeyTest.cpp b/tests/graphite/CacheKeyTest.cpp new file mode 100644 index 000000000000..38e1b4a54d6f --- /dev/null +++ b/tests/graphite/CacheKeyTest.cpp @@ -0,0 +1,129 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/core/SkBitmap.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPicture.h" +#include "include/core/SkPictureRecorder.h" +#include "include/gpu/graphite/Context.h" +#include "include/gpu/graphite/ImageProvider.h" +#include "include/gpu/graphite/Recorder.h" +#include "tests/Test.h" +#include "tools/ToolUtils.h" + +using namespace skgpu::graphite; + +namespace { + +sk_sp create_picture(int width, int height) { + const SkRect bounds = SkRect::MakeWH(width, height); + + SkPictureRecorder recorder; + SkCanvas* canvas = recorder.beginRecording(bounds); + + SkPaint paint; + paint.setColor(SK_ColorMAGENTA); + + canvas->drawRect(bounds, paint); + + return recorder.finishRecordingAsPicture(); +} + + +SkBitmap create_bitmap(int width, int height) { + SkImageInfo ii = SkImageInfo::Make(width, height, kRGBA_8888_SkColorType, kPremul_SkAlphaType); + + SkBitmap bm; + bm.allocPixels(ii); + + bm.eraseColor(SK_ColorMAGENTA); + + bm.setImmutable(); + return bm; +} + +} // anonymous namespace + +// In this test we just iterate through the cases we expect to work and verify that rewrapping the +// base SkPicture doesn't block finding the earlier cached image. +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(CacheKeyTest_Picture, reporter, context, + CtsEnforcement::kNextRelease) { + std::unique_ptr recorder = context->makeRecorder(); + + RecorderOptions options = ToolUtils::CreateTestingRecorderOptions(); + + sk_sp provider = options.fImageProvider; + + sk_sp picture = create_picture(128, 128); + const SkMatrix xlate = SkMatrix::Translate(10.0f, -10.0f); + sk_sp srgb = SkColorSpace::MakeSRGB(); + + for (auto bitDepth : { SkImages::BitDepth::kU8, SkImages::BitDepth::kF16 }) { + for (const SkMatrix* mat : { static_cast(nullptr), &xlate }) { + for (bool mipmapped : { false, true }) { + for (uint32_t flags : { 0, int(SkSurfaceProps::kAlwaysDither_Flag) } ) { + for (SkPixelGeometry geometry : { kUnknown_SkPixelGeometry, + kRGB_H_SkPixelGeometry } ) { + sk_sp image1 = SkImages::DeferredFromPicture(picture, {128, 128}, + mat, nullptr, + bitDepth, srgb, + { flags, geometry }); + + sk_sp result1 = provider->findOrCreate(recorder.get(), + image1.get(), + {mipmapped}); + + sk_sp image2 = SkImages::DeferredFromPicture(picture, {128, 128}, + mat, nullptr, + bitDepth, srgb, + { flags, geometry }); + REPORTER_ASSERT(reporter, image1->uniqueID() != image2->uniqueID()); + + sk_sp result2 = provider->findOrCreate(recorder.get(), + image2.get(), + {mipmapped}); + REPORTER_ASSERT(reporter, result1 == result2); + } + } + } + } + } +} + +// In this test we just iterate through the cases we expect to work and verify that rewrapping the +// subsetted SkBitmap doesn't block finding the earlier cached image. +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(CacheKeyTest_Bitmap, reporter, context, + CtsEnforcement::kNextRelease) { + std::unique_ptr recorder = context->makeRecorder(); + + RecorderOptions options = ToolUtils::CreateTestingRecorderOptions(); + + sk_sp provider = options.fImageProvider; + + SkBitmap orig = create_bitmap(128, 128); + SkBitmap subset; + orig.extractSubset(&subset, SkIRect::MakeXYWH(32, 32, 64, 64)); + SkASSERT(orig.getGenerationID() == subset.getGenerationID()); + + for (bool mipmapped : { false, true }) { + sk_sp image1 = SkImages::RasterFromBitmap(subset); + + sk_sp result1 = provider->findOrCreate(recorder.get(), + image1.get(), + {mipmapped}); + + sk_sp image2 = SkImages::RasterFromBitmap(subset); + REPORTER_ASSERT(reporter, image1->uniqueID() != image2->uniqueID()); + + sk_sp result2 = provider->findOrCreate(recorder.get(), + image2.get(), + {mipmapped}); + REPORTER_ASSERT(reporter, result1 == result2); + } +} diff --git a/tests/graphite/CombinationBuilderTest.cpp b/tests/graphite/CombinationBuilderTest.cpp index ff00cb0be7af..8d8b52fb4a1e 100644 --- a/tests/graphite/CombinationBuilderTest.cpp +++ b/tests/graphite/CombinationBuilderTest.cpp @@ -16,6 +16,7 @@ #include "src/gpu/graphite/KeyContext.h" #include "src/gpu/graphite/PaintOptionsPriv.h" #include "src/gpu/graphite/Precompile.h" +#include "src/gpu/graphite/Renderer.h" #include "src/gpu/graphite/RuntimeEffectDictionary.h" #include @@ -34,7 +35,7 @@ void empty_test(const KeyContext& keyContext, skiatest::Reporter* reporter) { std::vector precompileIDs; paintOptions.priv().buildCombinations(keyContext, /* addPrimitiveBlender= */ false, - /* hasCoverage= */ false, + Coverage::kNone, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -54,7 +55,7 @@ void no_shader_option_test(const KeyContext& keyContext, skiatest::Reporter* rep std::vector precompileIDs; paintOptions.priv().buildCombinations(keyContext, /* addPrimitiveBlender= */ false, - /* hasCoverage= */ false, + Coverage::kNone, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -72,7 +73,7 @@ void no_blend_mode_option_test(const KeyContext& keyContext, skiatest::Reporter* std::vector precompileIDs; paintOptions.priv().buildCombinations(keyContext, /* addPrimitiveBlender= */ false, - /* hasCoverage= */ false, + Coverage::kNone, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -138,7 +139,7 @@ void big_test(const KeyContext& keyContext, skiatest::Reporter* reporter) { std::vector precompileIDs; paintOptions.priv().buildCombinations(keyContext, /* addPrimitiveBlender= */ false, - /* hasCoverage= */ false, + Coverage::kNone, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -274,7 +275,7 @@ void runtime_effect_test(const KeyContext& keyContext, skiatest::Reporter* repor std::vector precompileIDs; paintOptions.priv().buildCombinations(keyContext, /* addPrimitiveBlender= */ false, - /* hasCoverage= */ false, + Coverage::kNone, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); @@ -284,7 +285,8 @@ void runtime_effect_test(const KeyContext& keyContext, skiatest::Reporter* repor } // anonymous namespace -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(CombinationBuilderTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(CombinationBuilderTest, reporter, context, + CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); auto rtEffectDict = std::make_unique(); diff --git a/tests/graphite/ComputeTest.cpp b/tests/graphite/ComputeTest.cpp index c9c5d02a614b..9648f7e2269b 100644 --- a/tests/graphite/ComputeTest.cpp +++ b/tests/graphite/ComputeTest.cpp @@ -17,7 +17,7 @@ #include "src/gpu/graphite/ComputeTask.h" #include "src/gpu/graphite/ComputeTypes.h" #include "src/gpu/graphite/ContextPriv.h" -#include "src/gpu/graphite/DrawParams.h" +#include "src/gpu/graphite/CopyTask.h" #include "src/gpu/graphite/RecorderPriv.h" #include "src/gpu/graphite/ResourceProvider.h" #include "src/gpu/graphite/SynchronizeToCpuTask.h" @@ -30,41 +30,71 @@ using namespace skgpu::graphite; namespace { -static const Transform kTestTransform = Transform::Identity(); -static DrawParams fake_draw_params_for_testing() { - return DrawParams(kTestTransform, {}, {}, DrawOrder({}), nullptr); +void* map_buffer(Buffer* buffer, size_t offset) { + SkASSERT(buffer); + std::byte* ptr = static_cast(buffer->map()); + SkASSERT(ptr); + + return ptr + offset; } -void* map_bind_buffer(const BindBufferInfo& info) { - SkASSERT(info.fBuffer); - auto buffer = sk_ref_sp(info.fBuffer); - uint8_t* ptr = static_cast(buffer->map()); - SkASSERT(ptr); +sk_sp sync_buffer_to_cpu(Recorder* recorder, const Buffer* buffer) { + if (recorder->priv().caps()->drawBufferCanBeMapped()) { + // `buffer` can be mapped directly, however it may still require a synchronization step + // by the underlying API (e.g. a managed buffer in Metal). SynchronizeToCpuTask + // automatically handles this for us. + recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(buffer))); + return sk_ref_sp(buffer); + } + + // The backend requires a transfer buffer for CPU read-back + auto xferBuffer = recorder->priv().resourceProvider()->findOrCreateBuffer( + buffer->size(), BufferType::kXferGpuToCpu, AccessPattern::kHostVisible); + SkASSERT(xferBuffer); - return ptr + info.fOffset; + recorder->priv().add(CopyBufferToBufferTask::Make(sk_ref_sp(buffer), xferBuffer)); + return xferBuffer; +} + +bool is_dawn_or_metal_context_type(skiatest::GpuContextType ctxType) { + return skiatest::IsDawnContextType(ctxType) || skiatest::IsMetalContextType(ctxType); } } // namespace +#define DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(name, reporter, graphite_context) \ + DEF_GRAPHITE_TEST_FOR_CONTEXTS(name, is_dawn_or_metal_context_type, reporter, \ + graphite_context, CtsEnforcement::kNever) + // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_SingleDispatchTest, reporter, context) { constexpr uint32_t kProblemSize = 512; constexpr float kFactor = 4.f; + // The ComputeStep packs kProblemSize floats into kProblemSize / 4 vectors and each thread + // processes 1 vector at a time. + constexpr uint32_t kWorkgroupSize = kProblemSize / 4; + std::unique_ptr recorder = context->makeRecorder(); class TestComputeStep : public ComputeStep { public: + // TODO(skia:40045541): SkSL doesn't support std430 layout well, so the buffers + // below all pack their data into vectors to be compatible with SPIR-V/WGSL. TestComputeStep() : ComputeStep( /*name=*/"TestArrayMultiply", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Input buffer: { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, + /*sksl=*/"readonly inputBlock {\n" + " float factor;\n" + " layout(offset=16) float4 in_data[];\n" + "}", }, // Output buffer: { @@ -73,34 +103,24 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex // Builder /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/0, + /*sksl=*/"outputBlock { float4 out_data[]; }", } }) {} ~TestComputeStep() override = default; // A kernel that multiplies a large array of floats by a supplied factor. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) readonly buffer inputBlock - { - float factor; - float in_data[]; - }; - layout(set=0, binding=1) buffer outputBlock - { - float out_data[]; - }; void main() { out_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x] * factor; } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { if (index == 0) { SkASSERT(r.fFlow == DataFlow::kPrivate); - return sizeof(float) * (kProblemSize + 1); + return sizeof(float) * (kProblemSize + 4); } SkASSERT(index == 1); SkASSERT(r.fSlot == 0); @@ -108,9 +128,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex return sizeof(float) * kProblemSize; } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -120,22 +138,22 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex } SkASSERT(r.fFlow == DataFlow::kPrivate); - size_t dataCount = sizeof(float) * (kProblemSize + 1); + size_t dataCount = sizeof(float) * (kProblemSize + 4); SkASSERT(bufferSize == dataCount); SkSpan inData(static_cast(buffer), dataCount); inData[0] = kFactor; for (unsigned int i = 0; i < kProblemSize; ++i) { - inData[i + 1] = i + 1; + inData[i + 4] = i + 1; } } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step; DispatchGroup::Builder builder(recorder.get()); - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0)) { + if (!builder.appendStep(&step)) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -153,7 +171,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(outputInfo.fBuffer))); + auto outputBuffer = sync_buffer_to_cpu(recorder.get(), outputInfo.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -168,8 +186,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex context->submit(SyncToCpu::kYes); // Verify the contents of the output buffer. - float* outData = static_cast(map_bind_buffer(outputInfo)); - SkASSERT(outputInfo.fBuffer->isMapped() && outData != nullptr); + float* outData = static_cast(map_buffer(outputBuffer.get(), outputInfo.fOffset)); + SkASSERT(outputBuffer->isMapped() && outData != nullptr); for (unsigned int i = 0; i < kProblemSize; ++i) { const float expected = (i + 1) * kFactor; const float found = outData[i]; @@ -179,26 +197,36 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SingleDispatchTest, reporter, contex // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_DispatchGroupTest, reporter, context) { constexpr uint32_t kProblemSize = 512; constexpr float kFactor1 = 4.f; constexpr float kFactor2 = 3.f; + // The ComputeStep packs kProblemSize floats into kProblemSize / 4 vectors and each thread + // processes 1 vector at a time. + constexpr uint32_t kWorkgroupSize = kProblemSize / 4; + std::unique_ptr recorder = context->makeRecorder(); // Define two steps that perform two multiplication passes over the same input. class TestComputeStep1 : public ComputeStep { public: + // TODO(skia:40045541): SkSL doesn't support std430 layout well, so the buffers + // below all pack their data into vectors to be compatible with SPIR-V/WGSL. TestComputeStep1() : ComputeStep( /*name=*/"TestArrayMultiplyFirstPass", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Input buffer: { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, // mappable for read-back + /*sksl=*/"readonly inputBlock {\n" + " float factor;\n" + " layout(offset=16) float4 in_data[];\n" + "}", }, // Output buffers: { @@ -206,46 +234,36 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, // GPU-only, read by second step /*slot=*/0, + /*sksl=*/"outputBlock1 { float4 forward_data[]; }", }, { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/1, + /*sksl=*/"outputBlock2 { float2 extra_data; }", } }) {} ~TestComputeStep1() override = default; // A kernel that multiplies a large array of floats by a supplied factor. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) readonly buffer inputBlock - { - float factor; - float in_data[]; - }; - layout(set=0, binding=1) buffer outputBlock1 - { - float forward_data[]; - }; - layout(set=0, binding=2) buffer outputBlock2 - { - float extra_data[2]; - }; void main() { - forward_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x] * factor; - extra_data[0] = factor; - extra_data[1] = 2 * factor; + uint idx = sk_GlobalInvocationID.x; + forward_data[idx] = in_data[idx] * factor; + if (idx == 0) { + extra_data.x = factor; + extra_data.y = 2 * factor; + } } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { if (index == 0) { SkASSERT(r.fFlow == DataFlow::kPrivate); - return sizeof(float) * (kProblemSize + 1); + return sizeof(float) * (kProblemSize + 4); } if (index == 1) { SkASSERT(r.fFlow == DataFlow::kShared); @@ -259,9 +277,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context return 2 * sizeof(float); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -269,16 +285,16 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context return; } - size_t dataCount = sizeof(float) * (kProblemSize + 1); + size_t dataCount = sizeof(float) * (kProblemSize + 4); SkASSERT(bufferSize == dataCount); SkSpan inData(static_cast(buffer), dataCount); inData[0] = kFactor1; for (unsigned int i = 0; i < kProblemSize; ++i) { - inData[i + 1] = i + 1; + inData[i + 4] = i + 1; } } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step1; @@ -287,7 +303,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context public: TestComputeStep2() : ComputeStep( /*name=*/"TestArrayMultiplySecondPass", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Input buffer: { @@ -295,11 +311,13 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, // GPU-only /*slot=*/0, // this is the output from the first step + /*sksl=*/"inputBlock { float4 in_data[]; }", }, { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, + /*sksl=*/"factorBlock { float factor; }" }, // Output buffer: { @@ -307,40 +325,25 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/2, + /*sksl=*/"outputBlock { float4 out_data[]; }", } }) {} ~TestComputeStep2() override = default; // A kernel that multiplies a large array of floats by a supplied factor. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) readonly buffer inputBlock - { - float in_data[]; - }; - layout(set=0, binding=1) readonly buffer factorBlock - { - float factor; - }; - layout(set=0, binding=2) buffer outputBlock - { - float out_data[]; - }; void main() { out_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x] * factor; } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { - if (index == 0) { - return sizeof(float) * kProblemSize; - } + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { + SkASSERT(index != 0); if (index == 1) { SkASSERT(r.fFlow == DataFlow::kPrivate); - return sizeof(float); + return sizeof(float) * 4; } SkASSERT(index == 2); SkASSERT(r.fSlot == 2); @@ -348,9 +351,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context return sizeof(float) * kProblemSize; } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -361,20 +362,20 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context *static_cast(buffer) = kFactor2; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step2; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step1, fake_draw_params_for_testing(), 0); - builder.appendStep(&step2, fake_draw_params_for_testing(), 0); + builder.appendStep(&step1); + builder.appendStep(&step2); // Slots 0, 1, and 2 should all contain shared buffers. Slot 1 contains the extra output buffer // from step 1 while slot 2 contains the result of the second multiplication pass from step 1. // Slot 0 is not mappable. REPORTER_ASSERT(reporter, - std::holds_alternative(builder.outputTable().fSharedSlots[0]), + std::holds_alternative(builder.outputTable().fSharedSlots[0]), "shared resource at slot 0 is missing"); BindBufferInfo outputInfo = builder.getSharedBufferResource(2); if (!outputInfo) { @@ -395,8 +396,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffers get synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(outputInfo.fBuffer))); - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(extraOutputInfo.fBuffer))); + auto outputBuffer = sync_buffer_to_cpu(recorder.get(), outputInfo.fBuffer); + auto extraOutputBuffer = sync_buffer_to_cpu(recorder.get(), extraOutputInfo.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -411,8 +412,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context context->submit(SyncToCpu::kYes); // Verify the contents of the output buffer from step 2 - float* outData = static_cast(map_bind_buffer(outputInfo)); - SkASSERT(outputInfo.fBuffer->isMapped() && outData != nullptr); + float* outData = static_cast(map_buffer(outputBuffer.get(), outputInfo.fOffset)); + SkASSERT(outputBuffer->isMapped() && outData != nullptr); for (unsigned int i = 0; i < kProblemSize; ++i) { const float expected = (i + 1) * kFactor1 * kFactor2; const float found = outData[i]; @@ -420,8 +421,9 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context } // Verify the contents of the extra output buffer from step 1 - float* extraOutData = static_cast(map_bind_buffer(extraOutputInfo)); - SkASSERT(extraOutputInfo.fBuffer->isMapped() && extraOutData != nullptr); + float* extraOutData = + static_cast(map_buffer(extraOutputBuffer.get(), extraOutputInfo.fOffset)); + SkASSERT(extraOutputBuffer->isMapped() && extraOutData != nullptr); REPORTER_ASSERT(reporter, kFactor1 == extraOutData[0], "expected '%f', found '%f'", @@ -436,29 +438,35 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_DispatchGroupTest, reporter, context // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_UniformBufferTest, reporter, context) { constexpr uint32_t kProblemSize = 512; constexpr float kFactor = 4.f; + // The ComputeStep packs kProblemSize floats into kProblemSize / 4 vectors and each thread + // processes 1 vector at a time. + constexpr uint32_t kWorkgroupSize = kProblemSize / 4; + std::unique_ptr recorder = context->makeRecorder(); class TestComputeStep : public ComputeStep { public: TestComputeStep() : ComputeStep( /*name=*/"TestArrayMultiply", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Uniform buffer: { /*type=*/ResourceType::kUniformBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, + /*sksl=*/"uniformBlock { float factor; }" }, // Input buffer: { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, + /*sksl=*/"inputBlock { float4 in_data[]; }", }, // Output buffer: { @@ -467,34 +475,21 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context // Builder /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/0, + /*sksl=*/"outputBlock { float4 out_data[]; }", } }) {} ~TestComputeStep() override = default; // A kernel that multiplies a large array of floats by a supplied factor. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) uniform uniformBlock - { - float factor; - }; - layout(set=0, binding=1) readonly buffer inputBlock - { - float in_data[]; - }; - layout(set=0, binding=2) buffer outputBlock - { - float out_data[]; - }; void main() { out_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x] * factor; } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { if (index == 0) { SkASSERT(r.fFlow == DataFlow::kPrivate); return sizeof(float); @@ -509,9 +504,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context return sizeof(float) * kProblemSize; } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -528,8 +521,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context } } - void prepareUniformBuffer(const DrawParams&, - int resourceIndex, + void prepareUniformBuffer(int resourceIndex, const ResourceDesc&, UniformManager* mgr) const override { SkASSERT(resourceIndex == 0); @@ -540,13 +532,13 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context mgr->write(kFactor); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step; DispatchGroup::Builder builder(recorder.get()); - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0)) { + if (!builder.appendStep(&step)) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -564,7 +556,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(outputInfo.fBuffer))); + auto outputBuffer = sync_buffer_to_cpu(recorder.get(), outputInfo.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -579,8 +571,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context context->submit(SyncToCpu::kYes); // Verify the contents of the output buffer. - float* outData = static_cast(map_bind_buffer(outputInfo)); - SkASSERT(outputInfo.fBuffer->isMapped() && outData != nullptr); + float* outData = static_cast(map_buffer(outputBuffer.get(), outputInfo.fOffset)); + SkASSERT(outputBuffer->isMapped() && outData != nullptr); for (unsigned int i = 0; i < kProblemSize; ++i) { const float expected = (i + 1) * kFactor; const float found = outData[i]; @@ -590,23 +582,31 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_UniformBufferTest, reporter, context // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_ExternallyAssignedBuffer, reporter, context) { constexpr uint32_t kProblemSize = 512; constexpr float kFactor = 4.f; + // The ComputeStep packs kProblemSize floats into kProblemSize / 4 vectors and each thread + // processes 1 vector at a time. + constexpr uint32_t kWorkgroupSize = kProblemSize / 4; + std::unique_ptr recorder = context->makeRecorder(); class TestComputeStep : public ComputeStep { public: TestComputeStep() : ComputeStep( /*name=*/"ExternallyAssignedBuffer", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Input buffer: { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kMapped, + /*sksl=*/"inputBlock {\n" + " float factor;\n" + " layout(offset = 16) float4 in_data[];\n" + "}\n", }, // Output buffer: { @@ -615,51 +615,39 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, // Builder /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/0, + /*sksl=*/"outputBlock { float4 out_data[]; }", } }) {} ~TestComputeStep() override = default; // A kernel that multiplies a large array of floats by a supplied factor. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) readonly buffer inputBlock - { - float factor; - float in_data[]; - }; - layout(set=0, binding=1) buffer outputBlock - { - float out_data[]; - }; void main() { out_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x] * factor; } )"; } - size_t calculateBufferSize(const DrawParams&, - int resourceIndex, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int resourceIndex, const ResourceDesc& r) const override { SkASSERT(resourceIndex == 0); SkASSERT(r.fFlow == DataFlow::kPrivate); - return sizeof(float) * (kProblemSize + 1); + return sizeof(float) * (kProblemSize + 4); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { SkASSERT(resourceIndex == 0); SkASSERT(r.fFlow == DataFlow::kPrivate); - size_t dataCount = sizeof(float) * (kProblemSize + 1); + size_t dataCount = sizeof(float) * (kProblemSize + 4); SkASSERT(bufferSize == dataCount); SkSpan inData(static_cast(buffer), dataCount); inData[0] = kFactor; for (unsigned int i = 0; i < kProblemSize; ++i) { - inData[i + 1] = i + 1; + inData[i + 4] = i + 1; } } } step; @@ -671,10 +659,10 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, REPORTER_ASSERT(reporter, outputInfo, "Failed to allocate output buffer"); DispatchGroup::Builder builder(recorder.get()); - builder.assignSharedBuffer(outputInfo, 0); + builder.assignSharedBuffer({outputInfo, sizeof(float) * kProblemSize}, 0); // Initialize the step with a pre-determined global size - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0, {WorkgroupSize(1, 1, 1)})) { + if (!builder.appendStep(&step, {WorkgroupSize(1, 1, 1)})) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -685,7 +673,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(outputInfo.fBuffer))); + auto outputBuffer = sync_buffer_to_cpu(recorder.get(), outputInfo.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -700,8 +688,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, context->submit(SyncToCpu::kYes); // Verify the contents of the output buffer. - float* outData = static_cast(map_bind_buffer(outputInfo)); - SkASSERT(outputInfo.fBuffer->isMapped() && outData != nullptr); + float* outData = static_cast(map_buffer(outputBuffer.get(), outputInfo.fOffset)); + SkASSERT(outputBuffer->isMapped() && outData != nullptr); for (unsigned int i = 0; i < kProblemSize; ++i) { const float expected = (i + 1) * kFactor; const float found = outData[i]; @@ -711,7 +699,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ExternallyAssignedBuffer, reporter, // Tests the storage texture binding for a compute dispatch that writes the same color to every // pixel of a storage texture. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTexture, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_StorageTexture, reporter, context) { std::unique_ptr recorder = context->makeRecorder(); // For this test we allocate a 16x16 tile which is written to by a single workgroup of the same @@ -725,36 +713,35 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTexture, reporter, context) { /*localDispatchSize=*/{kDim, kDim, 1}, /*resources=*/{ { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/0, + /*sksl=*/"dst", } }) {} ~TestComputeStep() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) writeonly texture2D dest; - void main() { - textureWrite(dest, sk_LocalInvocationID.xy, half4(0.0, 1.0, 0.0, 1.0)); + textureWrite(dst, sk_LocalInvocationID.xy, half4(0.0, 1.0, 0.0, 1.0)); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { + int index, const ResourceDesc& r) const override { return {{kDim, kDim}, kRGBA_8888_SkColorType}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step; DispatchGroup::Builder builder(recorder.get()); - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0)) { + if (!builder.appendStep(&step)) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -811,7 +798,9 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTexture, reporter, context) { // Tests the readonly texture binding for a compute dispatch that random-access reads from a // CPU-populated texture and copies it to a storage texture. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureReadAndWrite, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_StorageTextureReadAndWrite, + reporter, + context) { std::unique_ptr recorder = context->makeRecorder(); // For this test we allocate a 16x16 tile which is written to by a single workgroup of the same @@ -825,39 +814,38 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureReadAndWrite, reporter /*localDispatchSize=*/{kDim, kDim, 1}, /*resources=*/{ { - /*type=*/ResourceType::kTexture, + /*type=*/ResourceType::kReadOnlyTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/0, + /*sksl=*/"src", }, { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/1, + /*sksl=*/"dst", } }) {} ~TestComputeStep() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) readonly texture2D src; - layout(binding = 1) writeonly texture2D dest; - void main() { half4 color = textureRead(src, sk_LocalInvocationID.xy); - textureWrite(dest, sk_LocalInvocationID.xy, color); + textureWrite(dst, sk_LocalInvocationID.xy, color); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { + int index, const ResourceDesc& r) const override { SkASSERT(index == 1); return {{kDim, kDim}, kRGBA_8888_SkColorType}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step; @@ -906,7 +894,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureReadAndWrite, reporter // binding. builder.assignSharedTexture(std::move(srcProxy), 0); - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0)) { + if (!builder.appendStep(&step)) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -963,7 +951,9 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureReadAndWrite, reporter } // Tests that a texture written by one compute step can be sampled by a subsequent step. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureMultipleComputeSteps, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_StorageTextureMultipleComputeSteps, + reporter, + context) { std::unique_ptr recorder = context->makeRecorder(); // For this test we allocate a 16x16 tile which is written to by a single workgroup of the same @@ -978,31 +968,30 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureMultipleComputeSteps, /*localDispatchSize=*/{kDim, kDim, 1}, /*resources=*/{ { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/0, + /*sksl=*/"dst", } }) {} ~TestComputeStep1() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) writeonly texture2D dest; - void main() { - textureWrite(dest, sk_LocalInvocationID.xy, half4(0.0, 1.0, 0.0, 1.0)); + textureWrite(dst, sk_LocalInvocationID.xy, half4(0.0, 1.0, 0.0, 1.0)); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { + int index, const ResourceDesc& r) const override { SkASSERT(index == 0); return {{kDim, kDim}, kRGBA_8888_SkColorType}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step1; @@ -1015,46 +1004,45 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureMultipleComputeSteps, /*localDispatchSize=*/{kDim, kDim, 1}, /*resources=*/{ { - /*type=*/ResourceType::kTexture, + /*type=*/ResourceType::kReadOnlyTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/0, + /*sksl=*/"src", }, { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/1, + /*sksl=*/"dst", } }) {} ~TestComputeStep2() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) readonly texture2D src; - layout(binding = 1) writeonly texture2D dest; - void main() { half4 color = textureRead(src, sk_LocalInvocationID.xy); - textureWrite(dest, sk_LocalInvocationID.xy, color); + textureWrite(dst, sk_LocalInvocationID.xy, color); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { + int index, const ResourceDesc& r) const override { SkASSERT(index == 1); return {{kDim, kDim}, kRGBA_8888_SkColorType}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step2; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step1, fake_draw_params_for_testing(), 0); - builder.appendStep(&step2, fake_draw_params_for_testing(), 0); + builder.appendStep(&step1); + builder.appendStep(&step2); sk_sp dst = builder.getSharedTextureResource(1); if (!dst) { @@ -1107,7 +1095,9 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_StorageTextureMultipleComputeSteps, } // Tests that a texture can be sampled by a compute step using a sampler. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SampledTexture, reporter, context) { +// TODO(armansito): Once the previous TODO is done, add additional tests that exercise mixed use of +// texture, buffer, and sampler bindings. +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_SampledTexture, reporter, context) { std::unique_ptr recorder = context->makeRecorder(); // The first ComputeStep initializes a 16x16 texture with a checkerboard pattern of alternating @@ -1124,33 +1114,32 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SampledTexture, reporter, context) { /*localDispatchSize=*/{kSrcDim, kSrcDim, 1}, /*resources=*/{ { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, /*slot=*/0, + /*sksl=*/"dst", } }) {} ~TestComputeStep1() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) writeonly texture2D dest; - void main() { uint2 c = sk_LocalInvocationID.xy; uint checkerBoardColor = (c.x + (c.y % 2)) % 2; - textureWrite(dest, c, half4(checkerBoardColor, 0, 0, 1)); + textureWrite(dst, c, half4(checkerBoardColor, 0, 0, 1)); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { + int index, const ResourceDesc& r) const override { SkASSERT(index == 0); return {{kSrcDim, kSrcDim}, kRGBA_8888_SkColorType}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step1; @@ -1161,31 +1150,29 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SampledTexture, reporter, context) { /*name=*/"Test_SampledTexture_Sample", /*localDispatchSize=*/{kDstDim, kDstDim, 1}, /*resources=*/{ + // Declare the storage texture before the sampled texture. This tests that + // binding index assignment works consistently across all backends when a + // sampler-less texture and a texture+sampler pair are intermixed and sampler + // bindings aren't necessarily contiguous when the ranges are distinct. { - /*type=*/ResourceType::kTexture, + /*type=*/ResourceType::kWriteOnlyStorageTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, - /*slot=*/0, - }, - { - /*type=*/ResourceType::kSampler, - /*flow=*/DataFlow::kPrivate, - /*policy=*/ResourcePolicy::kNone, + /*slot=*/1, + /*sksl=*/"dst", }, { - /*type=*/ResourceType::kStorageTexture, + /*type=*/ResourceType::kSampledTexture, /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kNone, - /*slot=*/1, + /*slot=*/0, + /*sksl=*/"src", } }) {} ~TestComputeStep2() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(binding = 0) sampler2D src; - layout(binding = 1) writeonly texture2D dest; - void main() { // Normalize the 4x4 invocation indices and sample the source texture using // that. @@ -1195,34 +1182,32 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SampledTexture, reporter, context) { // Use explicit LOD, as quad derivatives are not available to a compute shader. half4 color = sampleLod(src, unormCoord, 0); - textureWrite(dest, dstCoord, color); + textureWrite(dst, dstCoord, color); } )"; } std::tuple calculateTextureParameters( - const DrawParams&, int index, const ResourceDesc& r) const override { - SkASSERT(index == 2); + int index, const ResourceDesc& r) const override { + SkASSERT(index == 0 || index == 1); return {{kDstDim, kDstDim}, kRGBA_8888_SkColorType}; } - SamplerDesc calculateSamplerParameters(const DrawParams&, - int index, - const ResourceDesc&) const override { + SamplerDesc calculateSamplerParameters(int index, const ResourceDesc&) const override { SkASSERT(index == 1); // Use the repeat tile mode to sample an infinite checkerboard. constexpr SkTileMode kTileModes[2] = {SkTileMode::kRepeat, SkTileMode::kRepeat}; return {SkFilterMode::kLinear, kTileModes}; } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step2; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step1, fake_draw_params_for_testing(), 0); - builder.appendStep(&step2, fake_draw_params_for_testing(), 0); + builder.appendStep(&step1); + builder.appendStep(&step2); sk_sp dst = builder.getSharedTextureResource(1); if (!dst) { @@ -1276,11 +1261,11 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_SampledTexture, reporter, context) { // features like this as part of SkSLTest.cpp instead of as a graphite test. // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_AtomicOperationsTest, reporter, context) { std::unique_ptr recorder = context->makeRecorder(); constexpr uint32_t kWorkgroupCount = 32; - constexpr uint32_t kWorkgroupSize = 1024; + constexpr uint32_t kWorkgroupSize = 256; class TestComputeStep : public ComputeStep { public: @@ -1293,6 +1278,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kMapped, /*slot=*/0, + /*sksl=*/"ssbo { atomicUint globalCounter; }", } }) {} ~TestComputeStep() override = default; @@ -1303,12 +1289,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont // // This exercises atomic store/load/add and coherent reads and writes over memory in storage // and workgroup address spaces. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(metal, binding = 0) buffer ssbo { - atomicUint globalCounter; - }; - workgroup atomicUint localCounter; void main() { @@ -1336,22 +1318,18 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { SkASSERT(index == 0); SkASSERT(r.fSlot == 0); SkASSERT(r.fFlow == DataFlow::kShared); return sizeof(uint32_t); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(kWorkgroupCount, 1, 1); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -1361,7 +1339,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont } step; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step, fake_draw_params_for_testing(), 0); + builder.appendStep(&step); BindBufferInfo info = builder.getSharedBufferResource(0); if (!info) { @@ -1375,7 +1353,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(info.fBuffer))); + auto buffer = sync_buffer_to_cpu(recorder.get(), info.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -1391,7 +1369,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont // Verify the contents of the output buffer. constexpr uint32_t kExpectedCount = kWorkgroupCount * kWorkgroupSize; - const uint32_t result = static_cast(map_bind_buffer(info))[0]; + const uint32_t result = static_cast(map_buffer(buffer.get(), info.fOffset))[0]; REPORTER_ASSERT(reporter, result == kExpectedCount, "expected '%d', found '%d'", @@ -1404,13 +1382,13 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsTest, reporter, cont // to exercise SkSL features like this as part of SkSLTest.cpp instead of as a graphite test. // TODO(b/262427430, b/262429132): Enable this test on other backends once they all support // compute programs. -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTest, - reporter, - context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_AtomicOperationsOverArrayAndStructTest, + reporter, + context) { std::unique_ptr recorder = context->makeRecorder(); constexpr uint32_t kWorkgroupCount = 32; - constexpr uint32_t kWorkgroupSize = 1024; + constexpr uint32_t kWorkgroupSize = 256; class TestComputeStep : public ComputeStep { public: @@ -1423,6 +1401,10 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe /*flow=*/DataFlow::kShared, /*policy=*/ResourcePolicy::kMapped, /*slot=*/0, + /*sksl=*/"ssbo {\n" + " atomicUint globalCountsFirstHalf;\n" + " atomicUint globalCountsSecondHalf;\n" + "}\n" } }) {} ~TestComputeStep() override = default; @@ -1433,17 +1415,9 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe // // This exercises atomic store/load/add and coherent reads and writes over memory in storage // and workgroup address spaces. - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - const uint WORKGROUP_SIZE = 1024; - - struct GlobalCounts { - atomicUint firstHalfCount; - atomicUint secondHalfCount; - }; - layout(metal, binding = 0) buffer ssbo { - GlobalCounts globalCounts; - }; + const uint WORKGROUP_SIZE = 256; workgroup atomicUint localCounts[2]; @@ -1469,29 +1443,25 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe // Add the workgroup-only tally to the global counter. if (sk_LocalInvocationID.x == 0) { - atomicAdd(globalCounts.firstHalfCount, atomicLoad(localCounts[0])); - atomicAdd(globalCounts.secondHalfCount, atomicLoad(localCounts[1])); + atomicAdd(globalCountsFirstHalf, atomicLoad(localCounts[0])); + atomicAdd(globalCountsSecondHalf, atomicLoad(localCounts[1])); } } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { SkASSERT(index == 0); SkASSERT(r.fSlot == 0); SkASSERT(r.fFlow == DataFlow::kShared); return 2 * sizeof(uint32_t); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(kWorkgroupCount, 1, 1); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -1503,7 +1473,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe } step; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step, fake_draw_params_for_testing(), 0); + builder.appendStep(&step); BindBufferInfo info = builder.getSharedBufferResource(0); if (!info) { @@ -1517,7 +1487,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(info.fBuffer))); + auto buffer = sync_buffer_to_cpu(recorder.get(), info.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -1534,7 +1504,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe // Verify the contents of the output buffer. constexpr uint32_t kExpectedCount = kWorkgroupCount * kWorkgroupSize / 2; - const uint32_t* ssboData = static_cast(map_bind_buffer(info)); + const uint32_t* ssboData = static_cast(map_buffer(buffer.get(), info.fOffset)); const uint32_t firstHalfCount = ssboData[0]; const uint32_t secondHalfCount = ssboData[1]; REPORTER_ASSERT(reporter, @@ -1549,9 +1519,13 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_AtomicOperationsOverArrayAndStructTe secondHalfCount); } -DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { +DEF_GRAPHITE_TEST_FOR_DAWN_AND_METAL_CONTEXTS(Compute_ClearedBuffer, reporter, context) { constexpr uint32_t kProblemSize = 512; + // The ComputeStep packs kProblemSize floats into kProblemSize / 4 vectors and each thread + // processes 1 vector at a time. + constexpr uint32_t kWorkgroupSize = kProblemSize / 4; + std::unique_ptr recorder = context->makeRecorder(); // The ComputeStep requests an unmapped buffer that is zero-initialized. It writes the output to @@ -1560,13 +1534,14 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { public: TestComputeStep() : ComputeStep( /*name=*/"TestClearedBuffer", - /*localDispatchSize=*/{kProblemSize, 1, 1}, + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, /*resources=*/{ // Zero initialized input buffer { /*type=*/ResourceType::kStorageBuffer, /*flow=*/DataFlow::kPrivate, /*policy=*/ResourcePolicy::kClear, + /*sksl=*/"readonly inputBlock { uint4 in_data[]; }\n", }, // Output buffer: { @@ -1575,35 +1550,24 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { // Builder /*policy=*/ResourcePolicy::kMapped, // mappable for read-back /*slot=*/0, + /*sksl=*/"outputBlock { uint4 out_data[]; }\n", } }) {} ~TestComputeStep() override = default; - std::string computeSkSL(const ResourceBindingRequirements&, int) const override { + std::string computeSkSL() const override { return R"( - layout(set=0, binding=0) readonly buffer inputBlock - { - uint in_data[]; - }; - layout(set=0, binding=1) buffer outputBlock - { - uint out_data[]; - }; void main() { out_data[sk_GlobalInvocationID.x] = in_data[sk_GlobalInvocationID.x]; } )"; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { return sizeof(uint32_t) * kProblemSize; } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -1611,13 +1575,13 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { SkASSERT(resourceIndex == 1); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(1, 1, 1); } } step; DispatchGroup::Builder builder(recorder.get()); - if (!builder.appendStep(&step, fake_draw_params_for_testing(), 0)) { + if (!builder.appendStep(&step)) { ERRORF(reporter, "Failed to add ComputeStep to DispatchGroup"); return; } @@ -1635,7 +1599,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(outputInfo.fBuffer))); + auto outputBuffer = sync_buffer_to_cpu(recorder.get(), outputInfo.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -1650,8 +1614,8 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_ClearedBuffer, reporter, context) { context->submit(SyncToCpu::kYes); // Verify the contents of the output buffer. - uint32_t* outData = static_cast(map_bind_buffer(outputInfo)); - SkASSERT(outputInfo.fBuffer->isMapped() && outData != nullptr); + uint32_t* outData = static_cast(map_buffer(outputBuffer.get(), outputInfo.fOffset)); + SkASSERT(outputBuffer->isMapped() && outData != nullptr); for (unsigned int i = 0; i < kProblemSize; ++i) { const uint32_t found = outData[i]; REPORTER_ASSERT(reporter, 0u == found, "expected '0u', found '%u'", found); @@ -1718,22 +1682,18 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_NativeShaderSourceMetal, reporter, c return {kSource, "atomicCount"}; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { SkASSERT(index == 0); SkASSERT(r.fSlot == 0); SkASSERT(r.fFlow == DataFlow::kShared); return sizeof(uint32_t); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(kWorkgroupCount, 1, 1); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -1743,7 +1703,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_NativeShaderSourceMetal, reporter, c } step; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step, fake_draw_params_for_testing(), 0); + builder.appendStep(&step); BindBufferInfo info = builder.getSharedBufferResource(0); if (!info) { @@ -1757,7 +1717,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_NativeShaderSourceMetal, reporter, c recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(info.fBuffer))); + auto buffer = sync_buffer_to_cpu(recorder.get(), info.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -1773,7 +1733,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_NativeShaderSourceMetal, reporter, c // Verify the contents of the output buffer. constexpr uint32_t kExpectedCount = kWorkgroupCount * kWorkgroupSize; - const uint32_t result = static_cast(map_bind_buffer(info))[0]; + const uint32_t result = static_cast(map_buffer(buffer.get(), info.fOffset))[0]; REPORTER_ASSERT(reporter, result == kExpectedCount, "expected '%d', found '%d'", @@ -1848,22 +1808,135 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_WorkgroupBufferDescMetal, reporter, return {kSource, "atomicCount"}; } - size_t calculateBufferSize(const DrawParams&, - int index, - const ResourceDesc& r) const override { + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { + SkASSERT(index == 0); + SkASSERT(r.fSlot == 0); + SkASSERT(r.fFlow == DataFlow::kShared); + return sizeof(uint32_t); + } + + WorkgroupSize calculateGlobalDispatchSize() const override { + return WorkgroupSize(kWorkgroupCount, 1, 1); + } + + void prepareStorageBuffer(int resourceIndex, + const ResourceDesc& r, + void* buffer, + size_t bufferSize) const override { + SkASSERT(resourceIndex == 0); + *static_cast(buffer) = 0; + } + } step; + + DispatchGroup::Builder builder(recorder.get()); + builder.appendStep(&step); + + BindBufferInfo info = builder.getSharedBufferResource(0); + if (!info) { + ERRORF(reporter, "shared resource at slot 0 is missing"); + return; + } + + // Record the compute pass task. + ComputeTask::DispatchGroupList groups; + groups.push_back(builder.finalize()); + recorder->priv().add(ComputeTask::Make(std::move(groups))); + + // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. + auto buffer = sync_buffer_to_cpu(recorder.get(), info.fBuffer); + + // Submit the work and wait for it to complete. + std::unique_ptr recording = recorder->snap(); + if (!recording) { + ERRORF(reporter, "Failed to make recording"); + return; + } + + InsertRecordingInfo insertInfo; + insertInfo.fRecording = recording.get(); + context->insertRecording(insertInfo); + context->submit(SyncToCpu::kYes); + + // Verify the contents of the output buffer. + constexpr uint32_t kExpectedCount = kWorkgroupCount * kWorkgroupSize; + const uint32_t result = static_cast(map_buffer(buffer.get(), info.fOffset))[0]; + REPORTER_ASSERT(reporter, + result == kExpectedCount, + "expected '%d', found '%d'", + kExpectedCount, + result); +} + +DEF_GRAPHITE_TEST_FOR_DAWN_CONTEXT(Compute_NativeShaderSourceWGSL, reporter, context) { + std::unique_ptr recorder = context->makeRecorder(); + + constexpr uint32_t kWorkgroupCount = 32; + constexpr uint32_t kWorkgroupSize = 256; // The WebGPU default workgroup size limit is 256 + + class TestComputeStep : public ComputeStep { + public: + TestComputeStep() : ComputeStep( + /*name=*/"TestAtomicOperationsWGSL", + /*localDispatchSize=*/{kWorkgroupSize, 1, 1}, + /*resources=*/{ + { + /*type=*/ResourceType::kStorageBuffer, + /*flow=*/DataFlow::kShared, + /*policy=*/ResourcePolicy::kMapped, + /*slot=*/0, + } + }, + /*workgroupBuffers=*/{}, + /*baseFlags=*/Flags::kSupportsNativeShader) {} + ~TestComputeStep() override = default; + + NativeShaderSource nativeShaderSource(NativeShaderFormat format) const override { + SkASSERT(format == NativeShaderFormat::kWGSL); + static constexpr std::string_view kSource = R"( + @group(0) @binding(0) var globalCounter: atomic; + + var localCounter: atomic; + + @compute @workgroup_size(256) + fn atomicCount(@builtin(local_invocation_id) localId: vec3u) { + // Initialize the local counter. + if localId.x == 0u { + atomicStore(&localCounter, 0u); + } + + // Synchronize the threads in the workgroup so they all see the initial value. + workgroupBarrier(); + + // All threads increment the counter. + atomicAdd(&localCounter, 1u); + + // Synchronize the threads again to ensure they have all executed the increment + // and the following load reads the same value across all threads in the + // workgroup. + workgroupBarrier(); + + // Add the workgroup-only tally to the global counter. + if localId.x == 0u { + let tally = atomicLoad(&localCounter); + atomicAdd(&globalCounter, tally); + } + } + )"; + return {kSource, "atomicCount"}; + } + + size_t calculateBufferSize(int index, const ResourceDesc& r) const override { SkASSERT(index == 0); SkASSERT(r.fSlot == 0); SkASSERT(r.fFlow == DataFlow::kShared); return sizeof(uint32_t); } - WorkgroupSize calculateGlobalDispatchSize(const DrawParams&) const override { + WorkgroupSize calculateGlobalDispatchSize() const override { return WorkgroupSize(kWorkgroupCount, 1, 1); } - void prepareStorageBuffer(const DrawParams&, - int ssboIndex, - int resourceIndex, + void prepareStorageBuffer(int resourceIndex, const ResourceDesc& r, void* buffer, size_t bufferSize) const override { @@ -1873,7 +1946,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_WorkgroupBufferDescMetal, reporter, } step; DispatchGroup::Builder builder(recorder.get()); - builder.appendStep(&step, fake_draw_params_for_testing(), 0); + builder.appendStep(&step); BindBufferInfo info = builder.getSharedBufferResource(0); if (!info) { @@ -1887,7 +1960,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_WorkgroupBufferDescMetal, reporter, recorder->priv().add(ComputeTask::Make(std::move(groups))); // Ensure the output buffer is synchronized to the CPU once the GPU submission has finished. - recorder->priv().add(SynchronizeToCpuTask::Make(sk_ref_sp(info.fBuffer))); + auto buffer = sync_buffer_to_cpu(recorder.get(), info.fBuffer); // Submit the work and wait for it to complete. std::unique_ptr recording = recorder->snap(); @@ -1903,7 +1976,7 @@ DEF_GRAPHITE_TEST_FOR_METAL_CONTEXT(Compute_WorkgroupBufferDescMetal, reporter, // Verify the contents of the output buffer. constexpr uint32_t kExpectedCount = kWorkgroupCount * kWorkgroupSize; - const uint32_t result = static_cast(map_bind_buffer(info))[0]; + const uint32_t result = static_cast(map_buffer(buffer.get(), info.fOffset))[0]; REPORTER_ASSERT(reporter, result == kExpectedCount, "expected '%d', found '%d'", diff --git a/tests/graphite/DeviceTest.cpp b/tests/graphite/DeviceTest.cpp index 54f849630917..d8791d5aa122 100644 --- a/tests/graphite/DeviceTest.cpp +++ b/tests/graphite/DeviceTest.cpp @@ -18,7 +18,8 @@ namespace skgpu::graphite { // Tests that vertex transparency will affect draw order. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(DeviceTestVertexTransparency, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(DeviceTestVertexTransparency, reporter, context, + CtsEnforcement::kNextRelease) { // Set up transparent vertices, in a 5px wide by 10px tall rectangle. static constexpr int kVertexCount = 5; SkPoint positions[kVertexCount]; diff --git a/tests/graphite/GraphitePromiseImageTest.cpp b/tests/graphite/GraphitePromiseImageTest.cpp index b68ca41682b5..0a5a81cdab71 100644 --- a/tests/graphite/GraphitePromiseImageTest.cpp +++ b/tests/graphite/GraphitePromiseImageTest.cpp @@ -238,7 +238,8 @@ void setup_test_context(Context* context, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -321,7 +322,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageTest, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageFulfillFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -391,7 +393,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageFulfillF DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageCreationFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { // Note: these dimensions are invalid and will cause MakeGraphitePromiseTexture to fail constexpr SkISize kDimensions { 0, 0 }; @@ -409,7 +412,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphitePromiseImageCreation DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphitePromiseImageTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -501,7 +505,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphitePromiseImageTest, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphitePromiseImageFulfillFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -572,7 +577,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphitePromiseImageFulfillFail // Test out dropping the Recorder prior to inserting the Recording DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphitePromiseImageRecorderLoss, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions{ 16, 16 }; for (Volatile isVolatile : { Volatile::kNo, Volatile::kYes }) { @@ -607,7 +613,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphitePromiseImageRecorderLoss, // previous instantiations don't impact the Recording's collection of PromiseImages. DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphitePromiseImageMultipleImgUses, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions{ 16, 16 }; static constexpr int kNumRecordings = 3; diff --git a/tests/graphite/GraphiteResourceCacheTest.cpp b/tests/graphite/GraphiteResourceCacheTest.cpp index d6b2cc1eb7c6..dbdde43ca37e 100644 --- a/tests/graphite/GraphiteResourceCacheTest.cpp +++ b/tests/graphite/GraphiteResourceCacheTest.cpp @@ -18,7 +18,6 @@ #include "include/gpu/graphite/Surface.h" #include "src/core/SkCanvasPriv.h" #include "src/gpu/graphite/Device.h" -#include "src/gpu/graphite/ImageUtils.h" #include "src/gpu/graphite/RecorderPriv.h" #include "src/gpu/graphite/Resource.h" #include "src/gpu/graphite/ResourceCache.h" @@ -26,6 +25,7 @@ #include "src/gpu/graphite/SharedContext.h" #include "src/gpu/graphite/Texture.h" #include "src/gpu/graphite/TextureProxyView.h" +#include "src/gpu/graphite/TextureUtils.h" #include "src/image/SkImage_Base.h" #include "tools/Resources.h" @@ -85,7 +85,8 @@ static sk_sp create_image_data(const SkImageInfo& info) { return data; } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteBudgetedResourcesTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteBudgetedResourcesTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); ResourceCache* resourceCache = resourceProvider->resourceCache(); @@ -284,7 +285,8 @@ Resource* add_new_purgeable_resource(skiatest::Reporter* reporter, } } // namespace -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeAsNeededResourcesTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeAsNeededResourcesTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); ResourceCache* resourceCache = resourceProvider->resourceCache(); @@ -410,7 +412,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeAsNeededResourcesTest, reporter, REPORTER_ASSERT(reporter, resourceCache->currentBudgetedBytes() == 0); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteZeroSizedResourcesTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteZeroSizedResourcesTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); ResourceCache* resourceCache = resourceProvider->resourceCache(); @@ -496,7 +499,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteZeroSizedResourcesTest, reporter, con REPORTER_ASSERT(reporter, resourceCache->topOfPurgeableQueue()->gpuMemorySize() == 0); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedSinceResourcesTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedSinceResourcesTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); ResourceCache* resourceCache = resourceProvider->resourceCache(); @@ -586,7 +590,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedSinceResourcesTest, repor // This test is used to check the case where we call purgeNotUsedSince, which triggers us to return // resources from mailbox. Even though the returned resources aren't purged by the last used, we // still end up purging things to get under budget. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedOverBudgetTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedOverBudgetTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); ResourceCache* resourceCache = resourceProvider->resourceCache(); @@ -661,4 +666,73 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeNotUsedOverBudgetTest, reporter, REPORTER_ASSERT(reporter, resourceCache->testingInPurgeableQueue(resource3Ptr)); } +// Test call purgeResources on the ResourceCache and make sure all unlocked resources are getting +// purged regardless of when they were last used. +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphitePurgeResourcesTest, reporter, context, + CtsEnforcement::kNextRelease) { + std::unique_ptr recorder = context->makeRecorder(); + ResourceProvider* resourceProvider = recorder->priv().resourceProvider(); + ResourceCache* resourceCache = resourceProvider->resourceCache(); + const SharedContext* sharedContext = resourceProvider->sharedContext(); + + // set resourceCache budget to 10 for testing. + resourceCache->setMaxBudget(10); + + // Basic test where we purge 1 resource + auto resourcePtr = add_new_purgeable_resource(reporter, + sharedContext, + resourceCache, + /*gpuMemorySize=*/1); + if (!resourcePtr) { + return; + } + + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 1); + + // purging should purge the one unlocked resource. + resourceCache->purgeResources(); + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 0); + + // Test making 2 purgeable resources + Resource* resourcePtr1 = add_new_purgeable_resource(reporter, + sharedContext, + resourceCache, + /*gpuMemorySize=*/1); + + Resource* resourcePtr2 = add_new_purgeable_resource(reporter, + sharedContext, + resourceCache, + /*gpuMemorySize=*/1); + if (!resourcePtr1 || !resourcePtr2) { + return; + } + + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 2); + REPORTER_ASSERT(reporter, resourceCache->testingInPurgeableQueue(resourcePtr1)); + REPORTER_ASSERT(reporter, resourceCache->testingInPurgeableQueue(resourcePtr2)); + + resourceCache->purgeResources(); + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 0); + + // purgeResources should have no impact on non-purgeable resources + auto resource = add_new_resource(reporter, + sharedContext, + resourceCache, + /*gpuMemorySize=*/1); + if (!resource) { + return; + } + resourcePtr = resource.get(); + + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 1); + + resourceCache->purgeResources(); + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 1); + REPORTER_ASSERT(reporter, !resourceCache->testingInPurgeableQueue(resourcePtr)); + + resource.reset(); + resourceCache->purgeResources(); + REPORTER_ASSERT(reporter, resourceCache->getResourceCount() == 0); +} + } // namespace skgpu::graphite diff --git a/tests/graphite/GraphiteYUVAPromiseImageTest.cpp b/tests/graphite/GraphiteYUVAPromiseImageTest.cpp index fa0ce7b2f659..675589167876 100644 --- a/tests/graphite/GraphiteYUVAPromiseImageTest.cpp +++ b/tests/graphite/GraphiteYUVAPromiseImageTest.cpp @@ -275,7 +275,8 @@ void setup_test_context(Context* context, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -368,7 +369,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageTest DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageFulfillFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -447,7 +449,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageFulf DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageCreationFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { // Note: these dimensions are invalid and will cause MakeGraphitePromiseTexture to fail constexpr SkISize kDimensions { 0, 0 }; @@ -467,7 +470,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(NonVolatileGraphiteYUVAPromiseImageCrea DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphiteYUVAPromiseImageTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -585,7 +589,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphiteYUVAPromiseImageTest, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphiteYUVAPromiseImageFulfillFailureTest, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions { 16, 16 }; TestCtx testContext; @@ -667,7 +672,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(VolatileGraphiteYUVAPromiseImageFulfill // Test out dropping the Recorder prior to inserting the Recording DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphiteYUVAPromiseImageRecorderLoss, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions{ 16, 16 }; for (Volatile isVolatile : { Volatile::kNo, Volatile::kYes }) { @@ -706,7 +712,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphiteYUVAPromiseImageRecorderLoss, // previous instantiations don't impact the Recording's collection of PromiseImages. DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(GraphiteYUVAPromiseImageMultipleImgUses, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { constexpr SkISize kDimensions{ 16, 16 }; static constexpr int kNumRecordings = 3; diff --git a/tests/graphite/ImageOriginTest.cpp b/tests/graphite/ImageOriginTest.cpp new file mode 100644 index 000000000000..5463afa41f8c --- /dev/null +++ b/tests/graphite/ImageOriginTest.cpp @@ -0,0 +1,178 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "tests/Test.h" + +#include "include/core/SkBitmap.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkRect.h" +#include "include/core/SkTileMode.h" +#include "include/gpu/graphite/Context.h" +#include "include/gpu/graphite/Image.h" +#include "include/gpu/graphite/Surface.h" +#include "src/gpu/graphite/Surface_Graphite.h" +#include "src/shaders/SkImageShader.h" +#include "tools/ToolUtils.h" +#include "tools/gpu/ManagedBackendTexture.h" + +namespace skgpu::graphite { + +namespace { + +using DrawFn = void (*)(sk_sp, SkCanvas*, SkRect /*srcRect*/, SkRect /*dstRect*/); + +constexpr SkColor4f kTopColor = SkColors::kRed; +constexpr SkColor4f kBottomColor = SkColors::kBlue; +constexpr int32_t kHalfSize = 4; +constexpr SkISize kImageSize = {2*kHalfSize, 2*kHalfSize}; + +void test_draw(skiatest::Reporter* reporter, + Context* context, + skgpu::Origin origin, + SkRect srcRect, + SkRect dstRect, + DrawFn drawImageFn) { + std::unique_ptr recorder = context->makeRecorder(); + + + SkBitmap bitmap; + bitmap.allocPixels(SkImageInfo::Make(kImageSize, kRGBA_8888_SkColorType, kPremul_SkAlphaType), + 0); + bitmap.eraseColor(kTopColor); + bitmap.erase(kBottomColor, + SkIRect::MakeLTRB(0, kHalfSize, kImageSize.width(), kImageSize.height())); + + auto managedTexture = + sk_gpu_test::ManagedGraphiteTexture::MakeFromPixmap(recorder.get(), + bitmap.pixmap(), + skgpu::Mipmapped::kNo, + skgpu::Renderable::kNo); + + REPORTER_ASSERT(reporter, managedTexture); + if (!managedTexture) { + return; + } + + sk_sp image = SkImages::AdoptTextureFrom(recorder.get(), + managedTexture->texture(), + kRGBA_8888_SkColorType, + kPremul_SkAlphaType, + /*colorSpace=*/nullptr, + origin); + + REPORTER_ASSERT(reporter, image); + if (!image) { + return; + } + + sk_sp surface = SkSurfaces::RenderTarget( + recorder.get(), + SkImageInfo::Make(kImageSize, kRGBA_8888_SkColorType, kPremul_SkAlphaType)); + + REPORTER_ASSERT(reporter, surface); + if (!surface) { + return; + } + + SkCanvas* canvas = surface->getCanvas(); + + drawImageFn(image, canvas, srcRect, dstRect); + + SkPixmap pm; + + SkBitmap result; + result.allocPixels(SkImageInfo::Make(kImageSize, kRGBA_8888_SkColorType, kPremul_SkAlphaType)); + bool peekPixelsSuccess = result.peekPixels(&pm); + REPORTER_ASSERT(reporter, peekPixelsSuccess); + + bool readPixelsSuccess = surface->readPixels(pm, 0, 0); + REPORTER_ASSERT(reporter, readPixelsSuccess); + + bool resultTopColorOnTop = origin == skgpu::Origin::kTopLeft; + + for (int32_t y = 0; y < kImageSize.height(); ++y) { + for (int32_t x = 0; x < kImageSize.width(); ++x) { + SkColor4f color = pm.getColor4f(x, y); + + SkColor4f expectedColor = ((y < kHalfSize) == resultTopColorOnTop) ? kTopColor + : kBottomColor; + REPORTER_ASSERT(reporter, + color == expectedColor, + "At position {%d, %d}, " + "expected {%.1f, %.1f, %.1f, %.1f}, " + "found {%.1f, %.1f, %.1f, %.1f}", + x, y, + expectedColor.fR, expectedColor.fG, expectedColor.fB, expectedColor.fA, + color.fR, color.fG, color.fB, color.fA); + } + } +} + +const SkRect kTestSrcRects[] = { + // entire thing + SkRect::MakeWH(kImageSize.width(), kImageSize.height()), + // half rect still splitting top and bottom colors + SkRect::MakeXYWH(2, 2, kHalfSize, kHalfSize), +}; + +void test_draw_fn(skiatest::Reporter* reporter, + Context* context, + DrawFn drawImageFn) { + for (auto origin : {skgpu::Origin::kTopLeft, skgpu::Origin::kBottomLeft}) { + for (auto srcRect: kTestSrcRects) { + test_draw(reporter, + context, + origin, + srcRect, + SkRect::MakeWH(kImageSize.width(), kImageSize.height()), + drawImageFn); + } + } +} + +void draw_image(sk_sp image, + SkCanvas* canvas, + SkRect srcRect, + SkRect dstRect) { + canvas->drawImageRect(image, + srcRect, + dstRect, + SkSamplingOptions(), + /*paint=*/nullptr, + SkCanvas::kStrict_SrcRectConstraint); +} + +void draw_image_with_shader(sk_sp image, + SkCanvas* canvas, + SkRect srcRect, + SkRect dstRect) { + SkPaint p; + SkMatrix srcToDst = SkMatrix::RectToRect(srcRect, dstRect); + p.setShader(SkImageShader::MakeSubset( + std::move(image), + srcRect, + SkTileMode::kClamp, + SkTileMode::kClamp, + SkSamplingOptions(), + &srcToDst)); + canvas->drawRect(dstRect, p); +} + +} // anonymous namespace + + +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageOriginTest_drawImage_Graphite, reporter, context, + CtsEnforcement::kNextRelease) { + test_draw_fn(reporter, context, draw_image); +} + +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageOriginTest_imageShader_Graphite, reporter, context, + CtsEnforcement::kNextRelease) { + test_draw_fn(reporter, context, draw_image_with_shader); +} + +} // namespace skgpu::graphite diff --git a/tests/graphite/ImageProviderTest.cpp b/tests/graphite/ImageProviderTest.cpp index 46bf51233eaf..0d2d1b9d26df 100644 --- a/tests/graphite/ImageProviderTest.cpp +++ b/tests/graphite/ImageProviderTest.cpp @@ -270,7 +270,8 @@ void run_test(skiatest::Reporter* reporter, // drawn w/o mipmapping --> dropped draw (blue) // drawn w/ mipmapping --> dropped draw (blue) // -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Default, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Default, reporter, context, + CtsEnforcement::kNextRelease) { TestCase testcases[] = { { "0", create_raster_backed_image_no_mipmaps, { kBackgroundColor, kBackgroundColor } }, { "1", create_raster_backed_image_with_mipmaps, { kBackgroundColor, kBackgroundColor } }, @@ -305,14 +306,14 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Default, rep // // 4) picture-backed image // drawn w/o mipmapping --> drawn (yellow) - auto-converted -// drawn w/ mipmapping --> drawn (yellow) - mipmap filtering is dropped -// due to no mipmap regen +// drawn w/ mipmapping --> drawn (yellow) - mipmaps auto generated // // 5) bitmap-backed-generator based image // drawn w/o mipmapping --> drawn (yellow) - auto-converted // drawn w/ mipmapping --> drawn (yellow) - auto-converted // -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Testing, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Testing, reporter, context, + CtsEnforcement::kNextRelease) { static const TestCase testcases[] = { { "0", create_raster_backed_image_no_mipmaps, { kBaseImageColor, kBaseImageColor } }, { "1", create_raster_backed_image_with_mipmaps, { kBaseImageColor, kFirstMipLevelColor } }, @@ -330,20 +331,18 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageProviderTest_Graphite_Testing, rep // Here we're testing that the RequiredProperties parameter to makeTextureImage and makeSubset // works as expected. -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(Make_TextureImage_Subset_Test, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(Make_TextureImage_Subset_Test, reporter, context, + CtsEnforcement::kNextRelease) { static const struct { std::string name; - // Some of the factories don't correctly create mipmaps through makeTextureImage - // bc Graphite's mipmap regeneration isn't implemented yet (b/238754357). - bool fMipmapsBlockedByBug; FactoryT fFactory; } testcases[] = { - { "raster_no_mips", false, create_raster_backed_image_no_mipmaps }, - { "raster_with_mips", false, create_raster_backed_image_with_mipmaps }, - { "texture_no_mips", false, create_gpu_backed_image_no_mipmaps }, - { "texture_with_mips", false, create_gpu_backed_image_with_mipmaps }, - { "picture_backed", true, create_picture_backed_image }, - { "image_generator", true, create_bitmap_generator_backed_image }, + { "raster_no_mips", create_raster_backed_image_no_mipmaps }, + { "raster_with_mips", create_raster_backed_image_with_mipmaps }, + { "texture_no_mips", create_gpu_backed_image_no_mipmaps }, + { "texture_with_mips", create_gpu_backed_image_with_mipmaps }, + { "picture_backed", create_picture_backed_image }, + { "image_generator", create_bitmap_generator_backed_image }, }; const SkIRect kFakeSubset = SkIRect::MakeWH(kImageSize.width(), kImageSize.height()); @@ -365,11 +364,9 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(Make_TextureImage_Subset_Test, reporter bool mipmapOptAllowed = orig->hasMipmaps() && !mipmapped; REPORTER_ASSERT(reporter, i->isTextureBacked()); - if (!test.fMipmapsBlockedByBug || !mipmapped) { - REPORTER_ASSERT( - reporter, - (i->hasMipmaps() == mipmapped) || (i->hasMipmaps() && mipmapOptAllowed)); - } + REPORTER_ASSERT( + reporter, + (i->hasMipmaps() == mipmapped) || (i->hasMipmaps() && mipmapOptAllowed)); // SkImage::makeSubset should "leave an image where it is", that is, return a // texture backed image iff the original image was texture backed. Otherwise, @@ -444,21 +441,19 @@ SkColorType pick_colortype(const Caps* caps, bool mipmapped) { // SkImage::makeColorSpace and // SkImage::makeColorTypeAndColorSpace // works as expected. -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MakeColorSpace_Test, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MakeColorSpace_Test, reporter, context, + CtsEnforcement::kNextRelease) { static const struct { std::string name; - // Some of the factories don't correctly create mipmaps through SkImage::TextureFromImage - // bc Graphite's mipmap regeneration isn't implemented yet (b/238754357). - bool fMipmapsBlockedByBug; FactoryT fFactory; bool fTextureBacked; } testcases[] = { - { "raster_no_mips", false, create_raster_backed_image_no_mipmaps, false }, - { "raster_with_mips", false, create_raster_backed_image_with_mipmaps, false }, - { "texture_no_mips", false, create_gpu_backed_image_no_mipmaps, true }, - { "texture_with_mips", false, create_gpu_backed_image_with_mipmaps, true }, - { "picture_backed", true, create_picture_backed_image, false }, - { "image_generator", true, create_bitmap_generator_backed_image, false }, + { "raster_no_mips", create_raster_backed_image_no_mipmaps, false }, + { "raster_with_mips", create_raster_backed_image_with_mipmaps, false }, + { "texture_no_mips", create_gpu_backed_image_no_mipmaps, true }, + { "texture_with_mips", create_gpu_backed_image_with_mipmaps, true }, + { "picture_backed", create_picture_backed_image, false }, + { "image_generator", create_bitmap_generator_backed_image, false }, }; sk_sp spin = SkColorSpace::MakeSRGB()->makeColorSpin(); @@ -471,7 +466,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MakeColorSpace_Test, reporter, context) skiatest::ReporterContext subtest(reporter, testcase.name); sk_sp orig = testcase.fFactory(recorder.get()); - SkASSERT(orig->colorType() == kRGBA_8888_SkColorType); + SkASSERT(orig->colorType() == kRGBA_8888_SkColorType || + orig->colorType() == kBGRA_8888_SkColorType); SkASSERT(!orig->colorSpace() || orig->colorSpace() == SkColorSpace::MakeSRGB().get()); for (bool mipmapped : {false, true}) { @@ -483,9 +479,7 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MakeColorSpace_Test, reporter, context) REPORTER_ASSERT(reporter, i->isTextureBacked() == testcase.fTextureBacked); REPORTER_ASSERT(reporter, i->colorSpace() == spin.get()); if (testcase.fTextureBacked) { - if (!testcase.fMipmapsBlockedByBug) { - REPORTER_ASSERT(reporter, i->hasMipmaps() == mipmapped); - } + REPORTER_ASSERT(reporter, i->hasMipmaps() == mipmapped); } else { REPORTER_ASSERT(reporter, !i->hasMipmaps()); } @@ -498,9 +492,7 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MakeColorSpace_Test, reporter, context) REPORTER_ASSERT(reporter, i->colorType() == altCT); REPORTER_ASSERT(reporter, i->colorSpace() == spin.get()); if (testcase.fTextureBacked) { - if (!testcase.fMipmapsBlockedByBug) { - REPORTER_ASSERT(reporter, i->hasMipmaps() == mipmapped); - } + REPORTER_ASSERT(reporter, i->hasMipmaps() == mipmapped); } else { REPORTER_ASSERT(reporter, !i->hasMipmaps()); } diff --git a/tests/graphite/ImageShaderTest.cpp b/tests/graphite/ImageShaderTest.cpp index 85a0ec92f338..94176624bdc9 100644 --- a/tests/graphite/ImageShaderTest.cpp +++ b/tests/graphite/ImageShaderTest.cpp @@ -81,7 +81,8 @@ void test_draw(skiatest::Reporter* reporter, } // anonymous namespace -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageShaderTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageShaderTest, reporter, context, + CtsEnforcement::kNextRelease) { // Test that a subset bound covering less than half of a pixel causes that pixel not to be // drawn when using decal tiling and nearest-neighbor filtering. In this case we have a subset // that covers 3/4 the pixel column at y=1, all of the y=2 column, and 1/4 the y=3 column. diff --git a/tests/graphite/IntersectionTreeTest.cpp b/tests/graphite/IntersectionTreeTest.cpp index 3e405a8bdc38..1197276bab13 100644 --- a/tests/graphite/IntersectionTreeTest.cpp +++ b/tests/graphite/IntersectionTreeTest.cpp @@ -29,7 +29,7 @@ class SimpleIntersectionTree { #define CHECK(A) REPORTER_ASSERT(reporter, A) -DEF_GRAPHITE_TEST(skgpu_IntersectionTree, reporter) { +DEF_GRAPHITE_TEST(skgpu_IntersectionTree, reporter, CtsEnforcement::kNextRelease) { SkRandom rand; { SimpleIntersectionTree simpleTree; diff --git a/tests/graphite/KeyTest.cpp b/tests/graphite/KeyTest.cpp index 65a6dd40b2b6..63289bc1c1c1 100644 --- a/tests/graphite/KeyTest.cpp +++ b/tests/graphite/KeyTest.cpp @@ -49,7 +49,8 @@ bool coeff_equal(SkBlendModeCoeff skCoeff, skgpu::BlendCoeff gpuCoeff) { } // anonymous namespace // These are intended to be unit tests of the PaintParamsKeyBuilder and PaintParamsKey. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyWithInvalidCodeSnippetIDTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyWithInvalidCodeSnippetIDTest, reporter, context, + CtsEnforcement::kNextRelease) { SkArenaAlloc arena{256}; ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); @@ -77,7 +78,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyWithInvalidCodeSnippetIDTest, reporter, co REPORTER_ASSERT(reporter, fakeKey->getRootNodes(dict, &arena).empty()); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyEqualityChecksSnippetID, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyEqualityChecksSnippetID, reporter, context, + CtsEnforcement::kNextRelease) { SkArenaAlloc arena{256}; ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); @@ -95,7 +97,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(KeyEqualityChecksSnippetID, reporter, context REPORTER_ASSERT(reporter, !(keyA != keyB)); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ShaderInfoDetectsFixedFunctionBlend, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ShaderInfoDetectsFixedFunctionBlend, reporter, context, + CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); for (int bm = 0; bm <= (int) SkBlendMode::kLastCoeffMode; ++bm) { diff --git a/tests/graphite/MultisampleTest.cpp b/tests/graphite/MultisampleTest.cpp index 0155829ab748..b0479317c84b 100644 --- a/tests/graphite/MultisampleTest.cpp +++ b/tests/graphite/MultisampleTest.cpp @@ -21,7 +21,8 @@ namespace skgpu::graphite { // Tests that a drawing with MSAA will have contents retained between recordings. // This is for testing MSAA load from resolve feature. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(MultisampleRetainTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(MultisampleRetainTest, reporter, context, + CtsEnforcement::kNextRelease) { const SkImageInfo surfaceImageInfo = SkImageInfo::Make( 16, 16, SkColorType::kRGBA_8888_SkColorType, SkAlphaType::kPremul_SkAlphaType); diff --git a/tests/graphite/MutableImagesTest.cpp b/tests/graphite/MutableImagesTest.cpp index d552b51a64e8..e73e4f19b989 100644 --- a/tests/graphite/MutableImagesTest.cpp +++ b/tests/graphite/MutableImagesTest.cpp @@ -499,7 +499,8 @@ void run_test(skiatest::Reporter* reporter, } // anonymous namespace -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MutableImagesTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(MutableImagesTest, reporter, context, + CtsEnforcement::kNextRelease) { for (bool useTwoRecorders : { false, true }) { for (bool withMips : { false, true }) { diff --git a/tests/graphite/PaintParamsKeyTest.cpp b/tests/graphite/PaintParamsKeyTest.cpp index 66819cfc0d36..48767fc0630f 100644 --- a/tests/graphite/PaintParamsKeyTest.cpp +++ b/tests/graphite/PaintParamsKeyTest.cpp @@ -37,6 +37,7 @@ #include "src/gpu/graphite/Precompile.h" #include "src/gpu/graphite/PublicPrecompile.h" #include "src/gpu/graphite/RecorderPriv.h" +#include "src/gpu/graphite/Renderer.h" #include "src/gpu/graphite/ResourceProvider.h" #include "src/gpu/graphite/RuntimeEffectDictionary.h" #include "src/gpu/graphite/ShaderCodeDictionary.h" @@ -634,7 +635,8 @@ void check_draw(skiatest::Reporter* reporter, // and via the pre-compilation system // // TODO: keep this as a smoke test but add a fuzzer that reuses all the helpers -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PaintParamsKeyTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PaintParamsKeyTest, reporter, context, + CtsEnforcement::kNextRelease) { auto recorder = context->makeRecorder(); ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); @@ -709,14 +711,16 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PaintParamsKeyTest, reporter, context) { primitiveBlender = SkBlender::Mode(SkBlendMode::kSrcOver); } - bool hasCoverage = rand.nextBool(); + constexpr Coverage coverageOptions[3] = { + Coverage::kNone, Coverage::kSingleChannel, Coverage::kLCD}; + Coverage coverage = coverageOptions[rand.nextULessThan(3)]; DstReadRequirement dstReadReq = DstReadRequirement::kNone; const SkBlenderBase* blender = as_BB(paint.getBlender()); if (blender) { dstReadReq = GetDstReadRequirement(recorder->priv().caps(), blender->asBlendMode(), - hasCoverage); + coverage); } bool needsDstSample = dstReadReq == DstReadRequirement::kTextureCopy || dstReadReq == DstReadRequirement::kTextureSample; @@ -733,7 +737,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PaintParamsKeyTest, reporter, context) { std::vector precompileIDs; paintOptions.priv().buildCombinations(precompileKeyContext, withPrimitiveBlender, - hasCoverage, + coverage, [&](UniquePaintParamsID id) { precompileIDs.push_back(id); }); diff --git a/tests/graphite/PipelineDataCacheTest.cpp b/tests/graphite/PipelineDataCacheTest.cpp index d279c5f03430..d6e386d72223 100644 --- a/tests/graphite/PipelineDataCacheTest.cpp +++ b/tests/graphite/PipelineDataCacheTest.cpp @@ -16,7 +16,8 @@ using namespace skgpu::graphite; -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PipelineDataCacheTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(PipelineDataCacheTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); auto cache = recorder->priv().uniformDataCache(); diff --git a/tests/graphite/ProxyCacheTest.cpp b/tests/graphite/ProxyCacheTest.cpp index bc85c4938a29..39ee88a47ee8 100644 --- a/tests/graphite/ProxyCacheTest.cpp +++ b/tests/graphite/ProxyCacheTest.cpp @@ -25,7 +25,7 @@ namespace skgpu::graphite { // SkBitmap into the proxy cache and then changing its contents. This simple test should create // an IDChangeListener that will remove the entry in the cache when the bitmap is changed and // the resulting message processed. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest1, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest1, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -52,7 +52,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest1, r, context) { // This test checks that, if the same bitmap is added to two separate ProxyCaches, when it is // changed, both of the ProxyCaches will receive the message. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest2, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest2, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder1 = context->makeRecorder(); ProxyCache* proxyCache1 = recorder1->priv().proxyCache(); std::unique_ptr recorder2 = context->makeRecorder(); @@ -88,7 +88,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest2, r, context) { // This test exercises mipmap selectivity of the ProxyCache. Mipmapped and non-mipmapped version // of the same bitmap are keyed differently. Requesting a non-mipmapped version will // return a mipmapped version, if it exists. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest3, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest3, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -192,7 +192,7 @@ ProxyCacheSetup setup_test(Context* context, Recorder* recorder, skiatest::Repor } // anonymous namespace // This test exercises the ProxyCache's freeUniquelyHeld method. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest4, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest4, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -215,7 +215,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest4, r, context) { } // This test exercises the ProxyCache's purgeProxiesNotUsedSince method. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest5, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest5, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -244,7 +244,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest5, r, context) { // This test simply verifies that the ProxyCache is correctly updating the Resource's // last access time stamp. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest6, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest6, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -285,7 +285,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest6, r, context) { } // Verify that the ProxyCache's purgeProxiesNotUsedSince method can clear out multiple proxies. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest7, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest7, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -305,7 +305,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest7, r, context) { } // Verify that the ProxyCache's freeUniquelyHeld behavior is working in the ResourceCache. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest8, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest8, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceCache* resourceCache = recorder->priv().resourceCache(); ProxyCache* proxyCache = recorder->priv().proxyCache(); @@ -351,7 +351,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest8, r, context) { // Verify that the ProxyCache's purgeProxiesNotUsedSince behavior is working when triggered from // ResourceCache. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest9, r, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ProxyCacheTest9, r, context, CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); ResourceCache* resourceCache = recorder->priv().resourceCache(); ProxyCache* proxyCache = recorder->priv().proxyCache(); diff --git a/tests/graphite/RTEffectTest.cpp b/tests/graphite/RTEffectTest.cpp index e5e4d663a4c0..02b9bb1b9de4 100644 --- a/tests/graphite/RTEffectTest.cpp +++ b/tests/graphite/RTEffectTest.cpp @@ -16,7 +16,8 @@ using namespace skgpu::graphite; -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(Shader_FindOrCreateSnippetForRuntimeEffect, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(Shader_FindOrCreateSnippetForRuntimeEffect, reporter, context, + CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); std::unique_ptr testEffect(SkMakeRuntimeEffect(SkRuntimeEffect::MakeForShader, @@ -42,7 +43,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(Shader_FindOrCreateSnippetForRuntimeEffect, r DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ColorFilter_FindOrCreateSnippetForRuntimeEffect, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); std::unique_ptr testEffect(SkMakeRuntimeEffect( @@ -68,7 +70,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ColorFilter_FindOrCreateSnippetForRuntimeEffe } DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ShaderUniforms_FindOrCreateSnippetForRuntimeEffect, - reporter, context) { + reporter, context, CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); std::unique_ptr testEffect(SkMakeRuntimeEffect(SkRuntimeEffect::MakeForShader, @@ -111,7 +113,7 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ShaderUniforms_FindOrCreateSnippetForRuntimeE } DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(ColorFilterUniforms_FindOrCreateSnippetForRuntimeEffect, - reporter, context) { + reporter, context, CtsEnforcement::kNextRelease) { ShaderCodeDictionary* dict = context->priv().shaderCodeDictionary(); std::unique_ptr testEffect(SkMakeRuntimeEffect( diff --git a/tests/graphite/ReadWritePixelsGraphiteTest.cpp b/tests/graphite/ReadWritePixelsGraphiteTest.cpp index c59dffbe6e67..bec4f72cd21a 100644 --- a/tests/graphite/ReadWritePixelsGraphiteTest.cpp +++ b/tests/graphite/ReadWritePixelsGraphiteTest.cpp @@ -176,17 +176,14 @@ enum class Result { template using GraphiteReadSrcFn = Result(const T&, const SkIPoint& offset, const SkPixmap&); -SkPixmap make_pixmap_have_valid_alpha_type(SkPixmap pm) { - if (pm.alphaType() == kUnknown_SkAlphaType) { - return {pm.info().makeAlphaType(kUnpremul_SkAlphaType), pm.addr(), pm.rowBytes()}; - } - return pm; -} - static SkAutoPixmapStorage make_ref_data(const SkImageInfo& info, bool forceOpaque) { SkAutoPixmapStorage result; - result.alloc(info); - auto surface = SkSurfaces::WrapPixels(make_pixmap_have_valid_alpha_type(result)); + if (info.alphaType() == kUnknown_SkAlphaType) { + result.alloc(info.makeAlphaType(kUnpremul_SkAlphaType)); + } else { + result.alloc(info); + } + auto surface = SkSurfaces::WrapPixels(result); if (!surface) { return result; } @@ -516,7 +513,8 @@ static void async_callback(void* c, std::unique_ptr; using Renderable = skgpu::Renderable; using TextureInfo = skgpu::graphite::TextureInfo; @@ -602,7 +600,8 @@ DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(ImageAsyncReadPixelsGraphite, DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(SurfaceAsyncReadPixelsGraphite, reporter, - context) { + context, + CtsEnforcement::kNextRelease) { using Surface = sk_sp; auto reader = std::function>([context](const Surface& surface, diff --git a/tests/graphite/RecorderTest.cpp b/tests/graphite/RecorderTest.cpp index 3aa80cd236c4..d884541c3aac 100644 --- a/tests/graphite/RecorderTest.cpp +++ b/tests/graphite/RecorderTest.cpp @@ -15,7 +15,8 @@ using namespace skgpu::graphite; using Mipmapped = skgpu::Mipmapped; // Tests to make sure the managing of back pointers between Recorder and Device all work properly. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecorderDevicePtrTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecorderDevicePtrTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); SkImageInfo info = SkImageInfo::Make({16, 16}, kRGBA_8888_SkColorType, kPremul_SkAlphaType); diff --git a/tests/graphite/RecordingOrderTest.cpp b/tests/graphite/RecordingOrderTest.cpp index e3b699690448..0822a77e4d51 100644 --- a/tests/graphite/RecordingOrderTest.cpp +++ b/tests/graphite/RecordingOrderTest.cpp @@ -122,7 +122,8 @@ bool run_test(skiatest::Reporter* reporter, // This test captures two recordings A and B, plays them back as A then B, and B then A, // and verifies that the result is the same. -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(RecordingOrderTest_Graphite, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(RecordingOrderTest_Graphite, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); (void) run_test(reporter, context, recorder.get()); diff --git a/tests/graphite/RecordingSurfacesTest.cpp b/tests/graphite/RecordingSurfacesTest.cpp index 6339c7118262..50d770d9ada4 100644 --- a/tests/graphite/RecordingSurfacesTest.cpp +++ b/tests/graphite/RecordingSurfacesTest.cpp @@ -93,7 +93,8 @@ void run_test(skiatest::Reporter* reporter, } // Tests that clear does not clear an entire replayed-to surface if recorded onto a smaller surface. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestClear, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestClear, reporter, context, + CtsEnforcement::kNextRelease) { SkISize surfaceSize = SkISize::Make(8, 4); SkISize recordingSize = SkISize::Make(4, 4); SkISize replayOffset = SkISize::Make(0, 0); @@ -107,7 +108,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestClear, reporter, context } // Tests that writePixels is translated correctly when replayed with an offset. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestWritePixels, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestWritePixels, reporter, context, + CtsEnforcement::kNextRelease) { SkBitmap bitmap; bitmap.allocN32Pixels(4, 4, true); SkCanvas bitmapCanvas(bitmap); @@ -128,7 +130,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestWritePixels, reporter, c } // Tests that the result of writePixels is cropped correctly when offscreen. -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestWritePixelsOffscreen, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(RecordingSurfacesTestWritePixelsOffscreen, reporter, context, + CtsEnforcement::kNextRelease) { SkBitmap bitmap; bitmap.allocN32Pixels(4, 4, true); SkCanvas bitmapCanvas(bitmap); diff --git a/tests/graphite/RectTest.cpp b/tests/graphite/RectTest.cpp index c5911a89c90f..696adb3ff866 100644 --- a/tests/graphite/RectTest.cpp +++ b/tests/graphite/RectTest.cpp @@ -12,7 +12,7 @@ namespace skgpu::graphite { #define CHECK(A) REPORTER_ASSERT(reporter, A) -DEF_GRAPHITE_TEST(skgpu_Rect, reporter) { +DEF_GRAPHITE_TEST(skgpu_Rect, reporter, CtsEnforcement::kNextRelease) { using float2 = skvx::float2; using float4 = skvx::float4; diff --git a/tests/graphite/ShapeTest.cpp b/tests/graphite/ShapeTest.cpp index e916d3cb6d77..190c98c74301 100644 --- a/tests/graphite/ShapeTest.cpp +++ b/tests/graphite/ShapeTest.cpp @@ -9,7 +9,7 @@ #include "src/gpu/graphite/geom/Shape.h" -DEF_GRAPHITE_TEST(ShapeTest, reporter) { +DEF_GRAPHITE_TEST(ShapeTest, reporter, CtsEnforcement::kNextRelease) { // TODO: Michael takes this over skgpu::graphite::Shape s; REPORTER_ASSERT(reporter, s.type() == skgpu::graphite::Shape::Type::kEmpty); diff --git a/tests/graphite/TextureProxyTest.cpp b/tests/graphite/TextureProxyTest.cpp index a6c7904df2f9..17615d42e1cd 100644 --- a/tests/graphite/TextureProxyTest.cpp +++ b/tests/graphite/TextureProxyTest.cpp @@ -24,7 +24,8 @@ namespace skgpu::graphite { -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureProxyTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureProxyTest, reporter, context, + CtsEnforcement::kNextRelease) { const Caps* caps = context->priv().caps(); constexpr SkISize kValidSize = SkISize::Make(1, 1); constexpr SkISize kInvalidSize = SkISize::MakeEmpty(); @@ -174,7 +175,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureProxyTest, reporter, context) REPORTER_ASSERT(reporter, instantiateSuccess); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureTooLargeTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureTooLargeTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); const Caps* caps = context->priv().caps(); @@ -194,7 +196,8 @@ DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteTextureTooLargeTest, reporter, contex REPORTER_ASSERT(reporter, recorder->snap()); } -DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteLazyTextureInvalidDimensions, reporter, context) { +DEF_GRAPHITE_TEST_FOR_ALL_CONTEXTS(GraphiteLazyTextureInvalidDimensions, reporter, context, + CtsEnforcement::kNextRelease) { class FulfillContext { public: FulfillContext(BackendTexture backendTexture) : fBackendTexture(backendTexture) {} diff --git a/tests/graphite/TransformTest.cpp b/tests/graphite/TransformTest.cpp index 9f8bf3a46fad..8fbeaef15000 100644 --- a/tests/graphite/TransformTest.cpp +++ b/tests/graphite/TransformTest.cpp @@ -9,7 +9,7 @@ #include "src/gpu/graphite/geom/Transform_graphite.h" -DEF_GRAPHITE_TEST(TransformTest, reporter) { +DEF_GRAPHITE_TEST(TransformTest, reporter, CtsEnforcement::kNextRelease) { // TODO: Michael takes this over skgpu::graphite::Transform t{SkM44()}; REPORTER_ASSERT(reporter, t.type() == skgpu::graphite::Transform::Type::kIdentity); diff --git a/tests/graphite/UniformManagerTest.cpp b/tests/graphite/UniformManagerTest.cpp index 3f460047289b..7b5a10a0e5b3 100644 --- a/tests/graphite/UniformManagerTest.cpp +++ b/tests/graphite/UniformManagerTest.cpp @@ -56,7 +56,7 @@ static size_t element_size(Layout layout, SkSLType type) { return (layout == Layout::kMetal && !SkSLTypeIsFullPrecisionNumericType(type)) ? 2 : 4; } -DEF_GRAPHITE_TEST(UniformManagerCheckSingleUniform, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckSingleUniform, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager can hold all the basic uniform types, in every layout. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -72,7 +72,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckSingleUniform, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckFloatEncoding, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckFloatEncoding, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager encodes float data properly. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -103,7 +103,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckFloatEncoding, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckIntEncoding, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckIntEncoding, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager encodes int data properly. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -133,7 +133,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckIntEncoding, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckScalarVectorPacking, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckScalarVectorPacking, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager can pack scalars and vectors of identical type correctly. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -165,7 +165,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckScalarVectorPacking, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckMatrixPacking, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckMatrixPacking, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager can pack matrices correctly. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -205,7 +205,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckMatrixPacking, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckPaddingScalarVector, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckPaddingScalarVector, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager properly adds padding between pairs of scalar/vector. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -304,7 +304,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckPaddingScalarVector, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckPaddingVectorMatrix, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckPaddingVectorMatrix, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager properly adds padding between vectors and matrices. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -423,7 +423,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckPaddingVectorMatrix, r) { } } -DEF_GRAPHITE_TEST(UniformManagerCheckPaddingMatrixVector, r) { +DEF_GRAPHITE_TEST(UniformManagerCheckPaddingMatrixVector, r, CtsEnforcement::kNextRelease) { // Verify that the uniform manager properly adds padding between matrices and vectors. for (Layout layout : kLayouts) { UniformManager mgr(layout); @@ -556,7 +556,7 @@ DEF_GRAPHITE_TEST(UniformManagerCheckPaddingMatrixVector, r) { } } -DEF_GRAPHITE_TEST(UniformManagerMetalArrayLayout, r) { +DEF_GRAPHITE_TEST(UniformManagerMetalArrayLayout, r, CtsEnforcement::kNextRelease) { UniformManager mgr(Layout::kMetal); // Tests set up a uniform block with a single half (to force alignment) and an array of 3 @@ -628,7 +628,7 @@ DEF_GRAPHITE_TEST(UniformManagerMetalArrayLayout, r) { } } -DEF_GRAPHITE_TEST(UniformManagerStd430ArrayLayout, r) { +DEF_GRAPHITE_TEST(UniformManagerStd431ArrayLayout, r, CtsEnforcement::kNextRelease) { UniformManager mgr(Layout::kStd430); // Tests set up a uniform block with a single half (to force alignment) and an array of 3 @@ -700,7 +700,7 @@ DEF_GRAPHITE_TEST(UniformManagerStd430ArrayLayout, r) { } } -DEF_GRAPHITE_TEST(UniformManagerStd140ArrayLayout, r) { +DEF_GRAPHITE_TEST(UniformManagerStd140ArrayLayout, r, CtsEnforcement::kNextRelease) { UniformManager mgr(Layout::kStd140); // Tests set up a uniform block with a single half (to force alignment) and an array of 3 @@ -780,7 +780,7 @@ DEF_GRAPHITE_TEST(UniformManagerStd140ArrayLayout, r) { // This test validates that the uniform data for matrix types get written out according to the // layout expectations. -DEF_GRAPHITE_TEST(UniformManagerStd140MatrixLayoutContents, r) { +DEF_GRAPHITE_TEST(UniformManagerStd140MatrixLayoutContents, r, CtsEnforcement::kNextRelease) { UniformManager mgr(Layout::kStd140); // float2x2, half2x2 @@ -834,7 +834,7 @@ DEF_GRAPHITE_TEST(UniformManagerStd140MatrixLayoutContents, r) { // This test validates that the uniform data for matrix types get written out according to the // layout expectations. -DEF_GRAPHITE_TEST(UniformManagerStd430MatrixLayoutContents, r) { +DEF_GRAPHITE_TEST(UniformManagerStd430MatrixLayoutContents, r, CtsEnforcement::kNextRelease) { UniformManager mgr(Layout::kStd430); // float2x2, half2x2 diff --git a/tests/graphite/UniformOffsetCalculatorTest.cpp b/tests/graphite/UniformOffsetCalculatorTest.cpp index 3d8a6399f6f2..8132c5c22c78 100644 --- a/tests/graphite/UniformOffsetCalculatorTest.cpp +++ b/tests/graphite/UniformOffsetCalculatorTest.cpp @@ -71,7 +71,7 @@ static AlignmentAndSize calculate_alignment_and_size(Layout layout, stride); \ } while (0) -DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalBasicTypesTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalBasicTypesTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kMetal; // scalars: int, float, short, half (unsigned types are disallowed) @@ -111,7 +111,7 @@ DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalBasicTypesTest, r) { EXPECT(SkSLType::kHalf4x4, /*alignment=*/8, /*size=*/32); } -DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalArrayTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalArrayTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kMetal; constexpr size_t kCount = 3; @@ -152,7 +152,7 @@ DEF_GRAPHITE_TEST(UniformOffsetCalculatorMetalArrayTest, r) { EXPECT_ARRAY(SkSLType::kHalf4x4, /*alignment=*/8, /*stride=*/32, /*size=*/96); } -DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430BasicTypesTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430BasicTypesTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kStd430; // scalars: int, float, short, half (unsigned types are disallowed) @@ -192,7 +192,7 @@ DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430BasicTypesTest, r) { EXPECT(SkSLType::kHalf4x4, /*alignment=*/16, /*size=*/64); } -DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430ArrayTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430ArrayTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kStd430; constexpr size_t kCount = 3; @@ -233,7 +233,7 @@ DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd430ArrayTest, r) { EXPECT_ARRAY(SkSLType::kHalf4x4, /*alignment=*/16, /*stride=*/64, /*size=*/192); } -DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd140BasicTypesTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd140BasicTypesTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kStd140; // scalars: int, float, short, half (unsigned types are disallowed) @@ -273,7 +273,7 @@ DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd140BasicTypesTest, r) { EXPECT(SkSLType::kHalf4x4, /*alignment=*/16, /*size=*/64); } -DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd140ArrayTest, r) { +DEF_GRAPHITE_TEST(UniformOffsetCalculatorStd140ArrayTest, r, CtsEnforcement::kNextRelease) { constexpr Layout kLayout = Layout::kStd140; constexpr uint32_t kCount = 3; diff --git a/tests/graphite/UpdateBackendTextureTest.cpp b/tests/graphite/UpdateBackendTextureTest.cpp index feff19771b79..c83365cf239f 100644 --- a/tests/graphite/UpdateBackendTextureTest.cpp +++ b/tests/graphite/UpdateBackendTextureTest.cpp @@ -160,7 +160,8 @@ void check_levels(skiatest::Reporter* reporter, } // anonymous namespace -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(UpdateImageBackendTextureTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(UpdateImageBackendTextureTest, reporter, context, + CtsEnforcement::kNextRelease) { // TODO: Remove this check once Vulkan supports creating default TexutreInfo from caps and we // implement createBackendTexture. if (context->backend() == BackendApi::kVulkan) { diff --git a/tests/graphite/UploadBufferManagerTest.cpp b/tests/graphite/UploadBufferManagerTest.cpp index 9252bfae6d6b..74391bf9a6d1 100644 --- a/tests/graphite/UploadBufferManagerTest.cpp +++ b/tests/graphite/UploadBufferManagerTest.cpp @@ -16,7 +16,8 @@ namespace skgpu::graphite { -DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(UploadBufferManagerTest, reporter, context) { +DEF_GRAPHITE_TEST_FOR_RENDERING_CONTEXTS(UploadBufferManagerTest, reporter, context, + CtsEnforcement::kNextRelease) { std::unique_ptr recorder = context->makeRecorder(); UploadBufferManager* bufferManager = recorder->priv().uploadBufferManager(); diff --git a/tests/sksl/blend/BlendClear.metal b/tests/sksl/blend/BlendClear.metal index 833a5b313c42..1c02f170fb4e 100644 --- a/tests/sksl/blend/BlendClear.metal +++ b/tests/sksl/blend/BlendClear.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendClear.wgsl b/tests/sksl/blend/BlendClear.wgsl index cd73bde59ab8..b84d3664281e 100644 --- a/tests/sksl/blend/BlendClear.wgsl +++ b/tests/sksl/blend/BlendClear.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendColor.metal b/tests/sksl/blend/BlendColor.metal index 1f505eff72a5..cf3460e3d745 100644 --- a/tests/sksl/blend/BlendColor.metal +++ b/tests/sksl/blend/BlendColor.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendColor.wgsl b/tests/sksl/blend/BlendColor.wgsl index 4a5a6ce01ae1..8adeb717b349 100644 --- a/tests/sksl/blend/BlendColor.wgsl +++ b/tests/sksl/blend/BlendColor.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { - let color = _skParam0; +fn blend_color_saturation_Qhh3(color: vec3) -> f32 { { let _skTemp0 = max(color.x, color.y); let _skTemp1 = max(_skTemp0, color.z); @@ -21,10 +20,7 @@ fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { return _skTemp1 - _skTemp3; } } -fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: vec4) -> vec4 { - let flipSat = _skParam0; - let src = _skParam1; - let dst = _skParam2; +fn blend_hslc_h4h2h4h4(flipSat: vec2, src: vec4, dst: vec4) -> vec4 { { var alpha: f32 = dst.w * src.w; var sda: vec3 = src.xyz * dst.w; @@ -67,14 +63,14 @@ fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: ve return vec4((((_5_result + dst.xyz) - dsa) + src.xyz) - sda, (src.w + dst.w) - alpha); } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp15 = blend_hslc_h4h2h4h4(vec2(0.0), _globalUniforms.src, _globalUniforms.dst); (*_stageOut).sk_FragColor = _skTemp15; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendColorBurn.metal b/tests/sksl/blend/BlendColorBurn.metal index 0570cd11e5a2..1259484878ad 100644 --- a/tests/sksl/blend/BlendColorBurn.metal +++ b/tests/sksl/blend/BlendColorBurn.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendColorBurn.wgsl b/tests/sksl/blend/BlendColorBurn.wgsl index c7006e3b847f..af1bb7cd4800 100644 --- a/tests/sksl/blend/BlendColorBurn.wgsl +++ b/tests/sksl/blend/BlendColorBurn.wgsl @@ -1,6 +1,6 @@ /* -:36:3 warning: code is unreachable +:34:3 warning: code is unreachable return f32(); ^^^^^^ @@ -19,9 +19,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn color_burn_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let s = _skParam0; - let d = _skParam1; +fn color_burn_component_Qhh2h2(s: vec2, d: vec2) -> f32 { { if d.y == d.x { { @@ -43,7 +41,7 @@ fn color_burn_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f3 } return f32(); } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp1 = color_burn_component_Qhh2h2(_globalUniforms.src.xw, _globalUniforms.dst.xw); let _skTemp2 = color_burn_component_Qhh2h2(_globalUniforms.src.yw, _globalUniforms.dst.yw); @@ -51,8 +49,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(_skTemp1, _skTemp2, _skTemp3, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendColorDodge.metal b/tests/sksl/blend/BlendColorDodge.metal index bdc42ce6e9c0..e41697d1baab 100644 --- a/tests/sksl/blend/BlendColorDodge.metal +++ b/tests/sksl/blend/BlendColorDodge.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendColorDodge.wgsl b/tests/sksl/blend/BlendColorDodge.wgsl index 4c8769944ff5..d0cbf9fd65a2 100644 --- a/tests/sksl/blend/BlendColorDodge.wgsl +++ b/tests/sksl/blend/BlendColorDodge.wgsl @@ -1,6 +1,6 @@ /* -:39:3 warning: code is unreachable +:37:3 warning: code is unreachable return f32(); ^^^^^^ @@ -19,9 +19,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn color_dodge_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let s = _skParam0; - let d = _skParam1; +fn color_dodge_component_Qhh2h2(s: vec2, d: vec2) -> f32 { { if d.x == 0.0 { { @@ -46,7 +44,7 @@ fn color_dodge_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f } return f32(); } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp1 = color_dodge_component_Qhh2h2(_globalUniforms.src.xw, _globalUniforms.dst.xw); let _skTemp2 = color_dodge_component_Qhh2h2(_globalUniforms.src.yw, _globalUniforms.dst.yw); @@ -54,8 +52,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(_skTemp1, _skTemp2, _skTemp3, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDarken.metal b/tests/sksl/blend/BlendDarken.metal index a50357e73beb..5321dfc9db9f 100644 --- a/tests/sksl/blend/BlendDarken.metal +++ b/tests/sksl/blend/BlendDarken.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDarken.wgsl b/tests/sksl/blend/BlendDarken.wgsl index 995d7aba5413..5fce19585c1d 100644 --- a/tests/sksl/blend/BlendDarken.wgsl +++ b/tests/sksl/blend/BlendDarken.wgsl @@ -10,7 +10,7 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var _0_a: vec4 = _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; var _1_b: vec3 = (1.0 - _globalUniforms.dst.w) * _globalUniforms.src.xyz + _globalUniforms.dst.xyz; @@ -19,8 +19,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = _0_a; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDifference.metal b/tests/sksl/blend/BlendDifference.metal index f12cc666ac3b..b10b6b6e00e9 100644 --- a/tests/sksl/blend/BlendDifference.metal +++ b/tests/sksl/blend/BlendDifference.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDifference.wgsl b/tests/sksl/blend/BlendDifference.wgsl index f7ef631294bf..baf195eb7e99 100644 --- a/tests/sksl/blend/BlendDifference.wgsl +++ b/tests/sksl/blend/BlendDifference.wgsl @@ -10,14 +10,14 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = min(_globalUniforms.src.xyz * _globalUniforms.dst.w, _globalUniforms.dst.xyz * _globalUniforms.src.w); (*_stageOut).sk_FragColor = vec4((_globalUniforms.src.xyz + _globalUniforms.dst.xyz) - 2.0 * _skTemp0, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDst.metal b/tests/sksl/blend/BlendDst.metal index 95339067d2c8..639d05903858 100644 --- a/tests/sksl/blend/BlendDst.metal +++ b/tests/sksl/blend/BlendDst.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDst.wgsl b/tests/sksl/blend/BlendDst.wgsl index e58b0a3cca73..e3a60f1f5087 100644 --- a/tests/sksl/blend/BlendDst.wgsl +++ b/tests/sksl/blend/BlendDst.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDstAtop.metal b/tests/sksl/blend/BlendDstAtop.metal index b95701c7b4e9..9698adcea46a 100644 --- a/tests/sksl/blend/BlendDstAtop.metal +++ b/tests/sksl/blend/BlendDstAtop.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDstAtop.wgsl b/tests/sksl/blend/BlendDstAtop.wgsl index 78c131486294..bb7320b9dd7e 100644 --- a/tests/sksl/blend/BlendDstAtop.wgsl +++ b/tests/sksl/blend/BlendDstAtop.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.dst.w * _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDstIn.metal b/tests/sksl/blend/BlendDstIn.metal index 5f2fb59ebca1..fe70dc522508 100644 --- a/tests/sksl/blend/BlendDstIn.metal +++ b/tests/sksl/blend/BlendDstIn.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDstIn.wgsl b/tests/sksl/blend/BlendDstIn.wgsl index 2b623ec0c95e..3473070aee75 100644 --- a/tests/sksl/blend/BlendDstIn.wgsl +++ b/tests/sksl/blend/BlendDstIn.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.dst * _globalUniforms.src.w; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDstOut.metal b/tests/sksl/blend/BlendDstOut.metal index 1a83aa6733b7..613ed0ca86e9 100644 --- a/tests/sksl/blend/BlendDstOut.metal +++ b/tests/sksl/blend/BlendDstOut.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDstOut.wgsl b/tests/sksl/blend/BlendDstOut.wgsl index 2ed3b4064fbc..debbe2b7500e 100644 --- a/tests/sksl/blend/BlendDstOut.wgsl +++ b/tests/sksl/blend/BlendDstOut.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendDstOver.metal b/tests/sksl/blend/BlendDstOver.metal index 5bde07828f5b..39d48e27f368 100644 --- a/tests/sksl/blend/BlendDstOver.metal +++ b/tests/sksl/blend/BlendDstOver.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendDstOver.wgsl b/tests/sksl/blend/BlendDstOver.wgsl index dedfe30dbbc4..afcfe0a5aae5 100644 --- a/tests/sksl/blend/BlendDstOver.wgsl +++ b/tests/sksl/blend/BlendDstOver.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = (1.0 - _globalUniforms.dst.w) * _globalUniforms.src + _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendExclusion.metal b/tests/sksl/blend/BlendExclusion.metal index 5a9fbb23f189..8bf9589d96c0 100644 --- a/tests/sksl/blend/BlendExclusion.metal +++ b/tests/sksl/blend/BlendExclusion.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendExclusion.wgsl b/tests/sksl/blend/BlendExclusion.wgsl index 7724419e1fd6..6f929a9a5220 100644 --- a/tests/sksl/blend/BlendExclusion.wgsl +++ b/tests/sksl/blend/BlendExclusion.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4((_globalUniforms.dst.xyz + _globalUniforms.src.xyz) - (2.0 * _globalUniforms.dst.xyz) * _globalUniforms.src.xyz, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendHardLight.metal b/tests/sksl/blend/BlendHardLight.metal index 5ec68d812202..fbb50f106094 100644 --- a/tests/sksl/blend/BlendHardLight.metal +++ b/tests/sksl/blend/BlendHardLight.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendHardLight.wgsl b/tests/sksl/blend/BlendHardLight.wgsl index 2eafc1a0d48b..f78573f61cbd 100644 --- a/tests/sksl/blend/BlendHardLight.wgsl +++ b/tests/sksl/blend/BlendHardLight.wgsl @@ -10,16 +10,12 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn blend_overlay_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let s = _skParam0; - let d = _skParam1; +fn blend_overlay_component_Qhh2h2(s: vec2, d: vec2) -> f32 { { return select(s.y * d.y - (2.0 * (d.y - d.x)) * (s.y - s.x), (2.0 * s.x) * d.x, (2.0 * d.x) <= d.y); } } -fn blend_overlay_h4h4h4(_skParam0: vec4, _skParam1: vec4) -> vec4 { - let src = _skParam0; - let dst = _skParam1; +fn blend_overlay_h4h4h4(src: vec4, dst: vec4) -> vec4 { { let _skTemp0 = blend_overlay_component_Qhh2h2(src.xw, dst.xw); let _skTemp1 = blend_overlay_component_Qhh2h2(src.yw, dst.yw); @@ -29,14 +25,14 @@ fn blend_overlay_h4h4h4(_skParam0: vec4, _skParam1: vec4) -> vec4 return result; } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp3 = blend_overlay_h4h4h4(_globalUniforms.dst, _globalUniforms.src); (*_stageOut).sk_FragColor = _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendHue.metal b/tests/sksl/blend/BlendHue.metal index a68b830452f9..48def06c81b2 100644 --- a/tests/sksl/blend/BlendHue.metal +++ b/tests/sksl/blend/BlendHue.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendHue.wgsl b/tests/sksl/blend/BlendHue.wgsl index 1b467b8980e3..c8074b49e326 100644 --- a/tests/sksl/blend/BlendHue.wgsl +++ b/tests/sksl/blend/BlendHue.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { - let color = _skParam0; +fn blend_color_saturation_Qhh3(color: vec3) -> f32 { { let _skTemp0 = max(color.x, color.y); let _skTemp1 = max(_skTemp0, color.z); @@ -21,10 +20,7 @@ fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { return _skTemp1 - _skTemp3; } } -fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: vec4) -> vec4 { - let flipSat = _skParam0; - let src = _skParam1; - let dst = _skParam2; +fn blend_hslc_h4h2h4h4(flipSat: vec2, src: vec4, dst: vec4) -> vec4 { { var alpha: f32 = dst.w * src.w; var sda: vec3 = src.xyz * dst.w; @@ -67,14 +63,14 @@ fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: ve return vec4((((_5_result + dst.xyz) - dsa) + src.xyz) - sda, (src.w + dst.w) - alpha); } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp15 = blend_hslc_h4h2h4h4(vec2(0.0, 1.0), _globalUniforms.src, _globalUniforms.dst); (*_stageOut).sk_FragColor = _skTemp15; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendLighten.metal b/tests/sksl/blend/BlendLighten.metal index b5bf93f39dfe..fb73e2bdf2b6 100644 --- a/tests/sksl/blend/BlendLighten.metal +++ b/tests/sksl/blend/BlendLighten.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendLighten.wgsl b/tests/sksl/blend/BlendLighten.wgsl index ebc454ac7057..f3946a5bde18 100644 --- a/tests/sksl/blend/BlendLighten.wgsl +++ b/tests/sksl/blend/BlendLighten.wgsl @@ -10,7 +10,7 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var _0_result: vec4 = _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; let _skTemp0 = max(_0_result.xyz, (1.0 - _globalUniforms.dst.w) * _globalUniforms.src.xyz + _globalUniforms.dst.xyz); @@ -18,8 +18,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = _0_result; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendLuminosity.metal b/tests/sksl/blend/BlendLuminosity.metal index 8ac25796e51c..b66981713fa4 100644 --- a/tests/sksl/blend/BlendLuminosity.metal +++ b/tests/sksl/blend/BlendLuminosity.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendLuminosity.wgsl b/tests/sksl/blend/BlendLuminosity.wgsl index 764857ddaf08..f21485425d15 100644 --- a/tests/sksl/blend/BlendLuminosity.wgsl +++ b/tests/sksl/blend/BlendLuminosity.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { - let color = _skParam0; +fn blend_color_saturation_Qhh3(color: vec3) -> f32 { { let _skTemp0 = max(color.x, color.y); let _skTemp1 = max(_skTemp0, color.z); @@ -21,10 +20,7 @@ fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { return _skTemp1 - _skTemp3; } } -fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: vec4) -> vec4 { - let flipSat = _skParam0; - let src = _skParam1; - let dst = _skParam2; +fn blend_hslc_h4h2h4h4(flipSat: vec2, src: vec4, dst: vec4) -> vec4 { { var alpha: f32 = dst.w * src.w; var sda: vec3 = src.xyz * dst.w; @@ -67,14 +63,14 @@ fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: ve return vec4((((_5_result + dst.xyz) - dsa) + src.xyz) - sda, (src.w + dst.w) - alpha); } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp15 = blend_hslc_h4h2h4h4(vec2(1.0, 0.0), _globalUniforms.src, _globalUniforms.dst); (*_stageOut).sk_FragColor = _skTemp15; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendModulate.metal b/tests/sksl/blend/BlendModulate.metal index 195a5ebfaa3e..dd5a59fa58b4 100644 --- a/tests/sksl/blend/BlendModulate.metal +++ b/tests/sksl/blend/BlendModulate.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendModulate.wgsl b/tests/sksl/blend/BlendModulate.wgsl index 673561667c5a..bfd40767df0c 100644 --- a/tests/sksl/blend/BlendModulate.wgsl +++ b/tests/sksl/blend/BlendModulate.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.src * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendMultiply.metal b/tests/sksl/blend/BlendMultiply.metal index 53e50e8af2b8..9341e55005b8 100644 --- a/tests/sksl/blend/BlendMultiply.metal +++ b/tests/sksl/blend/BlendMultiply.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendMultiply.wgsl b/tests/sksl/blend/BlendMultiply.wgsl index 46467affeb9a..57174fddb977 100644 --- a/tests/sksl/blend/BlendMultiply.wgsl +++ b/tests/sksl/blend/BlendMultiply.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(((1.0 - _globalUniforms.src.w) * _globalUniforms.dst.xyz + (1.0 - _globalUniforms.dst.w) * _globalUniforms.src.xyz) + _globalUniforms.src.xyz * _globalUniforms.dst.xyz, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendOverlay.metal b/tests/sksl/blend/BlendOverlay.metal index ae2cf61c7072..7f6995d2e27a 100644 --- a/tests/sksl/blend/BlendOverlay.metal +++ b/tests/sksl/blend/BlendOverlay.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendOverlay.wgsl b/tests/sksl/blend/BlendOverlay.wgsl index 7ed8b3812520..17b93983b094 100644 --- a/tests/sksl/blend/BlendOverlay.wgsl +++ b/tests/sksl/blend/BlendOverlay.wgsl @@ -10,14 +10,12 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn blend_overlay_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let s = _skParam0; - let d = _skParam1; +fn blend_overlay_component_Qhh2h2(s: vec2, d: vec2) -> f32 { { return select(s.y * d.y - (2.0 * (d.y - d.x)) * (s.y - s.x), (2.0 * s.x) * d.x, (2.0 * d.x) <= d.y); } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = blend_overlay_component_Qhh2h2(_globalUniforms.src.xw, _globalUniforms.dst.xw); let _skTemp1 = blend_overlay_component_Qhh2h2(_globalUniforms.src.yw, _globalUniforms.dst.yw); @@ -27,8 +25,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = _0_result; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendPlus.metal b/tests/sksl/blend/BlendPlus.metal index 26c1702b4870..29d6f03de0c4 100644 --- a/tests/sksl/blend/BlendPlus.metal +++ b/tests/sksl/blend/BlendPlus.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendPlus.wgsl b/tests/sksl/blend/BlendPlus.wgsl index df42a18f91cc..f1700abaf07d 100644 --- a/tests/sksl/blend/BlendPlus.wgsl +++ b/tests/sksl/blend/BlendPlus.wgsl @@ -10,14 +10,14 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = min(_globalUniforms.src + _globalUniforms.dst, vec4(1.0)); (*_stageOut).sk_FragColor = _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSaturation.metal b/tests/sksl/blend/BlendSaturation.metal index 5c7ed305706d..156b287cb92a 100644 --- a/tests/sksl/blend/BlendSaturation.metal +++ b/tests/sksl/blend/BlendSaturation.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendSaturation.wgsl b/tests/sksl/blend/BlendSaturation.wgsl index 370aaa78f5a8..2696ae2c1cc2 100644 --- a/tests/sksl/blend/BlendSaturation.wgsl +++ b/tests/sksl/blend/BlendSaturation.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { - let color = _skParam0; +fn blend_color_saturation_Qhh3(color: vec3) -> f32 { { let _skTemp0 = max(color.x, color.y); let _skTemp1 = max(_skTemp0, color.z); @@ -21,10 +20,7 @@ fn blend_color_saturation_Qhh3(_skParam0: vec3) -> f32 { return _skTemp1 - _skTemp3; } } -fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: vec4) -> vec4 { - let flipSat = _skParam0; - let src = _skParam1; - let dst = _skParam2; +fn blend_hslc_h4h2h4h4(flipSat: vec2, src: vec4, dst: vec4) -> vec4 { { var alpha: f32 = dst.w * src.w; var sda: vec3 = src.xyz * dst.w; @@ -67,14 +63,14 @@ fn blend_hslc_h4h2h4h4(_skParam0: vec2, _skParam1: vec4, _skParam2: ve return vec4((((_5_result + dst.xyz) - dsa) + src.xyz) - sda, (src.w + dst.w) - alpha); } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp15 = blend_hslc_h4h2h4h4(vec2(1.0), _globalUniforms.src, _globalUniforms.dst); (*_stageOut).sk_FragColor = _skTemp15; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendScreen.metal b/tests/sksl/blend/BlendScreen.metal index 7345f2d22c31..8bfc0e311b20 100644 --- a/tests/sksl/blend/BlendScreen.metal +++ b/tests/sksl/blend/BlendScreen.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendScreen.wgsl b/tests/sksl/blend/BlendScreen.wgsl index 19bbf4373148..f82adbe16dfe 100644 --- a/tests/sksl/blend/BlendScreen.wgsl +++ b/tests/sksl/blend/BlendScreen.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.src + (1.0 - _globalUniforms.src) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSoftLight.metal b/tests/sksl/blend/BlendSoftLight.metal index aedbfc7bce67..769d2b8b4736 100644 --- a/tests/sksl/blend/BlendSoftLight.metal +++ b/tests/sksl/blend/BlendSoftLight.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const half sk_PrivkGuardedDivideEpsilon = half(false ? 1e-08 : 0.0); struct Uniforms { diff --git a/tests/sksl/blend/BlendSoftLight.wgsl b/tests/sksl/blend/BlendSoftLight.wgsl index 0fcf7541d124..61f17a83fd4b 100644 --- a/tests/sksl/blend/BlendSoftLight.wgsl +++ b/tests/sksl/blend/BlendSoftLight.wgsl @@ -1,6 +1,6 @@ /* -:39:3 warning: code is unreachable +:37:3 warning: code is unreachable return f32(); ^^^^^^ @@ -19,9 +19,7 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; const sk_PrivkGuardedDivideEpsilon: f32 = f32(select(0.0, 1e-08, false)); -fn soft_light_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let s = _skParam0; - let d = _skParam1; +fn soft_light_component_Qhh2h2(s: vec2, d: vec2) -> f32 { { if (2.0 * s.x) <= s.y { { @@ -46,16 +44,16 @@ fn soft_light_component_Qhh2h2(_skParam0: vec2, _skParam1: vec2) -> f3 } return f32(); } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp1 = soft_light_component_Qhh2h2(_globalUniforms.src.xw, _globalUniforms.dst.xw); let _skTemp2 = soft_light_component_Qhh2h2(_globalUniforms.src.yw, _globalUniforms.dst.yw); let _skTemp3 = soft_light_component_Qhh2h2(_globalUniforms.src.zw, _globalUniforms.dst.zw); - (*_stageOut).sk_FragColor = select(vec4(_skTemp1, _skTemp2, _skTemp3, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w), _globalUniforms.src, vec4((_globalUniforms.dst.w == 0.0))); + (*_stageOut).sk_FragColor = select(vec4(_skTemp1, _skTemp2, _skTemp3, _globalUniforms.src.w + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst.w), _globalUniforms.src, vec4(_globalUniforms.dst.w == 0.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSrc.metal b/tests/sksl/blend/BlendSrc.metal index 43f266f3330f..5d006ddc4793 100644 --- a/tests/sksl/blend/BlendSrc.metal +++ b/tests/sksl/blend/BlendSrc.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendSrc.wgsl b/tests/sksl/blend/BlendSrc.wgsl index 3fa237b6be5b..77c51ae399df 100644 --- a/tests/sksl/blend/BlendSrc.wgsl +++ b/tests/sksl/blend/BlendSrc.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.src; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSrcAtop.metal b/tests/sksl/blend/BlendSrcAtop.metal index b95701c7b4e9..9698adcea46a 100644 --- a/tests/sksl/blend/BlendSrcAtop.metal +++ b/tests/sksl/blend/BlendSrcAtop.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendSrcAtop.wgsl b/tests/sksl/blend/BlendSrcAtop.wgsl index 78c131486294..bb7320b9dd7e 100644 --- a/tests/sksl/blend/BlendSrcAtop.wgsl +++ b/tests/sksl/blend/BlendSrcAtop.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.dst.w * _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSrcIn.metal b/tests/sksl/blend/BlendSrcIn.metal index 081fdf3e2d3d..43b864640e91 100644 --- a/tests/sksl/blend/BlendSrcIn.metal +++ b/tests/sksl/blend/BlendSrcIn.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendSrcIn.wgsl b/tests/sksl/blend/BlendSrcIn.wgsl index 183b15f59ab1..f5dd3bb96d3c 100644 --- a/tests/sksl/blend/BlendSrcIn.wgsl +++ b/tests/sksl/blend/BlendSrcIn.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.src * _globalUniforms.dst.w; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSrcOut.metal b/tests/sksl/blend/BlendSrcOut.metal index 1d044e3e4b9a..aaa260fab5ca 100644 --- a/tests/sksl/blend/BlendSrcOut.metal +++ b/tests/sksl/blend/BlendSrcOut.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendSrcOut.wgsl b/tests/sksl/blend/BlendSrcOut.wgsl index f2ab87234ce8..c28224a71032 100644 --- a/tests/sksl/blend/BlendSrcOut.wgsl +++ b/tests/sksl/blend/BlendSrcOut.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = (1.0 - _globalUniforms.dst.w) * _globalUniforms.src; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendSrcOver.metal b/tests/sksl/blend/BlendSrcOver.metal index 4cee02688a0d..13cc98942a92 100644 --- a/tests/sksl/blend/BlendSrcOver.metal +++ b/tests/sksl/blend/BlendSrcOver.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendSrcOver.wgsl b/tests/sksl/blend/BlendSrcOver.wgsl index 590049f92913..aed4f2041b7e 100644 --- a/tests/sksl/blend/BlendSrcOver.wgsl +++ b/tests/sksl/blend/BlendSrcOver.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/blend/BlendXor.metal b/tests/sksl/blend/BlendXor.metal index c0c3c563c522..814d48c958fd 100644 --- a/tests/sksl/blend/BlendXor.metal +++ b/tests/sksl/blend/BlendXor.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 src; diff --git a/tests/sksl/blend/BlendXor.wgsl b/tests/sksl/blend/BlendXor.wgsl index 7eb36ed29057..f3657ad4d2a8 100644 --- a/tests/sksl/blend/BlendXor.wgsl +++ b/tests/sksl/blend/BlendXor.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { dst: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = (1.0 - _globalUniforms.dst.w) * _globalUniforms.src + (1.0 - _globalUniforms.src.w) * _globalUniforms.dst; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/compute/ArrayAdd.metal b/tests/sksl/compute/ArrayAdd.metal index 861c471b4bcf..9208295c488b 100644 --- a/tests/sksl/compute/ArrayAdd.metal +++ b/tests/sksl/compute/ArrayAdd.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/AtomicDeclarations.metal b/tests/sksl/compute/AtomicDeclarations.metal index 29cd7dbf64da..b4f7eb5e2612 100644 --- a/tests/sksl/compute/AtomicDeclarations.metal +++ b/tests/sksl/compute/AtomicDeclarations.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { atomic_uint structMemberAtomic; diff --git a/tests/sksl/compute/AtomicOperations.metal b/tests/sksl/compute/AtomicOperations.metal index c6731d4428f1..343bea9eb13c 100644 --- a/tests/sksl/compute/AtomicOperations.metal +++ b/tests/sksl/compute/AtomicOperations.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_LocalInvocationID; diff --git a/tests/sksl/compute/AtomicOperationsOverArrayAndStruct.metal b/tests/sksl/compute/AtomicOperationsOverArrayAndStruct.metal index 931ffc8d4198..c3d8f74dceda 100644 --- a/tests/sksl/compute/AtomicOperationsOverArrayAndStruct.metal +++ b/tests/sksl/compute/AtomicOperationsOverArrayAndStruct.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct GlobalCounts { atomic_uint firstHalfCount; diff --git a/tests/sksl/compute/Barrier.metal b/tests/sksl/compute/Barrier.metal index c86608430e95..67d85662496a 100644 --- a/tests/sksl/compute/Barrier.metal +++ b/tests/sksl/compute/Barrier.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/compute/BuiltinStageInputs.metal b/tests/sksl/compute/BuiltinStageInputs.metal index 918303327e4f..f9269bbfdb55 100644 --- a/tests/sksl/compute/BuiltinStageInputs.metal +++ b/tests/sksl/compute/BuiltinStageInputs.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/Desaturate.metal b/tests/sksl/compute/Desaturate.metal index e3f24e34c693..4384ccf0bd78 100644 --- a/tests/sksl/compute/Desaturate.metal +++ b/tests/sksl/compute/Desaturate.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/DesaturateFunction.metal b/tests/sksl/compute/DesaturateFunction.metal index f261a46636a0..ce59f5255929 100644 --- a/tests/sksl/compute/DesaturateFunction.metal +++ b/tests/sksl/compute/DesaturateFunction.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/DesaturateReadWrite.asm.comp b/tests/sksl/compute/DesaturateReadWrite.asm.comp index d3ff3852f4a1..eccf74dd7be3 100644 --- a/tests/sksl/compute/DesaturateReadWrite.asm.comp +++ b/tests/sksl/compute/DesaturateReadWrite.asm.comp @@ -5,22 +5,27 @@ OpEntryPoint GLCompute %main "main" %sk_GlobalInvocationID OpExecutionMode %main LocalSize 16 16 1 OpName %sk_GlobalInvocationID "sk_GlobalInvocationID" - OpName %tex "tex" + OpName %texIn "texIn" + OpName %texOut "texOut" OpName %main "main" OpName %_0_color "_0_color" + OpName %gray "gray" OpDecorate %sk_GlobalInvocationID BuiltIn GlobalInvocationId - OpDecorate %tex Binding 0 - OpDecorate %tex DescriptorSet 0 - OpDecorate %21 RelaxedPrecision - OpDecorate %29 RelaxedPrecision + OpDecorate %texIn Binding 0 + OpDecorate %texIn DescriptorSet 0 + OpDecorate %texOut Binding 1 + OpDecorate %texOut DescriptorSet 0 + OpDecorate %22 RelaxedPrecision + OpDecorate %30 RelaxedPrecision OpDecorate %_0_color RelaxedPrecision - OpDecorate %38 RelaxedPrecision - OpDecorate %41 RelaxedPrecision + OpDecorate %39 RelaxedPrecision OpDecorate %42 RelaxedPrecision - OpDecorate %48 RelaxedPrecision + OpDecorate %43 RelaxedPrecision OpDecorate %49 RelaxedPrecision OpDecorate %50 RelaxedPrecision - OpDecorate %52 RelaxedPrecision + OpDecorate %51 RelaxedPrecision + OpDecorate %gray RelaxedPrecision + OpDecorate %54 RelaxedPrecision %uint = OpTypeInt 32 0 %v3uint = OpTypeVector %uint 3 %_ptr_Input_v3uint = OpTypePointer Input %v3uint @@ -28,9 +33,10 @@ %float = OpTypeFloat 32 %9 = OpTypeImage %float 2D 0 0 0 2 Rgba8 %_ptr_UniformConstant_9 = OpTypePointer UniformConstant %9 - %tex = OpVariable %_ptr_UniformConstant_9 UniformConstant + %texIn = OpVariable %_ptr_UniformConstant_9 UniformConstant + %texOut = OpVariable %_ptr_UniformConstant_9 UniformConstant %void = OpTypeVoid - %12 = OpTypeFunction %void + %13 = OpTypeFunction %void %bool = OpTypeBool %false = OpConstantFalse %bool %v2uint = OpTypeVector %uint 2 @@ -40,47 +46,49 @@ %float_0_219999999 = OpConstant %float 0.219999999 %float_0_670000017 = OpConstant %float 0.670000017 %float_0_109999999 = OpConstant %float 0.109999999 - %47 = OpConstantComposite %v3float %float_0_219999999 %float_0_670000017 %float_0_109999999 - %main = OpFunction %void None %12 - %13 = OpLabel + %48 = OpConstantComposite %v3float %float_0_219999999 %float_0_670000017 %float_0_109999999 + %main = OpFunction %void None %13 + %14 = OpLabel %_0_color = OpVariable %_ptr_Function_v4float Function - %16 = OpLoad %v3uint %sk_GlobalInvocationID - %17 = OpCompositeExtract %uint %16 0 - %21 = OpLoad %9 %tex - %20 = OpImageQuerySize %v2uint %21 - %18 = OpCompositeExtract %uint %20 0 - %22 = OpULessThan %bool %17 %18 - OpSelectionMerge %24 None - OpBranchConditional %22 %23 %24 - %23 = OpLabel - %25 = OpLoad %v3uint %sk_GlobalInvocationID - %26 = OpCompositeExtract %uint %25 1 - %29 = OpLoad %9 %tex - %28 = OpImageQuerySize %v2uint %29 - %27 = OpCompositeExtract %uint %28 1 - %30 = OpULessThan %bool %26 %27 - OpBranch %24 + %gray = OpVariable %_ptr_Function_v4float Function + %17 = OpLoad %v3uint %sk_GlobalInvocationID + %18 = OpCompositeExtract %uint %17 0 + %22 = OpLoad %9 %texIn + %21 = OpImageQuerySize %v2uint %22 + %19 = OpCompositeExtract %uint %21 0 + %23 = OpULessThan %bool %18 %19 + OpSelectionMerge %25 None + OpBranchConditional %23 %24 %25 %24 = OpLabel - %31 = OpPhi %bool %false %13 %30 %23 - OpSelectionMerge %33 None - OpBranchConditional %31 %32 %33 - %32 = OpLabel - %38 = OpLoad %9 %tex - %39 = OpLoad %v3uint %sk_GlobalInvocationID - %40 = OpVectorShuffle %v2uint %39 %39 0 1 - %37 = OpImageRead %v4float %38 %40 - OpStore %_0_color %37 - %42 = OpVectorShuffle %v3float %37 %37 0 1 2 - %41 = OpDot %float %42 %47 - %48 = OpCompositeConstruct %v3float %41 %41 %41 - %49 = OpLoad %v4float %_0_color - %50 = OpVectorShuffle %v4float %49 %48 4 5 6 3 - OpStore %_0_color %50 - %52 = OpLoad %9 %tex - %53 = OpLoad %v3uint %sk_GlobalInvocationID - %54 = OpVectorShuffle %v2uint %53 %53 0 1 - OpImageWrite %52 %54 %50 - OpBranch %33 + %26 = OpLoad %v3uint %sk_GlobalInvocationID + %27 = OpCompositeExtract %uint %26 1 + %30 = OpLoad %9 %texIn + %29 = OpImageQuerySize %v2uint %30 + %28 = OpCompositeExtract %uint %29 1 + %31 = OpULessThan %bool %27 %28 + OpBranch %25 + %25 = OpLabel + %32 = OpPhi %bool %false %14 %31 %24 + OpSelectionMerge %34 None + OpBranchConditional %32 %33 %34 %33 = OpLabel + %39 = OpLoad %9 %texIn + %40 = OpLoad %v3uint %sk_GlobalInvocationID + %41 = OpVectorShuffle %v2uint %40 %40 0 1 + %38 = OpImageRead %v4float %39 %41 + OpStore %_0_color %38 + %43 = OpVectorShuffle %v3float %38 %38 0 1 2 + %42 = OpDot %float %43 %48 + %49 = OpCompositeConstruct %v3float %42 %42 %42 + %50 = OpLoad %v4float %_0_color + %51 = OpVectorShuffle %v4float %50 %49 4 5 6 3 + OpStore %_0_color %51 + OpStore %gray %51 + %54 = OpLoad %9 %texOut + %55 = OpLoad %v3uint %sk_GlobalInvocationID + %56 = OpVectorShuffle %v2uint %55 %55 0 1 + OpImageWrite %54 %56 %51 + OpBranch %34 + %34 = OpLabel OpReturn OpFunctionEnd diff --git a/tests/sksl/compute/DesaturateReadWrite.metal b/tests/sksl/compute/DesaturateReadWrite.metal index 5d4821880c8f..f75123df08e7 100644 --- a/tests/sksl/compute/DesaturateReadWrite.metal +++ b/tests/sksl/compute/DesaturateReadWrite.metal @@ -1,20 +1,25 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; }; struct Globals { - texture2d tex; + texture2d texIn; + texture2d texOut; }; -kernel void computeMain(uint3 sk_GlobalInvocationID [[thread_position_in_grid]], texture2d tex [[texture(0)]]) { - Globals _globals{tex}; +kernel void computeMain(uint3 sk_GlobalInvocationID [[thread_position_in_grid]], texture2d texIn [[texture(0)]], texture2d texOut [[texture(1)]]) { + Globals _globals{texIn, texOut}; (void)_globals; Inputs _in = { sk_GlobalInvocationID }; - if (_in.sk_GlobalInvocationID.x < _globals.tex.get_width() && _in.sk_GlobalInvocationID.y < _globals.tex.get_height()) { - half4 _0_color = _globals.tex.read(_in.sk_GlobalInvocationID.xy); + if (_in.sk_GlobalInvocationID.x < _globals.texIn.get_width() && _in.sk_GlobalInvocationID.y < _globals.texIn.get_height()) { + half4 _0_color = _globals.texIn.read(_in.sk_GlobalInvocationID.xy); _0_color.xyz = half3(dot(_0_color.xyz, half3(0.22h, 0.67h, 0.11h))); - _globals.tex.write(_0_color, _in.sk_GlobalInvocationID.xy); + half4 gray = _0_color; + _globals.texOut.write(gray, _in.sk_GlobalInvocationID.xy); } return; } diff --git a/tests/sksl/compute/MatrixMultiply.metal b/tests/sksl/compute/MatrixMultiply.metal index 421a147221b8..f7ccb138d03c 100644 --- a/tests/sksl/compute/MatrixMultiply.metal +++ b/tests/sksl/compute/MatrixMultiply.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/Raytrace.metal b/tests/sksl/compute/Raytrace.metal index 95923b108d87..0218f2da5fc3 100644 --- a/tests/sksl/compute/Raytrace.metal +++ b/tests/sksl/compute/Raytrace.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/Uniforms.metal b/tests/sksl/compute/Uniforms.metal index fe80bde33757..a0257be24d47 100644 --- a/tests/sksl/compute/Uniforms.metal +++ b/tests/sksl/compute/Uniforms.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/compute/Workgroup.metal b/tests/sksl/compute/Workgroup.metal index 3e8818957b9a..2039624bc701 100644 --- a/tests/sksl/compute/Workgroup.metal +++ b/tests/sksl/compute/Workgroup.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { uint3 sk_GlobalInvocationID; diff --git a/tests/sksl/errors/CommasWithArrays.glsl b/tests/sksl/errors/CommasWithArrays.glsl new file mode 100644 index 000000000000..d6d6f6a11216 --- /dev/null +++ b/tests/sksl/errors/CommasWithArrays.glsl @@ -0,0 +1,21 @@ +### Compilation failed: + +error: 9: operator ',' can not operate on arrays (or structs containing arrays) + myStruct, 123; + ^^^^^^^^ +error: 10: operator ',' can not operate on arrays (or structs containing arrays) + 123, myStruct; + ^^^^^^^^ +error: 11: operator ',' can not operate on arrays (or structs containing arrays) + myArray, 123; + ^^^^^^^ +error: 12: operator ',' can not operate on arrays (or structs containing arrays) + 123, myArray; + ^^^^^^^ +error: 13: operator ',' can not operate on arrays (or structs containing arrays) + myArray, myStruct; + ^^^^^^^ +error: 14: operator ',' can not operate on arrays (or structs containing arrays) + myStruct, myArray; + ^^^^^^^^ +6 errors diff --git a/tests/sksl/errors/InvalidBackendBindingFlagsMetal.glsl b/tests/sksl/errors/InvalidBackendBindingFlagsMetal.glsl index 734d78f2e0c6..a7734caf3cf6 100644 --- a/tests/sksl/errors/InvalidBackendBindingFlagsMetal.glsl +++ b/tests/sksl/errors/InvalidBackendBindingFlagsMetal.glsl @@ -1,18 +1,21 @@ ### Compilation failed: -error: 13: layout qualifier 'sampler' is not permitted here -layout(metal, sampler=0) uniform texture2D texture3; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 14: 'binding' modifier cannot coexist with 'texture'/'sampler' -layout(metal, binding=0, texture=0, sampler=0) uniform sampler2D sampler3; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 15: layout qualifier 'texture' is not permitted here -layout(metal, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 14: layout qualifier 'sampler' is not permitted here +layout(metal, sampler=0) readonly texture2D rtexture3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 15: layout qualifier 'sampler' is not permitted here -layout(metal, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 16: layout qualifier 'set' is not permitted here -layout(metal, set=0, binding=0) uniform ubo3 { float d; }; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -5 errors +layout(metal, sampler=0) writeonly texture2D wtexture3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 16: 'binding' modifier cannot coexist with 'texture'/'sampler' +layout(metal, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 17: layout qualifier 'texture' is not permitted here +layout(metal, texture=0, sampler=0) ubo2 { float c; }; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 17: layout qualifier 'sampler' is not permitted here +layout(metal, texture=0, sampler=0) ubo2 { float c; }; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 18: layout qualifier 'set' is not permitted here +layout(metal, set=0, binding=0) ubo3 { float d; }; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 errors diff --git a/tests/sksl/errors/InvalidBackendBindingFlagsSPIRV.glsl b/tests/sksl/errors/InvalidBackendBindingFlagsSPIRV.glsl index 9cd138e42d05..5078d27f5601 100644 --- a/tests/sksl/errors/InvalidBackendBindingFlagsSPIRV.glsl +++ b/tests/sksl/errors/InvalidBackendBindingFlagsSPIRV.glsl @@ -1,12 +1,15 @@ ### Compilation failed: -error: 8: layout qualifier 'texture' is not permitted here -layout(spirv, texture=0) uniform texture2D texture2; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 9: layout qualifier 'texture' is not permitted here -layout(spirv, texture=0, sampler=0) uniform sampler2D sampler2; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 9: layout qualifier 'sampler' is not permitted here -layout(spirv, texture=0, sampler=0) uniform sampler2D sampler2; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 errors +layout(vulkan, texture=0) readonly texture2D rtexture2; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 10: layout qualifier 'texture' is not permitted here +layout(vulkan, texture=0) writeonly texture2D wtexture2; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 11: layout qualifier 'texture' is not permitted here +layout(vulkan, texture=0, sampler=0) sampler2D sampler2; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 11: layout qualifier 'sampler' is not permitted here +layout(vulkan, texture=0, sampler=0) sampler2D sampler2; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 errors diff --git a/tests/sksl/errors/InvalidBackendBindingFlagsWGSL.glsl b/tests/sksl/errors/InvalidBackendBindingFlagsWGSL.glsl index 0da4853bfb8a..8c760e99ad31 100644 --- a/tests/sksl/errors/InvalidBackendBindingFlagsWGSL.glsl +++ b/tests/sksl/errors/InvalidBackendBindingFlagsWGSL.glsl @@ -1,15 +1,18 @@ ### Compilation failed: -error: 13: layout qualifier 'sampler' is not permitted here -layout(wgsl, set=0, sampler=0) uniform texture2D texture3; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 14: 'binding' modifier cannot coexist with 'texture'/'sampler' -layout(wgsl, set=0, binding=0, texture=0, sampler=0) uniform sampler2D sampler3; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 15: layout qualifier 'texture' is not permitted here -layout(wgsl, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 15: layout qualifier 'sampler' is not permitted here -layout(wgsl, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 errors +layout(webgpu, set=0, sampler=0) readonly texture2D rtexture3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 16: layout qualifier 'sampler' is not permitted here +layout(webgpu, set=0, sampler=0) writeonly texture2D wtexture3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 17: 'binding' modifier cannot coexist with 'texture'/'sampler' +layout(webgpu, set=0, binding=0, texture=0, sampler=0) sampler2D sampler3; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 18: layout qualifier 'texture' is not permitted here +layout(webgpu, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 18: layout qualifier 'sampler' is not permitted here +layout(webgpu, set=0, texture=0, sampler=0) uniform ubo2 { float c; }; // invalid +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 errors diff --git a/tests/sksl/errors/InvalidWorkgroupCompute.glsl b/tests/sksl/errors/InvalidWorkgroupCompute.glsl index cc64c39675b9..f5249af9bd31 100644 --- a/tests/sksl/errors/InvalidWorkgroupCompute.glsl +++ b/tests/sksl/errors/InvalidWorkgroupCompute.glsl @@ -4,15 +4,18 @@ error: 8: modifier 'workgroup' is not permitted on an interface block field workgroup float bar; ^^^^^^^^^^^^^^^^^^^^ error: 11: 'workgroup' is not permitted here -workgroup texture2D tex; -^^^^^^^^^ +workgroup readonly texture2D rtex; +^^^^^^^^^^^^^^^^^^ error: 13: 'workgroup' is not permitted here +workgroup writeonly texture2D wtex; +^^^^^^^^^^^^^^^^^^^ +error: 15: 'workgroup' is not permitted here workgroup void a() {} ^^^^^^^^^ -error: 15: 'workgroup' is not permitted here +error: 17: 'workgroup' is not permitted here void b(workgroup int b) {} ^^^^^^^^^ -error: 18: expected expression, but found 'workgroup' +error: 20: expected expression, but found 'workgroup' workgroup bool x; ^^^^^^^^^ -5 errors +6 errors diff --git a/tests/sksl/errors/LayoutInFunctions.glsl b/tests/sksl/errors/LayoutInFunctions.glsl index 5a2dd4e6c6da..907272258695 100644 --- a/tests/sksl/errors/LayoutInFunctions.glsl +++ b/tests/sksl/errors/LayoutInFunctions.glsl @@ -3,6 +3,9 @@ error: 1: only one backend qualifier can be used layout ( ^^^^^^^^... +error: 1: only one pixel format qualifier can be used +layout ( +^^^^^^^^... error: 1: layout qualifier 'origin_upper_left' is not permitted here layout ( ^^^^^^^^... @@ -36,58 +39,85 @@ layout ( error: 1: layout qualifier 'input_attachment_index' is not permitted here layout ( ^^^^^^^^... -error: 1: layout qualifier 'spirv' is not permitted here +error: 1: layout qualifier 'vulkan' is not permitted here layout ( ^^^^^^^^... error: 1: layout qualifier 'metal' is not permitted here layout ( ^^^^^^^^... -error: 1: layout qualifier 'wgsl' is not permitted here +error: 1: layout qualifier 'webgpu' is not permitted here +layout ( +^^^^^^^^... +error: 1: layout qualifier 'direct3d' is not permitted here +layout ( +^^^^^^^^... +error: 1: layout qualifier 'rgba8' is not permitted here +layout ( +^^^^^^^^... +error: 1: layout qualifier 'rgba32f' is not permitted here +layout ( +^^^^^^^^... +error: 1: layout qualifier 'r32f' is not permitted here +layout ( +^^^^^^^^... +error: 23: only one backend qualifier can be used +layout ( +^^^^^^^^... +error: 23: only one pixel format qualifier can be used +layout ( +^^^^^^^^... +error: 23: layout qualifier 'origin_upper_left' is not permitted here +layout ( +^^^^^^^^... +error: 23: layout qualifier 'push_constant' is not permitted here +layout ( +^^^^^^^^... +error: 23: layout qualifier 'blend_support_all_equations' is not permitted here layout ( ^^^^^^^^... -error: 19: only one backend qualifier can be used +error: 23: layout qualifier 'color' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'origin_upper_left' is not permitted here +error: 23: layout qualifier 'location' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'push_constant' is not permitted here +error: 23: layout qualifier 'offset' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'blend_support_all_equations' is not permitted here +error: 23: layout qualifier 'binding' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'color' is not permitted here +error: 23: layout qualifier 'index' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'location' is not permitted here +error: 23: layout qualifier 'set' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'offset' is not permitted here +error: 23: layout qualifier 'builtin' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'binding' is not permitted here +error: 23: layout qualifier 'input_attachment_index' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'index' is not permitted here +error: 23: layout qualifier 'vulkan' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'set' is not permitted here +error: 23: layout qualifier 'metal' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'builtin' is not permitted here +error: 23: layout qualifier 'webgpu' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'input_attachment_index' is not permitted here +error: 23: layout qualifier 'direct3d' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'spirv' is not permitted here +error: 23: layout qualifier 'rgba8' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'metal' is not permitted here +error: 23: layout qualifier 'rgba32f' is not permitted here layout ( ^^^^^^^^... -error: 19: layout qualifier 'wgsl' is not permitted here +error: 23: layout qualifier 'r32f' is not permitted here layout ( ^^^^^^^^... -30 errors +40 errors diff --git a/tests/sksl/errors/LayoutRepeatedQualifiers.glsl b/tests/sksl/errors/LayoutRepeatedQualifiers.glsl index 4e3f04b5e832..05f69368d871 100644 --- a/tests/sksl/errors/LayoutRepeatedQualifiers.glsl +++ b/tests/sksl/errors/LayoutRepeatedQualifiers.glsl @@ -1,46 +1,58 @@ ### Compilation failed: -error: 17: layout qualifier 'origin_upper_left' appears more than once +error: 21: layout qualifier 'origin_upper_left' appears more than once origin_upper_left, ^^^^^^^^^^^^^^^^^ -error: 18: layout qualifier 'push_constant' appears more than once +error: 22: layout qualifier 'push_constant' appears more than once push_constant, ^^^^^^^^^^^^^ -error: 19: layout qualifier 'blend_support_all_equations' appears more than once +error: 23: layout qualifier 'blend_support_all_equations' appears more than once blend_support_all_equations, ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 20: layout qualifier 'color' appears more than once +error: 24: layout qualifier 'color' appears more than once color, ^^^^^ -error: 21: layout qualifier 'location' appears more than once +error: 25: layout qualifier 'location' appears more than once location = 2, ^^^^^^^^ -error: 22: layout qualifier 'offset' appears more than once +error: 26: layout qualifier 'offset' appears more than once offset = 2, ^^^^^^ -error: 23: layout qualifier 'binding' appears more than once +error: 27: layout qualifier 'binding' appears more than once binding = 2, ^^^^^^^ -error: 24: layout qualifier 'index' appears more than once +error: 28: layout qualifier 'index' appears more than once index = 2, ^^^^^ -error: 25: layout qualifier 'set' appears more than once +error: 29: layout qualifier 'set' appears more than once set = 2, ^^^ -error: 26: layout qualifier 'builtin' appears more than once +error: 30: layout qualifier 'builtin' appears more than once builtin = 2, ^^^^^^^ -error: 27: layout qualifier 'input_attachment_index' appears more than once +error: 31: layout qualifier 'input_attachment_index' appears more than once input_attachment_index = 2, ^^^^^^^^^^^^^^^^^^^^^^ -error: 28: layout qualifier 'spirv' appears more than once - spirv, - ^^^^^ -error: 29: layout qualifier 'metal' appears more than once +error: 32: layout qualifier 'vulkan' appears more than once + vulkan, + ^^^^^^ +error: 33: layout qualifier 'metal' appears more than once metal, ^^^^^ -error: 30: layout qualifier 'wgsl' appears more than once - wgsl +error: 34: layout qualifier 'webgpu' appears more than once + webgpu, + ^^^^^^ +error: 35: layout qualifier 'direct3d' appears more than once + direct3d, + ^^^^^^^^ +error: 36: layout qualifier 'rgba8' appears more than once + rgba8, + ^^^^^ +error: 37: layout qualifier 'rgba32f' appears more than once + rgba32f, + ^^^^^^^ +error: 38: layout qualifier 'r32f' appears more than once + r32f ^^^^ error: 1: 'layout(color)' is only permitted in runtime effects layout ( @@ -54,10 +66,13 @@ layout ( error: 1: only one backend qualifier can be used layout ( ^^^^^^^^... +error: 1: only one pixel format qualifier can be used +layout ( +^^^^^^^^... error: 1: layout qualifier 'push_constant' is not permitted here layout ( ^^^^^^^^... error: 1: layout qualifier 'set' is not permitted here layout ( ^^^^^^^^... -20 errors +25 errors diff --git a/tests/sksl/errors/MultipleBackendFlags.glsl b/tests/sksl/errors/MultipleBackendFlags.glsl index 511ef889a6c3..a2da8807269c 100644 --- a/tests/sksl/errors/MultipleBackendFlags.glsl +++ b/tests/sksl/errors/MultipleBackendFlags.glsl @@ -1,12 +1,12 @@ ### Compilation failed: error: 1: only one backend qualifier can be used -layout(metal, spirv, wgsl, binding = 0) uniform ubo { float f; }; // multiple backends -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(metal, vulkan, webgpu, direct3d, binding = 0) uniform ubo { float f; }; // multiple backends +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: layout qualifier 'texture' is not permitted here -layout(texture=0, sampler=0) uniform sampler2D s; // invalid (requires backend) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(texture=0, sampler=0) sampler2D s; // missing backend +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: layout qualifier 'sampler' is not permitted here -layout(texture=0, sampler=0) uniform sampler2D s; // invalid (requires backend) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(texture=0, sampler=0) sampler2D s; // missing backend +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3 errors diff --git a/tests/sksl/errors/OpaqueTypeInStruct.glsl b/tests/sksl/errors/OpaqueTypeInStruct.glsl index cce6bcb77e88..e8cbaba8152e 100644 --- a/tests/sksl/errors/OpaqueTypeInStruct.glsl +++ b/tests/sksl/errors/OpaqueTypeInStruct.glsl @@ -3,4 +3,10 @@ error: 1: opaque type 'sampler' is not permitted in a struct struct Bad { sampler x; }; ^^^^^^^^^ -1 error +error: 1: variables of type 'sampler' may not be uniform +struct Bad { sampler x; }; + ^^^^^^^^^ +error: 2: caused by: +uniform Bad b; +^^^^^^^^^^^^^ +3 errors diff --git a/tests/sksl/errors/PixelFormatMismatch.glsl b/tests/sksl/errors/PixelFormatMismatch.glsl new file mode 100644 index 000000000000..dca5aca9fe04 --- /dev/null +++ b/tests/sksl/errors/PixelFormatMismatch.glsl @@ -0,0 +1,21 @@ +### Compilation failed: + +error: 13: expected argument of type 'layout (rgba32f) writeonlyTexture2D' + takes_rgba32f(r32fTex); + ^^^^^^^ +error: 14: expected argument of type 'layout (rgba32f) writeonlyTexture2D' + takes_rgba32f(rgba8Tex); + ^^^^^^^^ +error: 16: expected argument of type 'layout (r32f) writeonlyTexture2D' + takes_r32f(rgba32fTex); + ^^^^^^^^^^ +error: 18: expected argument of type 'layout (r32f) writeonlyTexture2D' + takes_r32f(rgba8Tex); + ^^^^^^^^ +error: 20: expected argument of type 'layout (rgba8) writeonlyTexture2D' + takes_rgba8(rgba32fTex); + ^^^^^^^^^^ +error: 21: expected argument of type 'layout (rgba8) writeonlyTexture2D' + takes_rgba8(r32fTex); + ^^^^^^^ +6 errors diff --git a/tests/sksl/errors/PixelFormatMissing.glsl b/tests/sksl/errors/PixelFormatMissing.glsl new file mode 100644 index 000000000000..c37e0e57d2df --- /dev/null +++ b/tests/sksl/errors/PixelFormatMissing.glsl @@ -0,0 +1,9 @@ +### Compilation failed: + +error: 5: storage texture parameters must specify a pixel format layout-qualifier +void takes_any_pixel_format(readonly texture2D tex) {} + ^^^^^^^^^^^^^^^^^^^^^^^ +error: 6: storage texture parameters must specify a pixel format layout-qualifier +void takes_any_pixel_format(writeonly texture2D tex) {} + ^^^^^^^^^^^^^^^^^^^^^^^ +2 errors diff --git a/tests/sksl/errors/PixelFormatOverloads.glsl b/tests/sksl/errors/PixelFormatOverloads.glsl new file mode 100644 index 000000000000..9dd429d8e989 --- /dev/null +++ b/tests/sksl/errors/PixelFormatOverloads.glsl @@ -0,0 +1,9 @@ +### Compilation failed: + +error: 4: modifiers on parameter 1 differ between declaration and definition +void overloaded_function(layout(r32f) writeonly texture2D tex) {} + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 5: modifiers on parameter 1 differ between declaration and definition +void overloaded_function(layout(rgba8) writeonly texture2D tex) {} + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 errors diff --git a/tests/sksl/errors/ReadonlyWriteonly.glsl b/tests/sksl/errors/ReadonlyWriteonly.glsl index 80c6d251f0ea..c54d9f627514 100644 --- a/tests/sksl/errors/ReadonlyWriteonly.glsl +++ b/tests/sksl/errors/ReadonlyWriteonly.glsl @@ -1,33 +1,21 @@ ### Compilation failed: -error: 11: expected 'texture2D', but found 'readonlyTexture2D' - needs_all_access(src); // BAD - ^^^ -error: 12: expected 'texture2D', but found 'writeonlyTexture2D' - needs_all_access(dest); // BAD - ^^^^ -error: 15: no match for textureRead(writeonlyTexture2D, uint2) +error: 16: no match for textureRead(writeonlyTexture2D, uint2) textureRead(dest, sk_GlobalInvocationID.xy); // BAD ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 16: no match for textureWrite(readonlyTexture2D, uint2, half4) +error: 17: no match for textureWrite(readonlyTexture2D, uint2, half4) textureWrite(src, sk_GlobalInvocationID.xy, half4(1)); // BAD ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 19: no match for overload(readonlyTexture2D, int) +error: 20: no match for overload(readonlyTexture2D, int) overload(src, 1); // BAD: overload(readonly texture2D t, int) missing ^^^^^^^^^^^^^^^^ -error: 20: no match for overload(writeonlyTexture2D) +error: 21: no match for overload(writeonlyTexture2D) overload(dest); // BAD: overload(writeonly texture2D t) missing ^^^^^^^^^^^^^^ -error: 32: expected 'texture2D', but found 'readonlyTexture2D' - needs_all_access(t); // BAD - ^ -error: 35: no match for textureWrite(readonlyTexture2D, uint2, half4) +error: 37: no match for textureWrite(readonlyTexture2D, uint2, half4) textureWrite(t, sk_GlobalInvocationID.xy, half4(1)); // BAD ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 39: expected 'texture2D', but found 'writeonlyTexture2D' - needs_all_access(t); // BAD - ^ -error: 41: no match for textureRead(writeonlyTexture2D, uint2) +error: 43: no match for textureRead(writeonlyTexture2D, uint2) textureRead(t, sk_GlobalInvocationID.xy); // BAD ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -10 errors +6 errors diff --git a/tests/sksl/errors/SamplerExternalOES.glsl b/tests/sksl/errors/SamplerExternalOES.glsl new file mode 100644 index 000000000000..522c373cc4b8 --- /dev/null +++ b/tests/sksl/errors/SamplerExternalOES.glsl @@ -0,0 +1,6 @@ +### Compilation failed: + +error: 3: external texture support is not enabled +samplerExternalOES e; +^^^^^^^^^^^^^^^^^^^^ +1 error diff --git a/tests/sksl/folding/ArrayFolding.wgsl b/tests/sksl/folding/ArrayFolding.wgsl new file mode 100644 index 000000000000..22edb454f5c7 --- /dev/null +++ b/tests/sksl/folding/ArrayFolding.wgsl @@ -0,0 +1,41 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +var globalValue: i32 = 0; +fn side_effecting_ii(value: i32) -> i32 { + { + globalValue = globalValue + i32(1); + return value; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _7_two: i32 = 2; + const _8_flatten0: i32 = 1; + var _9_flatten1: i32 = _7_two; + const _10_flatten2: i32 = 3; + _7_two = _7_two - i32(1); + let _skTemp0 = side_effecting_ii(2); + var _11_noFlatten0: i32 = array(_7_two, _skTemp0, 3)[0]; + let _skTemp1 = side_effecting_ii(1); + var _12_noFlatten1: i32 = array(_skTemp1, 2, 3)[1]; + _7_two = _7_two + i32(1); + var _13_noFlatten2: i32 = array(1, _7_two, 3)[2]; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((_8_flatten0 == _11_noFlatten0) && (_9_flatten1 == _12_noFlatten1)) && (_10_flatten2 == _13_noFlatten2))); + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/folding/ArraySizeFolding.wgsl b/tests/sksl/folding/ArraySizeFolding.wgsl new file mode 100644 index 000000000000..818850886c65 --- /dev/null +++ b/tests/sksl/folding/ArraySizeFolding.wgsl @@ -0,0 +1,85 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn check_array_is_int_2_bi(x: array) -> bool { + { + return true; + } +} +fn check_array_is_float_3_bf(x: array) -> bool { + { + return true; + } +} +fn test_param_bff(a: array, b: array) -> bool { + { + var _skTemp0: bool; + if true { + let _skTemp1 = check_array_is_float_3_bf(b); + _skTemp0 = _skTemp1; + } else { + _skTemp0 = false; + } + return _skTemp0; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var f: array; + var g: array; + var _3_b: array; + var _4_c: array; + var _5_d: array; + var _6_e: array; + var _7_f: array; + var _skTemp2: vec4; + var _skTemp3: bool; + var _skTemp4: bool; + var _skTemp5: bool; + var _skTemp6: bool; + var _skTemp7: bool; + let _skTemp8 = check_array_is_int_2_bi(_3_b); + if _skTemp8 { + let _skTemp9 = check_array_is_int_2_bi(_4_c); + _skTemp7 = _skTemp9; + } else { + _skTemp7 = false; + } + if _skTemp7 { + let _skTemp10 = check_array_is_int_2_bi(_5_d); + _skTemp6 = _skTemp10; + } else { + _skTemp6 = false; + } + if _skTemp6 { + let _skTemp11 = check_array_is_int_2_bi(_6_e); + _skTemp5 = _skTemp11; + } else { + _skTemp5 = false; + } + if _skTemp5 { + let _skTemp12 = check_array_is_int_2_bi(_7_f); + _skTemp4 = _skTemp12; + } else { + _skTemp4 = false; + } + if _skTemp4 { + let _skTemp13 = test_param_bff(f, g); + _skTemp3 = _skTemp13; + } else { + _skTemp3 = false; + } + if _skTemp3 { + _skTemp2 = _globalUniforms.colorGreen; + } else { + _skTemp2 = _globalUniforms.colorRed; + } + return _skTemp2; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/AssignmentOps.wgsl b/tests/sksl/folding/AssignmentOps.wgsl new file mode 100644 index 000000000000..5e425c94e0cd --- /dev/null +++ b/tests/sksl/folding/AssignmentOps.wgsl @@ -0,0 +1,40 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var ok: bool = true; + var a: i32 = 1; + a = a + a; + a = a + a; + a = a + a; + a = a + a; + a = a + a; + ok = ok && (a == 32); + var b: i32 = 10; + b = b - 2; + b = b - 2; + b = b - 1; + b = b - 3; + ok = ok && (b == 2); + var c: i32 = 2; + c = c * c; + c = c * c; + c = c * 4; + c = c * 2; + ok = ok && (c == 128); + var d: i32 = 256; + d = d / 2; + d = d / 2; + d = d / 4; + d = d / 4; + ok = ok && (d == 4); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/BoolFolding.wgsl b/tests/sksl/folding/BoolFolding.wgsl new file mode 100644 index 000000000000..47da4c7cc973 --- /dev/null +++ b/tests/sksl/folding/BoolFolding.wgsl @@ -0,0 +1,14 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(true)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/CastFolding.wgsl b/tests/sksl/folding/CastFolding.wgsl new file mode 100644 index 000000000000..2ec8e4a09977 --- /dev/null +++ b/tests/sksl/folding/CastFolding.wgsl @@ -0,0 +1,15 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + const _4_ok: bool = true; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_4_ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/FloatFolding.wgsl b/tests/sksl/folding/FloatFolding.wgsl new file mode 100644 index 000000000000..a1b406b0cbbc --- /dev/null +++ b/tests/sksl/folding/FloatFolding.wgsl @@ -0,0 +1,81 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_unknown: f32 = f32(_globalUniforms.unknownInput); + var _1_ok: bool = true; + var _2_x: f32 = 34.0; + _1_ok = _1_ok && (_2_x == 34.0); + _2_x = 30.0; + _1_ok = _1_ok && (_2_x == 30.0); + _2_x = 64.0; + _1_ok = _1_ok && (_2_x == 64.0); + _2_x = 16.0; + _1_ok = _1_ok && (_2_x == 16.0); + _2_x = 19.0; + _1_ok = _1_ok && (_2_x == 19.0); + _2_x = 1.0; + _1_ok = _1_ok && (_2_x == 1.0); + _2_x = -2.0; + _1_ok = _1_ok && (_2_x == -2.0); + _2_x = 3.0; + _1_ok = _1_ok && (_2_x == 3.0); + _2_x = -4.0; + _1_ok = _1_ok && (_2_x == -4.0); + _2_x = 5.0; + _1_ok = _1_ok && (_2_x == 5.0); + _2_x = -6.0; + _1_ok = _1_ok && (_2_x == -6.0); + _2_x = 7.0; + _1_ok = _1_ok && (_2_x == 7.0); + _2_x = -8.0; + _1_ok = _1_ok && (_2_x == -8.0); + _2_x = 9.0; + _1_ok = _1_ok && (_2_x == 9.0); + _2_x = -10.0; + _1_ok = _1_ok && (_2_x == -10.0); + _2_x = 11.0; + _1_ok = _1_ok && (_2_x == 11.0); + _2_x = -12.0; + _1_ok = _1_ok && (_2_x == -12.0); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0.0; + _1_ok = _1_ok && (_2_x == 0.0); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0.0; + _1_ok = _1_ok && (_2_x == 0.0); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0.0 / _0_unknown; + _1_ok = _1_ok && (_2_x == 0.0); + _2_x = _2_x + 1.0; + _1_ok = _1_ok && (_2_x == 1.0); + _1_ok = _1_ok && (_2_x == 1.0); + _2_x = _2_x - 2.0; + _1_ok = _1_ok && (_2_x == -1.0); + _1_ok = _1_ok && (_2_x == -1.0); + _1_ok = _1_ok && (_2_x == -1.0); + _2_x = _2_x * 2.0; + _1_ok = _1_ok && (_2_x == -2.0); + _1_ok = _1_ok && (_2_x == -2.0); + _2_x = _2_x * 0.5; + _1_ok = _1_ok && (_2_x == -1.0); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_1_ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/IntFoldingES2.wgsl b/tests/sksl/folding/IntFoldingES2.wgsl new file mode 100644 index 000000000000..440ea450efe1 --- /dev/null +++ b/tests/sksl/folding/IntFoldingES2.wgsl @@ -0,0 +1,79 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_unknown: i32 = i32(_globalUniforms.unknownInput); + var _1_ok: bool = true; + var _2_x: i32 = 34; + _1_ok = _1_ok && (_2_x == 34); + _2_x = 30; + _1_ok = _1_ok && (_2_x == 30); + _2_x = 64; + _1_ok = _1_ok && (_2_x == 64); + _2_x = 16; + _1_ok = _1_ok && (_2_x == 16); + _2_x = 1; + _1_ok = _1_ok && (_2_x == 1); + _2_x = -2; + _1_ok = _1_ok && (_2_x == -2); + _2_x = 3; + _1_ok = _1_ok && (_2_x == 3); + _2_x = -4; + _1_ok = _1_ok && (_2_x == -4); + _2_x = 5; + _1_ok = _1_ok && (_2_x == 5); + _2_x = -6; + _1_ok = _1_ok && (_2_x == -6); + _2_x = 7; + _1_ok = _1_ok && (_2_x == 7); + _2_x = -8; + _1_ok = _1_ok && (_2_x == -8); + _2_x = 9; + _1_ok = _1_ok && (_2_x == 9); + _2_x = -10; + _1_ok = _1_ok && (_2_x == -10); + _2_x = 11; + _1_ok = _1_ok && (_2_x == 11); + _2_x = -12; + _1_ok = _1_ok && (_2_x == -12); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0; + _1_ok = _1_ok && (_2_x == 0); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0; + _1_ok = _1_ok && (_2_x == 0); + _2_x = _0_unknown; + _1_ok = _1_ok && (_2_x == _0_unknown); + _2_x = 0 / _0_unknown; + _1_ok = _1_ok && (_2_x == 0); + _2_x = _2_x + 1; + _1_ok = _1_ok && (_2_x == 1); + _1_ok = _1_ok && (_2_x == 1); + _2_x = _2_x - 2; + _1_ok = _1_ok && (_2_x == -1); + _1_ok = _1_ok && (_2_x == -1); + _1_ok = _1_ok && (_2_x == -1); + _2_x = _2_x * 2; + _1_ok = _1_ok && (_2_x == -2); + _1_ok = _1_ok && (_2_x == -2); + _2_x = _2_x / 2; + _1_ok = _1_ok && (_2_x == -1); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_1_ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/IntFoldingES3.wgsl b/tests/sksl/folding/IntFoldingES3.wgsl new file mode 100644 index 000000000000..b58dd10feb57 --- /dev/null +++ b/tests/sksl/folding/IntFoldingES3.wgsl @@ -0,0 +1,38 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_ok: bool = true; + var _1_x: i32 = 14; + _0_ok = _0_ok && (_1_x == 14); + _1_x = 6; + _0_ok = _0_ok && (_1_x == 6); + _1_x = 5; + _0_ok = _0_ok && (_1_x == 5); + _1_x = 16; + _0_ok = _0_ok && (_1_x == 16); + _1_x = -8; + _0_ok = _0_ok && (_1_x == -8); + _1_x = 32; + _0_ok = _0_ok && (_1_x == 32); + _1_x = 33; + _0_ok = _0_ok && (_1_x == 33); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_0_ok)); + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/folding/LogicalNot.wgsl b/tests/sksl/folding/LogicalNot.wgsl new file mode 100644 index 000000000000..a013b823d85e --- /dev/null +++ b/tests/sksl/folding/LogicalNot.wgsl @@ -0,0 +1,23 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorGreen: vec4, + colorRed: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var ok: bool = true; + ok = ok && (_globalUniforms.colorGreen.y >= _globalUniforms.colorGreen.x); + ok = ok && (_globalUniforms.colorGreen.y > _globalUniforms.colorGreen.x); + ok = ok && (_globalUniforms.colorGreen.z <= _globalUniforms.colorGreen.y); + ok = ok && (_globalUniforms.colorGreen.z < _globalUniforms.colorGreen.y); + ok = ok && (_globalUniforms.colorGreen.y >= _globalUniforms.colorGreen.w); + ok = ok && (_globalUniforms.colorGreen.x <= _globalUniforms.colorGreen.z); + ok = ok && (_globalUniforms.colorGreen.y != _globalUniforms.colorGreen.x); + ok = ok && (_globalUniforms.colorGreen.y == _globalUniforms.colorGreen.w); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/MatrixFoldingES2.wgsl b/tests/sksl/folding/MatrixFoldingES2.wgsl new file mode 100644 index 000000000000..43d83bacebf2 --- /dev/null +++ b/tests/sksl/folding/MatrixFoldingES2.wgsl @@ -0,0 +1,145 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + testMatrix2x2: mat2x2, + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_matrix_op_scalar_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_scalar_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_matrix_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_matrix_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_vector_op_matrix_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_vector_op_matrix_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_vector_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_vector_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_ok: bool = true; + let _skTemp0 = f32(_globalUniforms.unknownInput); + let _skTemp1 = mat3x3(_skTemp0, 0.0, 0.0, 0.0, _skTemp0, 0.0, 0.0, 0.0, _skTemp0); + let _skTemp2 = mat2x2(1.0, 0.0, 0.0, 1.0); + let _skTemp3 = mat3x3(_skTemp2[0][0], _skTemp2[0][1], 0.0, _skTemp2[1][0], _skTemp2[1][1], 0.0, 0.0, 0.0, 1.0); + _0_ok = _0_ok && (all(_skTemp1[0] == _skTemp3[0]) && all(_skTemp1[1] == _skTemp3[1]) && all(_skTemp1[2] == _skTemp3[2])); + let _skTemp4 = mat3x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, f32(_globalUniforms.unknownInput)); + let _skTemp5 = mat2x2(9.0, 0.0, 0.0, 9.0); + let _skTemp6 = mat3x3(_skTemp5[0][0], _skTemp5[0][1], 0.0, _skTemp5[1][0], _skTemp5[1][1], 0.0, 0.0, 0.0, 1.0); + _0_ok = _0_ok && (all(_skTemp4[0] == _skTemp6[0]) && all(_skTemp4[1] == _skTemp6[1]) && all(_skTemp4[2] == _skTemp6[2])); + _0_ok = _0_ok && all(vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) == vec4(1.0, 2.0, 3.0, 4.0)); + { + let _skTemp7 = mat2x2(_globalUniforms.testMatrix2x2); + let _skTemp8 = mat3x3(mat3x3(_skTemp7[0][0], _skTemp7[0][1], 0.0, _skTemp7[1][0], _skTemp7[1][1], 0.0, 0.0, 0.0, 1.0)); + _0_ok = _0_ok && all(mat4x4(_skTemp8[0][0], _skTemp8[0][1], _skTemp8[0][2], 0.0, _skTemp8[1][0], _skTemp8[1][1], _skTemp8[1][2], 0.0, _skTemp8[2][0], _skTemp8[2][1], _skTemp8[2][2], 0.0, 0.0, 0.0, 0.0, 1.0)[0] == vec4(1.0, 2.0, 0.0, 0.0)); + let _skTemp9 = mat2x2(_globalUniforms.testMatrix2x2); + let _skTemp10 = mat3x3(mat3x3(_skTemp9[0][0], _skTemp9[0][1], 0.0, _skTemp9[1][0], _skTemp9[1][1], 0.0, 0.0, 0.0, 1.0)); + _0_ok = _0_ok && all(mat4x4(_skTemp10[0][0], _skTemp10[0][1], _skTemp10[0][2], 0.0, _skTemp10[1][0], _skTemp10[1][1], _skTemp10[1][2], 0.0, _skTemp10[2][0], _skTemp10[2][1], _skTemp10[2][2], 0.0, 0.0, 0.0, 0.0, 1.0)[1] == vec4(3.0, 4.0, 0.0, 0.0)); + } + var _skTemp11: vec4; + var _skTemp12: bool; + var _skTemp13: bool; + var _skTemp14: bool; + var _skTemp15: bool; + var _skTemp16: bool; + var _skTemp17: bool; + var _skTemp18: bool; + var _skTemp19: bool; + if _0_ok { + let _skTemp20 = test_matrix_op_scalar_float_b(); + _skTemp19 = _skTemp20; + } else { + _skTemp19 = false; + } + if _skTemp19 { + let _skTemp21 = test_matrix_op_scalar_half_b(); + _skTemp18 = _skTemp21; + } else { + _skTemp18 = false; + } + if _skTemp18 { + let _skTemp22 = test_matrix_op_matrix_float_b(); + _skTemp17 = _skTemp22; + } else { + _skTemp17 = false; + } + if _skTemp17 { + let _skTemp23 = test_matrix_op_matrix_half_b(); + _skTemp16 = _skTemp23; + } else { + _skTemp16 = false; + } + if _skTemp16 { + let _skTemp24 = test_vector_op_matrix_float_b(); + _skTemp15 = _skTemp24; + } else { + _skTemp15 = false; + } + if _skTemp15 { + let _skTemp25 = test_vector_op_matrix_half_b(); + _skTemp14 = _skTemp25; + } else { + _skTemp14 = false; + } + if _skTemp14 { + let _skTemp26 = test_matrix_op_vector_float_b(); + _skTemp13 = _skTemp26; + } else { + _skTemp13 = false; + } + if _skTemp13 { + let _skTemp27 = test_matrix_op_vector_half_b(); + _skTemp12 = _skTemp27; + } else { + _skTemp12 = false; + } + if _skTemp12 { + _skTemp11 = _globalUniforms.colorGreen; + } else { + _skTemp11 = _globalUniforms.colorRed; + } + return _skTemp11; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/MatrixFoldingES3.wgsl b/tests/sksl/folding/MatrixFoldingES3.wgsl new file mode 100644 index 000000000000..9e922ffba598 --- /dev/null +++ b/tests/sksl/folding/MatrixFoldingES3.wgsl @@ -0,0 +1,121 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_eq_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_matrix_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_matrix_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_vector_op_matrix_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_vector_op_matrix_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_vector_float_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn test_matrix_op_vector_half_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + const _0_ok: bool = true; + var _skTemp0: vec4; + var _skTemp1: bool; + var _skTemp2: bool; + var _skTemp3: bool; + var _skTemp4: bool; + var _skTemp5: bool; + var _skTemp6: bool; + var _skTemp7: bool; + if _0_ok { + let _skTemp8 = test_eq_half_b(); + _skTemp7 = _skTemp8; + } else { + _skTemp7 = false; + } + if _skTemp7 { + let _skTemp9 = test_matrix_op_matrix_float_b(); + _skTemp6 = _skTemp9; + } else { + _skTemp6 = false; + } + if _skTemp6 { + let _skTemp10 = test_matrix_op_matrix_half_b(); + _skTemp5 = _skTemp10; + } else { + _skTemp5 = false; + } + if _skTemp5 { + let _skTemp11 = test_vector_op_matrix_float_b(); + _skTemp4 = _skTemp11; + } else { + _skTemp4 = false; + } + if _skTemp4 { + let _skTemp12 = test_vector_op_matrix_half_b(); + _skTemp3 = _skTemp12; + } else { + _skTemp3 = false; + } + if _skTemp3 { + let _skTemp13 = test_matrix_op_vector_float_b(); + _skTemp2 = _skTemp13; + } else { + _skTemp2 = false; + } + if _skTemp2 { + let _skTemp14 = test_matrix_op_vector_half_b(); + _skTemp1 = _skTemp14; + } else { + _skTemp1 = false; + } + if _skTemp1 { + _skTemp0 = _globalUniforms.colorGreen; + } else { + _skTemp0 = _globalUniforms.colorRed; + } + return _skTemp0; + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/folding/MatrixNoOpFolding.wgsl b/tests/sksl/folding/MatrixNoOpFolding.wgsl new file mode 100644 index 000000000000..6a5d0f3a83d3 --- /dev/null +++ b/tests/sksl/folding/MatrixNoOpFolding.wgsl @@ -0,0 +1,76 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + testMatrix2x2: mat2x2, + testMatrix3x3: mat3x3, + testInputs: vec4, + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_mat3_mat3_b() -> bool { + { + var m: mat3x3; + var mm: mat3x3; + const z: mat3x3 = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + m = _globalUniforms.testMatrix3x3; + m = _globalUniforms.testMatrix3x3; + m = (-1.0 * m); + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + let _skTemp0 = (-1.0 * _globalUniforms.testMatrix3x3); + return (all(m[0] == _skTemp0[0]) && all(m[1] == _skTemp0[1]) && all(m[2] == _skTemp0[2])) && (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2])); + } +} +fn test_mat4_mat4_b() -> bool { + { + var testMatrix4x4: mat4x4 = mat4x4(_globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3]); + var m: mat4x4; + var mm: mat4x4; + const z: mat4x4 = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + m = testMatrix4x4; + m = testMatrix4x4; + m = (-1.0 * m); + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + let _skTemp1 = (-1.0 * testMatrix4x4); + return (all(m[0] == _skTemp1[0]) && all(m[1] == _skTemp1[1]) && all(m[2] == _skTemp1[2]) && all(m[3] == _skTemp1[3])) && (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3])); + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_m: mat2x2; + var _1_mm: mat2x2; + const _3_z: mat2x2 = mat2x2(0.0, 0.0, 0.0, 0.0); + _0_m = _globalUniforms.testMatrix2x2; + _0_m = _globalUniforms.testMatrix2x2; + _0_m = (-1.0 * _0_m); + _1_mm = mat2x2(0.0, 0.0, 0.0, 0.0); + _1_mm = mat2x2(0.0, 0.0, 0.0, 0.0); + var _skTemp2: vec4; + var _skTemp3: bool; + var _skTemp4: bool; + let _skTemp5 = (-1.0 * _globalUniforms.testMatrix2x2); + if (all(_0_m[0] == _skTemp5[0]) && all(_0_m[1] == _skTemp5[1])) && (all(_1_mm[0] == _3_z[0]) && all(_1_mm[1] == _3_z[1])) { + let _skTemp6 = test_mat3_mat3_b(); + _skTemp4 = _skTemp6; + } else { + _skTemp4 = false; + } + if _skTemp4 { + let _skTemp7 = test_mat4_mat4_b(); + _skTemp3 = _skTemp7; + } else { + _skTemp3 = false; + } + if _skTemp3 { + _skTemp2 = _globalUniforms.colorGreen; + } else { + _skTemp2 = _globalUniforms.colorRed; + } + return _skTemp2; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/MatrixScalarNoOpFolding.wgsl b/tests/sksl/folding/MatrixScalarNoOpFolding.wgsl new file mode 100644 index 000000000000..3a5c47ef4fac --- /dev/null +++ b/tests/sksl/folding/MatrixScalarNoOpFolding.wgsl @@ -0,0 +1,246 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + testMatrix2x2: mat2x2, + testMatrix3x3: mat3x3, + testInputs: vec4, + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_no_op_scalar_X_mat2_b() -> bool { + { + var m: mat2x2; + var mm: mat2x2; + const z: mat2x2 = mat2x2(0.0, 0.0, 0.0, 0.0); + m = _globalUniforms.testMatrix2x2; + m = _globalUniforms.testMatrix2x2; + if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) { + return false; + } + if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) { + return false; + } + if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) { + return false; + } + m = (-1.0 * m); + let _skTemp0 = (-1.0 * _globalUniforms.testMatrix2x2); + if (any(m[0] != _skTemp0[0]) || any(m[1] != _skTemp0[1])) { + return false; + } + mm = mat2x2(0.0, 0.0, 0.0, 0.0); + mm = mat2x2(0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1])); + } +} +fn test_no_op_scalar_X_mat3_b() -> bool { + { + var m: mat3x3; + var mm: mat3x3; + const z: mat3x3 = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + m = _globalUniforms.testMatrix3x3; + m = _globalUniforms.testMatrix3x3; + if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) { + return false; + } + if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) { + return false; + } + if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) { + return false; + } + m = (-1.0 * m); + let _skTemp1 = (-1.0 * _globalUniforms.testMatrix3x3); + if (any(m[0] != _skTemp1[0]) || any(m[1] != _skTemp1[1]) || any(m[2] != _skTemp1[2])) { + return false; + } + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2])); + } +} +fn test_no_op_scalar_X_mat4_b() -> bool { + { + var testMatrix4x4: mat4x4 = mat4x4(_globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3]); + var m: mat4x4; + var mm: mat4x4; + const z: mat4x4 = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + m = testMatrix4x4; + m = testMatrix4x4; + if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) { + return false; + } + if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) { + return false; + } + if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) { + return false; + } + m = (-1.0 * m); + let _skTemp2 = (-1.0 * testMatrix4x4); + if (any(m[0] != _skTemp2[0]) || any(m[1] != _skTemp2[1]) || any(m[2] != _skTemp2[2]) || any(m[3] != _skTemp2[3])) { + return false; + } + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3])); + } +} +fn test_no_op_mat2_X_scalar_b() -> bool { + { + var m: mat2x2; + var mm: mat2x2; + const z: mat2x2 = mat2x2(0.0, 0.0, 0.0, 0.0); + const s: mat2x2 = mat2x2(vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3]); + var scalar: f32 = _globalUniforms.testInputs.x; + m = mat2x2(scalar, 0.0, 0.0, scalar); + m = mat2x2(scalar, 0.0, 0.0, scalar); + let _skTemp3 = mat2x2(scalar, 0.0, 0.0, scalar); + if (any(m[0] != _skTemp3[0]) || any(m[1] != _skTemp3[1])) { + return false; + } + m = mat2x2(scalar / s[0], scalar / s[1]); + let _skTemp4 = mat2x2(scalar, scalar, scalar, scalar); + if (any(m[0] != _skTemp4[0]) || any(m[1] != _skTemp4[1])) { + return false; + } + m = mat2x2(scalar + z[0], scalar + z[1]); + m = mat2x2(z[0] + scalar, z[1] + scalar); + let _skTemp5 = mat2x2(scalar, scalar, scalar, scalar); + if (any(m[0] != _skTemp5[0]) || any(m[1] != _skTemp5[1])) { + return false; + } + m = mat2x2(scalar - z[0], scalar - z[1]); + m = mat2x2(z[0] - scalar, z[1] - scalar); + let _skTemp6 = (-1.0 * mat2x2(scalar, scalar, scalar, scalar)); + if (any(m[0] != _skTemp6[0]) || any(m[1] != _skTemp6[1])) { + return false; + } + mm = mat2x2(0.0, 0.0, 0.0, 0.0); + mm = mat2x2(0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1])); + } +} +fn test_no_op_mat3_X_scalar_b() -> bool { + { + var m: mat3x3; + var mm: mat3x3; + const z: mat3x3 = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + const s: mat3x3 = mat3x3(vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2], vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2], vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2]); + var scalar: f32 = _globalUniforms.testInputs.x; + var scalar3: vec3 = vec3(scalar); + m = mat3x3(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar); + m = mat3x3(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar); + let _skTemp7 = mat3x3(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar); + if (any(m[0] != _skTemp7[0]) || any(m[1] != _skTemp7[1]) || any(m[2] != _skTemp7[2])) { + return false; + } + m = mat3x3(scalar / s[0], scalar / s[1], scalar / s[2]); + let _skTemp8 = mat3x3(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2]); + if (any(m[0] != _skTemp8[0]) || any(m[1] != _skTemp8[1]) || any(m[2] != _skTemp8[2])) { + return false; + } + m = mat3x3(scalar + z[0], scalar + z[1], scalar + z[2]); + m = mat3x3(z[0] + scalar, z[1] + scalar, z[2] + scalar); + let _skTemp9 = mat3x3(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2]); + if (any(m[0] != _skTemp9[0]) || any(m[1] != _skTemp9[1]) || any(m[2] != _skTemp9[2])) { + return false; + } + m = mat3x3(scalar - z[0], scalar - z[1], scalar - z[2]); + m = mat3x3(z[0] - scalar, z[1] - scalar, z[2] - scalar); + let _skTemp10 = (-1.0 * mat3x3(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2])); + if (any(m[0] != _skTemp10[0]) || any(m[1] != _skTemp10[1]) || any(m[2] != _skTemp10[2])) { + return false; + } + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat3x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2])); + } +} +fn test_no_op_mat4_X_scalar_b() -> bool { + { + var m: mat4x4; + var mm: mat4x4; + const z: mat4x4 = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + const s: mat4x4 = mat4x4(vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3]); + var scalar: f32 = _globalUniforms.testInputs.x; + var scalar4: vec4 = vec4(scalar); + m = mat4x4(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar); + m = mat4x4(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar); + let _skTemp11 = mat4x4(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar); + if (any(m[0] != _skTemp11[0]) || any(m[1] != _skTemp11[1]) || any(m[2] != _skTemp11[2]) || any(m[3] != _skTemp11[3])) { + return false; + } + m = mat4x4(scalar / s[0], scalar / s[1], scalar / s[2], scalar / s[3]); + let _skTemp12 = mat4x4(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3]); + if (any(m[0] != _skTemp12[0]) || any(m[1] != _skTemp12[1]) || any(m[2] != _skTemp12[2]) || any(m[3] != _skTemp12[3])) { + return false; + } + m = mat4x4(scalar + z[0], scalar + z[1], scalar + z[2], scalar + z[3]); + m = mat4x4(z[0] + scalar, z[1] + scalar, z[2] + scalar, z[3] + scalar); + let _skTemp13 = mat4x4(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3]); + if (any(m[0] != _skTemp13[0]) || any(m[1] != _skTemp13[1]) || any(m[2] != _skTemp13[2]) || any(m[3] != _skTemp13[3])) { + return false; + } + m = mat4x4(scalar - z[0], scalar - z[1], scalar - z[2], scalar - z[3]); + m = mat4x4(z[0] - scalar, z[1] - scalar, z[2] - scalar, z[3] - scalar); + let _skTemp14 = (-1.0 * mat4x4(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3])); + if (any(m[0] != _skTemp14[0]) || any(m[1] != _skTemp14[1]) || any(m[2] != _skTemp14[2]) || any(m[3] != _skTemp14[3])) { + return false; + } + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + mm = mat4x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3])); + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _skTemp15: vec4; + var _skTemp16: bool; + var _skTemp17: bool; + var _skTemp18: bool; + var _skTemp19: bool; + var _skTemp20: bool; + let _skTemp21 = test_no_op_scalar_X_mat2_b(); + if _skTemp21 { + let _skTemp22 = test_no_op_scalar_X_mat3_b(); + _skTemp20 = _skTemp22; + } else { + _skTemp20 = false; + } + if _skTemp20 { + let _skTemp23 = test_no_op_scalar_X_mat4_b(); + _skTemp19 = _skTemp23; + } else { + _skTemp19 = false; + } + if _skTemp19 { + let _skTemp24 = test_no_op_mat2_X_scalar_b(); + _skTemp18 = _skTemp24; + } else { + _skTemp18 = false; + } + if _skTemp18 { + let _skTemp25 = test_no_op_mat3_X_scalar_b(); + _skTemp17 = _skTemp25; + } else { + _skTemp17 = false; + } + if _skTemp17 { + let _skTemp26 = test_no_op_mat4_X_scalar_b(); + _skTemp16 = _skTemp26; + } else { + _skTemp16 = false; + } + if _skTemp16 { + _skTemp15 = _globalUniforms.colorGreen; + } else { + _skTemp15 = _globalUniforms.colorRed; + } + return _skTemp15; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/MatrixVectorNoOpFolding.wgsl b/tests/sksl/folding/MatrixVectorNoOpFolding.wgsl new file mode 100644 index 000000000000..84842183addd --- /dev/null +++ b/tests/sksl/folding/MatrixVectorNoOpFolding.wgsl @@ -0,0 +1,216 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + testMatrix2x2: mat2x2, + testMatrix3x3: mat3x3, + testInputs: vec4, + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_no_op_mat2_X_vec2_b() -> bool { + { + var v: vec2; + var vv: vec2; + v = _globalUniforms.testInputs.xy; + v = _globalUniforms.testInputs.xy; + if any(v != _globalUniforms.testInputs.xy) { + return false; + } + if any(v != _globalUniforms.testInputs.xy) { + return false; + } + v = -_globalUniforms.testInputs.xy; + v = -_globalUniforms.testInputs.xy; + if any(v != (-_globalUniforms.testInputs.xy)) { + return false; + } + vv = vec2(0.0); + vv = vec2(0.0); + return all(vv == vec2(0.0)); + } +} +fn test_no_op_mat3_X_vec3_b() -> bool { + { + var v: vec3; + var vv: vec3; + v = _globalUniforms.testInputs.xyz; + v = _globalUniforms.testInputs.xyz; + if any(v != _globalUniforms.testInputs.xyz) { + return false; + } + if any(v != _globalUniforms.testInputs.xyz) { + return false; + } + v = -_globalUniforms.testInputs.xyz; + v = -_globalUniforms.testInputs.xyz; + if any(v != (-_globalUniforms.testInputs.xyz)) { + return false; + } + vv = vec3(0.0); + vv = vec3(0.0); + return all(vv == vec3(0.0)); + } +} +fn test_no_op_mat4_X_vec4_b() -> bool { + { + var v: vec4; + var vv: vec4; + v = _globalUniforms.testInputs; + v = _globalUniforms.testInputs; + if any(v != _globalUniforms.testInputs) { + return false; + } + if any(v != _globalUniforms.testInputs) { + return false; + } + v = -_globalUniforms.testInputs; + v = -_globalUniforms.testInputs; + if any(v != (-_globalUniforms.testInputs)) { + return false; + } + vv = vec4(0.0); + vv = vec4(0.0); + return all(vv == vec4(0.0)); + } +} +fn test_no_op_vec2_X_mat2_b() -> bool { + { + const n: vec2 = vec2(-1.0); + const i: vec2 = vec2(1.0); + const z: vec2 = vec2(0.0); + var v: vec2; + var vv: vec2 = vec2(0.0); + vv = vec2(0.0); + if any(vv != z) { + return false; + } + v = i * _globalUniforms.testMatrix2x2; + if any(v != vec2(3.0, 7.0)) { + return false; + } + v = _globalUniforms.testMatrix2x2 * i; + if any(v != vec2(4.0, 6.0)) { + return false; + } + v = n * _globalUniforms.testMatrix2x2; + if any(v != vec2(-3.0, -7.0)) { + return false; + } + v = _globalUniforms.testMatrix2x2 * n; + return all(v == vec2(-4.0, -6.0)); + } +} +fn test_no_op_vec3_X_mat3_b() -> bool { + { + const n: vec3 = vec3(-1.0); + const i: vec3 = vec3(1.0); + const z: vec3 = vec3(0.0); + var v: vec3; + var vv: vec3 = vec3(0.0); + vv = vec3(0.0); + if any(vv != z) { + return false; + } + v = i * _globalUniforms.testMatrix3x3; + if any(v != vec3(6.0, 15.0, 24.0)) { + return false; + } + v = _globalUniforms.testMatrix3x3 * i; + if any(v != vec3(12.0, 15.0, 18.0)) { + return false; + } + v = n * _globalUniforms.testMatrix3x3; + if any(v != vec3(-6.0, -15.0, -24.0)) { + return false; + } + v = _globalUniforms.testMatrix3x3 * n; + return all(v == vec3(-12.0, -15.0, -18.0)); + } +} +fn test_no_op_vec4_X_mat4_b() -> bool { + { + const n: vec4 = vec4(-1.0); + const i: vec4 = vec4(1.0); + const z: vec4 = vec4(0.0); + let _skTemp0 = _globalUniforms.testMatrix2x2[0]; + let _skTemp1 = _globalUniforms.testMatrix2x2[1]; + let _skTemp2 = _globalUniforms.testMatrix2x2[0]; + let _skTemp3 = _globalUniforms.testMatrix2x2[1]; + let _skTemp4 = _globalUniforms.testMatrix2x2[0]; + let _skTemp5 = _globalUniforms.testMatrix2x2[1]; + let _skTemp6 = _globalUniforms.testMatrix2x2[0]; + let _skTemp7 = _globalUniforms.testMatrix2x2[1]; + var testMatrix4x4: mat4x4 = mat4x4(_skTemp0[0], _skTemp0[1], _skTemp1[0], _skTemp1[1], _skTemp2[0], _skTemp2[1], _skTemp3[0], _skTemp3[1], _skTemp4[0], _skTemp4[1], _skTemp5[0], _skTemp5[1], _skTemp6[0], _skTemp6[1], _skTemp7[0], _skTemp7[1]); + var v: vec4; + var vv: vec4 = vec4(0.0); + vv = vec4(0.0); + if any(vv != z) { + return false; + } + v = i * testMatrix4x4; + if any(v != vec4(10.0)) { + return false; + } + v = testMatrix4x4 * i; + if any(v != vec4(4.0, 8.0, 12.0, 16.0)) { + return false; + } + v = n * testMatrix4x4; + if any(v != vec4(-10.0)) { + return false; + } + v = testMatrix4x4 * n; + return all(v == vec4(-4.0, -8.0, -12.0, -16.0)); + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _skTemp8: vec4; + var _skTemp9: bool; + var _skTemp10: bool; + var _skTemp11: bool; + var _skTemp12: bool; + var _skTemp13: bool; + let _skTemp14 = test_no_op_mat2_X_vec2_b(); + if _skTemp14 { + let _skTemp15 = test_no_op_mat3_X_vec3_b(); + _skTemp13 = _skTemp15; + } else { + _skTemp13 = false; + } + if _skTemp13 { + let _skTemp16 = test_no_op_mat4_X_vec4_b(); + _skTemp12 = _skTemp16; + } else { + _skTemp12 = false; + } + if _skTemp12 { + let _skTemp17 = test_no_op_vec2_X_mat2_b(); + _skTemp11 = _skTemp17; + } else { + _skTemp11 = false; + } + if _skTemp11 { + let _skTemp18 = test_no_op_vec3_X_mat3_b(); + _skTemp10 = _skTemp18; + } else { + _skTemp10 = false; + } + if _skTemp10 { + let _skTemp19 = test_no_op_vec4_X_mat4_b(); + _skTemp9 = _skTemp19; + } else { + _skTemp9 = false; + } + if _skTemp9 { + _skTemp8 = _globalUniforms.colorGreen; + } else { + _skTemp8 = _globalUniforms.colorRed; + } + return _skTemp8; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/Negation.wgsl b/tests/sksl/folding/Negation.wgsl new file mode 100644 index 000000000000..b37c6394f0b3 --- /dev/null +++ b/tests/sksl/folding/Negation.wgsl @@ -0,0 +1,50 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorGreen: vec4, + colorRed: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_ivec_b() -> bool { + { + var one: i32 = 1; + const two: i32 = 2; + var ok: bool = true; + ok = ok && all((-vec2(-one, one + one)) == (-vec2(one - two, 2))); + return ok; + } +} +fn test_mat_b() -> bool { + { + var ok: bool = true; + return ok; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _4_ok: bool = true; + var _skTemp0: vec4; + var _skTemp1: bool; + var _skTemp2: bool; + if _4_ok { + let _skTemp3 = test_ivec_b(); + _skTemp2 = _skTemp3; + } else { + _skTemp2 = false; + } + if _skTemp2 { + let _skTemp4 = test_mat_b(); + _skTemp1 = _skTemp4; + } else { + _skTemp1 = false; + } + if _skTemp1 { + _skTemp0 = _globalUniforms.colorGreen; + } else { + _skTemp0 = _globalUniforms.colorRed; + } + return _skTemp0; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/PreserveSideEffects.wgsl b/tests/sksl/folding/PreserveSideEffects.wgsl new file mode 100644 index 000000000000..b30a38f4a24a --- /dev/null +++ b/tests/sksl/folding/PreserveSideEffects.wgsl @@ -0,0 +1,204 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorGreen: vec4, + colorRed: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_matrix_b() -> bool { + { + var ok: bool = true; + var num: f32 = 0.0; + var _skTemp0: bool; + if ok { + num = num + f32(1); + _skTemp0 = all(mat2x2(1.0, 2.0, 3.0, num)[0] == vec2(1.0, 2.0)); + } else { + _skTemp0 = false; + } + ok = _skTemp0; + var _skTemp1: bool; + if ok { + num = num + f32(1); + let _skTemp2 = vec2(num); + _skTemp1 = all(mat2x2(_skTemp2[0], _skTemp2[1], 3.0, 4.0)[1] == vec2(3.0, 4.0)); + } else { + _skTemp1 = false; + } + ok = _skTemp1; + var _skTemp3: bool; + if ok { + num = num + f32(1); + let _skTemp4 = vec3(num); + _skTemp3 = all(mat3x3(vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2], _skTemp4[0], _skTemp4[1], _skTemp4[2], vec3(0.0)[0], vec3(0.0)[1], vec3(0.0)[2])[0] == vec3(1.0)); + } else { + _skTemp3 = false; + } + ok = _skTemp3; + var _skTemp5: bool; + if ok { + num = num + f32(1); + let _skTemp6 = vec3(num); + _skTemp5 = all(mat3x3(vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2], _skTemp6[0], _skTemp6[1], _skTemp6[2], vec3(0.0)[0], vec3(0.0)[1], vec3(0.0)[2])[2] == vec3(0.0)); + } else { + _skTemp5 = false; + } + ok = _skTemp5; + var _skTemp7: bool; + if ok { + num = num + f32(1); + let _skTemp8 = vec3(num); + _skTemp7 = all(mat3x3(_skTemp8[0], _skTemp8[1], _skTemp8[2], vec3(1.0)[0], vec3(1.0)[1], vec3(1.0)[2], vec3(0.0)[0], vec3(0.0)[1], vec3(0.0)[2])[1] == vec3(1.0)); + } else { + _skTemp7 = false; + } + ok = _skTemp7; + var _skTemp9: bool; + if ok { + num = num + f32(1); + _skTemp9 = all(mat3x3(1.0, 2.0, 3.0, 4.0, 5.0, num, 7.0, 8.0, 9.0)[0] == vec3(1.0, 2.0, 3.0)); + } else { + _skTemp9 = false; + } + ok = _skTemp9; + var _skTemp10: bool; + if ok { + let _skTemp11 = num; + num = num + f32(1); + _skTemp10 = all(mat3x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, _skTemp11, 8.0, 9.0)[1] == vec3(4.0, 5.0, 6.0)); + } else { + _skTemp10 = false; + } + ok = _skTemp10; + var _skTemp12: bool; + if ok { + num = num + f32(1); + let _skTemp13 = vec4(num); + _skTemp12 = all(mat4x4(_skTemp13[0], _skTemp13[1], _skTemp13[2], _skTemp13[3], vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], vec4(2.0)[0], vec4(2.0)[1], vec4(2.0)[2], vec4(2.0)[3], vec4(3.0)[0], vec4(3.0)[1], vec4(3.0)[2], vec4(3.0)[3])[1] == vec4(1.0)); + } else { + _skTemp12 = false; + } + ok = _skTemp12; + var _skTemp14: bool; + if ok { + num = num + f32(1); + let _skTemp15 = vec4(num); + _skTemp14 = all(mat4x4(vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], _skTemp15[0], _skTemp15[1], _skTemp15[2], _skTemp15[3], vec4(2.0)[0], vec4(2.0)[1], vec4(2.0)[2], vec4(2.0)[3], vec4(3.0)[0], vec4(3.0)[1], vec4(3.0)[2], vec4(3.0)[3])[2] == vec4(2.0)); + } else { + _skTemp14 = false; + } + ok = _skTemp14; + var _skTemp16: bool; + if ok { + num = num + f32(1); + let _skTemp17 = vec4(num); + _skTemp16 = all(mat4x4(vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], vec4(1.0)[0], vec4(1.0)[1], vec4(1.0)[2], vec4(1.0)[3], _skTemp17[0], _skTemp17[1], _skTemp17[2], _skTemp17[3], vec4(3.0)[0], vec4(3.0)[1], vec4(3.0)[2], vec4(3.0)[3])[3] == vec4(3.0)); + } else { + _skTemp16 = false; + } + ok = _skTemp16; + var _skTemp18: bool; + if ok { + num = num + f32(1); + _skTemp18 = all(mat4x4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, num, 16.0)[3].xy == vec2(13.0, 14.0)); + } else { + _skTemp18 = false; + } + ok = _skTemp18; + return ok && (num == 11.0); + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_ok: bool = true; + var _1_num: f32 = 0.0; + var _skTemp19: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp19 = (vec2(_1_num, 0.0).y == 0.0); + } else { + _skTemp19 = false; + } + _0_ok = _skTemp19; + var _skTemp20: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp20 = (vec2(0.0, _1_num).x == 0.0); + } else { + _skTemp20 = false; + } + _0_ok = _skTemp20; + var _skTemp21: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp21 = all(vec3(_1_num, 1.0, 0.0).yz == vec2(1.0, 0.0)); + } else { + _skTemp21 = false; + } + _0_ok = _skTemp21; + var _skTemp22: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp22 = all(vec3(1.0, 0.0, _1_num).xy == vec2(1.0, 0.0)); + } else { + _skTemp22 = false; + } + _0_ok = _skTemp22; + var _skTemp23: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp23 = all(vec3(_1_num, 1.0, 0.0).yz == vec2(1.0, 0.0)); + } else { + _skTemp23 = false; + } + _0_ok = _skTemp23; + var _skTemp24: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp24 = all(vec4(_1_num, 1.0, 0.0, 0.0).yzw == vec3(1.0, 0.0, 0.0)); + } else { + _skTemp24 = false; + } + _0_ok = _skTemp24; + var _skTemp25: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp25 = (vec4(1.0, _1_num, 1.0, 0.0).x == 1.0); + } else { + _skTemp25 = false; + } + _0_ok = _skTemp25; + var _skTemp26: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp26 = (vec4(1.0, 0.0, _1_num, 1.0).w == 1.0); + } else { + _skTemp26 = false; + } + _0_ok = _skTemp26; + var _skTemp27: bool; + if _0_ok { + _1_num = _1_num + f32(1); + _skTemp27 = all(vec4(1.0, 0.0, 1.0, _1_num).xyz == vec3(1.0, 0.0, 1.0)); + } else { + _skTemp27 = false; + } + _0_ok = _skTemp27; + var _skTemp28: vec4; + var _skTemp29: bool; + if _0_ok && (_1_num == 9.0) { + let _skTemp30 = test_matrix_b(); + _skTemp29 = _skTemp30; + } else { + _skTemp29 = false; + } + if _skTemp29 { + _skTemp28 = _globalUniforms.colorGreen; + } else { + _skTemp28 = _globalUniforms.colorRed; + } + return _skTemp28; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/SelfAssignment.wgsl b/tests/sksl/folding/SelfAssignment.wgsl new file mode 100644 index 000000000000..e2a1fbca531e --- /dev/null +++ b/tests/sksl/folding/SelfAssignment.wgsl @@ -0,0 +1,29 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +struct S { + i: f32, + j: f32, +}; +fn _skslMain(coords: vec2) -> vec4 { + { + var x: vec4 = vec4(3.0, 2.0, 1.0, 0.0); + x = vec4((x.zyx), x.w).xyzw; + var s: S; + s.i = 2.0; + s.j = 2.0; + s.i = s.j; + s.j = s.i; + var a: array; + a[0] = 1.0; + a[1] = 0.0; + a[1] = a[0]; + return vec4(x.w, s.i / s.j, a[0] - a[1], a[0] * a[1]); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/ShortCircuitBoolFolding.wgsl b/tests/sksl/folding/ShortCircuitBoolFolding.wgsl new file mode 100644 index 000000000000..ede905d3e579 --- /dev/null +++ b/tests/sksl/folding/ShortCircuitBoolFolding.wgsl @@ -0,0 +1,195 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_expr: bool = _globalUniforms.unknownInput > 0.0; + var _1_ok: i32 = 0; + var _2_bad: i32 = 0; + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + { + _1_ok = _1_ok + i32(1); + } + if true != _0_expr { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + { + _1_ok = _1_ok + i32(1); + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + if false == _0_expr { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if true != _0_expr { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + { + _1_ok = _1_ok + i32(1); + } + if _0_expr != true { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + { + _1_ok = _1_ok + i32(1); + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + if _0_expr == false { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if _0_expr != true { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + if _0_expr { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + var _3_a: f32 = f32(_globalUniforms.unknownInput + 2.0); + var _4_b: f32 = f32(_globalUniforms.unknownInput * 2.0); + if _3_a == _4_b { + { + _2_bad = _2_bad + i32(1); + } + } else { + { + _1_ok = _1_ok + i32(1); + } + } + _3_a = _4_b; + if _3_a == _4_b { + { + _1_ok = _1_ok + i32(1); + } + } else { + { + _2_bad = _2_bad + i32(1); + } + } + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((_1_ok == 22) && (_2_bad == 0))); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/StructFieldFolding.wgsl b/tests/sksl/folding/StructFieldFolding.wgsl new file mode 100644 index 000000000000..c5fb809eeeb3 --- /dev/null +++ b/tests/sksl/folding/StructFieldFolding.wgsl @@ -0,0 +1,21 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +struct S { + a: i32, + b: i32, + c: i32, +}; +fn _skslMain(coords: vec2) -> vec4 { + { + const _6_two: i32 = 2; + var _8_flatten1: i32 = _6_two; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_8_flatten1 == 2)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/StructFieldNoFolding.wgsl b/tests/sksl/folding/StructFieldNoFolding.wgsl new file mode 100644 index 000000000000..c54de79469f2 --- /dev/null +++ b/tests/sksl/folding/StructFieldNoFolding.wgsl @@ -0,0 +1,35 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +struct S { + a: i32, + b: i32, + c: i32, +}; +var numSideEffects: i32 = 0; +fn side_effecting_ii(value: i32) -> i32 { + { + numSideEffects = numSideEffects + i32(1); + return value; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_val1: i32 = 2; + var _1_val2: i32 = 1; + _0_val1 = _0_val1 - i32(1); + let _skTemp0 = side_effecting_ii(2); + var _2_noFlatten0: i32 = S(_0_val1, _skTemp0, 3).a; + let _skTemp1 = side_effecting_ii(1); + var _3_noFlatten1: i32 = S(_skTemp1, 2, 3).b; + _1_val2 = _1_val2 + 1; + var _4_noFlatten2: i32 = S(1, _1_val2, 3).c; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((_2_noFlatten0 == 1) && (_3_noFlatten1 == 2)) && (_4_noFlatten2 == 3)) && (_0_val1 == 1)) && (_1_val2 == 2)) && (numSideEffects == 2))); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/SwitchCaseFolding.wgsl b/tests/sksl/folding/SwitchCaseFolding.wgsl new file mode 100644 index 000000000000..6c4c1da360c9 --- /dev/null +++ b/tests/sksl/folding/SwitchCaseFolding.wgsl @@ -0,0 +1,40 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var color: vec4 = _globalUniforms.colorRed; + let _skTemp0 = i32(_globalUniforms.colorGreen.y); + switch _skTemp0 { + case 0 { + break; + } + case 1 { + color = _globalUniforms.colorGreen; + break; + } + case 2 { + break; + } + case 3 { + break; + } + case 4 { + break; + } + case 5 { + break; + } + case default { + break; + } + } + return color; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/SwizzleFolding.wgsl b/tests/sksl/folding/SwizzleFolding.wgsl new file mode 100644 index 000000000000..75526cfa9b4c --- /dev/null +++ b/tests/sksl/folding/SwizzleFolding.wgsl @@ -0,0 +1,16 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var _2_ok: bool = true; + _2_ok = _2_ok && any(_globalUniforms.colorGreen != _globalUniforms.colorRed); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_2_ok)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/TernaryFolding.wgsl b/tests/sksl/folding/TernaryFolding.wgsl new file mode 100644 index 000000000000..1607fa248392 --- /dev/null +++ b/tests/sksl/folding/TernaryFolding.wgsl @@ -0,0 +1,28 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn do_side_effect_bb(x: ptr) -> bool { + { + (*x) = true; + return false; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var ok: bool = true; + var green: vec4 = _globalUniforms.colorGreen; + var red: vec4 = _globalUniforms.colorRed; + var param: bool = false; + var _skTemp0: bool; + let _skTemp1 = do_side_effect_bb(&_skTemp0); + param = _skTemp0; + var call: bool = true; + return select(red, green, vec4((ok && param) && call)); + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/VectorScalarFolding.wgsl b/tests/sksl/folding/VectorScalarFolding.wgsl new file mode 100644 index 000000000000..cfbfcce86054 --- /dev/null +++ b/tests/sksl/folding/VectorScalarFolding.wgsl @@ -0,0 +1,169 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, + unknownInput: f32, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_int_b() -> bool { + { + var ok: bool = true; + var x: vec4 = vec4(6, 6, 7, 8); + ok = ok && all(x == vec4(6, 6, 7, 8)); + x = vec4(7, 9, 9, 9); + ok = ok && all(x == vec4(7, 9, 9, 9)); + x = vec4(9, 9, 10, 10); + ok = ok && all(x == vec4(9, 9, 10, 10)); + x = vec4((vec3(6)), x.w).xyzw; + ok = ok && all(x == vec4(6, 6, 6, 10)); + x = vec4((vec2(3)), x.zw).xyzw; + ok = ok && all(x == vec4(3, 3, 6, 10)); + x = vec4(6); + ok = ok && all(x == vec4(6)); + x = vec4(6, 6, 7, 8); + ok = ok && all(x == vec4(6, 6, 7, 8)); + x = vec4(-7, -9, -9, -9); + ok = ok && all(x == vec4(-7, -9, -9, -9)); + x = vec4(9, 9, 10, 10); + ok = ok && all(x == vec4(9, 9, 10, 10)); + x = vec4((vec3(6)), x.w).xyzw; + ok = ok && all(x == vec4(6, 6, 6, 10)); + x = vec4((vec2(8)), x.zw).xyzw; + ok = ok && all(x == vec4(8, 8, 6, 10)); + x = vec4(200, 100, 50, 25); + ok = ok && all(x == vec4(200, 100, 50, 25)); + x = vec4(6); + ok = ok && all(x == vec4(6)); + var unknown: i32 = i32(_globalUniforms.unknownInput); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(0); + ok = ok && all(x == vec4(0)); + x = vec4(0) / unknown; + ok = ok && all(x == vec4(0)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(0); + ok = ok && all(x == vec4(0)); + x = 0 / vec4(unknown); + ok = ok && all(x == vec4(0)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(0); + ok = ok && all(x == vec4(0)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + x = x + 1; + x = x - 1; + ok = ok && all(x == vec4(unknown)); + x = vec4(unknown); + x = x + 1; + x = x - 1; + ok = ok && all(x == vec4(unknown)); + return ok; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_ok: bool = true; + var _1_x: vec4 = vec4(6.0, 6.0, 7.0, 8.0); + _0_ok = _0_ok && all(_1_x == vec4(6.0, 6.0, 7.0, 8.0)); + _1_x = vec4(7.0, 9.0, 9.0, 9.0); + _0_ok = _0_ok && all(_1_x == vec4(7.0, 9.0, 9.0, 9.0)); + _1_x = vec4(9.0, 9.0, 10.0, 10.0); + _0_ok = _0_ok && all(_1_x == vec4(9.0, 9.0, 10.0, 10.0)); + _1_x = vec4((vec3(6.0)), _1_x.w).xyzw; + _0_ok = _0_ok && all(_1_x == vec4(6.0, 6.0, 6.0, 10.0)); + _1_x = vec4((vec2(3.0)), _1_x.zw).xyzw; + _0_ok = _0_ok && all(_1_x == vec4(3.0, 3.0, 6.0, 10.0)); + _1_x = vec4(6.0); + _0_ok = _0_ok && all(_1_x == vec4(6.0)); + _1_x = vec4(6.0, 6.0, 7.0, 8.0); + _0_ok = _0_ok && all(_1_x == vec4(6.0, 6.0, 7.0, 8.0)); + _1_x = vec4(-7.0, -9.0, -9.0, -9.0); + _0_ok = _0_ok && all(_1_x == vec4(-7.0, -9.0, -9.0, -9.0)); + _1_x = vec4(9.0, 9.0, 10.0, 10.0); + _0_ok = _0_ok && all(_1_x == vec4(9.0, 9.0, 10.0, 10.0)); + _1_x = vec4((vec3(6.0)), _1_x.w).xyzw; + _0_ok = _0_ok && all(_1_x == vec4(6.0, 6.0, 6.0, 10.0)); + _1_x = vec4((vec2(8.0)), _1_x.zw).xyzw; + _0_ok = _0_ok && all(_1_x == vec4(8.0, 8.0, 6.0, 10.0)); + _1_x = vec4(2.0, 1.0, 0.5, 0.25); + _0_ok = _0_ok && all(_1_x == vec4(2.0, 1.0, 0.5, 0.25)); + _1_x = vec4(6.0); + _0_ok = _0_ok && all(_1_x == vec4(6.0)); + var _2_unknown: f32 = _globalUniforms.unknownInput; + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(0.0); + _0_ok = _0_ok && all(_1_x == vec4(0.0)); + _1_x = vec4(0.0) / _2_unknown; + _0_ok = _0_ok && all(_1_x == vec4(0.0)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(0.0); + _0_ok = _0_ok && all(_1_x == vec4(0.0)); + _1_x = 0.0 / vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(0.0)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(0.0); + _0_ok = _0_ok && all(_1_x == vec4(0.0)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _1_x = _1_x + 1.0; + _1_x = _1_x - 1.0; + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + _1_x = vec4(_2_unknown); + _1_x = _1_x + 1.0; + _1_x = _1_x - 1.0; + _0_ok = _0_ok && all(_1_x == vec4(_2_unknown)); + var _skTemp0: vec4; + var _skTemp1: bool; + if _0_ok { + let _skTemp2 = test_int_b(); + _skTemp1 = _skTemp2; + } else { + _skTemp1 = false; + } + if _skTemp1 { + _skTemp0 = _globalUniforms.colorGreen; + } else { + _skTemp0 = _globalUniforms.colorRed; + } + return _skTemp0; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/folding/VectorVectorFolding.wgsl b/tests/sksl/folding/VectorVectorFolding.wgsl new file mode 100644 index 000000000000..23fcbfc6c027 --- /dev/null +++ b/tests/sksl/folding/VectorVectorFolding.wgsl @@ -0,0 +1,61 @@ +diagnostic(off, derivative_uniformity); +struct _GlobalUniforms { + unknownInput: f32, + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn test_int_b() -> bool { + { + var unknown: i32 = i32(_globalUniforms.unknownInput); + var ok: bool = true; + ok = ok && all((vec4(0) / vec4(unknown)) == vec4(0)); + var val: vec4 = vec4(unknown); + val = val + vec4(1); + val = val - vec4(1); + val = val + vec4(1); + val = val - vec4(1); + ok = ok && all(val == vec4(unknown)); + val = val * vec4(2); + val = val / vec4(2); + val = val * vec4(2); + val = val / vec4(2); + ok = ok && all(val == vec4(unknown)); + return ok; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _0_unknown: f32 = _globalUniforms.unknownInput; + var _1_ok: bool = true; + _1_ok = _1_ok && all((vec4(0.0) / vec4(_0_unknown)) == vec4(0.0)); + var _2_val: vec4 = vec4(_0_unknown); + _2_val = _2_val + vec4(1.0); + _2_val = _2_val - vec4(1.0); + _2_val = _2_val + vec4(1.0); + _2_val = _2_val - vec4(1.0); + _1_ok = _1_ok && all(_2_val == vec4(_0_unknown)); + _2_val = _2_val * vec4(2.0); + _2_val = _2_val * vec4(0.5); + _2_val = _2_val * vec4(2.0); + _2_val = _2_val * vec4(0.5); + _1_ok = _1_ok && all(_2_val == vec4(_0_unknown)); + var _skTemp0: vec4; + var _skTemp1: bool; + if _1_ok { + let _skTemp2 = test_int_b(); + _skTemp1 = _skTemp2; + } else { + _skTemp1 = false; + } + if _skTemp1 { + _skTemp0 = _globalUniforms.colorGreen; + } else { + _skTemp0 = _globalUniforms.colorRed; + } + return _skTemp0; + } +} +@fragment fn main(@location(0) _coords: vec2) -> @location(0) vec4 { + return _skslMain(_coords); +} diff --git a/tests/sksl/inliner/DoWhileTestCannotBeInlined.wgsl b/tests/sksl/inliner/DoWhileTestCannotBeInlined.wgsl deleted file mode 100644 index 4163a04b8b87..000000000000 --- a/tests/sksl/inliner/DoWhileTestCannotBeInlined.wgsl +++ /dev/null @@ -1,39 +0,0 @@ -struct FSIn { - @builtin(front_facing) sk_Clockwise: bool, - @builtin(position) sk_FragCoord: vec4, -}; -struct FSOut { - @location(0) sk_FragColor: vec4, -}; -struct _GlobalUniforms { - colorGreen: vec4, - colorRed: vec4, -}; -@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn shouldLoop_bh4(_skParam0: vec4) -> bool { - let value = _skParam0; - { - return any(value != _globalUniforms.colorGreen); - } -} -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; - { - var result: vec4 = _globalUniforms.colorRed; - loop { - { - result = _globalUniforms.colorGreen; - } - continuing { - let _skTemp0 = shouldLoop_bh4(result); - break if !_skTemp0; - } - } - return result; - } -} -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { - var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); - return _stageOut; -} diff --git a/tests/sksl/inliner/OpaqueCallsCannotBeInlined.glsl b/tests/sksl/inliner/OpaqueCallsCannotBeInlined.glsl deleted file mode 100644 index fabbfd8455e6..000000000000 --- a/tests/sksl/inliner/OpaqueCallsCannotBeInlined.glsl +++ /dev/null @@ -1,10 +0,0 @@ - -out vec4 sk_FragColor; -layout (binding = 0) uniform sampler uSampler; -layout (binding = 1) uniform texture2D uTexture; -vec4 squaredSample_h4f2Z(vec2 p, sampler2D s) { - return texture(s, p) * texture(s, p); -} -vec4 main() { - return texture(makeSampler2D(uTexture, uSampler), p) * squaredSample_h4f2Z(p, makeSampler2D(uTexture, uSampler)); -} diff --git a/tests/sksl/intrinsics/AbsFloat.metal b/tests/sksl/intrinsics/AbsFloat.metal index ab811cc8ad4a..203d9b28fbed 100644 --- a/tests/sksl/intrinsics/AbsFloat.metal +++ b/tests/sksl/intrinsics/AbsFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testInputs; diff --git a/tests/sksl/intrinsics/AbsFloat.wgsl b/tests/sksl/intrinsics/AbsFloat.wgsl index 5a23cc309690..17b24f2338de 100644 --- a/tests/sksl/intrinsics/AbsFloat.wgsl +++ b/tests/sksl/intrinsics/AbsFloat.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(1.25, 0.0, 0.75, 2.25); let _skTemp0 = abs(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (1.25 == expected.x)) && all(vec2(1.25, 0.0) == expected.xy)) && all(vec3(1.25, 0.0, 0.75) == expected.xyz)) && all(vec4(1.25, 0.0, 0.75, 2.25) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/AbsInt.metal b/tests/sksl/intrinsics/AbsInt.metal index 497a660ba806..2635b9de2f38 100644 --- a/tests/sksl/intrinsics/AbsInt.metal +++ b/tests/sksl/intrinsics/AbsInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/AbsInt.wgsl b/tests/sksl/intrinsics/AbsInt.wgsl index e7715a07c452..b1517ed9a9b8 100644 --- a/tests/sksl/intrinsics/AbsInt.wgsl +++ b/tests/sksl/intrinsics/AbsInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(1, 0, 0, 2); let _skTemp0 = abs(i32(_globalUniforms.testInputs.x)); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (1 == expected.x)) && all(vec2(1, 0) == expected.xy)) && all(vec3(1, 0, 0) == expected.xyz)) && all(vec4(1, 0, 0, 2) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Acos.metal b/tests/sksl/intrinsics/Acos.metal index 128897c7bded..9c582164c012 100644 --- a/tests/sksl/intrinsics/Acos.metal +++ b/tests/sksl/intrinsics/Acos.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Acos.wgsl b/tests/sksl/intrinsics/Acos.wgsl index 0788b8a33e3e..bddf2e4dfea2 100644 --- a/tests/sksl/intrinsics/Acos.wgsl +++ b/tests/sksl/intrinsics/Acos.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = acos(_globalUniforms.inputVal.x); let _skTemp1 = acos(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Acosh.metal b/tests/sksl/intrinsics/Acosh.metal index c5ad02fe8e97..7320bdcbff5d 100644 --- a/tests/sksl/intrinsics/Acosh.metal +++ b/tests/sksl/intrinsics/Acosh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Acosh.wgsl b/tests/sksl/intrinsics/Acosh.wgsl index ae7a28b6d3f8..54e6b3ac4d9b 100644 --- a/tests/sksl/intrinsics/Acosh.wgsl +++ b/tests/sksl/intrinsics/Acosh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = acosh(_globalUniforms.inputVal.x); let _skTemp1 = acosh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0, 0.0, 1.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0, 0.0, 1.0, 2.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/All.metal b/tests/sksl/intrinsics/All.metal index 6a52d9ee23d8..37d3aea31d1a 100644 --- a/tests/sksl/intrinsics/All.metal +++ b/tests/sksl/intrinsics/All.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/All.wgsl b/tests/sksl/intrinsics/All.wgsl index 5dce07c694eb..c303d8d929f6 100644 --- a/tests/sksl/intrinsics/All.wgsl +++ b/tests/sksl/intrinsics/All.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.colorRed.xxzw); var expected: vec4 = vec4(_globalUniforms.colorRed.xyzz); @@ -22,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((_skTemp0 == expected.x) && (_skTemp1 == expected.y)) && (_skTemp2 == expected.z)) && expected.x) && (false == expected.y)) && (false == expected.z))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Any.metal b/tests/sksl/intrinsics/Any.metal index 75859c1fb776..cd4b8dc02e49 100644 --- a/tests/sksl/intrinsics/Any.metal +++ b/tests/sksl/intrinsics/Any.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Any.wgsl b/tests/sksl/intrinsics/Any.wgsl index 2a6b75687bd4..c6e0edecf8fc 100644 --- a/tests/sksl/intrinsics/Any.wgsl +++ b/tests/sksl/intrinsics/Any.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.colorGreen.xxyz); var expected: vec4 = vec4(_globalUniforms.colorGreen.xyyw); @@ -22,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((_skTemp0 == expected.x) && (_skTemp1 == expected.y)) && (_skTemp2 == expected.z)) && (false == expected.x)) && expected.y) && expected.z)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Asin.metal b/tests/sksl/intrinsics/Asin.metal index 464c457602c5..083174b3e2b5 100644 --- a/tests/sksl/intrinsics/Asin.metal +++ b/tests/sksl/intrinsics/Asin.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Asin.wgsl b/tests/sksl/intrinsics/Asin.wgsl index 550ef3d2af6e..2113149a9b1f 100644 --- a/tests/sksl/intrinsics/Asin.wgsl +++ b/tests/sksl/intrinsics/Asin.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = asin(_globalUniforms.inputVal.x); let _skTemp1 = asin(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Asinh.metal b/tests/sksl/intrinsics/Asinh.metal index 23de173ffa26..d777585110c9 100644 --- a/tests/sksl/intrinsics/Asinh.metal +++ b/tests/sksl/intrinsics/Asinh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Asinh.wgsl b/tests/sksl/intrinsics/Asinh.wgsl index c6588f20ee38..27f2eb5d0405 100644 --- a/tests/sksl/intrinsics/Asinh.wgsl +++ b/tests/sksl/intrinsics/Asinh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = asinh(_globalUniforms.inputVal.x); let _skTemp1 = asinh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0, 0.0, 1.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0, 0.0, 1.0, -1.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Atan.metal b/tests/sksl/intrinsics/Atan.metal index 8ec0418e7a14..6556c058d83b 100644 --- a/tests/sksl/intrinsics/Atan.metal +++ b/tests/sksl/intrinsics/Atan.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Atan.wgsl b/tests/sksl/intrinsics/Atan.wgsl index 566ffa512842..986baaa48c90 100644 --- a/tests/sksl/intrinsics/Atan.wgsl +++ b/tests/sksl/intrinsics/Atan.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const constVal2: vec4 = vec4(1.0); let _skTemp0 = atan(_globalUniforms.inputVal.x); @@ -28,8 +27,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected)) && (_skTemp4 == _globalUniforms.expected.x)) && all(_skTemp5 == _globalUniforms.expected.xy)) && all(_skTemp6 == _globalUniforms.expected.xyz)) && all(_skTemp7 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Atanh.metal b/tests/sksl/intrinsics/Atanh.metal index 3f67db31193c..2b7d9cbc82a3 100644 --- a/tests/sksl/intrinsics/Atanh.metal +++ b/tests/sksl/intrinsics/Atanh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Atanh.wgsl b/tests/sksl/intrinsics/Atanh.wgsl index ffb9d203caab..8efe98ce1078 100644 --- a/tests/sksl/intrinsics/Atanh.wgsl +++ b/tests/sksl/intrinsics/Atanh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = atanh(_globalUniforms.inputVal.x); let _skTemp1 = atanh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0, 0.25) == _globalUniforms.expected.xy)) && all(vec3(0.0, 0.25, 0.5) == _globalUniforms.expected.xyz)) && all(vec4(0.0, 0.25, 0.5, 1.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/BitCount.metal b/tests/sksl/intrinsics/BitCount.metal index f5dc8c09cfa0..5d7c1ad42591 100644 --- a/tests/sksl/intrinsics/BitCount.metal +++ b/tests/sksl/intrinsics/BitCount.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { int a; diff --git a/tests/sksl/intrinsics/BitCount.wgsl b/tests/sksl/intrinsics/BitCount.wgsl index f982306a8400..94922ffb6ae9 100644 --- a/tests/sksl/intrinsics/BitCount.wgsl +++ b/tests/sksl/intrinsics/BitCount.wgsl @@ -17,7 +17,7 @@ struct _GlobalUniforms { b: u32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = bitCount(_globalUniforms.a); (*_stageOut).sk_FragColor.x = f32(_skTemp0); @@ -25,9 +25,9 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.y = f32(_skTemp1); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/Ceil.metal b/tests/sksl/intrinsics/Ceil.metal index 0412d6faf9a2..60dcdd88b685 100644 --- a/tests/sksl/intrinsics/Ceil.metal +++ b/tests/sksl/intrinsics/Ceil.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Ceil.wgsl b/tests/sksl/intrinsics/Ceil.wgsl index 33ac585392cf..f0c0f811bdf2 100644 --- a/tests/sksl/intrinsics/Ceil.wgsl +++ b/tests/sksl/intrinsics/Ceil.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(-1.0, 0.0, 1.0, 3.0); let _skTemp0 = ceil(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (-1.0 == expected.x)) && all(vec2(-1.0, 0.0) == expected.xy)) && all(vec3(-1.0, 0.0, 1.0) == expected.xyz)) && all(vec4(-1.0, 0.0, 1.0, 3.0) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/ClampFloat.metal b/tests/sksl/intrinsics/ClampFloat.metal index c36a53e5e14f..71a466d85977 100644 --- a/tests/sksl/intrinsics/ClampFloat.metal +++ b/tests/sksl/intrinsics/ClampFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/ClampFloat.wgsl b/tests/sksl/intrinsics/ClampFloat.wgsl index 96b1b347b252..b7c7f849bc5d 100644 --- a/tests/sksl/intrinsics/ClampFloat.wgsl +++ b/tests/sksl/intrinsics/ClampFloat.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedA: vec4 = vec4(-1.0, 0.0, 0.75, 1.0); const clampLow: vec4 = vec4(-1.0, -2.0, -2.0, 1.0); @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (-1.0 == expectedA.x)) && all(vec2(-1.0, 0.0) == expectedA.xy)) && all(vec3(-1.0, 0.0, 0.75) == expectedA.xyz)) && all(vec4(-1.0, 0.0, 0.75, 1.0) == expectedA)) && (-1.0 == expectedB.x)) && all(vec2(-1.0, 0.0) == expectedB.xy)) && all(vec3(-1.0, 0.0, 0.5) == expectedB.xyz)) && all(vec4(-1.0, 0.0, 0.5, 2.25) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/ClampInt.metal b/tests/sksl/intrinsics/ClampInt.metal index 15112be584a0..9b81627933a8 100644 --- a/tests/sksl/intrinsics/ClampInt.metal +++ b/tests/sksl/intrinsics/ClampInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/ClampInt.wgsl b/tests/sksl/intrinsics/ClampInt.wgsl index 761e282b6656..e3826e3b6e19 100644 --- a/tests/sksl/intrinsics/ClampInt.wgsl +++ b/tests/sksl/intrinsics/ClampInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var intValues: vec4 = vec4(_globalUniforms.testInputs * 100.0); var expectedA: vec4 = vec4(-100, 0, 75, 100); @@ -31,8 +30,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (-100 == expectedA.x)) && all(vec2(-100, 0) == expectedA.xy)) && all(vec3(-100, 0, 75) == expectedA.xyz)) && all(vec4(-100, 0, 75, 100) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (-100 == expectedB.x)) && all(vec2(-100, 0) == expectedB.xy)) && all(vec3(-100, 0, 50) == expectedB.xyz)) && all(vec4(-100, 0, 50, 225) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/ClampUInt.metal b/tests/sksl/intrinsics/ClampUInt.metal index f4d3e9b35d5c..1c5469391027 100644 --- a/tests/sksl/intrinsics/ClampUInt.metal +++ b/tests/sksl/intrinsics/ClampUInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/ClampUInt.wgsl b/tests/sksl/intrinsics/ClampUInt.wgsl index 6def031245b6..98c0e200dfbc 100644 --- a/tests/sksl/intrinsics/ClampUInt.wgsl +++ b/tests/sksl/intrinsics/ClampUInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var uintValues: vec4 = vec4(_globalUniforms.testInputs * 100.0 + 200.0); var expectedA: vec4 = vec4(100u, 200u, 275u, 300u); @@ -31,8 +30,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (100u == expectedA.x)) && all(vec2(100u, 200u) == expectedA.xy)) && all(vec3(100u, 200u, 275u) == expectedA.xyz)) && all(vec4(100u, 200u, 275u, 300u) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (100u == expectedB.x)) && all(vec2(100u, 200u) == expectedB.xy)) && all(vec3(100u, 200u, 250u) == expectedB.xyz)) && all(vec4(100u, 200u, 250u, 425u) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Cos.metal b/tests/sksl/intrinsics/Cos.metal index a6ab8f0c91ab..c967805d541d 100644 --- a/tests/sksl/intrinsics/Cos.metal +++ b/tests/sksl/intrinsics/Cos.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Cos.wgsl b/tests/sksl/intrinsics/Cos.wgsl index ae0ac2c3483f..86c03ac5b169 100644 --- a/tests/sksl/intrinsics/Cos.wgsl +++ b/tests/sksl/intrinsics/Cos.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = cos(_globalUniforms.inputVal.x); let _skTemp1 = cos(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (1.0 == _globalUniforms.expected.x)) && all(vec2(1.0) == _globalUniforms.expected.xy)) && all(vec3(1.0) == _globalUniforms.expected.xyz)) && all(vec4(1.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Cosh.metal b/tests/sksl/intrinsics/Cosh.metal index 63504e189f25..820961751e04 100644 --- a/tests/sksl/intrinsics/Cosh.metal +++ b/tests/sksl/intrinsics/Cosh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Cosh.wgsl b/tests/sksl/intrinsics/Cosh.wgsl index f3e1da41b7d3..b56982506baf 100644 --- a/tests/sksl/intrinsics/Cosh.wgsl +++ b/tests/sksl/intrinsics/Cosh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = cosh(_globalUniforms.inputVal.x); let _skTemp1 = cosh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (1.0 == _globalUniforms.expected.x)) && all(vec2(1.0) == _globalUniforms.expected.xy)) && all(vec3(1.0) == _globalUniforms.expected.xyz)) && all(vec4(1.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Cross.metal b/tests/sksl/intrinsics/Cross.metal index 8830bd88c525..a4b512889cac 100644 --- a/tests/sksl/intrinsics/Cross.metal +++ b/tests/sksl/intrinsics/Cross.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float3x3 testMatrix3x3; diff --git a/tests/sksl/intrinsics/Cross.wgsl b/tests/sksl/intrinsics/Cross.wgsl index ed7637e68938..cd150f83df54 100644 --- a/tests/sksl/intrinsics/Cross.wgsl +++ b/tests/sksl/intrinsics/Cross.wgsl @@ -12,7 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { const expected1: vec3 = vec3(-3.0, 6.0, -3.0); const expected2: vec3 = vec3(6.0, -12.0, 6.0); @@ -21,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(_skTemp0 == expected1) && all(_skTemp1 == expected2))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/CrossNoInline.metal b/tests/sksl/intrinsics/CrossNoInline.metal index 3b2e3141c457..76976439b2b1 100644 --- a/tests/sksl/intrinsics/CrossNoInline.metal +++ b/tests/sksl/intrinsics/CrossNoInline.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half2 ah; diff --git a/tests/sksl/intrinsics/CrossNoInline.wgsl b/tests/sksl/intrinsics/CrossNoInline.wgsl index ed5c04330dc6..bf3be7f472a4 100644 --- a/tests/sksl/intrinsics/CrossNoInline.wgsl +++ b/tests/sksl/intrinsics/CrossNoInline.wgsl @@ -12,23 +12,19 @@ struct _GlobalUniforms { bf: vec2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn cross_length_2d_ff2f2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let a = _skParam0; - let b = _skParam1; +fn cross_length_2d_ff2f2(a: vec2, b: vec2) -> f32 { { let _skTemp0 = determinant(mat2x2(a[0], a[1], b[0], b[1])); return _skTemp0; } } -fn cross_length_2d_hh2h2(_skParam0: vec2, _skParam1: vec2) -> f32 { - let a = _skParam0; - let b = _skParam1; +fn cross_length_2d_hh2h2(a: vec2, b: vec2) -> f32 { { let _skTemp1 = determinant(mat2x2(a[0], a[1], b[0], b[1])); return _skTemp1; } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp2 = cross_length_2d_hh2h2(_globalUniforms.ah, _globalUniforms.bh); (*_stageOut).sk_FragColor.x = _skTemp2; @@ -36,8 +32,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.y = f32(_skTemp3); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/DFdx.metal b/tests/sksl/intrinsics/DFdx.metal index 2113dabfac04..87bdd23474ba 100644 --- a/tests/sksl/intrinsics/DFdx.metal +++ b/tests/sksl/intrinsics/DFdx.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/DFdx.wgsl b/tests/sksl/intrinsics/DFdx.wgsl index d307d44cac7c..dbf968cf217b 100644 --- a/tests/sksl/intrinsics/DFdx.wgsl +++ b/tests/sksl/intrinsics/DFdx.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(0.0); let _skTemp0 = dpdx(_globalUniforms.testInputs.x); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && all(_skTemp5 == vec2(1.0))) && all(_skTemp7 == vec2(0.0))) && all(_skTemp9 == vec2(1.0, 0.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/DFdy.metal b/tests/sksl/intrinsics/DFdy.metal index 9e975e396a7f..ecabf63d1b92 100644 --- a/tests/sksl/intrinsics/DFdy.metal +++ b/tests/sksl/intrinsics/DFdy.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/DFdy.wgsl b/tests/sksl/intrinsics/DFdy.wgsl index 32b5325f241e..9bf481dcc595 100644 --- a/tests/sksl/intrinsics/DFdy.wgsl +++ b/tests/sksl/intrinsics/DFdy.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(0.0); let _skTemp0 = dpdy(_globalUniforms.testInputs.x); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && all(_skTemp5 == vec2(0.0))) && all(_skTemp7 == vec2(1.0))) && all(_skTemp9 == vec2(0.0, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/DFdyNoRTFlip.metal b/tests/sksl/intrinsics/DFdyNoRTFlip.metal index 379027aaacd4..68c80750b1a8 100644 --- a/tests/sksl/intrinsics/DFdyNoRTFlip.metal +++ b/tests/sksl/intrinsics/DFdyNoRTFlip.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/DFdyNoRTFlip.wgsl b/tests/sksl/intrinsics/DFdyNoRTFlip.wgsl index 32b5325f241e..9bf481dcc595 100644 --- a/tests/sksl/intrinsics/DFdyNoRTFlip.wgsl +++ b/tests/sksl/intrinsics/DFdyNoRTFlip.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(0.0); let _skTemp0 = dpdy(_globalUniforms.testInputs.x); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && all(_skTemp5 == vec2(0.0))) && all(_skTemp7 == vec2(1.0))) && all(_skTemp9 == vec2(0.0, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Degrees.metal b/tests/sksl/intrinsics/Degrees.metal index 35e40f5ce242..1e67846aef2c 100644 --- a/tests/sksl/intrinsics/Degrees.metal +++ b/tests/sksl/intrinsics/Degrees.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testInputs; diff --git a/tests/sksl/intrinsics/Degrees.wgsl b/tests/sksl/intrinsics/Degrees.wgsl index 6b13c7e5acb3..cb1b4714aed6 100644 --- a/tests/sksl/intrinsics/Degrees.wgsl +++ b/tests/sksl/intrinsics/Degrees.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expected: vec4 = vec4(-71.61973, 0.0, 42.9718361, 128.915512); const allowedDelta: vec4 = vec4(0.05); @@ -21,18 +20,18 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp1 = abs(_skTemp0 - -71.61973); let _skTemp2 = degrees(_globalUniforms.testInputs.xy); let _skTemp3 = abs(_skTemp2 - vec2(-71.61973, 0.0)); - let _skTemp4 = all(_skTemp3 < vec2(0.05)); + let _skTemp4 = all((_skTemp3 < vec2(0.05))); let _skTemp5 = degrees(_globalUniforms.testInputs.xyz); let _skTemp6 = abs(_skTemp5 - vec3(-71.61973, 0.0, 42.9718361)); - let _skTemp7 = all(_skTemp6 < vec3(0.05)); + let _skTemp7 = all((_skTemp6 < vec3(0.05))); let _skTemp8 = degrees(_globalUniforms.testInputs); let _skTemp9 = abs(_skTemp8 - expected); - let _skTemp10 = all(_skTemp9 < allowedDelta); + let _skTemp10 = all((_skTemp9 < allowedDelta)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp1 < 0.05) && _skTemp4) && _skTemp7) && _skTemp10)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Determinant.metal b/tests/sksl/intrinsics/Determinant.metal index 28010112f222..fc6895ec4eee 100644 --- a/tests/sksl/intrinsics/Determinant.metal +++ b/tests/sksl/intrinsics/Determinant.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/Determinant.wgsl b/tests/sksl/intrinsics/Determinant.wgsl index 9a17d3304f25..083c583ca2ed 100644 --- a/tests/sksl/intrinsics/Determinant.wgsl +++ b/tests/sksl/intrinsics/Determinant.wgsl @@ -12,15 +12,14 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = determinant(_globalUniforms.testMatrix2x2); - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((_skTemp0 == -2.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp0 == -2.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Distance.metal b/tests/sksl/intrinsics/Distance.metal index ffcc933e11ef..305c2fab35ba 100644 --- a/tests/sksl/intrinsics/Distance.metal +++ b/tests/sksl/intrinsics/Distance.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 pos1; diff --git a/tests/sksl/intrinsics/Distance.wgsl b/tests/sksl/intrinsics/Distance.wgsl index eeb1866b80d8..450a7cd3b647 100644 --- a/tests/sksl/intrinsics/Distance.wgsl +++ b/tests/sksl/intrinsics/Distance.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(3.0, 3.0, 5.0, 13.0); let _skTemp0 = distance(_globalUniforms.pos1.x, _globalUniforms.pos2.x); @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && (_skTemp1 == expected.y)) && (_skTemp2 == expected.z)) && (_skTemp3 == expected.w)) && (3.0 == expected.x)) && (3.0 == expected.y)) && (5.0 == expected.z)) && (13.0 == expected.w))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Dot.metal b/tests/sksl/intrinsics/Dot.metal index 67a02135dcdc..78e64ef3930d 100644 --- a/tests/sksl/intrinsics/Dot.metal +++ b/tests/sksl/intrinsics/Dot.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4x4 testMatrix4x4; diff --git a/tests/sksl/intrinsics/Dot.wgsl b/tests/sksl/intrinsics/Dot.wgsl index bb3bda59c921..30f1ae6d2dc0 100644 --- a/tests/sksl/intrinsics/Dot.wgsl +++ b/tests/sksl/intrinsics/Dot.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputA: vec4 = _globalUniforms.testMatrix4x4[0]; var inputB: vec4 = _globalUniforms.testMatrix4x4[1]; @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((((inputA.x * inputB.x) == expected.x) && (_skTemp0 == expected.y)) && (_skTemp1 == expected.z)) && (_skTemp2 == expected.w)) && (5.0 == expected.x)) && (17.0 == expected.y)) && (38.0 == expected.z)) && (70.0 == expected.w))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Equal.metal b/tests/sksl/intrinsics/Equal.metal index 926a469b8706..e14faaa6acfe 100644 --- a/tests/sksl/intrinsics/Equal.metal +++ b/tests/sksl/intrinsics/Equal.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/Equal.wgsl b/tests/sksl/intrinsics/Equal.wgsl index 9bb876473eed..a4e1345f2e4a 100644 --- a/tests/sksl/intrinsics/Equal.wgsl +++ b/tests/sksl/intrinsics/Equal.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectTTFF: vec4 = vec4(true, true, false, false); var expectFFTT: vec4 = vec4(false, false, true, true); @@ -28,8 +28,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, (_skTemp0 || _skTemp1) || _skTemp2)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/Exp.metal b/tests/sksl/intrinsics/Exp.metal index 5bca4cffa896..85f2a416a702 100644 --- a/tests/sksl/intrinsics/Exp.metal +++ b/tests/sksl/intrinsics/Exp.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Exp.wgsl b/tests/sksl/intrinsics/Exp.wgsl index b7b2b6f966ac..771f7c171348 100644 --- a/tests/sksl/intrinsics/Exp.wgsl +++ b/tests/sksl/intrinsics/Exp.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = exp(_globalUniforms.inputVal.x); let _skTemp1 = exp(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (1.0 == _globalUniforms.expected.x)) && all(vec2(1.0) == _globalUniforms.expected.xy)) && all(vec3(1.0) == _globalUniforms.expected.xyz)) && all(vec4(1.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Exp2.metal b/tests/sksl/intrinsics/Exp2.metal index d866b9a1d040..7b54db5a1444 100644 --- a/tests/sksl/intrinsics/Exp2.metal +++ b/tests/sksl/intrinsics/Exp2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Exp2.wgsl b/tests/sksl/intrinsics/Exp2.wgsl index 444c0436f1c6..7561ab18f7a0 100644 --- a/tests/sksl/intrinsics/Exp2.wgsl +++ b/tests/sksl/intrinsics/Exp2.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = exp2(_globalUniforms.inputVal.x); let _skTemp1 = exp2(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (1.0 == _globalUniforms.expected.x)) && all(vec2(1.0, 2.0) == _globalUniforms.expected.xy)) && all(vec3(1.0, 2.0, 4.0) == _globalUniforms.expected.xyz)) && all(vec4(1.0, 2.0, 4.0, 8.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/FaceForward.metal b/tests/sksl/intrinsics/FaceForward.metal index 5da2370efa80..591b3062d226 100644 --- a/tests/sksl/intrinsics/FaceForward.metal +++ b/tests/sksl/intrinsics/FaceForward.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 N; diff --git a/tests/sksl/intrinsics/FaceForward.wgsl b/tests/sksl/intrinsics/FaceForward.wgsl index 3d4c61529dd8..039c53cc67b0 100644 --- a/tests/sksl/intrinsics/FaceForward.wgsl +++ b/tests/sksl/intrinsics/FaceForward.wgsl @@ -14,8 +14,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { let _skTemp0 = 1e+30; let _skTemp1 = select(-1.0, 1.0, _skTemp0 * 1e+30 < 0); @@ -41,8 +40,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp9 == expectedNeg.x) && all(_skTemp10 == expectedNeg.xy)) && all(_skTemp11 == expectedPos.xyz)) && all(_skTemp12 == expectedPos)) && (-1.0 == expectedNeg.x)) && all(vec2(-1.0, -2.0) == expectedNeg.xy)) && all(vec3(1.0, 2.0, 3.0) == expectedPos.xyz)) && all(vec4(1.0, 2.0, 3.0, 4.0) == expectedPos))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/FindLSB.metal b/tests/sksl/intrinsics/FindLSB.metal index 3ee8bc2e191b..a37fb411b5df 100644 --- a/tests/sksl/intrinsics/FindLSB.metal +++ b/tests/sksl/intrinsics/FindLSB.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { int a; diff --git a/tests/sksl/intrinsics/FindLSB.wgsl b/tests/sksl/intrinsics/FindLSB.wgsl index a8702c7318ee..565203d10c74 100644 --- a/tests/sksl/intrinsics/FindLSB.wgsl +++ b/tests/sksl/intrinsics/FindLSB.wgsl @@ -17,7 +17,7 @@ struct _GlobalUniforms { b: u32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = findLSB(_globalUniforms.a); (*_stageOut).sk_FragColor.x = f32(_skTemp0); @@ -25,9 +25,9 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.y = f32(_skTemp1); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/FindMSB.metal b/tests/sksl/intrinsics/FindMSB.metal index 3c8531a46b0a..f38f25010bfe 100644 --- a/tests/sksl/intrinsics/FindMSB.metal +++ b/tests/sksl/intrinsics/FindMSB.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { int a; diff --git a/tests/sksl/intrinsics/FindMSB.wgsl b/tests/sksl/intrinsics/FindMSB.wgsl index 138d447e61bc..7f7b5a1b6466 100644 --- a/tests/sksl/intrinsics/FindMSB.wgsl +++ b/tests/sksl/intrinsics/FindMSB.wgsl @@ -17,7 +17,7 @@ struct _GlobalUniforms { b: u32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = findMSB(_globalUniforms.a); (*_stageOut).sk_FragColor.x = f32(_skTemp0); @@ -25,9 +25,9 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.y = f32(_skTemp1); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/FloatBitsToInt.metal b/tests/sksl/intrinsics/FloatBitsToInt.metal index c5e960b0a3d8..f67c4e3e4534 100644 --- a/tests/sksl/intrinsics/FloatBitsToInt.metal +++ b/tests/sksl/intrinsics/FloatBitsToInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/FloatBitsToInt.wgsl b/tests/sksl/intrinsics/FloatBitsToInt.wgsl index a4ed01ceac9a..31c746f13d69 100644 --- a/tests/sksl/intrinsics/FloatBitsToInt.wgsl +++ b/tests/sksl/intrinsics/FloatBitsToInt.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'floatBitsToInt' +error: :19:20 error: unresolved call target 'floatBitsToInt' let _skTemp0 = floatBitsToInt(inputVal.x); ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) * vec4(1.0, 1.0, -1.0, -1.0); const expectedB: vec4 = vec4(1065353216, 1073741824, -1069547520, -1065353216); @@ -31,9 +30,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp0 == 1065353216) && all(_skTemp1 == vec2(1065353216, 1073741824))) && all(_skTemp2 == vec3(1065353216, 1073741824, -1069547520))) && all(_skTemp3 == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/FloatBitsToUint.metal b/tests/sksl/intrinsics/FloatBitsToUint.metal index be57dbc8eb81..0b1b8a3c173a 100644 --- a/tests/sksl/intrinsics/FloatBitsToUint.metal +++ b/tests/sksl/intrinsics/FloatBitsToUint.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/FloatBitsToUint.wgsl b/tests/sksl/intrinsics/FloatBitsToUint.wgsl index f0bd058d4119..2cf5cf570814 100644 --- a/tests/sksl/intrinsics/FloatBitsToUint.wgsl +++ b/tests/sksl/intrinsics/FloatBitsToUint.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'floatBitsToUint' +error: :19:20 error: unresolved call target 'floatBitsToUint' let _skTemp0 = floatBitsToUint(inputVal.x); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) * vec4(1.0, 1.0, -1.0, -1.0); const expectedB: vec4 = vec4(1065353216u, 1073741824u, 3225419776u, 3229614080u); @@ -31,9 +30,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp0 == 1065353216u) && all(_skTemp1 == vec2(1065353216u, 1073741824u))) && all(_skTemp2 == vec3(1065353216u, 1073741824u, 3225419776u))) && all(_skTemp3 == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Floor.metal b/tests/sksl/intrinsics/Floor.metal index 7d8baf867efe..7059d10af153 100644 --- a/tests/sksl/intrinsics/Floor.metal +++ b/tests/sksl/intrinsics/Floor.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Floor.wgsl b/tests/sksl/intrinsics/Floor.wgsl index 157cf0724fb0..8c6363af7e9c 100644 --- a/tests/sksl/intrinsics/Floor.wgsl +++ b/tests/sksl/intrinsics/Floor.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(-2.0, 0.0, 0.0, 2.0); let _skTemp0 = floor(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (-2.0 == expected.x)) && all(vec2(-2.0, 0.0) == expected.xy)) && all(vec3(-2.0, 0.0, 0.0) == expected.xyz)) && all(vec4(-2.0, 0.0, 0.0, 2.0) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Fma.metal b/tests/sksl/intrinsics/Fma.metal index 1dd486339a0f..8c31a02efac0 100644 --- a/tests/sksl/intrinsics/Fma.metal +++ b/tests/sksl/intrinsics/Fma.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Fma.wgsl b/tests/sksl/intrinsics/Fma.wgsl index b679173aa1ab..dcc969b27beb 100644 --- a/tests/sksl/intrinsics/Fma.wgsl +++ b/tests/sksl/intrinsics/Fma.wgsl @@ -33,8 +33,7 @@ struct _GlobalUniforms { testArray: array, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var one: f32 = _globalUniforms.testArray[0]; var two: f32 = _globalUniforms.testArray[1]; @@ -46,9 +45,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((_skTemp0 == 5.0) && (_skTemp1 == 17.0))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Fract.metal b/tests/sksl/intrinsics/Fract.metal index 60a211859f2d..dab5a8f5277a 100644 --- a/tests/sksl/intrinsics/Fract.metal +++ b/tests/sksl/intrinsics/Fract.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testInputs; diff --git a/tests/sksl/intrinsics/Fract.wgsl b/tests/sksl/intrinsics/Fract.wgsl index 80ff66f95d60..6e0fa66f1187 100644 --- a/tests/sksl/intrinsics/Fract.wgsl +++ b/tests/sksl/intrinsics/Fract.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expected: vec4 = vec4(0.75, 0.0, 0.75, 0.25); let _skTemp0 = fract(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp0 == 0.75) && all(_skTemp1 == vec2(0.75, 0.0))) && all(_skTemp2 == vec3(0.75, 0.0, 0.75))) && all(_skTemp3 == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Frexp.metal b/tests/sksl/intrinsics/Frexp.metal index 5d1f252e5635..047a4b2a48b0 100644 --- a/tests/sksl/intrinsics/Frexp.metal +++ b/tests/sksl/intrinsics/Frexp.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Frexp.wgsl b/tests/sksl/intrinsics/Frexp.wgsl index b03c4ebbfdf0..e9dc1a5285b4 100644 --- a/tests/sksl/intrinsics/Frexp.wgsl +++ b/tests/sksl/intrinsics/Frexp.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :21:20 error: no matching call to frexp(f32, i32) +error: :20:20 error: no matching call to frexp(f32, i32) 2 candidate functions: frexp(T) -> __frexp_result_T where: T is abstract-float, f32 or f16 @@ -23,8 +23,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var value: vec4 = vec4(_globalUniforms.colorGreen.yyyy * 6.0); var _0_exp: vec4; @@ -46,9 +45,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp4)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Fwidth.metal b/tests/sksl/intrinsics/Fwidth.metal index a4c890732b99..c675f17e3ca9 100644 --- a/tests/sksl/intrinsics/Fwidth.metal +++ b/tests/sksl/intrinsics/Fwidth.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Fwidth.wgsl b/tests/sksl/intrinsics/Fwidth.wgsl index 2eb175e8cac0..fee74cab730c 100644 --- a/tests/sksl/intrinsics/Fwidth.wgsl +++ b/tests/sksl/intrinsics/Fwidth.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(0.0); let _skTemp0 = dpdx(_globalUniforms.testInputs.x); @@ -33,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && all(_skTemp5 == vec2(1.0))) && all(_skTemp7 == vec2(1.0, 0.0))) && all(_skTemp9 == vec2(1.0))) && all(_skTemp11 == vec2(0.0, 1.0))) && all(_skTemp13 == vec2(1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/GreaterThan.metal b/tests/sksl/intrinsics/GreaterThan.metal index 1e7b7ad571a5..95f7c3dd88b5 100644 --- a/tests/sksl/intrinsics/GreaterThan.metal +++ b/tests/sksl/intrinsics/GreaterThan.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/GreaterThan.wgsl b/tests/sksl/intrinsics/GreaterThan.wgsl index d7af0df230d5..a42718aaa681 100644 --- a/tests/sksl/intrinsics/GreaterThan.wgsl +++ b/tests/sksl/intrinsics/GreaterThan.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectFFTT: vec4 = vec4(false, false, true, true); var expectTTFF: vec4 = vec4(true, true, false, false); @@ -26,8 +26,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, _skTemp0 || _skTemp1)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/GreaterThanEqual.metal b/tests/sksl/intrinsics/GreaterThanEqual.metal index 3c32f96e6b38..a90cb9ea6599 100644 --- a/tests/sksl/intrinsics/GreaterThanEqual.metal +++ b/tests/sksl/intrinsics/GreaterThanEqual.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/GreaterThanEqual.wgsl b/tests/sksl/intrinsics/GreaterThanEqual.wgsl index 82aff7ec971b..dd26bb954ce6 100644 --- a/tests/sksl/intrinsics/GreaterThanEqual.wgsl +++ b/tests/sksl/intrinsics/GreaterThanEqual.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectFFTT: vec4 = vec4(false, false, true, true); var expectTTFF: vec4 = vec4(true, true, false, false); @@ -26,8 +26,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, _skTemp0 || _skTemp1)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/IntBitsToFloat.metal b/tests/sksl/intrinsics/IntBitsToFloat.metal index da4dc30ee4c9..745228e47550 100644 --- a/tests/sksl/intrinsics/IntBitsToFloat.metal +++ b/tests/sksl/intrinsics/IntBitsToFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/IntBitsToFloat.wgsl b/tests/sksl/intrinsics/IntBitsToFloat.wgsl index 2f3e5ef51035..4dc17e97181f 100644 --- a/tests/sksl/intrinsics/IntBitsToFloat.wgsl +++ b/tests/sksl/intrinsics/IntBitsToFloat.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'intBitsToFloat' +error: :19:20 error: unresolved call target 'intBitsToFloat' let _skTemp0 = intBitsToFloat(expectedB.x); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) * vec4(1.0, 1.0, -1.0, -1.0); var expectedB: vec4 = vec4(1065353216, 1073741824, -1069547520, -1065353216); @@ -31,9 +30,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((inputVal.x == _skTemp0) && all(inputVal.xy == _skTemp1)) && all(inputVal.xyz == _skTemp2)) && all(inputVal == _skTemp3))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Inverse.metal b/tests/sksl/intrinsics/Inverse.metal index 0bb34d8ffcb7..74af1c8bd075 100644 --- a/tests/sksl/intrinsics/Inverse.metal +++ b/tests/sksl/intrinsics/Inverse.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Inverse.wgsl b/tests/sksl/intrinsics/Inverse.wgsl index 124cb3db6e8b..ea8e35c589c8 100644 --- a/tests/sksl/intrinsics/Inverse.wgsl +++ b/tests/sksl/intrinsics/Inverse.wgsl @@ -61,8 +61,7 @@ a00*b09 - a01*b07 + a02*b06, a31*b01 - a30*b03 - a32*b00, a20*b03 - a21*b01 + a22*b00) * (1/det); } -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { const matrix2x2: mat2x2 = mat2x2(1.0, 2.0, 3.0, 4.0); var inv2x2: mat2x2 = mat2x2(-2.0, 1.0, 1.5, -0.5); @@ -75,17 +74,19 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp3 = mat3x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0); let _skTemp4 = mat3_inverse(_skTemp3); let _skTemp5 = _skTemp4; - let _skTemp6 = mat2_inverse(matrix2x2 + mat2x2(Zero, Zero, Zero, Zero)); + let _skTemp6 = mat2_inverse(mat2x2(matrix2x2[0] + Zero, matrix2x2[1] + Zero)); let _skTemp7 = _skTemp6; - let _skTemp8 = mat3_inverse(mat3x3(1.0, 2.0, 3.0, 0.0, 1.0, 4.0, 5.0, 6.0, 0.0) + mat3x3(Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero)); - let _skTemp9 = _skTemp8; - let _skTemp10 = mat4_inverse(mat4x4(1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 1.0, 2.0, 0.0, 1.0, 4.0) + mat4x4(Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero, Zero)); - let _skTemp11 = _skTemp10; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((all(_skTemp0[0] == inv2x2[0]) && all(_skTemp0[1] == inv2x2[1])) && (all(_skTemp1[0] == inv3x3[0]) && all(_skTemp1[1] == inv3x3[1]) && all(_skTemp1[2] == inv3x3[2]))) && (all(_skTemp2[0] == inv4x4[0]) && all(_skTemp2[1] == inv4x4[1]) && all(_skTemp2[2] == inv4x4[2]) && all(_skTemp2[3] == inv4x4[3]))) && (any(_skTemp5[0] != inv3x3[0]) || any(_skTemp5[1] != inv3x3[1]) || any(_skTemp5[2] != inv3x3[2]))) && (all(_skTemp7[0] == inv2x2[0]) && all(_skTemp7[1] == inv2x2[1]))) && (all(_skTemp9[0] == inv3x3[0]) && all(_skTemp9[1] == inv3x3[1]) && all(_skTemp9[2] == inv3x3[2]))) && (all(_skTemp11[0] == inv4x4[0]) && all(_skTemp11[1] == inv4x4[1]) && all(_skTemp11[2] == inv4x4[2]) && all(_skTemp11[3] == inv4x4[3])))); + let _skTemp8 = mat3x3(1.0, 2.0, 3.0, 0.0, 1.0, 4.0, 5.0, 6.0, 0.0); + let _skTemp9 = mat3_inverse(mat3x3(_skTemp8[0] + Zero, _skTemp8[1] + Zero, _skTemp8[2] + Zero)); + let _skTemp10 = _skTemp9; + let _skTemp11 = mat4x4(1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 1.0, 2.0, 0.0, 1.0, 4.0); + let _skTemp12 = mat4_inverse(mat4x4(_skTemp11[0] + Zero, _skTemp11[1] + Zero, _skTemp11[2] + Zero, _skTemp11[3] + Zero)); + let _skTemp13 = _skTemp12; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((all(_skTemp0[0] == inv2x2[0]) && all(_skTemp0[1] == inv2x2[1])) && (all(_skTemp1[0] == inv3x3[0]) && all(_skTemp1[1] == inv3x3[1]) && all(_skTemp1[2] == inv3x3[2]))) && (all(_skTemp2[0] == inv4x4[0]) && all(_skTemp2[1] == inv4x4[1]) && all(_skTemp2[2] == inv4x4[2]) && all(_skTemp2[3] == inv4x4[3]))) && (any(_skTemp5[0] != inv3x3[0]) || any(_skTemp5[1] != inv3x3[1]) || any(_skTemp5[2] != inv3x3[2]))) && (all(_skTemp7[0] == inv2x2[0]) && all(_skTemp7[1] == inv2x2[1]))) && (all(_skTemp10[0] == inv3x3[0]) && all(_skTemp10[1] == inv3x3[1]) && all(_skTemp10[2] == inv3x3[2]))) && (all(_skTemp13[0] == inv4x4[0]) && all(_skTemp13[1] == inv4x4[1]) && all(_skTemp13[2] == inv4x4[2]) && all(_skTemp13[3] == inv4x4[3])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Inversesqrt.metal b/tests/sksl/intrinsics/Inversesqrt.metal index 2c3076612e5a..5bfa7d0296b2 100644 --- a/tests/sksl/intrinsics/Inversesqrt.metal +++ b/tests/sksl/intrinsics/Inversesqrt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Inversesqrt.wgsl b/tests/sksl/intrinsics/Inversesqrt.wgsl index e01d3d1d66f7..d06110850306 100644 --- a/tests/sksl/intrinsics/Inversesqrt.wgsl +++ b/tests/sksl/intrinsics/Inversesqrt.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const negativeVal: vec4 = vec4(-1.0, -4.0, -16.0, -64.0); let _skTemp0 = inverseSqrt(_globalUniforms.inputVal.x); @@ -32,8 +31,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (1.0 == _globalUniforms.expected.x)) && all(vec2(1.0, 0.5) == _globalUniforms.expected.xy)) && all(vec3(1.0, 0.5, 0.25) == _globalUniforms.expected.xyz)) && all(vec4(1.0, 0.5, 0.25, 0.125) == _globalUniforms.expected)) && (_skTemp5 == _globalUniforms.expected.x)) && all(_skTemp7 == _globalUniforms.expected.xy)) && all(_skTemp9 == _globalUniforms.expected.xyz)) && all(_skTemp11 == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/IsInf.metal b/tests/sksl/intrinsics/IsInf.metal index 205c5d1ee541..9a2f7ef92aec 100644 --- a/tests/sksl/intrinsics/IsInf.metal +++ b/tests/sksl/intrinsics/IsInf.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/IsInf.wgsl b/tests/sksl/intrinsics/IsInf.wgsl index 62d48a809ae5..00ed555e6053 100644 --- a/tests/sksl/intrinsics/IsInf.wgsl +++ b/tests/sksl/intrinsics/IsInf.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'isinf' +error: :19:20 error: unresolved call target 'isinf' let _skTemp0 = isinf(infiniteValue.x); ^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var infiniteValue: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) / _globalUniforms.colorGreen.x; var finiteValue: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) / _globalUniforms.colorGreen.y; @@ -41,9 +40,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((_skTemp0 && _skTemp2) && _skTemp4) && _skTemp6) && (!_skTemp7)) && (!_skTemp9)) && (!_skTemp11)) && (!_skTemp13))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/IsNan.metal b/tests/sksl/intrinsics/IsNan.metal index d771d0bec7d3..b94f9a4f8f7e 100644 --- a/tests/sksl/intrinsics/IsNan.metal +++ b/tests/sksl/intrinsics/IsNan.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/IsNan.wgsl b/tests/sksl/intrinsics/IsNan.wgsl index a43b6e3ea366..19175101666e 100644 --- a/tests/sksl/intrinsics/IsNan.wgsl +++ b/tests/sksl/intrinsics/IsNan.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'isnan' +error: :19:20 error: unresolved call target 'isnan' let _skTemp0 = isnan(valueIsNaN.x); ^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var valueIsNaN: vec4 = 0.0 / _globalUniforms.testInputs.yyyy; var valueIsNumber: vec4 = 1.0 / _globalUniforms.testInputs; @@ -41,9 +40,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((_skTemp0 && _skTemp2) && _skTemp4) && _skTemp6) && (!_skTemp7)) && (!_skTemp9)) && (!_skTemp11)) && (!_skTemp13))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Ldexp.metal b/tests/sksl/intrinsics/Ldexp.metal index 1179f1bbd8ff..0c30d76d1cd7 100644 --- a/tests/sksl/intrinsics/Ldexp.metal +++ b/tests/sksl/intrinsics/Ldexp.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float a; diff --git a/tests/sksl/intrinsics/Ldexp.wgsl b/tests/sksl/intrinsics/Ldexp.wgsl index f19abfd6861a..ac681777fddb 100644 --- a/tests/sksl/intrinsics/Ldexp.wgsl +++ b/tests/sksl/intrinsics/Ldexp.wgsl @@ -10,14 +10,14 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; var b: i32; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = ldexp(_globalUniforms.a, b); (*_stageOut).sk_FragColor.x = f32(_skTemp0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/Length.metal b/tests/sksl/intrinsics/Length.metal index f99030a36187..9dc85d85d0de 100644 --- a/tests/sksl/intrinsics/Length.metal +++ b/tests/sksl/intrinsics/Length.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testMatrix2x2; diff --git a/tests/sksl/intrinsics/Length.wgsl b/tests/sksl/intrinsics/Length.wgsl index f304fff6a3d4..633712b53446 100644 --- a/tests/sksl/intrinsics/Length.wgsl +++ b/tests/sksl/intrinsics/Length.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = _globalUniforms.testMatrix2x2 + vec4(2.0, -2.0, 1.0, 8.0); var expected: vec4 = vec4(3.0, 3.0, 5.0, 13.0); @@ -33,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp1 < allowedDelta) && (_skTemp3 < allowedDelta)) && (_skTemp5 < allowedDelta)) && (_skTemp7 < allowedDelta)) && (_skTemp8 < allowedDelta)) && (_skTemp9 < allowedDelta)) && (_skTemp10 < allowedDelta)) && (_skTemp11 < allowedDelta))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/LessThan.metal b/tests/sksl/intrinsics/LessThan.metal index b8afa09004e0..2aee3ac9e776 100644 --- a/tests/sksl/intrinsics/LessThan.metal +++ b/tests/sksl/intrinsics/LessThan.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/LessThan.wgsl b/tests/sksl/intrinsics/LessThan.wgsl index a0ccd4f4a6ee..56bbda546dfd 100644 --- a/tests/sksl/intrinsics/LessThan.wgsl +++ b/tests/sksl/intrinsics/LessThan.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectTTFF: vec4 = vec4(true, true, false, false); var expectFFTT: vec4 = vec4(false, false, true, true); @@ -26,8 +26,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, _skTemp0 || _skTemp1)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/LessThanEqual.metal b/tests/sksl/intrinsics/LessThanEqual.metal index 7653c44d76b5..cf426f64c065 100644 --- a/tests/sksl/intrinsics/LessThanEqual.metal +++ b/tests/sksl/intrinsics/LessThanEqual.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/LessThanEqual.wgsl b/tests/sksl/intrinsics/LessThanEqual.wgsl index 0b3322ce99fb..3928fdf52fdf 100644 --- a/tests/sksl/intrinsics/LessThanEqual.wgsl +++ b/tests/sksl/intrinsics/LessThanEqual.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectTTFF: vec4 = vec4(true, true, false, false); var expectFFTT: vec4 = vec4(false, false, true, true); @@ -26,8 +26,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, _skTemp0 || _skTemp1)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/Log.metal b/tests/sksl/intrinsics/Log.metal index a9f404a3f493..84fe7864c562 100644 --- a/tests/sksl/intrinsics/Log.metal +++ b/tests/sksl/intrinsics/Log.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Log.wgsl b/tests/sksl/intrinsics/Log.wgsl index 5f7d8e3ef265..532dfb688c06 100644 --- a/tests/sksl/intrinsics/Log.wgsl +++ b/tests/sksl/intrinsics/Log.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = log(_globalUniforms.inputVal.x); let _skTemp1 = log(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Log2.metal b/tests/sksl/intrinsics/Log2.metal index 3747dec18ce4..a845f7427af3 100644 --- a/tests/sksl/intrinsics/Log2.metal +++ b/tests/sksl/intrinsics/Log2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Log2.wgsl b/tests/sksl/intrinsics/Log2.wgsl index 238ef9db88fe..d35519260ae3 100644 --- a/tests/sksl/intrinsics/Log2.wgsl +++ b/tests/sksl/intrinsics/Log2.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = log2(_globalUniforms.inputVal.x); let _skTemp1 = log2(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0, 1.0) == _globalUniforms.expected.xy)) && all(vec3(0.0, 1.0, 2.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0, 1.0, 2.0, 3.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MatrixCompMultES2.metal b/tests/sksl/intrinsics/MatrixCompMultES2.metal index e1aaff80df52..9bac78e9b2ab 100644 --- a/tests/sksl/intrinsics/MatrixCompMultES2.metal +++ b/tests/sksl/intrinsics/MatrixCompMultES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/MatrixCompMultES2.wgsl b/tests/sksl/intrinsics/MatrixCompMultES2.wgsl index 81a08f7f7601..9fb8d7ed2dfe 100644 --- a/tests/sksl/intrinsics/MatrixCompMultES2.wgsl +++ b/tests/sksl/intrinsics/MatrixCompMultES2.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { testMatrix3x3: mat3x3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var h22: mat2x2 = mat2x2(1000000.0, 1000000.0, 1000000.0, 1000000.0); const hugeM22: mat2x2 = mat2x2(1e+30, 1e+30, 1e+30, 1e+30); @@ -34,8 +33,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((all(h22[0] == _skTemp6[0]) && all(h22[1] == _skTemp6[1])) && (all(f22[0] == _skTemp7[0]) && all(f22[1] == _skTemp7[1]))) && (all(h33[0] == _skTemp8[0]) && all(h33[1] == _skTemp8[1]) && all(h33[2] == _skTemp8[2])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MatrixCompMultES3.metal b/tests/sksl/intrinsics/MatrixCompMultES3.metal index 1bafd80d0c5b..098b64560c95 100644 --- a/tests/sksl/intrinsics/MatrixCompMultES3.metal +++ b/tests/sksl/intrinsics/MatrixCompMultES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/MatrixCompMultES3.wgsl b/tests/sksl/intrinsics/MatrixCompMultES3.wgsl index c7f89ffbe009..052036e9f177 100644 --- a/tests/sksl/intrinsics/MatrixCompMultES3.wgsl +++ b/tests/sksl/intrinsics/MatrixCompMultES3.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = mat2x4(9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0); let _skTemp1 = mat2x4(_globalUniforms.colorRed[0], _globalUniforms.colorRed[1], _globalUniforms.colorRed[2], _globalUniforms.colorRed[3], _globalUniforms.colorGreen[0], _globalUniforms.colorGreen[1], _globalUniforms.colorGreen[2], _globalUniforms.colorGreen[3]); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((all(h24[0] == _skTemp6[0]) && all(h24[1] == _skTemp6[1])) && (all(h42[0] == _skTemp7[0]) && all(h42[1] == _skTemp7[1]) && all(h42[2] == _skTemp7[2]) && all(h42[3] == _skTemp7[3]))) && (all(f43[0] == _skTemp8[0]) && all(f43[1] == _skTemp8[1]) && all(f43[2] == _skTemp8[2]) && all(f43[3] == _skTemp8[3])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MaxFloat.metal b/tests/sksl/intrinsics/MaxFloat.metal index 7ab098a03b77..c2e92dac51a7 100644 --- a/tests/sksl/intrinsics/MaxFloat.metal +++ b/tests/sksl/intrinsics/MaxFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/MaxFloat.wgsl b/tests/sksl/intrinsics/MaxFloat.wgsl index 40b4651980ee..6bd6df43c78e 100644 --- a/tests/sksl/intrinsics/MaxFloat.wgsl +++ b/tests/sksl/intrinsics/MaxFloat.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedA: vec4 = vec4(0.5, 0.5, 0.75, 2.25); var expectedB: vec4 = vec4(0.0, 1.0, 0.75, 2.25); @@ -28,8 +27,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (0.5 == expectedA.x)) && all(vec2(0.5) == expectedA.xy)) && all(vec3(0.5, 0.5, 0.75) == expectedA.xyz)) && all(vec4(0.5, 0.5, 0.75, 2.25) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (0.0 == expectedB.x)) && all(vec2(0.0, 1.0) == expectedB.xy)) && all(vec3(0.0, 1.0, 0.75) == expectedB.xyz)) && all(vec4(0.0, 1.0, 0.75, 2.25) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MaxInt.metal b/tests/sksl/intrinsics/MaxInt.metal index 988f53ba9161..dae14a326521 100644 --- a/tests/sksl/intrinsics/MaxInt.metal +++ b/tests/sksl/intrinsics/MaxInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/MaxInt.wgsl b/tests/sksl/intrinsics/MaxInt.wgsl index 441ad2d29865..5c92a8dd933b 100644 --- a/tests/sksl/intrinsics/MaxInt.wgsl +++ b/tests/sksl/intrinsics/MaxInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var intValues: vec4 = vec4(_globalUniforms.testInputs * 100.0); var intGreen: vec4 = vec4(_globalUniforms.colorGreen * 100.0); @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (50 == expectedA.x)) && all(vec2(50) == expectedA.xy)) && all(vec3(50, 50, 75) == expectedA.xyz)) && all(vec4(50, 50, 75, 225) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (0 == expectedB.x)) && all(vec2(0, 100) == expectedB.xy)) && all(vec3(0, 100, 75) == expectedB.xyz)) && all(vec4(0, 100, 75, 225) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MaxUint.metal b/tests/sksl/intrinsics/MaxUint.metal index 9801614d4ce2..24f28f5be648 100644 --- a/tests/sksl/intrinsics/MaxUint.metal +++ b/tests/sksl/intrinsics/MaxUint.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/MaxUint.wgsl b/tests/sksl/intrinsics/MaxUint.wgsl index 1a630d7cee1b..df298f487388 100644 --- a/tests/sksl/intrinsics/MaxUint.wgsl +++ b/tests/sksl/intrinsics/MaxUint.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = abs(_globalUniforms.testInputs); var uintValues: vec4 = vec4(_skTemp0 * 100.0); @@ -31,8 +30,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp1 == expectedA.x) && all(_skTemp2 == expectedA.xy)) && all(_skTemp3 == expectedA.xyz)) && all(_skTemp4 == expectedA)) && (125u == expectedA.x)) && all(vec2(125u, 80u) == expectedA.xy)) && all(vec3(125u, 80u, 80u) == expectedA.xyz)) && all(vec4(125u, 80u, 80u, 225u) == expectedA)) && (_skTemp5 == expectedB.x)) && all(_skTemp6 == expectedB.xy)) && all(_skTemp7 == expectedB.xyz)) && all(_skTemp8 == expectedB)) && (125u == expectedB.x)) && all(vec2(125u, 100u) == expectedB.xy)) && all(vec3(125u, 100u, 75u) == expectedB.xyz)) && all(vec4(125u, 100u, 75u, 225u) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MinFloat.metal b/tests/sksl/intrinsics/MinFloat.metal index cc5cc38f9262..c9ae739bebb6 100644 --- a/tests/sksl/intrinsics/MinFloat.metal +++ b/tests/sksl/intrinsics/MinFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testInputs; diff --git a/tests/sksl/intrinsics/MinFloat.wgsl b/tests/sksl/intrinsics/MinFloat.wgsl index f9387488b424..64dc5e5ef88b 100644 --- a/tests/sksl/intrinsics/MinFloat.wgsl +++ b/tests/sksl/intrinsics/MinFloat.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedA: vec4 = vec4(-1.25, 0.0, 0.5, 0.5); var expectedB: vec4 = vec4(-1.25, 0.0, 0.0, 1.0); @@ -28,8 +27,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (-1.25 == expectedA.x)) && all(vec2(-1.25, 0.0) == expectedA.xy)) && all(vec3(-1.25, 0.0, 0.5) == expectedA.xyz)) && all(vec4(-1.25, 0.0, 0.5, 0.5) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (-1.25 == expectedB.x)) && all(vec2(-1.25, 0.0) == expectedB.xy)) && all(vec3(-1.25, 0.0, 0.0) == expectedB.xyz)) && all(vec4(-1.25, 0.0, 0.0, 1.0) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MinInt.metal b/tests/sksl/intrinsics/MinInt.metal index 6b9f2b335c01..f72f93a80c1e 100644 --- a/tests/sksl/intrinsics/MinInt.metal +++ b/tests/sksl/intrinsics/MinInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/MinInt.wgsl b/tests/sksl/intrinsics/MinInt.wgsl index cb4a7cbf3e17..5aa5098f1310 100644 --- a/tests/sksl/intrinsics/MinInt.wgsl +++ b/tests/sksl/intrinsics/MinInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var intValues: vec4 = vec4(_globalUniforms.testInputs * 100.0); var intGreen: vec4 = vec4(_globalUniforms.colorGreen * 100.0); @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (-125 == expectedA.x)) && all(vec2(-125, 0) == expectedA.xy)) && all(vec3(-125, 0, 50) == expectedA.xyz)) && all(vec4(-125, 0, 50, 50) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (-125 == expectedB.x)) && all(vec2(-125, 0) == expectedB.xy)) && all(vec3(-125, 0, 0) == expectedB.xyz)) && all(vec4(-125, 0, 0, 100) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MinUint.metal b/tests/sksl/intrinsics/MinUint.metal index ca11638fe5d4..b79ab66a42a6 100644 --- a/tests/sksl/intrinsics/MinUint.metal +++ b/tests/sksl/intrinsics/MinUint.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/MinUint.wgsl b/tests/sksl/intrinsics/MinUint.wgsl index 2d991335bda3..6ff4aca6ffa4 100644 --- a/tests/sksl/intrinsics/MinUint.wgsl +++ b/tests/sksl/intrinsics/MinUint.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = abs(_globalUniforms.testInputs); var uintValues: vec4 = vec4(_skTemp0 * 100.0); @@ -31,8 +30,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp1 == expectedA.x) && all(_skTemp2 == expectedA.xy)) && all(_skTemp3 == expectedA.xyz)) && all(_skTemp4 == expectedA)) && (50u == expectedA.x)) && all(vec2(50u, 0u) == expectedA.xy)) && all(vec3(50u, 0u, 50u) == expectedA.xyz)) && all(vec4(50u, 0u, 50u, 50u) == expectedA)) && (_skTemp5 == expectedB.x)) && all(_skTemp6 == expectedB.xy)) && all(_skTemp7 == expectedB.xyz)) && all(_skTemp8 == expectedB)) && (0u == expectedB.x)) && all(vec2(0u) == expectedB.xy)) && all(vec3(0u) == expectedB.xyz)) && all(vec4(0u, 0u, 0u, 100u) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MixBool.metal b/tests/sksl/intrinsics/MixBool.metal index e88d3a9bac39..42b4a1ee2580 100644 --- a/tests/sksl/intrinsics/MixBool.metal +++ b/tests/sksl/intrinsics/MixBool.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/MixBool.wgsl b/tests/sksl/intrinsics/MixBool.wgsl index 558bbe839a5c..ac51271c226a 100644 --- a/tests/sksl/intrinsics/MixBool.wgsl +++ b/tests/sksl/intrinsics/MixBool.wgsl @@ -14,8 +14,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var intGreen: vec4 = vec4(_globalUniforms.colorGreen * 100.0); var intRed: vec4 = vec4(_globalUniforms.colorRed * 100.0); @@ -38,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((((((((((((((((((_skTemp0 == intGreen.x) && all(_skTemp1 == intGreen.xy)) && all(_skTemp2 == intGreen.xyz)) && all(_skTemp3 == intGreen)) && (_skTemp4 == intRed.x)) && all(_skTemp5 == intRed.xy)) && all(_skTemp6 == intRed.xyz)) && all(_skTemp7 == intRed)) && (0 == intGreen.x)) && all(vec2(0, 100) == intGreen.xy)) && all(vec3(0, 100, 0) == intGreen.xyz)) && all(vec4(0, 100, 0, 100) == intGreen)) && (100 == intRed.x)) && all(vec2(100, 0) == intRed.xy)) && all(vec3(100, 0, 0) == intRed.xyz)) && all(vec4(100, 0, 0, 100) == intRed)) && (_skTemp8 == _globalUniforms.colorGreen.x)) && all(_skTemp9 == _globalUniforms.colorGreen.xy)) && all(_skTemp10 == _globalUniforms.colorGreen.xyz)) && all(_skTemp11 == _globalUniforms.colorGreen)) && (_skTemp12 == _globalUniforms.colorRed.x)) && all(_skTemp13 == _globalUniforms.colorRed.xy)) && all(_skTemp14 == _globalUniforms.colorRed.xyz)) && all(_skTemp15 == _globalUniforms.colorRed)) && (0.0 == _globalUniforms.colorGreen.x)) && all(vec2(0.0, 1.0) == _globalUniforms.colorGreen.xy)) && all(vec3(0.0, 1.0, 0.0) == _globalUniforms.colorGreen.xyz)) && all(vec4(0.0, 1.0, 0.0, 1.0) == _globalUniforms.colorGreen)) && (1.0 == _globalUniforms.colorRed.x)) && all(vec2(1.0, 0.0) == _globalUniforms.colorRed.xy)) && all(vec3(1.0, 0.0, 0.0) == _globalUniforms.colorRed.xyz)) && all(vec4(1.0, 0.0, 0.0, 1.0) == _globalUniforms.colorRed))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MixFloatES2.metal b/tests/sksl/intrinsics/MixFloatES2.metal index b357c68e2c10..f3056c94ef9f 100644 --- a/tests/sksl/intrinsics/MixFloatES2.metal +++ b/tests/sksl/intrinsics/MixFloatES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/MixFloatES2.wgsl b/tests/sksl/intrinsics/MixFloatES2.wgsl index 97f24b2cde28..b1465d12b0ca 100644 --- a/tests/sksl/intrinsics/MixFloatES2.wgsl +++ b/tests/sksl/intrinsics/MixFloatES2.wgsl @@ -14,8 +14,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedBW: vec4 = vec4(0.5, 0.5, 0.5, 1.0); var expectedWT: vec4 = vec4(1.0, 0.5, 1.0, 2.25); @@ -34,8 +33,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((((((((((((((all(_skTemp0 == vec4(0.0, 1.0, 0.0, 1.0)) && all(_skTemp1 == vec4(0.25, 0.75, 0.0, 1.0))) && all(_skTemp2 == vec4(0.75, 0.25, 0.0, 1.0))) && all(_skTemp3 == vec4(1.0, 0.0, 0.0, 1.0))) && (_skTemp4 == expectedBW.x)) && all(_skTemp5 == expectedBW.xy)) && all(_skTemp6 == expectedBW.xyz)) && all(_skTemp7 == expectedBW)) && (0.5 == expectedBW.x)) && all(vec2(0.5) == expectedBW.xy)) && all(vec3(0.5) == expectedBW.xyz)) && all(vec4(0.5, 0.5, 0.5, 1.0) == expectedBW)) && (_skTemp8 == expectedWT.x)) && all(_skTemp9 == expectedWT.xy)) && all(_skTemp10 == expectedWT.xyz)) && all(_skTemp11 == expectedWT)) && (1.0 == expectedWT.x)) && all(vec2(1.0, 0.5) == expectedWT.xy)) && all(vec3(1.0, 0.5, 1.0) == expectedWT.xyz)) && all(vec4(1.0, 0.5, 1.0, 2.25) == expectedWT))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/MixFloatES3.metal b/tests/sksl/intrinsics/MixFloatES3.metal index e73358308c84..6611ff35c275 100644 --- a/tests/sksl/intrinsics/MixFloatES3.metal +++ b/tests/sksl/intrinsics/MixFloatES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/MixFloatES3.wgsl b/tests/sksl/intrinsics/MixFloatES3.wgsl index 6e41cef165bc..bb082199ab0d 100644 --- a/tests/sksl/intrinsics/MixFloatES3.wgsl +++ b/tests/sksl/intrinsics/MixFloatES3.wgsl @@ -14,8 +14,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var FTFT: vec4 = vec4(_globalUniforms.colorGreen); var TFTF: vec4 = FTFT.wzyx; @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.colorBlack.x) && all(_skTemp1 == vec2(_globalUniforms.colorBlack.x, 1.0))) && all(_skTemp2 == vec3(_globalUniforms.colorBlack.x, 1.0, _globalUniforms.colorBlack.z))) && all(_skTemp3 == vec4(_globalUniforms.colorBlack.x, 1.0, _globalUniforms.colorBlack.z, 1.0))) && (_skTemp4 == _globalUniforms.testInputs.x)) && all(_skTemp5 == vec2(_globalUniforms.testInputs.x, 1.0))) && all(_skTemp6 == vec3(_globalUniforms.testInputs.x, 1.0, _globalUniforms.testInputs.z))) && all(_skTemp7 == vec4(_globalUniforms.testInputs.x, 1.0, _globalUniforms.testInputs.z, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Mod.metal b/tests/sksl/intrinsics/Mod.metal index 7ecc7a664208..6d51a4a6eeda 100644 --- a/tests/sksl/intrinsics/Mod.metal +++ b/tests/sksl/intrinsics/Mod.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Mod.wgsl b/tests/sksl/intrinsics/Mod.wgsl index 367a8e65c259..650586957ad8 100644 --- a/tests/sksl/intrinsics/Mod.wgsl +++ b/tests/sksl/intrinsics/Mod.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedA: vec4 = vec4(0.75, 0.0, 0.75, 0.25); var expectedB: vec4 = vec4(0.25, 0.0, 0.75, 1.0); @@ -38,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((_skTemp1 == expectedA.x) && all(_skTemp3 == expectedA.xy)) && all(_skTemp5 == expectedA.xyz)) && all(_skTemp6 == expectedA)) && (0.75 == expectedA.x)) && all(vec2(0.75, 0.0) == expectedA.xy)) && all(vec3(0.75, 0.0, 0.75) == expectedA.xyz)) && all(vec4(0.75, 0.0, 0.75, 0.25) == expectedA)) && (_skTemp9 == expectedA.x)) && all(_skTemp12 == expectedA.xy)) && all(_skTemp15 == expectedA.xyz)) && all(_skTemp16 == expectedA)) && (0.25 == expectedB.x)) && all(vec2(0.25, 0.0) == expectedB.xy)) && all(vec3(0.25, 0.0, 0.75) == expectedB.xyz)) && all(vec4(0.25, 0.0, 0.75, 1.0) == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Modf.metal b/tests/sksl/intrinsics/Modf.metal index 627d5d6a59d0..0e2d10770596 100644 --- a/tests/sksl/intrinsics/Modf.metal +++ b/tests/sksl/intrinsics/Modf.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Modf.wgsl b/tests/sksl/intrinsics/Modf.wgsl index f12d6550a574..5f46273f84e4 100644 --- a/tests/sksl/intrinsics/Modf.wgsl +++ b/tests/sksl/intrinsics/Modf.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :23:20 error: no matching call to modf(f32, f32) +error: :22:20 error: no matching call to modf(f32, f32) 2 candidate functions: modf(T) -> __modf_result_T where: T is abstract-float, f32 or f16 @@ -23,8 +23,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var value: vec4 = vec4(2.5, -2.5, 8.0, -0.125); const expectedWhole: vec4 = vec4(2.0, -2.0, 8.0, 0.0); @@ -48,9 +47,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp4)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Normalize.metal b/tests/sksl/intrinsics/Normalize.metal index eb02de29f8a8..83ac9dd28be2 100644 --- a/tests/sksl/intrinsics/Normalize.metal +++ b/tests/sksl/intrinsics/Normalize.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Normalize.wgsl b/tests/sksl/intrinsics/Normalize.wgsl index a77fb1ca66c8..f2866fc1591b 100644 --- a/tests/sksl/intrinsics/Normalize.wgsl +++ b/tests/sksl/intrinsics/Normalize.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expectedVec: vec4 = vec4(1.0, 0.0, 0.0, 0.0); let _skTemp0 = sign(_globalUniforms.inputVal.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expectedVec.x) && all(_skTemp1 == expectedVec.xy)) && all(_skTemp2 == expectedVec.xyz)) && all(_skTemp3 == expectedVec)) && (1.0 == expectedVec.x)) && all(vec2(0.0, 1.0) == expectedVec.yx)) && all(vec3(0.0, 1.0, 0.0) == expectedVec.zxy)) && all(vec4(1.0, 0.0, 0.0, 0.0) == expectedVec))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Not.metal b/tests/sksl/intrinsics/Not.metal index 2ed02c19df82..50b824906798 100644 --- a/tests/sksl/intrinsics/Not.metal +++ b/tests/sksl/intrinsics/Not.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/Not.wgsl b/tests/sksl/intrinsics/Not.wgsl index 43c8f55acb1b..9c2d4611c30e 100644 --- a/tests/sksl/intrinsics/Not.wgsl +++ b/tests/sksl/intrinsics/Not.wgsl @@ -11,16 +11,15 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.colorGreen); var expected: vec4 = vec4(true, false, true, false); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((all((!inputVal.xy) == expected.xy) && all((!inputVal.xyz) == expected.xyz)) && all((!inputVal) == expected)) && all(vec2(true, false) == expected.xy)) && all(vec3(true, false, true) == expected.xyz)) && all(vec4(true, false, true, false) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/NotEqual.metal b/tests/sksl/intrinsics/NotEqual.metal index 6f7e2e3cf59b..20dc1e1e7bdc 100644 --- a/tests/sksl/intrinsics/NotEqual.metal +++ b/tests/sksl/intrinsics/NotEqual.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 a; diff --git a/tests/sksl/intrinsics/NotEqual.wgsl b/tests/sksl/intrinsics/NotEqual.wgsl index 92c25c45307a..489483c8ec99 100644 --- a/tests/sksl/intrinsics/NotEqual.wgsl +++ b/tests/sksl/intrinsics/NotEqual.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { f: vec3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var expectFFTT: vec4 = vec4(false, false, true, true); var expectTTFF: vec4 = vec4(true, true, false, false); @@ -26,8 +26,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.w = f32(select(0, 1, _skTemp0 || _skTemp1)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/OuterProduct.metal b/tests/sksl/intrinsics/OuterProduct.metal index 2bb05389361f..2fbb33347745 100644 --- a/tests/sksl/intrinsics/OuterProduct.metal +++ b/tests/sksl/intrinsics/OuterProduct.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/OuterProduct.wgsl b/tests/sksl/intrinsics/OuterProduct.wgsl index 629125feff43..2b1072dd26e1 100644 --- a/tests/sksl/intrinsics/OuterProduct.wgsl +++ b/tests/sksl/intrinsics/OuterProduct.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :21:20 error: unresolved call target 'outerProduct' +error: :20:20 error: unresolved call target 'outerProduct' let _skTemp0 = outerProduct(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -21,8 +21,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const c12: vec2 = vec2(1.0, 2.0); let _skTemp0 = outerProduct(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]); @@ -46,9 +45,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((all(_skTemp1[0] == _skTemp2[0]) && all(_skTemp1[1] == _skTemp2[1])) && (all(_skTemp4[0] == _skTemp5[0]) && all(_skTemp4[1] == _skTemp5[1]) && all(_skTemp4[2] == _skTemp5[2]))) && (all(_skTemp7[0] == _skTemp8[0]) && all(_skTemp7[1] == _skTemp8[1]) && all(_skTemp7[2] == _skTemp8[2]))) && (all(_skTemp10[0] == _skTemp11[0]) && all(_skTemp10[1] == _skTemp11[1]) && all(_skTemp10[2] == _skTemp11[2]) && all(_skTemp10[3] == _skTemp11[3]))) && (all(_skTemp13[0] == _skTemp14[0]) && all(_skTemp13[1] == _skTemp14[1]))) && (all(_skTemp16[0] == _skTemp17[0]) && all(_skTemp16[1] == _skTemp17[1]) && all(_skTemp16[2] == _skTemp17[2]) && all(_skTemp16[3] == _skTemp17[3])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Pack.metal b/tests/sksl/intrinsics/Pack.metal index 24fbad47a5f8..c4f6b6937183 100644 --- a/tests/sksl/intrinsics/Pack.metal +++ b/tests/sksl/intrinsics/Pack.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half2 a; diff --git a/tests/sksl/intrinsics/Pack.wgsl b/tests/sksl/intrinsics/Pack.wgsl index 76195956c063..5db315f94c41 100644 --- a/tests/sksl/intrinsics/Pack.wgsl +++ b/tests/sksl/intrinsics/Pack.wgsl @@ -17,7 +17,7 @@ struct _GlobalUniforms { b: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = packHalf2x16(vec2(_globalUniforms.a)); (*_stageOut).sk_FragColor.x = f32(_skTemp0); @@ -31,9 +31,9 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = f32(_skTemp4); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/PackHalf2x16.metal b/tests/sksl/intrinsics/PackHalf2x16.metal index 97d8113af354..f5dd0f2acec7 100644 --- a/tests/sksl/intrinsics/PackHalf2x16.metal +++ b/tests/sksl/intrinsics/PackHalf2x16.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/PackHalf2x16.wgsl b/tests/sksl/intrinsics/PackHalf2x16.wgsl index a8770aefe684..37e2f97b7cea 100644 --- a/tests/sksl/intrinsics/PackHalf2x16.wgsl +++ b/tests/sksl/intrinsics/PackHalf2x16.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :18:20 error: unresolved call target 'packHalf2x16' +error: :17:20 error: unresolved call target 'packHalf2x16' let _skTemp0 = packHalf2x16(_globalUniforms.testInputs.xy); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = packHalf2x16(_globalUniforms.testInputs.xy); var xy: u32 = _skTemp0; @@ -31,9 +30,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(_skTemp2 == vec2(-1.25, 0.0)) && all(_skTemp3 == vec2(0.75, 2.25)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/PackSnorm2x16.metal b/tests/sksl/intrinsics/PackSnorm2x16.metal index 315f68b9b6c5..b65913f2ec81 100644 --- a/tests/sksl/intrinsics/PackSnorm2x16.metal +++ b/tests/sksl/intrinsics/PackSnorm2x16.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/PackSnorm2x16.wgsl b/tests/sksl/intrinsics/PackSnorm2x16.wgsl index d5c69d878e8c..3bca76328bde 100644 --- a/tests/sksl/intrinsics/PackSnorm2x16.wgsl +++ b/tests/sksl/intrinsics/PackSnorm2x16.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :18:20 error: unresolved call target 'packSnorm2x16' +error: :17:20 error: unresolved call target 'packSnorm2x16' let _skTemp0 = packSnorm2x16(_globalUniforms.testInputs.xy); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = packSnorm2x16(_globalUniforms.testInputs.xy); var xy: u32 = _skTemp0; @@ -29,16 +28,16 @@ fn main(_skParam0: vec2) -> vec4 { const tolerance: vec2 = vec2(0.015625); let _skTemp2 = unpackSnorm2x16(xy); let _skTemp3 = abs(_skTemp2 - vec2(-1.0, 0.0)); - let _skTemp4 = all(_skTemp3 < tolerance); + let _skTemp4 = all((_skTemp3 < tolerance)); let _skTemp5 = unpackSnorm2x16(zw); let _skTemp6 = abs(_skTemp5 - vec2(0.75, 1.0)); - let _skTemp7 = all(_skTemp6 < tolerance); + let _skTemp7 = all((_skTemp6 < tolerance)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp4 && _skTemp7)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/PackUnorm2x16.metal b/tests/sksl/intrinsics/PackUnorm2x16.metal index 44eb9ea79a42..c1a7bf9e511c 100644 --- a/tests/sksl/intrinsics/PackUnorm2x16.metal +++ b/tests/sksl/intrinsics/PackUnorm2x16.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/intrinsics/PackUnorm2x16.wgsl b/tests/sksl/intrinsics/PackUnorm2x16.wgsl index 28f00c799420..106b378d5e6c 100644 --- a/tests/sksl/intrinsics/PackUnorm2x16.wgsl +++ b/tests/sksl/intrinsics/PackUnorm2x16.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :18:20 error: unresolved call target 'packUnorm2x16' +error: :17:20 error: unresolved call target 'packUnorm2x16' let _skTemp0 = packUnorm2x16(_globalUniforms.testInputs.xy); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = packUnorm2x16(_globalUniforms.testInputs.xy); var xy: u32 = _skTemp0; @@ -29,16 +28,16 @@ fn main(_skParam0: vec2) -> vec4 { const tolerance: vec2 = vec2(0.015625); let _skTemp2 = unpackUnorm2x16(xy); let _skTemp3 = abs(_skTemp2); - let _skTemp4 = all(_skTemp3 < tolerance); + let _skTemp4 = all((_skTemp3 < tolerance)); let _skTemp5 = unpackUnorm2x16(zw); let _skTemp6 = abs(_skTemp5 - vec2(0.75, 1.0)); - let _skTemp7 = all(_skTemp6 < tolerance); + let _skTemp7 = all((_skTemp6 < tolerance)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp4 && _skTemp7)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Pow.metal b/tests/sksl/intrinsics/Pow.metal index 7c895c4d9ed5..f077ce1f5e10 100644 --- a/tests/sksl/intrinsics/Pow.metal +++ b/tests/sksl/intrinsics/Pow.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Pow.wgsl b/tests/sksl/intrinsics/Pow.wgsl index 68da989612e8..c8fbfb7f2ee9 100644 --- a/tests/sksl/intrinsics/Pow.wgsl +++ b/tests/sksl/intrinsics/Pow.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(-1.5625, 0.0, 0.75, 3.375); const exponents: vec4 = vec4(2.0, 3.0, 1.0, 1.5); @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (1.5625 == expected.x)) && all(vec2(1.5625, 0.0) == expected.xy)) && all(vec3(1.5625, 0.0, 0.75) == expected.xyz)) && all(vec4(1.5625, 0.0, 0.75, 3.375) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Radians.metal b/tests/sksl/intrinsics/Radians.metal index 1b6e54d69bf0..f1190138b240 100644 --- a/tests/sksl/intrinsics/Radians.metal +++ b/tests/sksl/intrinsics/Radians.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 testInputs; diff --git a/tests/sksl/intrinsics/Radians.wgsl b/tests/sksl/intrinsics/Radians.wgsl index 1b940a5bbb80..988d146cfb46 100644 --- a/tests/sksl/intrinsics/Radians.wgsl +++ b/tests/sksl/intrinsics/Radians.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expected: vec4 = vec4(-0.021816615, 0.0, 0.01308997, 0.03926991); const allowedDelta: vec4 = vec4(0.0005); @@ -21,18 +20,18 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp1 = abs(_skTemp0 - -0.021816615); let _skTemp2 = radians(_globalUniforms.testInputs.xy); let _skTemp3 = abs(_skTemp2 - vec2(-0.021816615, 0.0)); - let _skTemp4 = all(_skTemp3 < vec2(0.0005)); + let _skTemp4 = all((_skTemp3 < vec2(0.0005))); let _skTemp5 = radians(_globalUniforms.testInputs.xyz); let _skTemp6 = abs(_skTemp5 - vec3(-0.021816615, 0.0, 0.01308997)); - let _skTemp7 = all(_skTemp6 < vec3(0.0005)); + let _skTemp7 = all((_skTemp6 < vec3(0.0005))); let _skTemp8 = radians(_globalUniforms.testInputs); let _skTemp9 = abs(_skTemp8 - expected); - let _skTemp10 = all(_skTemp9 < allowedDelta); + let _skTemp10 = all((_skTemp9 < allowedDelta)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp1 < 0.0005) && _skTemp4) && _skTemp7) && _skTemp10)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Reflect.metal b/tests/sksl/intrinsics/Reflect.metal index ca896eb18f7a..7cbf9796341d 100644 --- a/tests/sksl/intrinsics/Reflect.metal +++ b/tests/sksl/intrinsics/Reflect.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 I; diff --git a/tests/sksl/intrinsics/Reflect.wgsl b/tests/sksl/intrinsics/Reflect.wgsl index 8df0e5006cf0..f56030e6804a 100644 --- a/tests/sksl/intrinsics/Reflect.wgsl +++ b/tests/sksl/intrinsics/Reflect.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { let _skTemp0 = -2e+34; let _skTemp1 = 9.968786e+08 - 2 * _skTemp0 * 9.968786e+08 * _skTemp0; @@ -32,8 +31,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp4 == expectedX) && all(_skTemp5 == expectedXY)) && all(_skTemp6 == expectedXYZ)) && all(_skTemp7 == expectedXYZW)) && (-49.0 == expectedX)) && all(vec2(-169.0, 202.0) == expectedXY)) && all(vec3(-379.0, 454.0, -529.0) == expectedXYZ)) && all(vec4(-699.0, 838.0, -977.0, 1116.0) == expectedXYZW))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Refract.metal b/tests/sksl/intrinsics/Refract.metal index 3011f6a73574..e3f537d5b15d 100644 --- a/tests/sksl/intrinsics/Refract.metal +++ b/tests/sksl/intrinsics/Refract.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half a; diff --git a/tests/sksl/intrinsics/Refract.wgsl b/tests/sksl/intrinsics/Refract.wgsl index 49a3270e6329..f6036282d0b1 100644 --- a/tests/sksl/intrinsics/Refract.wgsl +++ b/tests/sksl/intrinsics/Refract.wgsl @@ -14,7 +14,7 @@ struct _GlobalUniforms { e: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { let _skTemp0 = 2.0; let _skTemp1 = refract(vec2(6e+26, 0), vec2(2.0, 0), _skTemp0).x; @@ -29,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return result; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Round.metal b/tests/sksl/intrinsics/Round.metal index 65c667f97068..a521132d0c7f 100644 --- a/tests/sksl/intrinsics/Round.metal +++ b/tests/sksl/intrinsics/Round.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Round.wgsl b/tests/sksl/intrinsics/Round.wgsl index 153ebfd655ed..517c8d085129 100644 --- a/tests/sksl/intrinsics/Round.wgsl +++ b/tests/sksl/intrinsics/Round.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expectedA: vec4 = vec4(-1.0, 0.0, 1.0, 2.0); let _skTemp0 = round(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((f32(_skTemp0) == -1.0) && all(vec2(_skTemp1) == vec2(-1.0, 0.0))) && all(vec3(_skTemp2) == vec3(-1.0, 0.0, 1.0))) && all(vec4(_skTemp3) == expectedA))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/RoundEven.metal b/tests/sksl/intrinsics/RoundEven.metal index c172b87bb769..bf16bece6d11 100644 --- a/tests/sksl/intrinsics/RoundEven.metal +++ b/tests/sksl/intrinsics/RoundEven.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/RoundEven.wgsl b/tests/sksl/intrinsics/RoundEven.wgsl index 568d8d83cc84..91c8b5688182 100644 --- a/tests/sksl/intrinsics/RoundEven.wgsl +++ b/tests/sksl/intrinsics/RoundEven.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :19:20 error: unresolved call target 'roundEven' +error: :18:20 error: unresolved call target 'roundEven' let _skTemp0 = roundEven(_globalUniforms.testInputs.x); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expectedA: vec4 = vec4(-1.0, 0.0, 1.0, 2.0); let _skTemp0 = roundEven(_globalUniforms.testInputs.x); @@ -30,9 +29,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((f32(_skTemp0) == -1.0) && all(vec2(_skTemp1) == vec2(-1.0, 0.0))) && all(vec3(_skTemp2) == vec3(-1.0, 0.0, 1.0))) && all(vec4(_skTemp3) == expectedA))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Sample.metal b/tests/sksl/intrinsics/Sample.metal index 841a7a10a6de..1184603c664f 100644 --- a/tests/sksl/intrinsics/Sample.metal +++ b/tests/sksl/intrinsics/Sample.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/intrinsics/Sample.skrp b/tests/sksl/intrinsics/Sample.skrp index bcbe4a91a086..6628c2b4098b 100644 --- a/tests/sksl/intrinsics/Sample.skrp +++ b/tests/sksl/intrinsics/Sample.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D t; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D t; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: 'main' must return: 'vec4', 'float4', or 'half4' void main() ^^^^^^^^^^^ diff --git a/tests/sksl/intrinsics/Sample.wgsl b/tests/sksl/intrinsics/Sample.wgsl index e929ffeb213f..a3ebaac43e1c 100644 --- a/tests/sksl/intrinsics/Sample.wgsl +++ b/tests/sksl/intrinsics/Sample.wgsl @@ -7,15 +7,15 @@ struct FSOut { }; @group(0) @binding(10000) var t_Sampler: sampler; @group(0) @binding(10001) var t_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var c: vec4 = textureSample(t_Texture, t_Sampler, vec2(0.0)); let _skTemp2 = vec3(1.0); (*_stageOut).sk_FragColor = c * textureSample(t_Texture, t_Sampler, _skTemp2.xy / _skTemp2.z); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/SampleGrad.metal b/tests/sksl/intrinsics/SampleGrad.metal index 33b575b2956a..f4084e6e88fb 100644 --- a/tests/sksl/intrinsics/SampleGrad.metal +++ b/tests/sksl/intrinsics/SampleGrad.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/intrinsics/SampleGrad.skrp b/tests/sksl/intrinsics/SampleGrad.skrp index a2592f6b2ac3..760fabd133c7 100644 --- a/tests/sksl/intrinsics/SampleGrad.skrp +++ b/tests/sksl/intrinsics/SampleGrad.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D t; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D t; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 4: unknown identifier 'sampleGrad' return sampleGrad(t, coords, dFdx(coords), dFdy(coords)); ^^^^^^^^^^ diff --git a/tests/sksl/intrinsics/SampleGrad.wgsl b/tests/sksl/intrinsics/SampleGrad.wgsl index 9be789a6c5c4..d6a11b80d112 100644 --- a/tests/sksl/intrinsics/SampleGrad.wgsl +++ b/tests/sksl/intrinsics/SampleGrad.wgsl @@ -8,16 +8,15 @@ struct FSOut { }; @group(0) @binding(10000) var t_Sampler: sampler; @group(0) @binding(10001) var t_Texture: texture_2d; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp2 = dpdx(coords); let _skTemp3 = dpdy(coords); return textureSampleGrad(t_Texture, t_Sampler, coords, _skTemp2, _skTemp3); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/SampleLod.metal b/tests/sksl/intrinsics/SampleLod.metal index 9e5f9ea31525..5306e8eb4499 100644 --- a/tests/sksl/intrinsics/SampleLod.metal +++ b/tests/sksl/intrinsics/SampleLod.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/intrinsics/SampleLod.skrp b/tests/sksl/intrinsics/SampleLod.skrp index 690dc57401f2..c48b3c15c19d 100644 --- a/tests/sksl/intrinsics/SampleLod.skrp +++ b/tests/sksl/intrinsics/SampleLod.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D t; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D t; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: 'main' must return: 'vec4', 'float4', or 'half4' void main() ^^^^^^^^^^^ diff --git a/tests/sksl/intrinsics/SampleLod.wgsl b/tests/sksl/intrinsics/SampleLod.wgsl index 938e4dff1d3f..d60168ab9f31 100644 --- a/tests/sksl/intrinsics/SampleLod.wgsl +++ b/tests/sksl/intrinsics/SampleLod.wgsl @@ -7,15 +7,15 @@ struct FSOut { }; @group(0) @binding(10000) var t_Sampler: sampler; @group(0) @binding(10001) var t_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var c: vec4 = textureSampleLevel(t_Texture, t_Sampler, vec2(0.0), 0.0); let _skTemp2 = vec3(1.0); (*_stageOut).sk_FragColor = c * textureSampleLevel(t_Texture, t_Sampler, _skTemp2.xy / _skTemp2.z, 0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/intrinsics/Saturate.metal b/tests/sksl/intrinsics/Saturate.metal index b4e538f8572e..79d6ee45cf10 100644 --- a/tests/sksl/intrinsics/Saturate.metal +++ b/tests/sksl/intrinsics/Saturate.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Saturate.wgsl b/tests/sksl/intrinsics/Saturate.wgsl index 92ca69fc12fd..b35dca27e216 100644 --- a/tests/sksl/intrinsics/Saturate.wgsl +++ b/tests/sksl/intrinsics/Saturate.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(0.0, 0.0, 0.75, 1.0); let _skTemp0 = saturate(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (0.0 == expected.x)) && all(vec2(0.0) == expected.xy)) && all(vec3(0.0, 0.0, 0.75) == expected.xyz)) && all(vec4(0.0, 0.0, 0.75, 1.0) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/SignFloat.metal b/tests/sksl/intrinsics/SignFloat.metal index c59eed2789df..da671dac257e 100644 --- a/tests/sksl/intrinsics/SignFloat.metal +++ b/tests/sksl/intrinsics/SignFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/SignFloat.wgsl b/tests/sksl/intrinsics/SignFloat.wgsl index d4c8c8382423..9e20e8e7dbd1 100644 --- a/tests/sksl/intrinsics/SignFloat.wgsl +++ b/tests/sksl/intrinsics/SignFloat.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(-1.0, 0.0, 1.0, 1.0); let _skTemp0 = sign(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (-1.0 == expected.x)) && all(vec2(-1.0, 0.0) == expected.xy)) && all(vec3(-1.0, 0.0, 1.0) == expected.xyz)) && all(vec4(-1.0, 0.0, 1.0, 1.0) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/SignInt.metal b/tests/sksl/intrinsics/SignInt.metal index 5b40ba1af12e..7f0fb14bd4ca 100644 --- a/tests/sksl/intrinsics/SignInt.metal +++ b/tests/sksl/intrinsics/SignInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/SignInt.wgsl b/tests/sksl/intrinsics/SignInt.wgsl index 676448cfd138..ca8c3e917b54 100644 --- a/tests/sksl/intrinsics/SignInt.wgsl +++ b/tests/sksl/intrinsics/SignInt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: vec4 = vec4(-1, 0, 0, 1); let _skTemp0 = sign(i32(_globalUniforms.testInputs.x)); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == expected.x) && all(_skTemp1 == expected.xy)) && all(_skTemp2 == expected.xyz)) && all(_skTemp3 == expected)) && (-1 == expected.x)) && all(vec2(-1, 0) == expected.xy)) && all(vec3(-1, 0, 0) == expected.xyz)) && all(vec4(-1, 0, 0, 1) == expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Sin.metal b/tests/sksl/intrinsics/Sin.metal index 1eb9ddf40942..d53440d87062 100644 --- a/tests/sksl/intrinsics/Sin.metal +++ b/tests/sksl/intrinsics/Sin.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Sin.wgsl b/tests/sksl/intrinsics/Sin.wgsl index d8acf9e1c9bc..81c37c5de154 100644 --- a/tests/sksl/intrinsics/Sin.wgsl +++ b/tests/sksl/intrinsics/Sin.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = sin(_globalUniforms.inputVal.x); let _skTemp1 = sin(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Sinh.metal b/tests/sksl/intrinsics/Sinh.metal index 3d2352ecb8e7..2a3764f7ee6e 100644 --- a/tests/sksl/intrinsics/Sinh.metal +++ b/tests/sksl/intrinsics/Sinh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Sinh.wgsl b/tests/sksl/intrinsics/Sinh.wgsl index 34c4a8b71202..cf9ba99bff7c 100644 --- a/tests/sksl/intrinsics/Sinh.wgsl +++ b/tests/sksl/intrinsics/Sinh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = sinh(_globalUniforms.inputVal.x); let _skTemp1 = sinh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Smoothstep.metal b/tests/sksl/intrinsics/Smoothstep.metal index b3e1574854c4..94725ae8cbf2 100644 --- a/tests/sksl/intrinsics/Smoothstep.metal +++ b/tests/sksl/intrinsics/Smoothstep.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Smoothstep.wgsl b/tests/sksl/intrinsics/Smoothstep.wgsl index 3f84a66e7074..1603053151ba 100644 --- a/tests/sksl/intrinsics/Smoothstep.wgsl +++ b/tests/sksl/intrinsics/Smoothstep.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const constVal: vec4 = vec4(-1.25, 0.0, 0.75, 2.25); var expectedA: vec4 = vec4(0.0, 0.0, 0.84375, 1.0); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((((((0.0 == expectedA.x) && all(vec2(0.0) == expectedA.xy)) && all(vec3(0.0, 0.0, 0.84375) == expectedA.xyz)) && all(vec4(0.0, 0.0, 0.84375, 1.0) == expectedA)) && (0.0 == expectedA.x)) && all(vec2(0.0) == expectedA.xy)) && all(vec3(0.0, 0.0, 0.84375) == expectedA.xyz)) && all(vec4(0.0, 0.0, 0.84375, 1.0) == expectedA)) && (_skTemp0 == expectedA.x)) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (1.0 == expectedB.x)) && all(vec2(1.0, 0.0) == expectedB.xy)) && all(vec3(1.0, 0.0, 1.0) == expectedB.xyz)) && all(vec4(1.0, 0.0, 1.0, 1.0) == expectedB)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Sqrt.metal b/tests/sksl/intrinsics/Sqrt.metal index 02a8db465e7b..c1d2ace88be8 100644 --- a/tests/sksl/intrinsics/Sqrt.metal +++ b/tests/sksl/intrinsics/Sqrt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/Sqrt.wgsl b/tests/sksl/intrinsics/Sqrt.wgsl index 3bb44eb7aca0..0c09381f07b7 100644 --- a/tests/sksl/intrinsics/Sqrt.wgsl +++ b/tests/sksl/intrinsics/Sqrt.wgsl @@ -12,7 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { var coords = _skParam0; { const negativeVal: vec4 = vec4(-1.0, -4.0, -16.0, -64.0); @@ -26,18 +26,18 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp3 = abs(_skTemp2 - 1.0); let _skTemp4 = sqrt(inputVal.xy); let _skTemp5 = abs(_skTemp4 - vec2(1.0, 2.0)); - let _skTemp6 = all(_skTemp5 < vec2(0.05)); + let _skTemp6 = all((_skTemp5 < vec2(0.05))); let _skTemp7 = sqrt(inputVal.xyz); let _skTemp8 = abs(_skTemp7 - vec3(1.0, 2.0, 3.0)); - let _skTemp9 = all(_skTemp8 < vec3(0.05)); + let _skTemp9 = all((_skTemp8 < vec3(0.05))); let _skTemp10 = sqrt(inputVal); let _skTemp11 = abs(_skTemp10 - expected); - let _skTemp12 = all(_skTemp11 < allowedDelta); + let _skTemp12 = all((_skTemp11 < allowedDelta)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((_skTemp3 < 0.05) && _skTemp6) && _skTemp9) && _skTemp12)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Step.metal b/tests/sksl/intrinsics/Step.metal index 32f6173482e3..08981effbc7a 100644 --- a/tests/sksl/intrinsics/Step.metal +++ b/tests/sksl/intrinsics/Step.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Step.wgsl b/tests/sksl/intrinsics/Step.wgsl index 0eb458ebc41b..34f63191f6cd 100644 --- a/tests/sksl/intrinsics/Step.wgsl +++ b/tests/sksl/intrinsics/Step.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const constGreen: vec4 = vec4(0.0, 1.0, 0.0, 1.0); var expectedA: vec4 = vec4(0.0, 0.0, 1.0, 1.0); @@ -34,8 +33,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((((((((((_skTemp0 == expectedA.x) && all(_skTemp1 == expectedA.xy)) && all(_skTemp2 == expectedA.xyz)) && all(_skTemp3 == expectedA)) && (0.0 == expectedA.x)) && all(vec2(0.0) == expectedA.xy)) && all(vec3(0.0, 0.0, 1.0) == expectedA.xyz)) && all(vec4(0.0, 0.0, 1.0, 1.0) == expectedA)) && (_skTemp4 == expectedB.x)) && all(_skTemp5 == expectedB.xy)) && all(_skTemp6 == expectedB.xyz)) && all(_skTemp7 == expectedB)) && (1.0 == expectedB.x)) && all(vec2(1.0) == expectedB.xy)) && all(vec3(1.0, 1.0, 0.0) == expectedB.xyz)) && all(vec4(1.0, 1.0, 0.0, 0.0) == expectedB)) && (_skTemp8 == expectedC.x)) && all(_skTemp9 == expectedC.xy)) && all(_skTemp10 == expectedC.xyz)) && all(_skTemp11 == expectedC)) && (0.0 == expectedC.x)) && all(vec2(0.0, 1.0) == expectedC.xy)) && all(vec3(0.0, 1.0, 1.0) == expectedC.xyz)) && all(vec4(0.0, 1.0, 1.0, 1.0) == expectedC))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Tan.metal b/tests/sksl/intrinsics/Tan.metal index 9f7a1b224c2b..08a5a501c3bd 100644 --- a/tests/sksl/intrinsics/Tan.metal +++ b/tests/sksl/intrinsics/Tan.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Tan.wgsl b/tests/sksl/intrinsics/Tan.wgsl index 4e219c345386..496d6aae85d1 100644 --- a/tests/sksl/intrinsics/Tan.wgsl +++ b/tests/sksl/intrinsics/Tan.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = tan(_globalUniforms.inputVal.x); let _skTemp1 = tan(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Tanh.metal b/tests/sksl/intrinsics/Tanh.metal index 329b245088d1..f70662ea7095 100644 --- a/tests/sksl/intrinsics/Tanh.metal +++ b/tests/sksl/intrinsics/Tanh.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 inputVal; diff --git a/tests/sksl/intrinsics/Tanh.wgsl b/tests/sksl/intrinsics/Tanh.wgsl index 64809732b0fd..0452d374c353 100644 --- a/tests/sksl/intrinsics/Tanh.wgsl +++ b/tests/sksl/intrinsics/Tanh.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = tanh(_globalUniforms.inputVal.x); let _skTemp1 = tanh(_globalUniforms.inputVal.xy); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((_skTemp0 == _globalUniforms.expected.x) && all(_skTemp1 == _globalUniforms.expected.xy)) && all(_skTemp2 == _globalUniforms.expected.xyz)) && all(_skTemp3 == _globalUniforms.expected)) && (0.0 == _globalUniforms.expected.x)) && all(vec2(0.0) == _globalUniforms.expected.xy)) && all(vec3(0.0) == _globalUniforms.expected.xyz)) && all(vec4(0.0) == _globalUniforms.expected))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Transpose.metal b/tests/sksl/intrinsics/Transpose.metal index d3c83a284fa1..18e7036e18d2 100644 --- a/tests/sksl/intrinsics/Transpose.metal +++ b/tests/sksl/intrinsics/Transpose.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/Transpose.wgsl b/tests/sksl/intrinsics/Transpose.wgsl index c12c8b600794..c7e6753d9ca7 100644 --- a/tests/sksl/intrinsics/Transpose.wgsl +++ b/tests/sksl/intrinsics/Transpose.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var testMatrix2x3: mat2x3 = mat2x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); let _skTemp0 = transpose(_globalUniforms.testMatrix2x2); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((all(_skTemp1[0] == _skTemp2[0]) && all(_skTemp1[1] == _skTemp2[1])) && (all(_skTemp4[0] == _skTemp5[0]) && all(_skTemp4[1] == _skTemp5[1]) && all(_skTemp4[2] == _skTemp5[2]))) && (all(_skTemp7[0] == _skTemp8[0]) && all(_skTemp7[1] == _skTemp8[1]) && all(_skTemp7[2] == _skTemp8[2])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Trunc.metal b/tests/sksl/intrinsics/Trunc.metal index 1e0e5416ef9b..077ebedbb7ef 100644 --- a/tests/sksl/intrinsics/Trunc.metal +++ b/tests/sksl/intrinsics/Trunc.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/intrinsics/Trunc.wgsl b/tests/sksl/intrinsics/Trunc.wgsl index 16905e03d6fe..49f798c7be81 100644 --- a/tests/sksl/intrinsics/Trunc.wgsl +++ b/tests/sksl/intrinsics/Trunc.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const expectedA: vec4 = vec4(-1.0, 0.0, 0.0, 2.0); let _skTemp0 = trunc(_globalUniforms.testInputs.x); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((f32(_skTemp0) == -1.0) && all(vec2(_skTemp1) == vec2(-1.0, 0.0))) && all(vec3(_skTemp2) == vec3(-1.0, 0.0, 0.0))) && all(vec4(_skTemp3) == expectedA))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/UintBitsToFloat.metal b/tests/sksl/intrinsics/UintBitsToFloat.metal index 9912f6d78df6..32e4162fe0ea 100644 --- a/tests/sksl/intrinsics/UintBitsToFloat.metal +++ b/tests/sksl/intrinsics/UintBitsToFloat.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float2x2 testMatrix2x2; diff --git a/tests/sksl/intrinsics/UintBitsToFloat.wgsl b/tests/sksl/intrinsics/UintBitsToFloat.wgsl index d0e5d9d5a1ed..a6c68e719c77 100644 --- a/tests/sksl/intrinsics/UintBitsToFloat.wgsl +++ b/tests/sksl/intrinsics/UintBitsToFloat.wgsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: :20:20 error: unresolved call target 'uintBitsToFloat' +error: :19:20 error: unresolved call target 'uintBitsToFloat' let _skTemp0 = uintBitsToFloat(expectedB.x); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var inputVal: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) * vec4(1.0, 1.0, -1.0, -1.0); var expectedB: vec4 = vec4(1065353216u, 1073741824u, 3225419776u, 3229614080u); @@ -31,9 +30,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((inputVal.x == _skTemp0) && all(inputVal.xy == _skTemp1)) && all(inputVal.xyz == _skTemp2)) && all(inputVal == _skTemp3))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/intrinsics/Unpack.metal b/tests/sksl/intrinsics/Unpack.metal index 48a31ffc61fe..cfea778821b8 100644 --- a/tests/sksl/intrinsics/Unpack.metal +++ b/tests/sksl/intrinsics/Unpack.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { uint a; diff --git a/tests/sksl/intrinsics/Unpack.wgsl b/tests/sksl/intrinsics/Unpack.wgsl index 46142e9dac42..b3c143619601 100644 --- a/tests/sksl/intrinsics/Unpack.wgsl +++ b/tests/sksl/intrinsics/Unpack.wgsl @@ -16,7 +16,7 @@ struct _GlobalUniforms { a: u32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp0 = unpackHalf2x16(_globalUniforms.a); (*_stageOut).sk_FragColor = vec4((vec2(_skTemp0)), (*_stageOut).sk_FragColor.zw).xyzw; @@ -30,9 +30,9 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(_skTemp4); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/metal/CastHalf4ToMat2x2.metal b/tests/sksl/metal/CastHalf4ToMat2x2.metal index bb2d130b808d..cf2365c70468 100644 --- a/tests/sksl/metal/CastHalf4ToMat2x2.metal +++ b/tests/sksl/metal/CastHalf4ToMat2x2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/CastMat2x2ToMat3x3.metal b/tests/sksl/metal/CastMat2x2ToMat3x3.metal index 5c8a338c4fae..47f4f53f8ac3 100644 --- a/tests/sksl/metal/CastMat2x2ToMat3x3.metal +++ b/tests/sksl/metal/CastMat2x2ToMat3x3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/CastMat2x3ToMat4x4.metal b/tests/sksl/metal/CastMat2x3ToMat4x4.metal index bc6c589b5523..fb71dd476034 100644 --- a/tests/sksl/metal/CastMat2x3ToMat4x4.metal +++ b/tests/sksl/metal/CastMat2x3ToMat4x4.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/CastMat4x4ToMat3x4.metal b/tests/sksl/metal/CastMat4x4ToMat3x4.metal index 4e5fbf9b45bd..a44122e29163 100644 --- a/tests/sksl/metal/CastMat4x4ToMat3x4.metal +++ b/tests/sksl/metal/CastMat4x4ToMat3x4.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/CastMat4x4ToMat4x3.metal b/tests/sksl/metal/CastMat4x4ToMat4x3.metal index 4b0e984f937c..c74e9e8390ac 100644 --- a/tests/sksl/metal/CastMat4x4ToMat4x3.metal +++ b/tests/sksl/metal/CastMat4x4ToMat4x3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/LayoutMtlSampler.metal b/tests/sksl/metal/LayoutMtlSampler.metal index 49f8780df7f2..4407d8585151 100644 --- a/tests/sksl/metal/LayoutMtlSampler.metal +++ b/tests/sksl/metal/LayoutMtlSampler.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/metal/NumericGlobals.metal b/tests/sksl/metal/NumericGlobals.metal index a4a3b9f5d784..295c4fd9c4e4 100644 --- a/tests/sksl/metal/NumericGlobals.metal +++ b/tests/sksl/metal/NumericGlobals.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/OpaqueTypeInStruct.metal b/tests/sksl/metal/OpaqueTypeInStruct.metal index cce6bcb77e88..e8cbaba8152e 100644 --- a/tests/sksl/metal/OpaqueTypeInStruct.metal +++ b/tests/sksl/metal/OpaqueTypeInStruct.metal @@ -3,4 +3,10 @@ error: 1: opaque type 'sampler' is not permitted in a struct struct Bad { sampler x; }; ^^^^^^^^^ -1 error +error: 1: variables of type 'sampler' may not be uniform +struct Bad { sampler x; }; + ^^^^^^^^^ +error: 2: caused by: +uniform Bad b; +^^^^^^^^^^^^^ +3 errors diff --git a/tests/sksl/metal/Ossfuzz48371.metal b/tests/sksl/metal/Ossfuzz48371.metal index fa7b8b672ce5..f2df0ce11c19 100644 --- a/tests/sksl/metal/Ossfuzz48371.metal +++ b/tests/sksl/metal/Ossfuzz48371.metal @@ -1,11 +1,9 @@ -#include -#include -using namespace metal; -struct Inputs { -}; -struct Outputs { - half4 sk_FragColor [[color(0)]]; -}; -struct Globals { - texture2d s; -}; +### Compilation failed: + +error: 1: 'texture2D' requires a 'readonly' or 'writeonly' access qualifier +uniform texture2D s +^^^^^^^ +error: 1: variables of type 'texture2D' may not be uniform +uniform texture2D s +^^^^^^^^^^^^^^^^^^^ +2 errors diff --git a/tests/sksl/metal/OutParams.metal b/tests/sksl/metal/OutParams.metal index 20207d8a6217..6319b6157539 100644 --- a/tests/sksl/metal/OutParams.metal +++ b/tests/sksl/metal/OutParams.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/metal/SamplerGlobals.metal b/tests/sksl/metal/SamplerGlobals.metal index eab0651a8de4..dd2a4c0fcb91 100644 --- a/tests/sksl/metal/SamplerGlobals.metal +++ b/tests/sksl/metal/SamplerGlobals.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/metal/SwizzleHelper.metal b/tests/sksl/metal/SwizzleHelper.metal index 6243be718cab..0e9c3d180352 100644 --- a/tests/sksl/metal/SwizzleHelper.metal +++ b/tests/sksl/metal/SwizzleHelper.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/realistic/GaussianBlur.metal b/tests/sksl/realistic/GaussianBlur.metal index 8cef456d7516..9a2eb85ac4f3 100644 --- a/tests/sksl/realistic/GaussianBlur.metal +++ b/tests/sksl/realistic/GaussianBlur.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/realistic/GaussianBlur.skrp b/tests/sksl/realistic/GaussianBlur.skrp index a79f921b0eba..99812c4b4316 100644 --- a/tests/sksl/realistic/GaussianBlur.skrp +++ b/tests/sksl/realistic/GaussianBlur.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D uTextureSampler_0_Stage1; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D uTextureSampler_0_Stage1; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: interface blocks are not allowed in this kind of program layout (binding=0) uniform uniformBuffer ^^^^^^^^^^^^^ diff --git a/tests/sksl/realistic/GaussianBlur.wgsl b/tests/sksl/realistic/GaussianBlur.wgsl index a580212a7212..a4760350ebce 100644 --- a/tests/sksl/realistic/GaussianBlur.wgsl +++ b/tests/sksl/realistic/GaussianBlur.wgsl @@ -18,9 +18,7 @@ struct uniformBuffer { @group(0) @binding(0) var _uniform0 : uniformBuffer; @group(0) @binding(10001) var uTextureSampler_0_Stage1_Sampler: sampler; @group(0) @binding(10002) var uTextureSampler_0_Stage1_Texture: texture_2d; -fn MatrixEffect_Stage1_c0_c0_h4h4f2(_skParam0: vec4, _skParam1: vec2) -> vec4 { - let _input = _skParam0; - let _coords = _skParam1; +fn MatrixEffect_Stage1_c0_c0_h4h4f2(_input: vec4, _coords: vec2) -> vec4 { { var _1_inCoord: vec2 = (_uniform0.umatrix_Stage1_c0_c0 * vec3(_coords, 1.0)).xy; _1_inCoord = _1_inCoord * _uniform0.unorm_Stage1_c0_c0_c0.xy; @@ -39,7 +37,7 @@ fn MatrixEffect_Stage1_c0_c0_h4h4f2(_skParam0: vec4, _skParam1: vec2) return _4_textureColor; } } -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { var outputColor_Stage0: vec4; var outputCoverage_Stage0: vec4; @@ -157,8 +155,8 @@ fn main(_stageIn: FSIn, _stageOut: ptr) { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/runtime/Commutative.skrp b/tests/sksl/runtime/Commutative.skrp index 830d88ae764c..81bb9a7c3bab 100644 --- a/tests/sksl/runtime/Commutative.skrp +++ b/tests/sksl/runtime/Commutative.skrp @@ -18,10 +18,10 @@ copy_constant $0 = 0 copy_slot_unmasked $1 = $13 copy_slot_masked $0 = Mask($1) trace_scope TraceScope(+1) when $0 is true -trace_line TraceLine(10) when $13 is true +trace_line TraceLine(9) when $13 is true copy_constant ok = 0xFFFFFFFF trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(11) when $13 is true +trace_line TraceLine(10) when $13 is true copy_uniform $1 = testMatrix2x2(0) cast_to_int_from_float $1 = FloatToInt($1) copy_slot_unmasked a = $1 @@ -31,176 +31,176 @@ swizzle_1 $1 = ($1..2).y cast_to_int_from_float $1 = FloatToInt($1) copy_slot_unmasked b = $1 trace_var TraceVar(b) when $13 is true -trace_line TraceLine(12) when $13 is true +trace_line TraceLine(11) when $13 is true copy_uniform c = testMatrix2x2(2) trace_var TraceVar(c) when $13 is true copy_2_uniforms $1..2 = testMatrix2x2(2..3) swizzle_1 $1 = ($1..2).y copy_slot_unmasked d = $1 trace_var TraceVar(d) when $13 is true -trace_line TraceLine(14) when $13 is true +trace_line TraceLine(13) when $13 is true copy_2_slots_unmasked $1..2 = a, b bitwise_and_int $1 &= $2 copy_slot_unmasked a_and_b = $1 trace_var TraceVar(a_and_b) when $13 is true -trace_line TraceLine(15) when $13 is true +trace_line TraceLine(14) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a bitwise_and_int $1 &= $2 copy_slot_unmasked b_and_a = $1 trace_var TraceVar(b_and_a) when $13 is true -trace_line TraceLine(16) when $13 is true +trace_line TraceLine(15) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_and_b, b_and_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(18) when $13 is true +trace_line TraceLine(17) when $13 is true copy_2_slots_unmasked $1..2 = a, b bitwise_or_int $1 |= $2 copy_slot_unmasked a_or_b = $1 trace_var TraceVar(a_or_b) when $13 is true -trace_line TraceLine(19) when $13 is true +trace_line TraceLine(18) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a bitwise_or_int $1 |= $2 copy_slot_unmasked b_or_a = $1 trace_var TraceVar(b_or_a) when $13 is true -trace_line TraceLine(20) when $13 is true +trace_line TraceLine(19) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_or_b, b_or_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(22) when $13 is true +trace_line TraceLine(21) when $13 is true copy_2_slots_unmasked $1..2 = a, b bitwise_xor_int $1 ^= $2 copy_slot_unmasked a_xor_b = $1 trace_var TraceVar(a_xor_b) when $13 is true -trace_line TraceLine(23) when $13 is true +trace_line TraceLine(22) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a bitwise_xor_int $1 ^= $2 copy_slot_unmasked b_xor_a = $1 trace_var TraceVar(b_xor_a) when $13 is true -trace_line TraceLine(24) when $13 is true +trace_line TraceLine(23) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_xor_b, b_xor_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(26) when $13 is true +trace_line TraceLine(25) when $13 is true copy_2_slots_unmasked $1..2 = a, b cmpeq_int $1 = equal($1, $2) copy_slot_unmasked a_eq_b = $1 trace_var TraceVar(a_eq_b) when $13 is true -trace_line TraceLine(27) when $13 is true +trace_line TraceLine(26) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a cmpeq_int $1 = equal($1, $2) copy_slot_unmasked b_eq_a = $1 trace_var TraceVar(b_eq_a) when $13 is true -trace_line TraceLine(28) when $13 is true +trace_line TraceLine(27) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_eq_b, b_eq_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(30) when $13 is true +trace_line TraceLine(29) when $13 is true copy_2_slots_unmasked $1..2 = a, b cmpne_int $1 = notEqual($1, $2) copy_slot_unmasked a_neq_b = $1 trace_var TraceVar(a_neq_b) when $13 is true -trace_line TraceLine(31) when $13 is true +trace_line TraceLine(30) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a cmpne_int $1 = notEqual($1, $2) copy_slot_unmasked b_neq_a = $1 trace_var TraceVar(b_neq_a) when $13 is true -trace_line TraceLine(32) when $13 is true +trace_line TraceLine(31) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_neq_b, b_neq_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(34) when $13 is true +trace_line TraceLine(33) when $13 is true copy_2_slots_unmasked $1..2 = a, b add_int $1 += $2 copy_slot_unmasked a_add_b = $1 trace_var TraceVar(a_add_b) when $13 is true -trace_line TraceLine(35) when $13 is true +trace_line TraceLine(34) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a add_int $1 += $2 copy_slot_unmasked b_add_a = $1 trace_var TraceVar(b_add_a) when $13 is true -trace_line TraceLine(36) when $13 is true +trace_line TraceLine(35) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_add_b, b_add_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(38) when $13 is true +trace_line TraceLine(37) when $13 is true copy_2_slots_unmasked $1..2 = c, d add_float $1 += $2 copy_slot_unmasked c_add_d = $1 trace_var TraceVar(c_add_d) when $13 is true -trace_line TraceLine(39) when $13 is true +trace_line TraceLine(38) when $13 is true copy_slot_unmasked $1 = d copy_slot_unmasked $2 = c add_float $1 += $2 copy_slot_unmasked d_add_c = $1 trace_var TraceVar(d_add_c) when $13 is true -trace_line TraceLine(40) when $13 is true +trace_line TraceLine(39) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = c_add_d, d_add_c cmpeq_float $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(42) when $13 is true +trace_line TraceLine(41) when $13 is true copy_2_slots_unmasked $1..2 = a, b mul_int $1 *= $2 copy_slot_unmasked a_mul_b = $1 trace_var TraceVar(a_mul_b) when $13 is true -trace_line TraceLine(43) when $13 is true +trace_line TraceLine(42) when $13 is true copy_slot_unmasked $1 = b copy_slot_unmasked $2 = a mul_int $1 *= $2 copy_slot_unmasked b_mul_a = $1 trace_var TraceVar(b_mul_a) when $13 is true -trace_line TraceLine(44) when $13 is true +trace_line TraceLine(43) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = a_mul_b, b_mul_a cmpeq_int $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(46) when $13 is true +trace_line TraceLine(45) when $13 is true copy_2_slots_unmasked $1..2 = c, d mul_float $1 *= $2 copy_slot_unmasked c_mul_d = $1 trace_var TraceVar(c_mul_d) when $13 is true -trace_line TraceLine(47) when $13 is true +trace_line TraceLine(46) when $13 is true copy_slot_unmasked $1 = d copy_slot_unmasked $2 = c mul_float $1 *= $2 copy_slot_unmasked d_mul_c = $1 trace_var TraceVar(d_mul_c) when $13 is true -trace_line TraceLine(48) when $13 is true +trace_line TraceLine(47) when $13 is true copy_slot_unmasked $1 = ok copy_2_slots_unmasked $2..3 = c_mul_d, d_mul_c cmpeq_float $2 = equal($2, $3) bitwise_and_int $1 &= $2 copy_slot_unmasked ok = $1 trace_var TraceVar(ok) when $13 is true -trace_line TraceLine(50) when $13 is true +trace_line TraceLine(49) when $13 is true copy_slot_unmasked $1 = ok swizzle_4 $1..4 = ($1..4).xxxx copy_4_uniforms $5..8 = colorRed diff --git a/tests/sksl/runtime/LoopInt.minified.sksl b/tests/sksl/runtime/LoopInt.minified.sksl index 4edc193b970e..521f99e1f4e4 100644 --- a/tests/sksl/runtime/LoopInt.minified.sksl +++ b/tests/sksl/runtime/LoopInt.minified.sksl @@ -1 +1 @@ -uniform half4 colorRed;uniform half4 colorGreen;int a(int b){for(int c=0;c<10;++c){if(c==b){return c;}}return 0;}int b(int c){int d=0;for(int e=0;e<10;++e){if(ed){break;}e+=g;}return e;}bool d(){int4 e=int4(9);for(int f=1;f<=3;++f){e=int4(e.yzw,f);}return e==int4(9,1,2,3);}bool e(){int4 f=int4(9);for(int g=1;g<4;++g){f=int4(f.yzw,g);}return f==int4(9,1,2,3);}bool f(){int4 g=int4(9);for(int h=3;h>=1;--h){g=int4(g.yzw,h);}return g==int4(9,3,2,1);}bool g(){int4 h=int4(9);for(int j=3;j>0;--j){h=int4(h.yzw,j);}return h==int4(9,3,2,1);}bool h(){int4 i=int4(9);for(int j=1;j!=4;++j){i=int4(i.yzw,j);}return i==int4(9,1,2,3);}bool i(){int4 j=int4(9);for(int k=1;k==1;++k){j=int4(j.yzw,k);}return j==int4(9,9,9,1);}half4 main(float2 j){int k=int(clamp(j.x,float(colorGreen.y),float(colorGreen.w)))*5;return(((((((a(k)==5&&b(k)==35)&&c(5)==15)&&d())&&e())&&f())&&g())&&i())&&h()?colorGreen:colorRed;} +uniform half4 colorRed;uniform half4 colorGreen;int a(int b){for(int c=0;c<10;++c){if(c==b){return c;}}return 0;}int b(int c){int d=0;for(int e=0;e<10;++e){if(ed){break;}e+=g;}return e;}bool d(){int4 e=int4(8);for(int f=0;f<=0;++f){e+=int4(1);}for(int f=1;f<=3;++f){e=int4(e.yzw,f);}return e==int4(9,1,2,3);}bool e(){int4 f=int4(8);for(int g=0;g<1;++g){f+=int4(1);}for(int g=1;g<4;++g){f=int4(f.yzw,g);}return f==int4(9,1,2,3);}bool f(){int4 g=int4(8);for(int h=0;h>=0;--h){g+=int4(1);}for(int h=3;h>=1;--h){g=int4(g.yzw,h);}return g==int4(9,3,2,1);}bool g(){int4 h=int4(8);for(int j=1;j>0;--j){h+=int4(1);}for(int j=3;j>0;--j){h=int4(h.yzw,j);}return h==int4(9,3,2,1);}bool h(){int4 i=int4(8);for(int j=1;j!=2;++j){i+=int4(1);}for(int j=1;j!=4;++j){i=int4(i.yzw,j);}return i==int4(9,1,2,3);}bool i(){int4 j=int4(9);for(int k=1;k==1;++k){j=int4(j.yzw,k);}return j==int4(9,9,9,1);}half4 main(float2 j){int k=int(clamp(j.x,float(colorGreen.y),float(colorGreen.w)))*5;return(((((((a(k)==5&&b(k)==35)&&c(5)==15)&&d())&&e())&&f())&&g())&&i())&&h()?colorGreen:colorRed;} diff --git a/tests/sksl/runtime/LoopInt.skrp b/tests/sksl/runtime/LoopInt.skrp index 9d5ace7c69da..f21b403b77d7 100644 --- a/tests/sksl/runtime/LoopInt.skrp +++ b/tests/sksl/runtime/LoopInt.skrp @@ -1,4 +1,4 @@ -563 instructions +677 instructions [immutable slots] i0 = 0x00000009 (1.261169e-44) @@ -34,7 +34,7 @@ copy_constant $0 = 0 copy_slot_unmasked $1 = $13 copy_slot_masked $0 = Mask($1) trace_scope TraceScope(+1) when $0 is true -trace_line TraceLine(107) when $13 is true +trace_line TraceLine(130) when $13 is true copy_slot_unmasked $1 = pos(0) copy_uniform $2 = colorGreen(1) max_float $1 = max($1, $2) @@ -44,450 +44,550 @@ cast_to_int_from_float $1 = FloatToInt($1) mul_imm_int $1 *= 0x00000005 copy_slot_unmasked five = $1 trace_var TraceVar(five) when $13 is true -trace_line TraceLine(111) when $13 is true +trace_line TraceLine(134) when $13 is true store_condition_mask $17 = CondMask store_condition_mask $28 = CondMask -store_condition_mask $39 = CondMask -store_condition_mask $50 = CondMask -store_condition_mask $61 = CondMask -store_condition_mask $72 = CondMask -store_condition_mask $82 = CondMask -store_condition_mask $92 = CondMask +store_condition_mask $41 = CondMask +store_condition_mask $54 = CondMask +store_condition_mask $67 = CondMask +store_condition_mask $80 = CondMask +store_condition_mask $90 = CondMask +store_condition_mask $100 = CondMask branch_if_no_lanes_active branch_if_no_lanes_active +64 (label 9 at #104) trace_enter TraceEnter(int return_loop(int five)) when $13 is true copy_slot_unmasked five₁ = five trace_var TraceVar(five₁) when $13 is true -store_return_mask $93 = RetMask -copy_constant $94 = 0 -copy_slot_unmasked $95 = $13 -copy_slot_masked $94 = Mask($95) -trace_scope TraceScope(+1) when $94 is true -copy_constant $95 = 0 -copy_slot_unmasked $96 = $13 -copy_slot_masked $95 = Mask($96) -trace_scope TraceScope(+1) when $95 is true +store_return_mask $101 = RetMask +copy_constant $102 = 0 +copy_slot_unmasked $103 = $13 +copy_slot_masked $102 = Mask($103) +trace_scope TraceScope(+1) when $102 is true +copy_constant $103 = 0 +copy_slot_unmasked $104 = $13 +copy_slot_masked $103 = Mask($104) +trace_scope TraceScope(+1) when $103 is true trace_line TraceLine(8) when $13 is true copy_constant i = 0 trace_var TraceVar(i) when $13 is true -store_loop_mask $96 = LoopMask +store_loop_mask $104 = LoopMask jump jump +29 (label 11 at #86) label label 0x0000000C -copy_constant $97 = 0 -copy_slot_unmasked $98 = $13 -copy_slot_masked $97 = Mask($98) -trace_scope TraceScope(+1) when $97 is true +copy_constant $105 = 0 +copy_slot_unmasked $106 = $13 +copy_slot_masked $105 = Mask($106) +trace_scope TraceScope(+1) when $105 is true trace_line TraceLine(9) when $13 is true -store_condition_mask $98 = CondMask -copy_slot_unmasked $99 = i -copy_slot_unmasked $100 = five₁ -cmpeq_int $99 = equal($99, $100) -merge_condition_mask CondMask = $98 & $99 -copy_constant $100 = 0 -copy_slot_unmasked $101 = $13 -copy_slot_masked $100 = Mask($101) -trace_scope TraceScope(+1) when $100 is true +store_condition_mask $106 = CondMask +copy_slot_unmasked $107 = i +copy_slot_unmasked $108 = five₁ +cmpeq_int $107 = equal($107, $108) +merge_condition_mask CondMask = $106 & $107 +copy_constant $108 = 0 +copy_slot_unmasked $109 = $13 +copy_slot_masked $108 = Mask($109) +trace_scope TraceScope(+1) when $108 is true trace_line TraceLine(9) when $13 is true -copy_slot_unmasked $101 = i -copy_slot_masked [return_loop].result = Mask($101) +copy_slot_unmasked $109 = i +copy_slot_masked [return_loop].result = Mask($109) trace_var TraceVar([return_loop].result) when $13 is true mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) -trace_scope TraceScope(-1) when $100 is true -load_condition_mask CondMask = $98 -trace_scope TraceScope(-1) when $97 is true +trace_scope TraceScope(-1) when $108 is true +load_condition_mask CondMask = $106 +trace_scope TraceScope(-1) when $105 is true trace_line TraceLine(8) when $13 is true -copy_slot_unmasked $97 = i -add_imm_int $97 += 0x00000001 -copy_slot_masked i = Mask($97) +copy_slot_unmasked $105 = i +add_imm_int $105 += 0x00000001 +copy_slot_masked i = Mask($105) trace_var TraceVar(i) when $13 is true label label 0x0000000B -copy_slot_unmasked $97 = i -cmplt_imm_int $97 = lessThan($97, 0x0000000A) -merge_loop_mask LoopMask &= $97 +copy_slot_unmasked $105 = i +cmplt_imm_int $105 = lessThan($105, 0x0000000A) +merge_loop_mask LoopMask &= $105 stack_rewind branch_if_any_lanes_active branch_if_any_lanes_active -33 (label 12 at #58) label label 0x0000000A -load_loop_mask LoopMask = $96 -trace_scope TraceScope(-1) when $95 is true +load_loop_mask LoopMask = $104 +trace_scope TraceScope(-1) when $103 is true trace_line TraceLine(11) when $13 is true -copy_constant $95 = 0 -copy_slot_masked [return_loop].result = Mask($95) +copy_constant $103 = 0 +copy_slot_masked [return_loop].result = Mask($103) trace_var TraceVar([return_loop].result) when $13 is true mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) -trace_scope TraceScope(-1) when $94 is true -load_return_mask RetMask = $93 +trace_scope TraceScope(-1) when $102 is true +load_return_mask RetMask = $101 trace_exit TraceExit(int return_loop(int five)) when $13 is true -copy_slot_unmasked $93 = [return_loop].result +copy_slot_unmasked $101 = [return_loop].result label label 0x00000009 -cmpeq_imm_int $93 = equal($93, 0x00000005) -copy_constant $83 = 0 -merge_condition_mask CondMask = $92 & $93 +cmpeq_imm_int $101 = equal($101, 0x00000005) +copy_constant $91 = 0 +merge_condition_mask CondMask = $100 & $101 branch_if_no_lanes_active branch_if_no_lanes_active +71 (label 8 at #179) trace_enter TraceEnter(int continue_loop(int five)) when $13 is true copy_slot_unmasked five₂ = five trace_var TraceVar(five₂) when $13 is true -copy_constant $84 = 0 -copy_slot_unmasked $85 = $13 -copy_slot_masked $84 = Mask($85) -trace_scope TraceScope(+1) when $84 is true +copy_constant $92 = 0 +copy_slot_unmasked $93 = $13 +copy_slot_masked $92 = Mask($93) +trace_scope TraceScope(+1) when $92 is true trace_line TraceLine(17) when $13 is true copy_constant sum = 0 trace_var TraceVar(sum) when $13 is true -copy_constant $85 = 0 -copy_slot_unmasked $86 = $13 -copy_slot_masked $85 = Mask($86) -trace_scope TraceScope(+1) when $85 is true +copy_constant $93 = 0 +copy_slot_unmasked $94 = $13 +copy_slot_masked $93 = Mask($94) +trace_scope TraceScope(+1) when $93 is true trace_line TraceLine(18) when $13 is true copy_constant i₁ = 0 trace_var TraceVar(i₁) when $13 is true -store_loop_mask $86 = LoopMask +store_loop_mask $94 = LoopMask jump jump +33 (label 15 at #160) label label 0x00000010 -copy_constant $102 = 0 -copy_constant $87 = 0 -copy_slot_unmasked $88 = $13 -copy_slot_masked $87 = Mask($88) -trace_scope TraceScope(+1) when $87 is true +copy_constant $110 = 0 +copy_constant $95 = 0 +copy_slot_unmasked $96 = $13 +copy_slot_masked $95 = Mask($96) +trace_scope TraceScope(+1) when $95 is true trace_line TraceLine(19) when $13 is true -store_condition_mask $88 = CondMask -copy_slot_unmasked $89 = i₁ -copy_slot_unmasked $90 = five₂ -cmplt_int $89 = lessThan($89, $90) -merge_condition_mask CondMask = $88 & $89 -copy_constant $90 = 0 -copy_slot_unmasked $91 = $13 -copy_slot_masked $90 = Mask($91) -trace_scope TraceScope(+1) when $90 is true +store_condition_mask $96 = CondMask +copy_slot_unmasked $97 = i₁ +copy_slot_unmasked $98 = five₂ +cmplt_int $97 = lessThan($97, $98) +merge_condition_mask CondMask = $96 & $97 +copy_constant $98 = 0 +copy_slot_unmasked $99 = $13 +copy_slot_masked $98 = Mask($99) +trace_scope TraceScope(+1) when $98 is true trace_line TraceLine(19) when $13 is true -continue_op $102 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) -trace_scope TraceScope(-1) when $90 is true -load_condition_mask CondMask = $88 +continue_op $110 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) +trace_scope TraceScope(-1) when $98 is true +load_condition_mask CondMask = $96 trace_line TraceLine(20) when $13 is true -copy_2_slots_unmasked $88..89 = sum, i₁ -add_int $88 += $89 -copy_slot_masked sum = Mask($88) +copy_2_slots_unmasked $96..97 = sum, i₁ +add_int $96 += $97 +copy_slot_masked sum = Mask($96) trace_var TraceVar(sum) when $13 is true -trace_scope TraceScope(-1) when $87 is true -reenable_loop_mask LoopMask |= $102 +trace_scope TraceScope(-1) when $95 is true +reenable_loop_mask LoopMask |= $110 trace_line TraceLine(18) when $13 is true -copy_slot_unmasked $87 = i₁ -add_imm_int $87 += 0x00000001 -copy_slot_masked i₁ = Mask($87) +copy_slot_unmasked $95 = i₁ +add_imm_int $95 += 0x00000001 +copy_slot_masked i₁ = Mask($95) trace_var TraceVar(i₁) when $13 is true label label 0x0000000F -copy_slot_unmasked $87 = i₁ -cmplt_imm_int $87 = lessThan($87, 0x0000000A) -merge_loop_mask LoopMask &= $87 +copy_slot_unmasked $95 = i₁ +cmplt_imm_int $95 = lessThan($95, 0x0000000A) +merge_loop_mask LoopMask &= $95 stack_rewind branch_if_any_lanes_active branch_if_any_lanes_active -37 (label 16 at #128) label label 0x0000000E -load_loop_mask LoopMask = $86 -trace_scope TraceScope(-1) when $85 is true +load_loop_mask LoopMask = $94 +trace_scope TraceScope(-1) when $93 is true trace_line TraceLine(22) when $13 is true -copy_slot_unmasked $85 = sum -copy_slot_masked [continue_loop].result = Mask($85) +copy_slot_unmasked $93 = sum +copy_slot_masked [continue_loop].result = Mask($93) trace_var TraceVar([continue_loop].result) when $13 is true -trace_scope TraceScope(-1) when $84 is true +trace_scope TraceScope(-1) when $92 is true trace_exit TraceExit(int continue_loop(int five)) when $13 is true -copy_slot_unmasked $84 = [continue_loop].result +copy_slot_unmasked $92 = [continue_loop].result label label 0x0000000D -cmpeq_imm_int $84 = equal($84, 0x00000023) -copy_slot_masked $83 = Mask($84) +cmpeq_imm_int $92 = equal($92, 0x00000023) +copy_slot_masked $91 = Mask($92) label label 0x00000008 -load_condition_mask CondMask = $92 -copy_constant $73 = 0 -merge_condition_mask CondMask = $82 & $83 +load_condition_mask CondMask = $100 +copy_constant $81 = 0 +merge_condition_mask CondMask = $90 & $91 branch_if_no_lanes_active branch_if_no_lanes_active +74 (label 7 at #257) trace_enter TraceEnter(int break_loop(int five)) when $13 is true copy_constant five₃ = 0x00000005 (7.006492e-45) trace_var TraceVar(five₃) when $13 is true -copy_constant $74 = 0 -copy_slot_unmasked $75 = $13 -copy_slot_masked $74 = Mask($75) -trace_scope TraceScope(+1) when $74 is true +copy_constant $82 = 0 +copy_slot_unmasked $83 = $13 +copy_slot_masked $82 = Mask($83) +trace_scope TraceScope(+1) when $82 is true trace_line TraceLine(27) when $13 is true copy_constant sum₁ = 0 trace_var TraceVar(sum₁) when $13 is true trace_line TraceLine(28) when $13 is true copy_constant kOne = 0x00000001 (1.401298e-45) trace_var TraceVar(kOne) when $13 is true -copy_constant $75 = 0 -copy_slot_unmasked $76 = $13 -copy_slot_masked $75 = Mask($76) -trace_scope TraceScope(+1) when $75 is true +copy_constant $83 = 0 +copy_slot_unmasked $84 = $13 +copy_slot_masked $83 = Mask($84) +trace_scope TraceScope(+1) when $83 is true trace_line TraceLine(29) when $13 is true copy_constant i₂ = 0 trace_var TraceVar(i₂) when $13 is true -store_loop_mask $76 = LoopMask +store_loop_mask $84 = LoopMask jump jump +33 (label 19 at #238) label label 0x00000014 -copy_constant $77 = 0 -copy_slot_unmasked $78 = $13 -copy_slot_masked $77 = Mask($78) -trace_scope TraceScope(+1) when $77 is true +copy_constant $85 = 0 +copy_slot_unmasked $86 = $13 +copy_slot_masked $85 = Mask($86) +trace_scope TraceScope(+1) when $85 is true trace_line TraceLine(30) when $13 is true -store_condition_mask $78 = CondMask -copy_slot_unmasked $79 = five₃ -copy_slot_unmasked $80 = i₂ -cmplt_int $79 = lessThan($79, $80) -merge_condition_mask CondMask = $78 & $79 -copy_constant $80 = 0 -copy_slot_unmasked $81 = $13 -copy_slot_masked $80 = Mask($81) -trace_scope TraceScope(+1) when $80 is true +store_condition_mask $86 = CondMask +copy_slot_unmasked $87 = five₃ +copy_slot_unmasked $88 = i₂ +cmplt_int $87 = lessThan($87, $88) +merge_condition_mask CondMask = $86 & $87 +copy_constant $88 = 0 +copy_slot_unmasked $89 = $13 +copy_slot_masked $88 = Mask($89) +trace_scope TraceScope(+1) when $88 is true trace_line TraceLine(30) when $13 is true branch_if_all_lanes_active branch_if_all_lanes_active +22 (label 18 at #244) mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) -trace_scope TraceScope(-1) when $80 is true -load_condition_mask CondMask = $78 +trace_scope TraceScope(-1) when $88 is true +load_condition_mask CondMask = $86 trace_line TraceLine(31) when $13 is true -copy_slot_unmasked $78 = sum₁ -copy_slot_unmasked $79 = i₂ -add_int $78 += $79 -copy_slot_masked sum₁ = Mask($78) +copy_slot_unmasked $86 = sum₁ +copy_slot_unmasked $87 = i₂ +add_int $86 += $87 +copy_slot_masked sum₁ = Mask($86) trace_var TraceVar(sum₁) when $13 is true -trace_scope TraceScope(-1) when $77 is true +trace_scope TraceScope(-1) when $85 is true trace_line TraceLine(29) when $13 is true -copy_slot_unmasked $77 = i₂ -add_imm_int $77 += 0x00000001 -copy_slot_masked i₂ = Mask($77) +copy_slot_unmasked $85 = i₂ +add_imm_int $85 += 0x00000001 +copy_slot_masked i₂ = Mask($85) trace_var TraceVar(i₂) when $13 is true label label 0x00000013 -copy_slot_unmasked $77 = i₂ -cmplt_imm_int $77 = lessThan($77, 0x0000000A) -merge_loop_mask LoopMask &= $77 +copy_slot_unmasked $85 = i₂ +cmplt_imm_int $85 = lessThan($85, 0x0000000A) +merge_loop_mask LoopMask &= $85 stack_rewind branch_if_any_lanes_active branch_if_any_lanes_active -37 (label 20 at #206) label label 0x00000012 -load_loop_mask LoopMask = $76 -trace_scope TraceScope(-1) when $75 is true +load_loop_mask LoopMask = $84 +trace_scope TraceScope(-1) when $83 is true trace_line TraceLine(33) when $13 is true -copy_slot_unmasked $75 = sum₁ -copy_slot_masked [break_loop].result = Mask($75) +copy_slot_unmasked $83 = sum₁ +copy_slot_masked [break_loop].result = Mask($83) trace_var TraceVar([break_loop].result) when $13 is true -trace_scope TraceScope(-1) when $74 is true +trace_scope TraceScope(-1) when $82 is true trace_exit TraceExit(int break_loop(int five)) when $13 is true -copy_slot_unmasked $74 = [break_loop].result +copy_slot_unmasked $82 = [break_loop].result label label 0x00000011 -cmpeq_imm_int $74 = equal($74, 0x0000000F) -copy_slot_masked $73 = Mask($74) +cmpeq_imm_int $82 = equal($82, 0x0000000F) +copy_slot_masked $81 = Mask($82) label label 0x00000007 -load_condition_mask CondMask = $82 -copy_constant $62 = 0 -merge_condition_mask CondMask = $72 & $73 -branch_if_no_lanes_active branch_if_no_lanes_active +53 (label 6 at #314) +load_condition_mask CondMask = $90 +copy_constant $68 = 0 +merge_condition_mask CondMask = $80 & $81 +branch_if_no_lanes_active branch_if_no_lanes_active +78 (label 6 at #339) trace_enter TraceEnter(bool loop_operator_le()) when $13 is true -copy_constant $63 = 0 -copy_slot_unmasked $64 = $13 -copy_slot_masked $63 = Mask($64) -trace_scope TraceScope(+1) when $63 is true +copy_constant $69 = 0 +copy_slot_unmasked $70 = $13 +copy_slot_masked $69 = Mask($70) +trace_scope TraceScope(+1) when $69 is true trace_line TraceLine(38) when $13 is true trace_line TraceLine(39) when $13 is true -trace_line TraceLine(41) when $13 is true -splat_4_constants result = 0x00000009 (1.261169e-44) +trace_line TraceLine(40) when $13 is true +trace_line TraceLine(43) when $13 is true +splat_4_constants result = 0x00000008 (1.121039e-44) trace_var TraceVar(result) when $13 is true -copy_constant $64 = 0 -copy_slot_unmasked $65 = $13 -copy_slot_masked $64 = Mask($65) -trace_scope TraceScope(+1) when $64 is true -branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 22 at #299) -trace_line TraceLine(42) when $13 is true -copy_constant i₃ = 0x00000001 (1.401298e-45) +copy_constant $70 = 0 +copy_slot_unmasked $71 = $13 +copy_slot_masked $70 = Mask($71) +trace_scope TraceScope(+1) when $70 is true +branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 22 at #294) +trace_line TraceLine(44) when $13 is true +copy_constant i₃ = 0 trace_var TraceVar(i₃) when $13 is true label label 0x00000017 -copy_constant $65 = 0 -copy_slot_unmasked $66 = $13 -copy_slot_masked $65 = Mask($66) -trace_scope TraceScope(+1) when $65 is true -trace_line TraceLine(43) when $13 is true -copy_4_slots_unmasked $66..69 = result(1..3), i₃ -copy_4_slots_masked result = Mask($66..69) +copy_constant $71 = 0 +copy_slot_unmasked $72 = $13 +copy_slot_masked $71 = Mask($72) +trace_scope TraceScope(+1) when $71 is true +trace_line TraceLine(44) when $13 is true +copy_4_slots_unmasked $72..75 = result +splat_4_constants $76..79 = 0x00000001 (1.401298e-45) +add_4_ints $72..75 += $76..79 +copy_4_slots_masked result = Mask($72..75) trace_var TraceVar(result) when $13 is true -trace_scope TraceScope(-1) when $65 is true -trace_line TraceLine(42) when $13 is true -copy_slot_unmasked $65 = i₃ -add_imm_int $65 += 0x00000001 -copy_slot_masked i₃ = Mask($65) -trace_var TraceVar(i₃) when $13 is true -copy_slot_unmasked $65 = i₃ -cmple_imm_int $65 = lessThanEqual($65, 0x00000003) -stack_rewind -branch_if_no_active_lanes_eq branch -18 (label 23 at #280) if no lanes of $65 == 0 +trace_scope TraceScope(-1) when $71 is true +trace_line TraceLine(44) when $13 is true label label 0x00000016 -trace_scope TraceScope(-1) when $64 is true -trace_line TraceLine(45) when $13 is true -copy_4_slots_unmasked $64..67 = result -copy_4_immutables_unmasked $68..71 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)] -cmpeq_4_ints $64..67 = equal($64..67, $68..71) -bitwise_and_2_ints $64..65 &= $66..67 -bitwise_and_int $64 &= $65 -copy_slot_masked [loop_operator_le].result = Mask($64) +trace_scope TraceScope(-1) when $70 is true +copy_constant $70 = 0 +copy_slot_unmasked $71 = $13 +copy_slot_masked $70 = Mask($71) +trace_scope TraceScope(+1) when $70 is true +branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 24 at #324) +trace_line TraceLine(47) when $13 is true +copy_constant i₄ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₄) when $13 is true +label label 0x00000019 +copy_constant $71 = 0 +copy_slot_unmasked $72 = $13 +copy_slot_masked $71 = Mask($72) +trace_scope TraceScope(+1) when $71 is true +trace_line TraceLine(48) when $13 is true +copy_3_slots_unmasked $72..74 = result(1..3) +copy_slot_unmasked $75 = i₄ +copy_4_slots_masked result = Mask($72..75) +trace_var TraceVar(result) when $13 is true +trace_scope TraceScope(-1) when $71 is true +trace_line TraceLine(47) when $13 is true +copy_slot_unmasked $71 = i₄ +add_imm_int $71 += 0x00000001 +copy_slot_masked i₄ = Mask($71) +trace_var TraceVar(i₄) when $13 is true +copy_slot_unmasked $71 = i₄ +cmple_imm_int $71 = lessThanEqual($71, 0x00000003) +stack_rewind +branch_if_no_active_lanes_eq branch -19 (label 25 at #304) if no lanes of $71 == 0 +label label 0x00000018 +trace_scope TraceScope(-1) when $70 is true +trace_line TraceLine(50) when $13 is true +copy_4_slots_unmasked $70..73 = result +copy_4_immutables_unmasked $74..77 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)] +cmpeq_4_ints $70..73 = equal($70..73, $74..77) +bitwise_and_2_ints $70..71 &= $72..73 +bitwise_and_int $70 &= $71 +copy_slot_masked [loop_operator_le].result = Mask($70) trace_var TraceVar([loop_operator_le].result) when $13 is true -trace_scope TraceScope(-1) when $63 is true +trace_scope TraceScope(-1) when $69 is true trace_exit TraceExit(bool loop_operator_le()) when $13 is true -copy_slot_unmasked $63 = [loop_operator_le].result +copy_slot_unmasked $69 = [loop_operator_le].result label label 0x00000015 -copy_slot_masked $62 = Mask($63) +copy_slot_masked $68 = Mask($69) label label 0x00000006 -load_condition_mask CondMask = $72 -copy_constant $51 = 0 -merge_condition_mask CondMask = $61 & $62 -branch_if_no_lanes_active branch_if_no_lanes_active +53 (label 5 at #371) +load_condition_mask CondMask = $80 +copy_constant $55 = 0 +merge_condition_mask CondMask = $67 & $68 +branch_if_no_lanes_active branch_if_no_lanes_active +78 (label 5 at #421) trace_enter TraceEnter(bool loop_operator_lt()) when $13 is true -copy_constant $52 = 0 -copy_slot_unmasked $53 = $13 -copy_slot_masked $52 = Mask($53) -trace_scope TraceScope(+1) when $52 is true -trace_line TraceLine(50) when $13 is true -trace_line TraceLine(51) when $13 is true -trace_line TraceLine(53) when $13 is true -splat_4_constants result₁ = 0x00000009 (1.261169e-44) -trace_var TraceVar(result₁) when $13 is true -copy_constant $53 = 0 -copy_slot_unmasked $54 = $13 -copy_slot_masked $53 = Mask($54) -trace_scope TraceScope(+1) when $53 is true -branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 25 at #356) -trace_line TraceLine(54) when $13 is true -copy_constant i₄ = 0x00000001 (1.401298e-45) -trace_var TraceVar(i₄) when $13 is true -label label 0x0000001A -copy_constant $54 = 0 -copy_slot_unmasked $55 = $13 -copy_slot_masked $54 = Mask($55) -trace_scope TraceScope(+1) when $54 is true +copy_constant $56 = 0 +copy_slot_unmasked $57 = $13 +copy_slot_masked $56 = Mask($57) +trace_scope TraceScope(+1) when $56 is true trace_line TraceLine(55) when $13 is true -copy_4_slots_unmasked $55..58 = result₁(1..3), i₄ -copy_4_slots_masked result₁ = Mask($55..58) +trace_line TraceLine(56) when $13 is true +trace_line TraceLine(57) when $13 is true +trace_line TraceLine(60) when $13 is true +splat_4_constants result₁ = 0x00000008 (1.121039e-44) trace_var TraceVar(result₁) when $13 is true -trace_scope TraceScope(-1) when $54 is true -trace_line TraceLine(54) when $13 is true -copy_slot_unmasked $54 = i₄ -add_imm_int $54 += 0x00000001 -copy_slot_masked i₄ = Mask($54) -trace_var TraceVar(i₄) when $13 is true -copy_slot_unmasked $54 = i₄ -cmplt_imm_int $54 = lessThan($54, 0x00000004) +copy_constant $57 = 0 +copy_slot_unmasked $58 = $13 +copy_slot_masked $57 = Mask($58) +trace_scope TraceScope(+1) when $57 is true +branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 27 at #376) +trace_line TraceLine(61) when $13 is true +copy_constant i₅ = 0 +trace_var TraceVar(i₅) when $13 is true +label label 0x0000001C +copy_constant $58 = 0 +copy_slot_unmasked $59 = $13 +copy_slot_masked $58 = Mask($59) +trace_scope TraceScope(+1) when $58 is true +trace_line TraceLine(61) when $13 is true +copy_4_slots_unmasked $59..62 = result₁ +splat_4_constants $63..66 = 0x00000001 (1.401298e-45) +add_4_ints $59..62 += $63..66 +copy_4_slots_masked result₁ = Mask($59..62) +trace_var TraceVar(result₁) when $13 is true +trace_scope TraceScope(-1) when $58 is true +trace_line TraceLine(61) when $13 is true +label label 0x0000001B +trace_scope TraceScope(-1) when $57 is true +copy_constant $57 = 0 +copy_slot_unmasked $58 = $13 +copy_slot_masked $57 = Mask($58) +trace_scope TraceScope(+1) when $57 is true +branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 29 at #406) +trace_line TraceLine(64) when $13 is true +copy_constant i₆ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₆) when $13 is true +label label 0x0000001E +copy_constant $58 = 0 +copy_slot_unmasked $59 = $13 +copy_slot_masked $58 = Mask($59) +trace_scope TraceScope(+1) when $58 is true +trace_line TraceLine(65) when $13 is true +copy_3_slots_unmasked $59..61 = result₁(1..3) +copy_slot_unmasked $62 = i₆ +copy_4_slots_masked result₁ = Mask($59..62) +trace_var TraceVar(result₁) when $13 is true +trace_scope TraceScope(-1) when $58 is true +trace_line TraceLine(64) when $13 is true +copy_slot_unmasked $58 = i₆ +add_imm_int $58 += 0x00000001 +copy_slot_masked i₆ = Mask($58) +trace_var TraceVar(i₆) when $13 is true +copy_slot_unmasked $58 = i₆ +cmplt_imm_int $58 = lessThan($58, 0x00000004) stack_rewind -branch_if_no_active_lanes_eq branch -18 (label 26 at #337) if no lanes of $54 == 0 -label label 0x00000019 -trace_scope TraceScope(-1) when $53 is true -trace_line TraceLine(57) when $13 is true -copy_4_slots_unmasked $53..56 = result₁ -copy_4_immutables_unmasked $57..60 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)] -cmpeq_4_ints $53..56 = equal($53..56, $57..60) -bitwise_and_2_ints $53..54 &= $55..56 -bitwise_and_int $53 &= $54 -copy_slot_masked [loop_operator_lt].result = Mask($53) +branch_if_no_active_lanes_eq branch -19 (label 30 at #386) if no lanes of $58 == 0 +label label 0x0000001D +trace_scope TraceScope(-1) when $57 is true +trace_line TraceLine(67) when $13 is true +copy_4_slots_unmasked $57..60 = result₁ +copy_4_immutables_unmasked $61..64 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)] +cmpeq_4_ints $57..60 = equal($57..60, $61..64) +bitwise_and_2_ints $57..58 &= $59..60 +bitwise_and_int $57 &= $58 +copy_slot_masked [loop_operator_lt].result = Mask($57) trace_var TraceVar([loop_operator_lt].result) when $13 is true -trace_scope TraceScope(-1) when $52 is true +trace_scope TraceScope(-1) when $56 is true trace_exit TraceExit(bool loop_operator_lt()) when $13 is true -copy_slot_unmasked $52 = [loop_operator_lt].result -label label 0x00000018 -copy_slot_masked $51 = Mask($52) +copy_slot_unmasked $56 = [loop_operator_lt].result +label label 0x0000001A +copy_slot_masked $55 = Mask($56) label label 0x00000005 -load_condition_mask CondMask = $61 -copy_constant $40 = 0 -merge_condition_mask CondMask = $50 & $51 -branch_if_no_lanes_active branch_if_no_lanes_active +54 (label 4 at #429) -trace_enter TraceEnter(bool loop_operator_ge()) when $13 is true -copy_constant $41 = 0 -copy_slot_unmasked $42 = $13 -copy_slot_masked $41 = Mask($42) -trace_scope TraceScope(+1) when $41 is true -trace_line TraceLine(62) when $13 is true -trace_line TraceLine(63) when $13 is true -trace_line TraceLine(65) when $13 is true -splat_4_constants result₂ = 0x00000009 (1.261169e-44) -trace_var TraceVar(result₂) when $13 is true +load_condition_mask CondMask = $67 copy_constant $42 = 0 -copy_slot_unmasked $43 = $13 -copy_slot_masked $42 = Mask($43) -trace_scope TraceScope(+1) when $42 is true -branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 28 at #414) -trace_line TraceLine(66) when $13 is true -copy_constant i₅ = 0x00000003 (4.203895e-45) -trace_var TraceVar(i₅) when $13 is true -label label 0x0000001D +merge_condition_mask CondMask = $54 & $55 +branch_if_no_lanes_active branch_if_no_lanes_active +79 (label 4 at #504) +trace_enter TraceEnter(bool loop_operator_ge()) when $13 is true copy_constant $43 = 0 copy_slot_unmasked $44 = $13 copy_slot_masked $43 = Mask($44) trace_scope TraceScope(+1) when $43 is true -trace_line TraceLine(67) when $13 is true -copy_4_slots_unmasked $44..47 = result₂(1..3), i₅ -copy_4_slots_masked result₂ = Mask($44..47) +trace_line TraceLine(72) when $13 is true +trace_line TraceLine(73) when $13 is true +trace_line TraceLine(74) when $13 is true +trace_line TraceLine(77) when $13 is true +splat_4_constants result₂ = 0x00000008 (1.121039e-44) trace_var TraceVar(result₂) when $13 is true -trace_scope TraceScope(-1) when $43 is true -trace_line TraceLine(66) when $13 is true -copy_slot_unmasked $43 = i₅ -add_imm_int $43 += 0xFFFFFFFF -copy_slot_masked i₅ = Mask($43) -trace_var TraceVar(i₅) when $13 is true -copy_constant $43 = 0x00000001 (1.401298e-45) -copy_slot_unmasked $44 = i₅ -cmple_int $43 = lessThanEqual($43, $44) +copy_constant $44 = 0 +copy_slot_unmasked $45 = $13 +copy_slot_masked $44 = Mask($45) +trace_scope TraceScope(+1) when $44 is true +branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 32 at #458) +trace_line TraceLine(78) when $13 is true +copy_constant i₇ = 0 +trace_var TraceVar(i₇) when $13 is true +label label 0x00000021 +copy_constant $45 = 0 +copy_slot_unmasked $46 = $13 +copy_slot_masked $45 = Mask($46) +trace_scope TraceScope(+1) when $45 is true +trace_line TraceLine(78) when $13 is true +copy_4_slots_unmasked $46..49 = result₂ +splat_4_constants $50..53 = 0x00000001 (1.401298e-45) +add_4_ints $46..49 += $50..53 +copy_4_slots_masked result₂ = Mask($46..49) +trace_var TraceVar(result₂) when $13 is true +trace_scope TraceScope(-1) when $45 is true +trace_line TraceLine(78) when $13 is true +label label 0x00000020 +trace_scope TraceScope(-1) when $44 is true +copy_constant $44 = 0 +copy_slot_unmasked $45 = $13 +copy_slot_masked $44 = Mask($45) +trace_scope TraceScope(+1) when $44 is true +branch_if_no_lanes_active branch_if_no_lanes_active +25 (label 34 at #489) +trace_line TraceLine(81) when $13 is true +copy_constant i₈ = 0x00000003 (4.203895e-45) +trace_var TraceVar(i₈) when $13 is true +label label 0x00000023 +copy_constant $45 = 0 +copy_slot_unmasked $46 = $13 +copy_slot_masked $45 = Mask($46) +trace_scope TraceScope(+1) when $45 is true +trace_line TraceLine(82) when $13 is true +copy_3_slots_unmasked $46..48 = result₂(1..3) +copy_slot_unmasked $49 = i₈ +copy_4_slots_masked result₂ = Mask($46..49) +trace_var TraceVar(result₂) when $13 is true +trace_scope TraceScope(-1) when $45 is true +trace_line TraceLine(81) when $13 is true +copy_slot_unmasked $45 = i₈ +add_imm_int $45 += 0xFFFFFFFF +copy_slot_masked i₈ = Mask($45) +trace_var TraceVar(i₈) when $13 is true +copy_constant $45 = 0x00000001 (1.401298e-45) +copy_slot_unmasked $46 = i₈ +cmple_int $45 = lessThanEqual($45, $46) stack_rewind -branch_if_no_active_lanes_eq branch -19 (label 29 at #394) if no lanes of $43 == 0 -label label 0x0000001C -trace_scope TraceScope(-1) when $42 is true -trace_line TraceLine(69) when $13 is true -copy_4_slots_unmasked $42..45 = result₂ -copy_4_immutables_unmasked $46..49 = i4..7 [0x00000009 (1.261169e-44), 0x00000003 (4.203895e-45), 0x00000002 (2.802597e-45), 0x00000001 (1.401298e-45)] -cmpeq_4_ints $42..45 = equal($42..45, $46..49) -bitwise_and_2_ints $42..43 &= $44..45 -bitwise_and_int $42 &= $43 -copy_slot_masked [loop_operator_ge].result = Mask($42) +branch_if_no_active_lanes_eq branch -20 (label 35 at #468) if no lanes of $45 == 0 +label label 0x00000022 +trace_scope TraceScope(-1) when $44 is true +trace_line TraceLine(84) when $13 is true +copy_4_slots_unmasked $44..47 = result₂ +copy_4_immutables_unmasked $48..51 = i4..7 [0x00000009 (1.261169e-44), 0x00000003 (4.203895e-45), 0x00000002 (2.802597e-45), 0x00000001 (1.401298e-45)] +cmpeq_4_ints $44..47 = equal($44..47, $48..51) +bitwise_and_2_ints $44..45 &= $46..47 +bitwise_and_int $44 &= $45 +copy_slot_masked [loop_operator_ge].result = Mask($44) trace_var TraceVar([loop_operator_ge].result) when $13 is true -trace_scope TraceScope(-1) when $41 is true +trace_scope TraceScope(-1) when $43 is true trace_exit TraceExit(bool loop_operator_ge()) when $13 is true -copy_slot_unmasked $41 = [loop_operator_ge].result -label label 0x0000001B -copy_slot_masked $40 = Mask($41) +copy_slot_unmasked $43 = [loop_operator_ge].result +label label 0x0000001F +copy_slot_masked $42 = Mask($43) label label 0x00000004 -load_condition_mask CondMask = $50 +load_condition_mask CondMask = $54 copy_constant $29 = 0 -merge_condition_mask CondMask = $39 & $40 -branch_if_no_lanes_active branch_if_no_lanes_active +54 (label 3 at #487) +merge_condition_mask CondMask = $41 & $42 +branch_if_no_lanes_active branch_if_no_lanes_active +79 (label 3 at #587) trace_enter TraceEnter(bool loop_operator_gt()) when $13 is true copy_constant $30 = 0 copy_slot_unmasked $31 = $13 copy_slot_masked $30 = Mask($31) trace_scope TraceScope(+1) when $30 is true -trace_line TraceLine(74) when $13 is true -trace_line TraceLine(75) when $13 is true -trace_line TraceLine(77) when $13 is true -splat_4_constants result₃ = 0x00000009 (1.261169e-44) +trace_line TraceLine(89) when $13 is true +trace_line TraceLine(90) when $13 is true +trace_line TraceLine(91) when $13 is true +trace_line TraceLine(94) when $13 is true +splat_4_constants result₃ = 0x00000008 (1.121039e-44) trace_var TraceVar(result₃) when $13 is true copy_constant $31 = 0 copy_slot_unmasked $32 = $13 copy_slot_masked $31 = Mask($32) trace_scope TraceScope(+1) when $31 is true -branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 31 at #472) -trace_line TraceLine(78) when $13 is true -copy_constant i₆ = 0x00000003 (4.203895e-45) -trace_var TraceVar(i₆) when $13 is true -label label 0x00000020 +branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 37 at #541) +trace_line TraceLine(95) when $13 is true +copy_constant i₉ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₉) when $13 is true +label label 0x00000026 copy_constant $32 = 0 copy_slot_unmasked $33 = $13 copy_slot_masked $32 = Mask($33) trace_scope TraceScope(+1) when $32 is true -trace_line TraceLine(79) when $13 is true -copy_4_slots_unmasked $33..36 = result₃(1..3), i₆ +trace_line TraceLine(95) when $13 is true +copy_4_slots_unmasked $33..36 = result₃ +splat_4_constants $37..40 = 0x00000001 (1.401298e-45) +add_4_ints $33..36 += $37..40 copy_4_slots_masked result₃ = Mask($33..36) trace_var TraceVar(result₃) when $13 is true trace_scope TraceScope(-1) when $32 is true -trace_line TraceLine(78) when $13 is true -copy_slot_unmasked $32 = i₆ +trace_line TraceLine(95) when $13 is true +label label 0x00000025 +trace_scope TraceScope(-1) when $31 is true +copy_constant $31 = 0 +copy_slot_unmasked $32 = $13 +copy_slot_masked $31 = Mask($32) +trace_scope TraceScope(+1) when $31 is true +branch_if_no_lanes_active branch_if_no_lanes_active +25 (label 39 at #572) +trace_line TraceLine(97) when $13 is true +copy_constant i₁₀ = 0x00000003 (4.203895e-45) +trace_var TraceVar(i₁₀) when $13 is true +label label 0x00000028 +copy_constant $32 = 0 +copy_slot_unmasked $33 = $13 +copy_slot_masked $32 = Mask($33) +trace_scope TraceScope(+1) when $32 is true +trace_line TraceLine(98) when $13 is true +copy_3_slots_unmasked $33..35 = result₃(1..3) +copy_slot_unmasked $36 = i₁₀ +copy_4_slots_masked result₃ = Mask($33..36) +trace_var TraceVar(result₃) when $13 is true +trace_scope TraceScope(-1) when $32 is true +trace_line TraceLine(97) when $13 is true +copy_slot_unmasked $32 = i₁₀ add_imm_int $32 += 0xFFFFFFFF -copy_slot_masked i₆ = Mask($32) -trace_var TraceVar(i₆) when $13 is true +copy_slot_masked i₁₀ = Mask($32) +trace_var TraceVar(i₁₀) when $13 is true copy_constant $32 = 0 -copy_slot_unmasked $33 = i₆ +copy_slot_unmasked $33 = i₁₀ cmplt_int $32 = lessThan($32, $33) stack_rewind -branch_if_no_active_lanes_eq branch -19 (label 32 at #452) if no lanes of $32 == 0 -label label 0x0000001F +branch_if_no_active_lanes_eq branch -20 (label 40 at #551) if no lanes of $32 == 0 +label label 0x00000027 trace_scope TraceScope(-1) when $31 is true -trace_line TraceLine(81) when $13 is true +trace_line TraceLine(100) when $13 is true copy_4_slots_unmasked $31..34 = result₃ copy_4_immutables_unmasked $35..38 = i4..7 [0x00000009 (1.261169e-44), 0x00000003 (4.203895e-45), 0x00000002 (2.802597e-45), 0x00000001 (1.401298e-45)] cmpeq_4_ints $31..34 = equal($31..34, $35..38) @@ -498,44 +598,44 @@ trace_var TraceVar([loop_operator_gt].result) when $13 is t trace_scope TraceScope(-1) when $30 is true trace_exit TraceExit(bool loop_operator_gt()) when $13 is true copy_slot_unmasked $30 = [loop_operator_gt].result -label label 0x0000001E +label label 0x00000024 copy_slot_masked $29 = Mask($30) label label 0x00000003 -load_condition_mask CondMask = $39 +load_condition_mask CondMask = $41 copy_constant $18 = 0 merge_condition_mask CondMask = $28 & $29 -branch_if_no_lanes_active branch_if_no_lanes_active +44 (label 2 at #535) +branch_if_no_lanes_active branch_if_no_lanes_active +44 (label 2 at #635) trace_enter TraceEnter(bool loop_operator_eq()) when $13 is true copy_constant $19 = 0 copy_slot_unmasked $20 = $13 copy_slot_masked $19 = Mask($20) trace_scope TraceScope(+1) when $19 is true -trace_line TraceLine(97) when $13 is true -trace_line TraceLine(99) when $13 is true +trace_line TraceLine(119) when $13 is true +trace_line TraceLine(122) when $13 is true splat_4_constants result₄ = 0x00000009 (1.261169e-44) trace_var TraceVar(result₄) when $13 is true copy_constant $20 = 0 copy_slot_unmasked $21 = $13 copy_slot_masked $20 = Mask($21) trace_scope TraceScope(+1) when $20 is true -branch_if_no_lanes_active branch_if_no_lanes_active +15 (label 34 at #520) -trace_line TraceLine(100) when $13 is true -copy_constant i₇ = 0x00000001 (1.401298e-45) -trace_var TraceVar(i₇) when $13 is true -label label 0x00000023 +branch_if_no_lanes_active branch_if_no_lanes_active +15 (label 42 at #620) +trace_line TraceLine(123) when $13 is true +copy_constant i₁₁ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₁₁) when $13 is true +label label 0x0000002B copy_constant $21 = 0 copy_slot_unmasked $22 = $13 copy_slot_masked $21 = Mask($22) trace_scope TraceScope(+1) when $21 is true -trace_line TraceLine(101) when $13 is true -copy_4_slots_unmasked $22..25 = result₄(1..3), i₇ +trace_line TraceLine(124) when $13 is true +copy_4_slots_unmasked $22..25 = result₄(1..3), i₁₁ copy_4_slots_masked result₄ = Mask($22..25) trace_var TraceVar(result₄) when $13 is true trace_scope TraceScope(-1) when $21 is true -trace_line TraceLine(100) when $13 is true -label label 0x00000022 +trace_line TraceLine(123) when $13 is true +label label 0x0000002A trace_scope TraceScope(-1) when $20 is true -trace_line TraceLine(103) when $13 is true +trace_line TraceLine(126) when $13 is true copy_4_slots_unmasked $20..23 = result₄ copy_4_immutables_unmasked $24..27 = i8..11 [0x00000009 (1.261169e-44), 0x00000009 (1.261169e-44), 0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45)] cmpeq_4_ints $20..23 = equal($20..23, $24..27) @@ -546,52 +646,76 @@ trace_var TraceVar([loop_operator_eq].result) when $13 is t trace_scope TraceScope(-1) when $19 is true trace_exit TraceExit(bool loop_operator_eq()) when $13 is true copy_slot_unmasked $19 = [loop_operator_eq].result -label label 0x00000021 +label label 0x00000029 copy_slot_masked $18 = Mask($19) label label 0x00000002 load_condition_mask CondMask = $28 copy_constant $1 = 0 merge_condition_mask CondMask = $17 & $18 -branch_if_no_lanes_active branch_if_no_lanes_active +52 (label 1 at #591) +branch_if_no_lanes_active branch_if_no_lanes_active +76 (label 1 at #715) trace_enter TraceEnter(bool loop_operator_ne()) when $13 is true copy_constant $2 = 0 copy_slot_unmasked $3 = $13 copy_slot_masked $2 = Mask($3) trace_scope TraceScope(+1) when $2 is true -trace_line TraceLine(86) when $13 is true -trace_line TraceLine(88) when $13 is true -splat_4_constants result₅ = 0x00000009 (1.261169e-44) +trace_line TraceLine(105) when $13 is true +trace_line TraceLine(108) when $13 is true +splat_4_constants result₅ = 0x00000008 (1.121039e-44) trace_var TraceVar(result₅) when $13 is true copy_constant $3 = 0 copy_slot_unmasked $4 = $13 copy_slot_masked $3 = Mask($4) trace_scope TraceScope(+1) when $3 is true -branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 37 at #576) -trace_line TraceLine(89) when $13 is true -copy_constant i₈ = 0x00000001 (1.401298e-45) -trace_var TraceVar(i₈) when $13 is true -label label 0x00000026 +branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 45 at #670) +trace_line TraceLine(109) when $13 is true +copy_constant i₁₂ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₁₂) when $13 is true +label label 0x0000002E copy_constant $4 = 0 copy_slot_unmasked $5 = $13 copy_slot_masked $4 = Mask($5) trace_scope TraceScope(+1) when $4 is true -trace_line TraceLine(90) when $13 is true -copy_4_slots_unmasked $5..8 = result₅(1..3), i₈ +trace_line TraceLine(109) when $13 is true +copy_4_slots_unmasked $5..8 = result₅ +splat_4_constants $9..12 = 0x00000001 (1.401298e-45) +add_4_ints $5..8 += $9..12 copy_4_slots_masked result₅ = Mask($5..8) trace_var TraceVar(result₅) when $13 is true trace_scope TraceScope(-1) when $4 is true -trace_line TraceLine(89) when $13 is true -copy_slot_unmasked $4 = i₈ +trace_line TraceLine(109) when $13 is true +label label 0x0000002D +trace_scope TraceScope(-1) when $3 is true +copy_constant $3 = 0 +copy_slot_unmasked $4 = $13 +copy_slot_masked $3 = Mask($4) +trace_scope TraceScope(+1) when $3 is true +branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 47 at #700) +trace_line TraceLine(111) when $13 is true +copy_constant i₁₃ = 0x00000001 (1.401298e-45) +trace_var TraceVar(i₁₃) when $13 is true +label label 0x00000030 +copy_constant $4 = 0 +copy_slot_unmasked $5 = $13 +copy_slot_masked $4 = Mask($5) +trace_scope TraceScope(+1) when $4 is true +trace_line TraceLine(112) when $13 is true +copy_3_slots_unmasked $5..7 = result₅(1..3) +copy_slot_unmasked $8 = i₁₃ +copy_4_slots_masked result₅ = Mask($5..8) +trace_var TraceVar(result₅) when $13 is true +trace_scope TraceScope(-1) when $4 is true +trace_line TraceLine(111) when $13 is true +copy_slot_unmasked $4 = i₁₃ add_imm_int $4 += 0x00000001 -copy_slot_masked i₈ = Mask($4) -trace_var TraceVar(i₈) when $13 is true -copy_slot_unmasked $4 = i₈ +copy_slot_masked i₁₃ = Mask($4) +trace_var TraceVar(i₁₃) when $13 is true +copy_slot_unmasked $4 = i₁₃ cmpne_imm_int $4 = notEqual($4, 0x00000004) stack_rewind -branch_if_no_active_lanes_eq branch -18 (label 38 at #557) if no lanes of $4 == 0 -label label 0x00000025 +branch_if_no_active_lanes_eq branch -19 (label 48 at #680) if no lanes of $4 == 0 +label label 0x0000002F trace_scope TraceScope(-1) when $3 is true -trace_line TraceLine(92) when $13 is true +trace_line TraceLine(114) when $13 is true copy_4_slots_unmasked $3..6 = result₅ copy_4_immutables_unmasked $7..10 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)] cmpeq_4_ints $3..6 = equal($3..6, $7..10) @@ -602,7 +726,7 @@ trace_var TraceVar([loop_operator_ne].result) when $13 is t trace_scope TraceScope(-1) when $2 is true trace_exit TraceExit(bool loop_operator_ne()) when $13 is true copy_slot_unmasked $2 = [loop_operator_ne].result -label label 0x00000024 +label label 0x0000002C copy_slot_masked $1 = Mask($2) label label 0x00000001 load_condition_mask CondMask = $17 diff --git a/tests/sksl/runtime/LoopInt.stage b/tests/sksl/runtime/LoopInt.stage index f0afed9b6374..a27bad9901e7 100644 --- a/tests/sksl/runtime/LoopInt.stage +++ b/tests/sksl/runtime/LoopInt.stage @@ -53,7 +53,12 @@ bool loop_operator_le_0() { ; ; - int4 result = int4(9); + ; + int4 result = int4(8); + for (int i = 0;i <= 0; ++i) + { + result += int4(1); + } for (int i = 1;i <= 3; ++i) { result = int4(result.yzw, i); @@ -64,7 +69,12 @@ bool loop_operator_lt_0() { ; ; - int4 result = int4(9); + ; + int4 result = int4(8); + for (int i = 0;i < 1; ++i) + { + result += int4(1); + } for (int i = 1;i < 4; ++i) { result = int4(result.yzw, i); @@ -75,7 +85,12 @@ bool loop_operator_ge_0() { ; ; - int4 result = int4(9); + ; + int4 result = int4(8); + for (int i = 0;i >= 0; --i) + { + result += int4(1); + } for (int i = 3;i >= 1; --i) { result = int4(result.yzw, i); @@ -86,7 +101,12 @@ bool loop_operator_gt_0() { ; ; - int4 result = int4(9); + ; + int4 result = int4(8); + for (int i = 1;i > 0; --i) + { + result += int4(1); + } for (int i = 3;i > 0; --i) { result = int4(result.yzw, i); @@ -96,7 +116,11 @@ bool loop_operator_gt_0() bool loop_operator_ne_0() { ; - int4 result = int4(9); + int4 result = int4(8); + for (int i = 1;i != 2; ++i) + { + result += int4(1); + } for (int i = 1;i != 4; ++i) { result = int4(result.yzw, i); diff --git a/tests/sksl/shared/ArrayCast.metal b/tests/sksl/shared/ArrayCast.metal index 2c23c954b3ae..32f959c78209 100644 --- a/tests/sksl/shared/ArrayCast.metal +++ b/tests/sksl/shared/ArrayCast.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ArrayCast.wgsl b/tests/sksl/shared/ArrayCast.wgsl index 30bc278edcef..646b27b1d83c 100644 --- a/tests/sksl/shared/ArrayCast.wgsl +++ b/tests/sksl/shared/ArrayCast.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f: array = array(1.0, 2.0, 3.0, 4.0); var h: array = f; @@ -32,8 +31,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((f[0] == _skTemp0[0]) && (f[1] == _skTemp0[1]) && (f[2] == _skTemp0[2]) && (f[3] == _skTemp0[3])) && (all(i3[0] == _skTemp1[0]) && all(i3[1] == _skTemp1[1]) && all(i3[2] == _skTemp1[2]))) && ((all(f2x2[0][0] == _skTemp2[0][0]) && all(f2x2[0][1] == _skTemp2[0][1])) && (all(f2x2[1][0] == _skTemp2[1][0]) && all(f2x2[1][1] == _skTemp2[1][1]))))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ArrayComparison.metal b/tests/sksl/shared/ArrayComparison.metal index cac7e575a2e2..25dbcd477340 100644 --- a/tests/sksl/shared/ArrayComparison.metal +++ b/tests/sksl/shared/ArrayComparison.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { int x; diff --git a/tests/sksl/shared/ArrayComparison.wgsl b/tests/sksl/shared/ArrayComparison.wgsl index 3c120cfa6477..fd5d20e3d992 100644 --- a/tests/sksl/shared/ArrayComparison.wgsl +++ b/tests/sksl/shared/ArrayComparison.wgsl @@ -39,8 +39,7 @@ struct S { x: i32, y: i32, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f1: array = array(1.0, 2.0, 3.0, 4.0, 5.0); var f2: array = array(1.0, 2.0, 3.0, 4.0, 5.0); @@ -57,9 +56,9 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((f1[0] == f2[0]) && (f1[1] == f2[1]) && (f1[2] == f2[2]) && (f1[3] == f2[3]) && (f1[4] == f2[4])) && ((f1[0] != f3[0]) || (f1[1] != f3[1]) || (f1[2] != f3[2]) || (f1[3] != f3[3]) || (f1[4] != f3[4]))) && ((_globalUniforms.testArray[0] != _globalUniforms.testArrayNegative[0]) || (_globalUniforms.testArray[1] != _globalUniforms.testArrayNegative[1]) || (_globalUniforms.testArray[2] != _globalUniforms.testArrayNegative[2]) || (_globalUniforms.testArray[3] != _globalUniforms.testArrayNegative[3]) || (_globalUniforms.testArray[4] != _globalUniforms.testArrayNegative[4]))) && ((_globalUniforms.testArray[0] == f1[0]) && (_globalUniforms.testArray[1] == f1[1]) && (_globalUniforms.testArray[2] == f1[2]) && (_globalUniforms.testArray[3] == f1[3]) && (_globalUniforms.testArray[4] == f1[4]))) && ((_globalUniforms.testArray[0] != f3[0]) || (_globalUniforms.testArray[1] != f3[1]) || (_globalUniforms.testArray[2] != f3[2]) || (_globalUniforms.testArray[3] != f3[3]) || (_globalUniforms.testArray[4] != f3[4]))) && ((f1[0] == _globalUniforms.testArray[0]) && (f1[1] == _globalUniforms.testArray[1]) && (f1[2] == _globalUniforms.testArray[2]) && (f1[3] == _globalUniforms.testArray[3]) && (f1[4] == _globalUniforms.testArray[4]))) && ((f3[0] != _globalUniforms.testArray[0]) || (f3[1] != _globalUniforms.testArray[1]) || (f3[2] != _globalUniforms.testArray[2]) || (f3[3] != _globalUniforms.testArray[3]) || (f3[4] != _globalUniforms.testArray[4]))) && (all(v1[0] == v2[0]) && all(v1[1] == v2[1]))) && (any(v1[0] != v3[0]) || any(v1[1] != v3[1]))) && ((all(m1[0][0] == m2[0][0]) && all(m1[0][1] == m2[0][1])) && (all(m1[1][0] == m2[1][0]) && all(m1[1][1] == m2[1][1])) && (all(m1[2][0] == m2[2][0]) && all(m1[2][1] == m2[2][1])))) && ((any(m1[0][0] != m3[0][0]) || any(m1[0][1] != m3[0][1])) || (any(m1[1][0] != m3[1][0]) || any(m1[1][1] != m3[1][1])) || (any(m1[2][0] != m3[2][0]) || any(m1[2][1] != m3[2][1])))) && (((s1[0].x != s2[0].x) || (s1[0].y != s2[0].y)) || ((s1[1].x != s2[1].x) || (s1[1].y != s2[1].y)) || ((s1[2].x != s2[2].x) || (s1[2].y != s2[2].y)))) && (((s3[0].x == s1[0].x) && (s3[0].y == s1[0].y)) && ((s3[1].x == s1[1].x) && (s3[1].y == s1[1].y)) && ((s3[2].x == s1[2].x) && (s3[2].y == s1[2].y))))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ArrayConstructors.metal b/tests/sksl/shared/ArrayConstructors.metal index 60babec53187..50939632fc8d 100644 --- a/tests/sksl/shared/ArrayConstructors.metal +++ b/tests/sksl/shared/ArrayConstructors.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ArrayConstructors.wgsl b/tests/sksl/shared/ArrayConstructors.wgsl index c509ae5eeba0..b85f6e4d2232 100644 --- a/tests/sksl/shared/ArrayConstructors.wgsl +++ b/tests/sksl/shared/ArrayConstructors.wgsl @@ -11,17 +11,16 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var test1: array = array(1.0, 2.0, 3.0, 4.0); var test2: array, 2> = array, 2>(vec2(1.0, 2.0), vec2(3.0, 4.0)); var test3: array, 1> = array, 1>(mat4x4(16.0, 0.0, 0.0, 0.0, 0.0, 16.0, 0.0, 0.0, 0.0, 0.0, 16.0, 0.0, 0.0, 0.0, 0.0, 16.0)); - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((test1[3] + test2[1].y) + test3[0][3].w) == 24.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((test1[3] + test2[1].y) + test3[0][3].w) == 24.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ArrayFollowedByScalar.metal b/tests/sksl/shared/ArrayFollowedByScalar.metal index 3c893cd85090..c2b24de61b2b 100644 --- a/tests/sksl/shared/ArrayFollowedByScalar.metal +++ b/tests/sksl/shared/ArrayFollowedByScalar.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ArrayFollowedByScalar.wgsl b/tests/sksl/shared/ArrayFollowedByScalar.wgsl index 34b04c8c11a2..a7c7f82ebb4d 100644 --- a/tests/sksl/shared/ArrayFollowedByScalar.wgsl +++ b/tests/sksl/shared/ArrayFollowedByScalar.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var rgb: array; var a: f32; @@ -18,8 +17,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(rgb[0], rgb[1], rgb[2], a); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ArrayIndexTypes.metal b/tests/sksl/shared/ArrayIndexTypes.metal index 000c5a5695cf..10d328e43698 100644 --- a/tests/sksl/shared/ArrayIndexTypes.metal +++ b/tests/sksl/shared/ArrayIndexTypes.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ArrayIndexTypes.wgsl b/tests/sksl/shared/ArrayIndexTypes.wgsl index 9fdae16e950d..b7925f4583a9 100644 --- a/tests/sksl/shared/ArrayIndexTypes.wgsl +++ b/tests/sksl/shared/ArrayIndexTypes.wgsl @@ -5,18 +5,18 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { - var _array: array = array(1.0, 2.0, 3.0, 4.0); + var R_array: array = array(1.0, 2.0, 3.0, 4.0); var x: i32 = 0; var y: u32 = 1u; var z: i32 = 2; var w: u32 = 3u; - (*_stageOut).sk_FragColor = vec4(f32(_array[x]), f32(_array[y]), f32(_array[z]), f32(_array[w])); + (*_stageOut).sk_FragColor = vec4(f32(R_array[x]), f32(R_array[y]), f32(R_array[z]), f32(R_array[w])); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/ArrayNarrowingConversions.metal b/tests/sksl/shared/ArrayNarrowingConversions.metal index 832c5e861639..f1e1bd902506 100644 --- a/tests/sksl/shared/ArrayNarrowingConversions.metal +++ b/tests/sksl/shared/ArrayNarrowingConversions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ArrayNarrowingConversions.wgsl b/tests/sksl/shared/ArrayNarrowingConversions.wgsl index 7ca4cbbebde4..3b9b2c1b2c96 100644 --- a/tests/sksl/shared/ArrayNarrowingConversions.wgsl +++ b/tests/sksl/shared/ArrayNarrowingConversions.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var i2: array = array(1, 2); var s2: array = array(1, 2); @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((i2[0] == _skTemp0[0]) && (i2[1] == _skTemp0[1])) && ((f2[0] == _skTemp1[0]) && (f2[1] == _skTemp1[1]))) && ((i2[0] == _skTemp2[0]) && (i2[1] == _skTemp2[1]))) && ((_skTemp3[0] == cf2[0]) && (_skTemp3[1] == cf2[1])))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ArrayTypes.metal b/tests/sksl/shared/ArrayTypes.metal index 44f8ee059370..77068958f52f 100644 --- a/tests/sksl/shared/ArrayTypes.metal +++ b/tests/sksl/shared/ArrayTypes.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { float2 v; diff --git a/tests/sksl/shared/ArrayTypes.wgsl b/tests/sksl/shared/ArrayTypes.wgsl index 76344271c03b..974d1f30c46d 100644 --- a/tests/sksl/shared/ArrayTypes.wgsl +++ b/tests/sksl/shared/ArrayTypes.wgsl @@ -9,15 +9,13 @@ struct FSOut { struct S { v: vec2, }; -fn initialize_vS(_skParam0: ptr>) { - let z = _skParam0; +fn initialize_vS(z: ptr>) { { (*z)[0].v = vec2(0.0, 1.0); (*z)[1].v = vec2(2.0, 1.0); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: array, 2>; x[0] = vec2(0.0); @@ -32,8 +30,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(f32(x[0].x * x[0].y + z[0].v.x), f32(x[1].x - x[1].y * z[0].v.y), f32((y[0].x / y[0].y) / z[1].v.x), f32(y[1].x + y[1].y * z[1].v.y)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Assignment.metal b/tests/sksl/shared/Assignment.metal index 0b8e8dd95b34..faa6499b256f 100644 --- a/tests/sksl/shared/Assignment.metal +++ b/tests/sksl/shared/Assignment.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { float f; diff --git a/tests/sksl/shared/Assignment.wgsl b/tests/sksl/shared/Assignment.wgsl index a5df108bf8a8..4307daeba5e4 100644 --- a/tests/sksl/shared/Assignment.wgsl +++ b/tests/sksl/shared/Assignment.wgsl @@ -18,31 +18,26 @@ struct S { }; var globalVar: vec4; var globalStruct: S; -fn keepAlive_vh(_skParam0: ptr) { - let h = _skParam0; +fn keepAlive_vh(h: ptr) { { } } -fn keepAlive_vf(_skParam0: ptr) { - let f = _skParam0; +fn keepAlive_vf(f: ptr) { { } } -fn keepAlive_vi(_skParam0: ptr) { - let i = _skParam0; +fn keepAlive_vi(i: ptr) { { } } -fn assignToFunctionParameter_vif(_skParam0: i32, _skParam1: ptr) { +fn assignToFunctionParameter_vif(_skParam0: i32, y: ptr) { var x = _skParam0; - let y = _skParam1; { x = 1; (*y) = 1.0; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var i: i32 = 0; var i4: vec4 = vec4(1, 2, 3, 4); @@ -115,8 +110,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Caps.metal b/tests/sksl/shared/Caps.metal index 2e7848cab038..d89e1e2a687c 100644 --- a/tests/sksl/shared/Caps.metal +++ b/tests/sksl/shared/Caps.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Caps.wgsl b/tests/sksl/shared/Caps.wgsl index ff66e0cd8463..100bb679c5a9 100644 --- a/tests/sksl/shared/Caps.wgsl +++ b/tests/sksl/shared/Caps.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: i32 = 0; var y: i32 = 0; @@ -15,8 +15,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4((vec3(f32(x), f32(y), f32(z))), (*_stageOut).sk_FragColor.w).xyzw; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/CastsRoundTowardZero.metal b/tests/sksl/shared/CastsRoundTowardZero.metal index 550e37b5782a..d0749d307a13 100644 --- a/tests/sksl/shared/CastsRoundTowardZero.metal +++ b/tests/sksl/shared/CastsRoundTowardZero.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/CastsRoundTowardZero.wgsl b/tests/sksl/shared/CastsRoundTowardZero.wgsl index c4c58c90b495..8303080bbe63 100644 --- a/tests/sksl/shared/CastsRoundTowardZero.wgsl +++ b/tests/sksl/shared/CastsRoundTowardZero.wgsl @@ -11,15 +11,14 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var ok: bool = true; return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Clockwise.metal b/tests/sksl/shared/Clockwise.metal index 88ef6ea39f1c..feb54eae46d9 100644 --- a/tests/sksl/shared/Clockwise.metal +++ b/tests/sksl/shared/Clockwise.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Clockwise.wgsl b/tests/sksl/shared/Clockwise.wgsl index 9ba7dae2c69b..ae3d92f3fb7a 100644 --- a/tests/sksl/shared/Clockwise.wgsl +++ b/tests/sksl/shared/Clockwise.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(f32(select(-1, 1, _stageIn.sk_Clockwise))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/ClockwiseNoRTFlip.metal b/tests/sksl/shared/ClockwiseNoRTFlip.metal index 068f86deb864..fc80bc3f7f3a 100644 --- a/tests/sksl/shared/ClockwiseNoRTFlip.metal +++ b/tests/sksl/shared/ClockwiseNoRTFlip.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ClockwiseNoRTFlip.wgsl b/tests/sksl/shared/ClockwiseNoRTFlip.wgsl index 9ba7dae2c69b..ae3d92f3fb7a 100644 --- a/tests/sksl/shared/ClockwiseNoRTFlip.wgsl +++ b/tests/sksl/shared/ClockwiseNoRTFlip.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(f32(select(-1, 1, _stageIn.sk_Clockwise))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/CommaMixedTypes.metal b/tests/sksl/shared/CommaMixedTypes.metal index e23239e3ff95..f9d94e011a75 100644 --- a/tests/sksl/shared/CommaMixedTypes.metal +++ b/tests/sksl/shared/CommaMixedTypes.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/CommaMixedTypes.wgsl b/tests/sksl/shared/CommaMixedTypes.wgsl index 654073edc225..c37c7120504d 100644 --- a/tests/sksl/shared/CommaMixedTypes.wgsl +++ b/tests/sksl/shared/CommaMixedTypes.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var result: vec4; result.x = _globalUniforms.colorGreen.x; @@ -22,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { return result; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/CommaSideEffects.metal b/tests/sksl/shared/CommaSideEffects.metal index 5a3e303d032f..212694a75e71 100644 --- a/tests/sksl/shared/CommaSideEffects.metal +++ b/tests/sksl/shared/CommaSideEffects.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/CommaSideEffects.wgsl b/tests/sksl/shared/CommaSideEffects.wgsl index e1a59f3dabba..5247f2f9fef5 100644 --- a/tests/sksl/shared/CommaSideEffects.wgsl +++ b/tests/sksl/shared/CommaSideEffects.wgsl @@ -13,14 +13,12 @@ struct _GlobalUniforms { colorBlack: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn setToColorBlack_vh4(_skParam0: ptr>) { - let x = _skParam0; +fn setToColorBlack_vh4(x: ptr>) { { (*x) = _globalUniforms.colorBlack; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var a: vec4; var b: vec4; @@ -39,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((all(a == _globalUniforms.colorWhite) && all(b == _globalUniforms.colorRed)) && all(c == _globalUniforms.colorGreen)) && all(d == _globalUniforms.colorBlack))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/CompileTimeConstantVariables.metal b/tests/sksl/shared/CompileTimeConstantVariables.metal index 41c818fda9ea..21ff7c13625e 100644 --- a/tests/sksl/shared/CompileTimeConstantVariables.metal +++ b/tests/sksl/shared/CompileTimeConstantVariables.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const int kConstant = 0; constant const int kOtherConstant = 1; diff --git a/tests/sksl/shared/CompileTimeConstantVariables.wgsl b/tests/sksl/shared/CompileTimeConstantVariables.wgsl index 38eaf71a3383..73f3daa8d89f 100644 --- a/tests/sksl/shared/CompileTimeConstantVariables.wgsl +++ b/tests/sksl/shared/CompileTimeConstantVariables.wgsl @@ -24,7 +24,7 @@ const kAnotherConstant: i32 = 2; const kFloatConstant: f32 = 2.14; const kFloatConstantAlias: f32 = kFloatConstant; const kConstVec: vec4 = vec4(1.0, 0.2, 2.14, 1.0); -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { const kLocalFloatConstant: f32 = 3.14; let kLocalFloatConstantAlias: f32 = kLocalFloatConstant; @@ -65,8 +65,8 @@ fn main(_skParam0: vec2) -> vec4 { } return vec4(); } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ComplexDelete.metal b/tests/sksl/shared/ComplexDelete.metal index 961c924d6307..b63726c37525 100644 --- a/tests/sksl/shared/ComplexDelete.metal +++ b/tests/sksl/shared/ComplexDelete.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/shared/ComplexDelete.skrp b/tests/sksl/shared/ComplexDelete.skrp index 6398c3128776..7fe6cdff1b0c 100644 --- a/tests/sksl/shared/ComplexDelete.skrp +++ b/tests/sksl/shared/ComplexDelete.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 2: invalid type -layout(binding=0) uniform sampler2D s; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D s; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 4: 'main' must return: 'vec4', 'float4', or 'half4' void main() { ^^^^^^^^^^^ diff --git a/tests/sksl/shared/ComplexDelete.wgsl b/tests/sksl/shared/ComplexDelete.wgsl index c689f1ec6d81..8aa67fd6a75a 100644 --- a/tests/sksl/shared/ComplexDelete.wgsl +++ b/tests/sksl/shared/ComplexDelete.wgsl @@ -11,7 +11,7 @@ struct _GlobalUniforms { @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; @group(0) @binding(10000) var s_Sampler: sampler; @group(0) @binding(10001) var s_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var tmpColor: vec4; tmpColor = vec4(textureSample(s_Texture, s_Sampler, vec2(1.0))); @@ -20,8 +20,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(select(tmpColor, vec4(_skTemp2, tmpColor.w), vec4((any(_globalUniforms.colorXform[0] != _skTemp3[0]) || any(_globalUniforms.colorXform[1] != _skTemp3[1]) || any(_globalUniforms.colorXform[2] != _skTemp3[2]) || any(_globalUniforms.colorXform[3] != _skTemp3[3]))))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/ConstArray.metal b/tests/sksl/shared/ConstArray.metal index e97e5425585b..6faf44a0cd99 100644 --- a/tests/sksl/shared/ConstArray.metal +++ b/tests/sksl/shared/ConstArray.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ConstArray.wgsl b/tests/sksl/shared/ConstArray.wgsl index 4d8cc4f82a0e..3cd7aa87b58e 100644 --- a/tests/sksl/shared/ConstArray.wgsl +++ b/tests/sksl/shared/ConstArray.wgsl @@ -6,14 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { return vec4(0.0, 1.0, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ConstGlobal.metal b/tests/sksl/shared/ConstGlobal.metal index 4cb80817286c..6d0d83843f22 100644 --- a/tests/sksl/shared/ConstGlobal.metal +++ b/tests/sksl/shared/ConstGlobal.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const int SEVEN = 7; constant const int TEN = 10; diff --git a/tests/sksl/shared/ConstGlobal.wgsl b/tests/sksl/shared/ConstGlobal.wgsl index 26aa5c45f11e..84583550a538 100644 --- a/tests/sksl/shared/ConstGlobal.wgsl +++ b/tests/sksl/shared/ConstGlobal.wgsl @@ -14,17 +14,13 @@ struct _GlobalUniforms { const SEVEN: i32 = 7; const TEN: i32 = 10; const MATRIXFIVE: mat4x4 = mat4x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0); -fn verify_const_globals_biih44(_skParam0: i32, _skParam1: i32, _skParam2: mat4x4) -> bool { - let seven = _skParam0; - let ten = _skParam1; - let matrixFive = _skParam2; +fn verify_const_globals_biih44(seven: i32, ten: i32, matrixFive: mat4x4) -> bool { { let _skTemp0 = mat4x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0); return ((seven == 7) && (ten == 10)) && (all(matrixFive[0] == _skTemp0[0]) && all(matrixFive[1] == _skTemp0[1]) && all(matrixFive[2] == _skTemp0[2]) && all(matrixFive[3] == _skTemp0[3])); } } -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { var _skTemp1: vec4; let _skTemp2 = verify_const_globals_biih44(SEVEN, TEN, MATRIXFIVE); @@ -36,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp1; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ConstVariableComparison.metal b/tests/sksl/shared/ConstVariableComparison.metal index 127d8c2cd0d9..57036ae4b3a5 100644 --- a/tests/sksl/shared/ConstVariableComparison.metal +++ b/tests/sksl/shared/ConstVariableComparison.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ConstVariableComparison.wgsl b/tests/sksl/shared/ConstVariableComparison.wgsl index 84aee4222c03..c8aade49d560 100644 --- a/tests/sksl/shared/ConstVariableComparison.wgsl +++ b/tests/sksl/shared/ConstVariableComparison.wgsl @@ -11,16 +11,15 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { { return _globalUniforms.colorGreen; } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.metal b/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.metal index 659cc3cfcfc6..39c5e7a3065c 100644 --- a/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.metal +++ b/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const array globalArray = array{1.0h, 1.0h, 1.0h, 1.0h, 1.0h}; constant const half2 globalVector = half2(1.0h); diff --git a/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.wgsl b/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.wgsl index 67a579b48183..1835052a2f67 100644 --- a/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.wgsl +++ b/tests/sksl/shared/ConstantCompositeAccessViaConstantIndex.wgsl @@ -36,7 +36,7 @@ struct _GlobalUniforms { const globalArray: array = array(1.0, 1.0, 1.0, 1.0, 1.0); const globalVector: vec2 = vec2(1.0); const globalMatrix: mat2x2 = mat2x2(1.0, 1.0, 1.0, 1.0); -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { const localArray: array = array(0.0, 1.0, 2.0, 3.0, 4.0); const localVector: vec2 = vec2(1.0); @@ -49,9 +49,9 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(0.0, 1.0, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.metal b/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.metal index 4b036e52f487..303ccc5b1504 100644 --- a/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.metal +++ b/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const array globalArray = array{1.0h, 1.0h}; constant const half2 globalVector = half2(1.0h); diff --git a/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.wgsl b/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.wgsl index 2fc8bc4eced4..10d0f05db218 100644 --- a/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.wgsl +++ b/tests/sksl/shared/ConstantCompositeAccessViaDynamicIndex.wgsl @@ -10,7 +10,7 @@ var zero: i32 = 0; const globalArray: array = array(1.0, 1.0); const globalVector: vec2 = vec2(1.0); const globalMatrix: mat2x2 = mat2x2(1.0, 1.0, 1.0, 1.0); -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { const localArray: array = array(0.0, 1.0); const localVector: vec2 = vec2(1.0); @@ -18,8 +18,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(globalArray[zero] * localArray[zero], globalVector[zero] * localVector[zero], globalMatrix[zero] * localMatrix[zero]); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ConstantIf.metal b/tests/sksl/shared/ConstantIf.metal index 966fa9324ab9..f02f95b1aa56 100644 --- a/tests/sksl/shared/ConstantIf.metal +++ b/tests/sksl/shared/ConstantIf.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ConstantIf.wgsl b/tests/sksl/shared/ConstantIf.wgsl index 7b8c9565b686..fedf20176be7 100644 --- a/tests/sksl/shared/ConstantIf.wgsl +++ b/tests/sksl/shared/ConstantIf.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var a: i32 = 0; var b: i32 = 0; @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((a == 1) && (b == 2)) && (c == 5)) && (d == 0))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Control.metal b/tests/sksl/shared/Control.metal index 2a69e1c5e04d..83ba2560bb2a 100644 --- a/tests/sksl/shared/Control.metal +++ b/tests/sksl/shared/Control.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float unknownInput; diff --git a/tests/sksl/shared/Control.wgsl b/tests/sksl/shared/Control.wgsl index ca5d596a0dfe..b6c775f81beb 100644 --- a/tests/sksl/shared/Control.wgsl +++ b/tests/sksl/shared/Control.wgsl @@ -9,7 +9,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { if _globalUniforms.unknownInput > 5.0 { { @@ -62,8 +62,8 @@ fn main(_stageOut: ptr) { return ; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/DeadDoWhileLoop.metal b/tests/sksl/shared/DeadDoWhileLoop.metal index 86727a4b88fc..3f21ce700c17 100644 --- a/tests/sksl/shared/DeadDoWhileLoop.metal +++ b/tests/sksl/shared/DeadDoWhileLoop.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/DeadDoWhileLoop.wgsl b/tests/sksl/shared/DeadDoWhileLoop.wgsl index c9326f7fa036..b4e5179a6da7 100644 --- a/tests/sksl/shared/DeadDoWhileLoop.wgsl +++ b/tests/sksl/shared/DeadDoWhileLoop.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { loop { { @@ -17,8 +17,8 @@ fn main(_stageOut: ptr) { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/DeadGlobals.metal b/tests/sksl/shared/DeadGlobals.metal index 6b9afd77cb78..ee6040b04adb 100644 --- a/tests/sksl/shared/DeadGlobals.metal +++ b/tests/sksl/shared/DeadGlobals.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadGlobals.wgsl b/tests/sksl/shared/DeadGlobals.wgsl index 42cd7e2ca0bf..4073148e1243 100644 --- a/tests/sksl/shared/DeadGlobals.wgsl +++ b/tests/sksl/shared/DeadGlobals.wgsl @@ -11,13 +11,13 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DeadIfStatement.metal b/tests/sksl/shared/DeadIfStatement.metal index 6b9afd77cb78..ee6040b04adb 100644 --- a/tests/sksl/shared/DeadIfStatement.metal +++ b/tests/sksl/shared/DeadIfStatement.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadIfStatement.wgsl b/tests/sksl/shared/DeadIfStatement.wgsl index d86a7bb82825..39ac8e286eca 100644 --- a/tests/sksl/shared/DeadIfStatement.wgsl +++ b/tests/sksl/shared/DeadIfStatement.wgsl @@ -11,14 +11,13 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DeadLoopVariable.metal b/tests/sksl/shared/DeadLoopVariable.metal index d8d86acb612c..00e4d7ff687f 100644 --- a/tests/sksl/shared/DeadLoopVariable.metal +++ b/tests/sksl/shared/DeadLoopVariable.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadLoopVariable.wgsl b/tests/sksl/shared/DeadLoopVariable.wgsl index c86f7b06080c..93751c49a44c 100644 --- a/tests/sksl/shared/DeadLoopVariable.wgsl +++ b/tests/sksl/shared/DeadLoopVariable.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { { var x: i32 = 0; @@ -28,8 +27,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DeadReturn.metal b/tests/sksl/shared/DeadReturn.metal index e43a05816b38..2e924f14d93e 100644 --- a/tests/sksl/shared/DeadReturn.metal +++ b/tests/sksl/shared/DeadReturn.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadReturn.wgsl b/tests/sksl/shared/DeadReturn.wgsl index 92590af7b823..5ce7946e3cff 100644 --- a/tests/sksl/shared/DeadReturn.wgsl +++ b/tests/sksl/shared/DeadReturn.wgsl @@ -80,8 +80,7 @@ fn test_loop_if_b() -> bool { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -114,8 +113,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DeadReturnES3.metal b/tests/sksl/shared/DeadReturnES3.metal index 7366a8f2e837..02bda97ca90b 100644 --- a/tests/sksl/shared/DeadReturnES3.metal +++ b/tests/sksl/shared/DeadReturnES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadReturnES3.wgsl b/tests/sksl/shared/DeadReturnES3.wgsl index 7ea26adaabf5..be22248e116b 100644 --- a/tests/sksl/shared/DeadReturnES3.wgsl +++ b/tests/sksl/shared/DeadReturnES3.wgsl @@ -144,8 +144,7 @@ fn test_loop_break_b() -> bool { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -206,8 +205,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DeadStripFunctions.metal b/tests/sksl/shared/DeadStripFunctions.metal index 2535717d00bd..4878149c23b3 100644 --- a/tests/sksl/shared/DeadStripFunctions.metal +++ b/tests/sksl/shared/DeadStripFunctions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DeadStripFunctions.wgsl b/tests/sksl/shared/DeadStripFunctions.wgsl index 6e274c345294..e0867d71d395 100644 --- a/tests/sksl/shared/DeadStripFunctions.wgsl +++ b/tests/sksl/shared/DeadStripFunctions.wgsl @@ -11,22 +11,18 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn unpremul_h4h4(_skParam0: vec4) -> vec4 { - let color = _skParam0; +fn unpremul_h4h4(color: vec4) -> vec4 { { let _skTemp0 = max(color.w, 0.0001); return vec4(color.xyz / _skTemp0, color.w); } } -fn live_fn_h4h4h4(_skParam0: vec4, _skParam1: vec4) -> vec4 { - let a = _skParam0; - let b = _skParam1; +fn live_fn_h4h4h4(a: vec4, b: vec4) -> vec4 { { return a + b; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var a: vec4; var b: vec4; @@ -41,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(any(a != vec4(0.0)) && any(b != vec4(0.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DependentInitializers.metal b/tests/sksl/shared/DependentInitializers.metal index c69763787a62..5a065008c3ed 100644 --- a/tests/sksl/shared/DependentInitializers.metal +++ b/tests/sksl/shared/DependentInitializers.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DependentInitializers.wgsl b/tests/sksl/shared/DependentInitializers.wgsl index 61df150e266b..6195294ec741 100644 --- a/tests/sksl/shared/DependentInitializers.wgsl +++ b/tests/sksl/shared/DependentInitializers.wgsl @@ -11,16 +11,15 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 0.5; var y: f32 = x * 2.0; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((y == 1.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(y == 1.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Derivatives.wgsl b/tests/sksl/shared/Derivatives.wgsl new file mode 100644 index 000000000000..7327752c4a8b --- /dev/null +++ b/tests/sksl/shared/Derivatives.wgsl @@ -0,0 +1,19 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +fn _skslMain(_stageOut: ptr) { + { + let _skTemp0 = 1.0; + let _skTemp1 = dpdx(_skTemp0); + (*_stageOut).sk_FragColor.x = f32(_skTemp1); + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _skslMain(&_stageOut); + return _stageOut; +} diff --git a/tests/sksl/shared/DerivativesUnused.metal b/tests/sksl/shared/DerivativesUnused.metal index b31f0b99802e..bb86563dbab6 100644 --- a/tests/sksl/shared/DerivativesUnused.metal +++ b/tests/sksl/shared/DerivativesUnused.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/DerivativesUnused.wgsl b/tests/sksl/shared/DerivativesUnused.wgsl index 305d373bcec6..c9cfc4a3b55d 100644 --- a/tests/sksl/shared/DerivativesUnused.wgsl +++ b/tests/sksl/shared/DerivativesUnused.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor.x = 1.0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/Discard.metal b/tests/sksl/shared/Discard.metal index 97aec04f9753..544d261e6ce6 100644 --- a/tests/sksl/shared/Discard.metal +++ b/tests/sksl/shared/Discard.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Discard.wgsl b/tests/sksl/shared/Discard.wgsl index 8707c276be79..17b47c19c54e 100644 --- a/tests/sksl/shared/Discard.wgsl +++ b/tests/sksl/shared/Discard.wgsl @@ -5,15 +5,15 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main() { +fn _skslMain() { { { discard; } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/DoWhileControlFlow.metal b/tests/sksl/shared/DoWhileControlFlow.metal index 15e0e14ab292..6a3184a794e3 100644 --- a/tests/sksl/shared/DoWhileControlFlow.metal +++ b/tests/sksl/shared/DoWhileControlFlow.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/DoWhileControlFlow.wgsl b/tests/sksl/shared/DoWhileControlFlow.wgsl index d5b934961d1a..ae7eed2920a0 100644 --- a/tests/sksl/shared/DoWhileControlFlow.wgsl +++ b/tests/sksl/shared/DoWhileControlFlow.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: vec4 = vec4(1.0); loop { @@ -36,8 +35,8 @@ fn main(_skParam0: vec2) -> vec4 { return x; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/DoubleNegation.metal b/tests/sksl/shared/DoubleNegation.metal index 0cbfd24381ae..cf95a7284f50 100644 --- a/tests/sksl/shared/DoubleNegation.metal +++ b/tests/sksl/shared/DoubleNegation.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/DoubleNegation.wgsl b/tests/sksl/shared/DoubleNegation.wgsl index 59635a798144..b58f554f9c94 100644 --- a/tests/sksl/shared/DoubleNegation.wgsl +++ b/tests/sksl/shared/DoubleNegation.wgsl @@ -10,14 +10,13 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return vec4(f32(i32(_globalUniforms.colorGreen.x)), _globalUniforms.colorGreen.y, _globalUniforms.colorGreen.zw); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/EmptyBlocksES2.metal b/tests/sksl/shared/EmptyBlocksES2.metal index 052703f4918b..88d54705e0bd 100644 --- a/tests/sksl/shared/EmptyBlocksES2.metal +++ b/tests/sksl/shared/EmptyBlocksES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half unknownInput; diff --git a/tests/sksl/shared/EmptyBlocksES2.wgsl b/tests/sksl/shared/EmptyBlocksES2.wgsl index 434c56d7ac3e..dca49e6340ca 100644 --- a/tests/sksl/shared/EmptyBlocksES2.wgsl +++ b/tests/sksl/shared/EmptyBlocksES2.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var color: vec4 = vec4(0.0); if _globalUniforms.unknownInput == 1.0 { @@ -25,8 +24,8 @@ fn main(_skParam0: vec2) -> vec4 { return color; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/EmptyBlocksES3.metal b/tests/sksl/shared/EmptyBlocksES3.metal index 393ca724662c..74512d6f0cd6 100644 --- a/tests/sksl/shared/EmptyBlocksES3.metal +++ b/tests/sksl/shared/EmptyBlocksES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorWhite; diff --git a/tests/sksl/shared/EmptyBlocksES3.wgsl b/tests/sksl/shared/EmptyBlocksES3.wgsl index 556297d6a22d..6c2a93f95b06 100644 --- a/tests/sksl/shared/EmptyBlocksES3.wgsl +++ b/tests/sksl/shared/EmptyBlocksES3.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var color: vec4 = vec4(0.0); if _globalUniforms.colorWhite.x == 1.0 { @@ -38,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return color; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ForLoopControlFlow.metal b/tests/sksl/shared/ForLoopControlFlow.metal index 69f89ea528ba..489356b8512a 100644 --- a/tests/sksl/shared/ForLoopControlFlow.metal +++ b/tests/sksl/shared/ForLoopControlFlow.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorWhite; diff --git a/tests/sksl/shared/ForLoopControlFlow.wgsl b/tests/sksl/shared/ForLoopControlFlow.wgsl index 3f5b15b3affe..1201b33e915c 100644 --- a/tests/sksl/shared/ForLoopControlFlow.wgsl +++ b/tests/sksl/shared/ForLoopControlFlow.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: vec4 = _globalUniforms.colorWhite; { @@ -49,8 +48,8 @@ fn main(_skParam0: vec2) -> vec4 { return x; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ForLoopMultipleInit.metal b/tests/sksl/shared/ForLoopMultipleInit.metal index ead9c1341b8e..28144a143eba 100644 --- a/tests/sksl/shared/ForLoopMultipleInit.metal +++ b/tests/sksl/shared/ForLoopMultipleInit.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ForLoopMultipleInit.wgsl b/tests/sksl/shared/ForLoopMultipleInit.wgsl index 07617d71aaa9..5019b20bc4d4 100644 --- a/tests/sksl/shared/ForLoopMultipleInit.wgsl +++ b/tests/sksl/shared/ForLoopMultipleInit.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var result: vec4 = vec4(0.0); { @@ -75,8 +74,8 @@ fn main(_skParam0: vec2) -> vec4 { return result; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/FragCoords.metal b/tests/sksl/shared/FragCoords.metal index ac6bdc0bd760..18a40208470e 100644 --- a/tests/sksl/shared/FragCoords.metal +++ b/tests/sksl/shared/FragCoords.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/FragCoords.wgsl b/tests/sksl/shared/FragCoords.wgsl index f2f7130573e1..5817884aa2eb 100644 --- a/tests/sksl/shared/FragCoords.wgsl +++ b/tests/sksl/shared/FragCoords.wgsl @@ -6,13 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn, _skParam0: vec2) -> vec4 { +fn _skslMain(_stageIn: FSIn, _skParam0: vec2) -> vec4 { { return vec4(vec4(_stageIn.sk_FragCoord.yx, 1.0, 1.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn, _stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn, _stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/FragCoordsNoRTFlip.metal b/tests/sksl/shared/FragCoordsNoRTFlip.metal index ccd142f12c2b..e80dd6ef6248 100644 --- a/tests/sksl/shared/FragCoordsNoRTFlip.metal +++ b/tests/sksl/shared/FragCoordsNoRTFlip.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/FragCoordsNoRTFlip.wgsl b/tests/sksl/shared/FragCoordsNoRTFlip.wgsl index cef4bee61570..03d6650e07f0 100644 --- a/tests/sksl/shared/FragCoordsNoRTFlip.wgsl +++ b/tests/sksl/shared/FragCoordsNoRTFlip.wgsl @@ -6,13 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4((vec2(_stageIn.sk_FragCoord.xy)), (*_stageOut).sk_FragColor.zw).xyzw; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/FunctionAnonymousParameters.metal b/tests/sksl/shared/FunctionAnonymousParameters.metal index 75ccd45dca93..506832b1bebb 100644 --- a/tests/sksl/shared/FunctionAnonymousParameters.metal +++ b/tests/sksl/shared/FunctionAnonymousParameters.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { int i; diff --git a/tests/sksl/shared/FunctionAnonymousParameters.wgsl b/tests/sksl/shared/FunctionAnonymousParameters.wgsl index ed71f57a0f43..8b1d136301b3 100644 --- a/tests/sksl/shared/FunctionAnonymousParameters.wgsl +++ b/tests/sksl/shared/FunctionAnonymousParameters.wgsl @@ -14,20 +14,17 @@ struct _GlobalUniforms { struct S { i: i32, }; -fn fnGreen_h4bf2(_skParam0: bool, _skParam1: vec2) -> vec4 { - let b = _skParam0; +fn fnGreen_h4bf2(b: bool, _skParam1: vec2) -> vec4 { { return _globalUniforms.colorGreen; } } -fn fnRed_h4ifS(_skParam0: i32, _skParam1: f32, _skParam2: S) -> vec4 { - let f = _skParam1; +fn fnRed_h4ifS(_skParam0: i32, f: f32, _skParam2: S) -> vec4 { { return _globalUniforms.colorRed; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; if bool(_globalUniforms.colorGreen.y) { @@ -40,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/FunctionArgTypeMatch.metal b/tests/sksl/shared/FunctionArgTypeMatch.metal index 592e88001aa1..b79998c95ea2 100644 --- a/tests/sksl/shared/FunctionArgTypeMatch.metal +++ b/tests/sksl/shared/FunctionArgTypeMatch.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/FunctionArgTypeMatch.wgsl b/tests/sksl/shared/FunctionArgTypeMatch.wgsl index 424f26930974..69a25baa89ad 100644 --- a/tests/sksl/shared/FunctionArgTypeMatch.wgsl +++ b/tests/sksl/shared/FunctionArgTypeMatch.wgsl @@ -16,140 +16,117 @@ fn takes_void_b() -> bool { return true; } } -fn takes_float_bf(_skParam0: f32) -> bool { - let x = _skParam0; +fn takes_float_bf(x: f32) -> bool { { return true; } } -fn takes_float2_bf2(_skParam0: vec2) -> bool { - let x = _skParam0; +fn takes_float2_bf2(x: vec2) -> bool { { return true; } } -fn takes_float3_bf3(_skParam0: vec3) -> bool { - let x = _skParam0; +fn takes_float3_bf3(x: vec3) -> bool { { return true; } } -fn takes_float4_bf4(_skParam0: vec4) -> bool { - let x = _skParam0; +fn takes_float4_bf4(x: vec4) -> bool { { return true; } } -fn takes_float2x2_bf22(_skParam0: mat2x2) -> bool { - let x = _skParam0; +fn takes_float2x2_bf22(x: mat2x2) -> bool { { return true; } } -fn takes_float3x3_bf33(_skParam0: mat3x3) -> bool { - let x = _skParam0; +fn takes_float3x3_bf33(x: mat3x3) -> bool { { return true; } } -fn takes_float4x4_bf44(_skParam0: mat4x4) -> bool { - let x = _skParam0; +fn takes_float4x4_bf44(x: mat4x4) -> bool { { return true; } } -fn takes_half_bh(_skParam0: f32) -> bool { - let x = _skParam0; +fn takes_half_bh(x: f32) -> bool { { return true; } } -fn takes_half2_bh2(_skParam0: vec2) -> bool { - let x = _skParam0; +fn takes_half2_bh2(x: vec2) -> bool { { return true; } } -fn takes_half3_bh3(_skParam0: vec3) -> bool { - let x = _skParam0; +fn takes_half3_bh3(x: vec3) -> bool { { return true; } } -fn takes_half4_bh4(_skParam0: vec4) -> bool { - let x = _skParam0; +fn takes_half4_bh4(x: vec4) -> bool { { return true; } } -fn takes_half2x2_bh22(_skParam0: mat2x2) -> bool { - let x = _skParam0; +fn takes_half2x2_bh22(x: mat2x2) -> bool { { return true; } } -fn takes_half3x3_bh33(_skParam0: mat3x3) -> bool { - let x = _skParam0; +fn takes_half3x3_bh33(x: mat3x3) -> bool { { return true; } } -fn takes_half4x4_bh44(_skParam0: mat4x4) -> bool { - let x = _skParam0; +fn takes_half4x4_bh44(x: mat4x4) -> bool { { return true; } } -fn takes_bool_bb(_skParam0: bool) -> bool { - let x = _skParam0; +fn takes_bool_bb(x: bool) -> bool { { return true; } } -fn takes_bool2_bb2(_skParam0: vec2) -> bool { - let x = _skParam0; +fn takes_bool2_bb2(x: vec2) -> bool { { return true; } } -fn takes_bool3_bb3(_skParam0: vec3) -> bool { - let x = _skParam0; +fn takes_bool3_bb3(x: vec3) -> bool { { return true; } } -fn takes_bool4_bb4(_skParam0: vec4) -> bool { - let x = _skParam0; +fn takes_bool4_bb4(x: vec4) -> bool { { return true; } } -fn takes_int_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn takes_int_bi(x: i32) -> bool { { return true; } } -fn takes_int2_bi2(_skParam0: vec2) -> bool { - let x = _skParam0; +fn takes_int2_bi2(x: vec2) -> bool { { return true; } } -fn takes_int3_bi3(_skParam0: vec3) -> bool { - let x = _skParam0; +fn takes_int3_bi3(x: vec3) -> bool { { return true; } } -fn takes_int4_bi4(_skParam0: vec4) -> bool { - let x = _skParam0; +fn takes_int4_bi4(x: vec4) -> bool { { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -321,8 +298,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.asm.frag b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.asm.frag index acc577e82d13..9a96a03dac29 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.asm.frag +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.asm.frag @@ -21,7 +21,7 @@ OpDecorate %aSampledTexture Binding 2 OpDecorate %aSampledTexture DescriptorSet 0 OpDecorate %c Location 1 - OpDecorate %26 RelaxedPrecision + OpDecorate %27 RelaxedPrecision %bool = OpTypeBool %_ptr_Input_bool = OpTypePointer Input %bool %sk_Clockwise = OpVariable %_ptr_Input_bool Input @@ -29,38 +29,39 @@ %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output - %13 = OpTypeImage %float 2D 0 0 0 1 Unknown + %13 = OpTypeImage %float 2D 0 0 0 2 Rgba8 %_ptr_UniformConstant_13 = OpTypePointer UniformConstant %13 %aTexture = OpVariable %_ptr_UniformConstant_13 UniformConstant - %16 = OpTypeSampledImage %13 -%_ptr_UniformConstant_16 = OpTypePointer UniformConstant %16 -%aSampledTexture = OpVariable %_ptr_UniformConstant_16 UniformConstant + %16 = OpTypeImage %float 2D 0 0 0 1 Unknown + %17 = OpTypeSampledImage %16 +%_ptr_UniformConstant_17 = OpTypePointer UniformConstant %17 +%aSampledTexture = OpVariable %_ptr_UniformConstant_17 UniformConstant %v2float = OpTypeVector %float 2 %_ptr_Input_v2float = OpTypePointer Input %v2float %c = OpVariable %_ptr_Input_v2float Input - %21 = OpTypeFunction %v4float %_ptr_UniformConstant_16 %_ptr_UniformConstant_13 - %28 = OpTypeFunction %v4float %_ptr_UniformConstant_13 %_ptr_UniformConstant_16 + %22 = OpTypeFunction %v4float %_ptr_UniformConstant_17 %_ptr_UniformConstant_13 + %29 = OpTypeFunction %v4float %_ptr_UniformConstant_13 %_ptr_UniformConstant_17 %void = OpTypeVoid - %34 = OpTypeFunction %void -%helpers_helper_h4ZT = OpFunction %v4float None %21 - %22 = OpFunctionParameter %_ptr_UniformConstant_16 - %23 = OpFunctionParameter %_ptr_UniformConstant_13 - %24 = OpLabel - %26 = OpLoad %16 %22 - %27 = OpLoad %v2float %c - %25 = OpImageSampleImplicitLod %v4float %26 %27 - OpReturnValue %25 + %35 = OpTypeFunction %void +%helpers_helper_h4ZT = OpFunction %v4float None %22 + %23 = OpFunctionParameter %_ptr_UniformConstant_17 + %24 = OpFunctionParameter %_ptr_UniformConstant_13 + %25 = OpLabel + %27 = OpLoad %17 %23 + %28 = OpLoad %v2float %c + %26 = OpImageSampleImplicitLod %v4float %27 %28 + OpReturnValue %26 OpFunctionEnd -%helper_h4TZ = OpFunction %v4float None %28 - %29 = OpFunctionParameter %_ptr_UniformConstant_13 - %30 = OpFunctionParameter %_ptr_UniformConstant_16 - %31 = OpLabel - %32 = OpFunctionCall %v4float %helpers_helper_h4ZT %30 %29 - OpReturnValue %32 +%helper_h4TZ = OpFunction %v4float None %29 + %30 = OpFunctionParameter %_ptr_UniformConstant_13 + %31 = OpFunctionParameter %_ptr_UniformConstant_17 + %32 = OpLabel + %33 = OpFunctionCall %v4float %helpers_helper_h4ZT %31 %30 + OpReturnValue %33 OpFunctionEnd - %main = OpFunction %void None %34 - %35 = OpLabel - %36 = OpFunctionCall %v4float %helper_h4TZ %aTexture %aSampledTexture - OpStore %sk_FragColor %36 + %main = OpFunction %void None %35 + %36 = OpLabel + %37 = OpFunctionCall %v4float %helper_h4TZ %aTexture %aSampledTexture + OpStore %sk_FragColor %37 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.glsl b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.glsl index f0837b52f9fa..88bcfe81e526 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.glsl +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.glsl @@ -1,12 +1,12 @@ out vec4 sk_FragColor; -layout (binding = 1, set = 0) uniform texture2D aTexture; +layout (rgba8, binding = 1, set = 0) uniform readonlyTexture2D aTexture; layout (binding = 2, set = 0) uniform sampler2D aSampledTexture; layout (location = 1) in vec2 c; -vec4 helpers_helper_h4ZT(sampler2D s, texture2D t) { +vec4 helpers_helper_h4ZT(sampler2D s, layout (rgba8) readonlyTexture2D t) { return texture(s, c); } -vec4 helper_h4TZ(texture2D t, sampler2D s) { +vec4 helper_h4TZ(layout (rgba8) readonlyTexture2D t, sampler2D s) { return helpers_helper_h4ZT(s, t); } void main() { diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.hlsl b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.hlsl index 722c9d4482d9..37af9166ef45 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.hlsl +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.hlsl @@ -1,4 +1,4 @@ -Texture2D aTexture : register(t1, space0); +RWTexture2D aTexture : register(u1, space0); Texture2D aSampledTexture : register(t2, space0); SamplerState _aSampledTexture_sampler : register(s2, space0); @@ -15,14 +15,14 @@ struct SPIRV_Cross_Output float4 sk_FragColor : SV_Target0; }; -float4 helpers_helper_h4ZT(Texture2D _22, SamplerState __22_sampler, Texture2D _23) +float4 helpers_helper_h4ZT(Texture2D _23, SamplerState __23_sampler, RWTexture2D _24) { - return _22.Sample(__22_sampler, c); + return _23.Sample(__23_sampler, c); } -float4 helper_h4TZ(Texture2D _29, Texture2D _30, SamplerState __30_sampler) +float4 helper_h4TZ(RWTexture2D _30, Texture2D _31, SamplerState __31_sampler) { - return helpers_helper_h4ZT(_30, __30_sampler, _29); + return helpers_helper_h4ZT(_31, __31_sampler, _30); } void frag_main() diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.metal b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.metal index 7be1a2cbc202..53be997a419f 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.metal +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { @@ -23,20 +26,20 @@ struct Outputs { half4 sk_FragColor [[color(0)]]; }; struct Globals { - texture2d aTexture; + texture2d aTexture; sampler2D aSampledTexture; }; -half4 helpers_helper_h4ZT(Inputs _in, sampler2D s, texture2d t) { +half4 helpers_helper_h4ZT(Inputs _in, sampler2D s, texture2d t) { return sample(s, _in.c); } -half4 helper_h4TZ(Inputs _in, texture2d t, sampler2D s) { +half4 helper_h4TZ(Inputs _in, texture2d t, sampler2D s) { return helpers_helper_h4ZT(_in, s, t); } -fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d aTexture [[texture(1)]], texture2d aSampledTexture_Tex [[texture(2)]], sampler aSampledTexture_Smplr [[sampler(2)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { +fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d aTexture [[texture(1)]], texture2d aSampledTexture_Tex [[texture(2)]], sampler aSampledTexture_Smplr [[sampler(2)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { Globals _globals{aTexture, {aSampledTexture_Tex, aSampledTexture_Smplr}}; (void)_globals; Outputs _out; (void)_out; - _out.sk_FragColor = helper_h4TZ(_in, _uniforms.aTexture, _globals.aSampledTexture); + _out.sk_FragColor = helper_h4TZ(_in, _globals.aTexture, _globals.aSampledTexture); return _out; } diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.skrp b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.skrp index d14729f979d4..39f646d8a2f8 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.skrp +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.skrp @@ -1,20 +1,35 @@ ### Compilation failed: +error: 1: type 'texture2D' does not support qualifier 'readonly' +layout(set = 0, binding = 1, rgba8) readonly texture2D aTexture; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 1: invalid type -layout(set = 0, binding = 1) uniform texture2D aTexture; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(set = 0, binding = 1, rgba8) readonly texture2D aTexture; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: invalid type -layout(set = 0, binding = 2) uniform sampler2D aSampledTexture; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(set = 0, binding = 2) sampler2D aSampledTexture; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 4: 'in' is not permitted here layout(location = 1) in float2 c; ^^^^^^^^^^^^^^^^^^^^^^^ error: 4: layout qualifier 'location' is not permitted here layout(location = 1) in float2 c; ^^^^^^^^^^^^^^^^^^^^^^^ +error: 6: type 'texture2D' does not support qualifier 'readonly' +noinline half4 helpers_helper(sampler2D s, layout(rgba8) readonly texture2D t) { + ^^^^^^^^^^^^^^^^^^^^^^ +error: 6: layout qualifier 'rgba8' is not permitted here +noinline half4 helpers_helper(sampler2D s, layout(rgba8) readonly texture2D t) { + ^^^^^^^^^^^^^^^^^^^^^^ error: 7: unknown identifier 'sample' return sample(s, c); ^^^^^^ +error: 10: type 'texture2D' does not support qualifier 'readonly' +noinline half4 helper(layout(rgba8) readonly texture2D t, sampler2D s) { + ^^^^^^^^^^^^^^^^^^^^^^ +error: 10: layout qualifier 'rgba8' is not permitted here +noinline half4 helper(layout(rgba8) readonly texture2D t, sampler2D s) { + ^^^^^^^^^^^^^^^^^^^^^^ error: 14: 'main' must return: 'vec4', 'float4', or 'half4' void main() { ^^^^^^^^^^^ @@ -27,4 +42,4 @@ error: 15: unknown identifier 'aTexture' error: 15: unknown identifier 'aSampledTexture' sk_FragColor = helper(aTexture, aSampledTexture); ^^^^^^^^^^^^^^^ -9 errors +14 errors diff --git a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.wgsl b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.wgsl index ec3289b5e76f..4d56a75826c8 100644 --- a/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.wgsl +++ b/tests/sksl/shared/FunctionParametersOfTextureAndSamplerType.wgsl @@ -20,14 +20,14 @@ fn helper_h4TZ(_stageIn: FSIn, t: texture_2d, s_Texture: texture_2d, s return _skTemp2; } } -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { let _skTemp3 = helper_h4TZ(_stageIn, aTexture, aSampledTexture_Texture, aSampledTexture_Sampler); (*_stageOut).sk_FragColor = _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/FunctionPrototype.metal b/tests/sksl/shared/FunctionPrototype.metal index 27ab3c2151ce..1842e35ee5f8 100644 --- a/tests/sksl/shared/FunctionPrototype.metal +++ b/tests/sksl/shared/FunctionPrototype.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/FunctionPrototype.wgsl b/tests/sksl/shared/FunctionPrototype.wgsl index e7c83dca9705..ed05b904a8f6 100644 --- a/tests/sksl/shared/FunctionPrototype.wgsl +++ b/tests/sksl/shared/FunctionPrototype.wgsl @@ -10,21 +10,19 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn this_function_is_defined_before_use_h4h4(_skParam0: vec4) -> vec4 { - let x = _skParam0; +fn this_function_is_defined_before_use_h4h4(x: vec4) -> vec4 { { return -x; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = this_function_is_defined_before_use_h4h4(-_globalUniforms.colorGreen); return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/FunctionReturnTypeMatch.metal b/tests/sksl/shared/FunctionReturnTypeMatch.metal index 97cb85c02983..13fa2369f2ec 100644 --- a/tests/sksl/shared/FunctionReturnTypeMatch.metal +++ b/tests/sksl/shared/FunctionReturnTypeMatch.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/FunctionReturnTypeMatch.wgsl b/tests/sksl/shared/FunctionReturnTypeMatch.wgsl index 2f4d6bcc45bd..a7370ca4e104 100644 --- a/tests/sksl/shared/FunctionReturnTypeMatch.wgsl +++ b/tests/sksl/shared/FunctionReturnTypeMatch.wgsl @@ -116,8 +116,7 @@ fn returns_int4_i4() -> vec4 { return vec4(4); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x1: f32 = 1.0; var x2: vec2 = vec2(2.0); @@ -303,8 +302,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Functions.metal b/tests/sksl/shared/Functions.metal index 5afe9d1c5aa2..ab0ac74204ad 100644 --- a/tests/sksl/shared/Functions.metal +++ b/tests/sksl/shared/Functions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Functions.wgsl b/tests/sksl/shared/Functions.wgsl index 21c7736065c5..5386c1155f9b 100644 --- a/tests/sksl/shared/Functions.wgsl +++ b/tests/sksl/shared/Functions.wgsl @@ -11,14 +11,12 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn foo_ff2(_skParam0: vec2) -> f32 { - let v = _skParam0; +fn foo_ff2(v: vec2) -> f32 { { return v.x * v.y; } } -fn bar_vf(_skParam0: ptr) { - let x = _skParam0; +fn bar_vf(x: ptr) { { var y: array; y[0] = (*x); @@ -27,18 +25,17 @@ fn bar_vf(_skParam0: ptr) { (*x) = _skTemp0; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 10.0; var _skTemp1: f32 = x; bar_vf(&_skTemp1); x = _skTemp1; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((x == 200.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(x == 200.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/GeometricIntrinsics.metal b/tests/sksl/shared/GeometricIntrinsics.metal index a0a5c14cfdf5..6a884af73644 100644 --- a/tests/sksl/shared/GeometricIntrinsics.metal +++ b/tests/sksl/shared/GeometricIntrinsics.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/GeometricIntrinsics.wgsl b/tests/sksl/shared/GeometricIntrinsics.wgsl index 35d49f807c29..804313a8160c 100644 --- a/tests/sksl/shared/GeometricIntrinsics.wgsl +++ b/tests/sksl/shared/GeometricIntrinsics.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_x: f32 = 1.0; let _skTemp0 = length(_0_x); @@ -33,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/HelloWorld.metal b/tests/sksl/shared/HelloWorld.metal index e97e5425585b..6faf44a0cd99 100644 --- a/tests/sksl/shared/HelloWorld.metal +++ b/tests/sksl/shared/HelloWorld.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/HelloWorld.wgsl b/tests/sksl/shared/HelloWorld.wgsl index 4b2655f8660a..8bfc8f39c671 100644 --- a/tests/sksl/shared/HelloWorld.wgsl +++ b/tests/sksl/shared/HelloWorld.wgsl @@ -6,14 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return vec4(0.0, 1.0, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Hex.metal b/tests/sksl/shared/Hex.metal index 07c931228190..9751e019886e 100644 --- a/tests/sksl/shared/Hex.metal +++ b/tests/sksl/shared/Hex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Hex.wgsl b/tests/sksl/shared/Hex.wgsl index 5916b1d36893..edf70c96e736 100644 --- a/tests/sksl/shared/Hex.wgsl +++ b/tests/sksl/shared/Hex.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var i1: i32 = 0; i1 = i1 + i32(1); @@ -26,8 +25,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/HexUnsigned.metal b/tests/sksl/shared/HexUnsigned.metal index 418626538767..e47e022287a3 100644 --- a/tests/sksl/shared/HexUnsigned.metal +++ b/tests/sksl/shared/HexUnsigned.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/HexUnsigned.wgsl b/tests/sksl/shared/HexUnsigned.wgsl index 34c8ec6134ee..c0ac0f5ab25d 100644 --- a/tests/sksl/shared/HexUnsigned.wgsl +++ b/tests/sksl/shared/HexUnsigned.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var u1: u32 = 0u; u1 = u1 + u32(1); @@ -26,8 +25,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/InoutParameters.metal b/tests/sksl/shared/InoutParameters.metal index 2e5a1aefd3c4..1d428e6179ae 100644 --- a/tests/sksl/shared/InoutParameters.metal +++ b/tests/sksl/shared/InoutParameters.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/InoutParameters.wgsl b/tests/sksl/shared/InoutParameters.wgsl index 663744cdc7a1..aaecfb6b52c4 100644 --- a/tests/sksl/shared/InoutParameters.wgsl +++ b/tests/sksl/shared/InoutParameters.wgsl @@ -10,36 +10,31 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn outParameterWrite_vh4(_skParam0: ptr>) { - let x = _skParam0; +fn outParameterWrite_vh4(x: ptr>) { { (*x) = _globalUniforms.colorGreen; } } -fn outParameterWriteIndirect_vh4(_skParam0: ptr>) { - let c = _skParam0; +fn outParameterWriteIndirect_vh4(c: ptr>) { { var _skTemp0: vec4; outParameterWrite_vh4(&_skTemp0); (*c) = _skTemp0; } } -fn inoutParameterWrite_vh4(_skParam0: ptr>) { - let x = _skParam0; +fn inoutParameterWrite_vh4(x: ptr>) { { (*x) = (*x) * (*x); } } -fn inoutParameterWriteIndirect_vh4(_skParam0: ptr>) { - let x = _skParam0; +fn inoutParameterWriteIndirect_vh4(x: ptr>) { { var _skTemp1: vec4 = (*x); inoutParameterWrite_vh4(&_skTemp1); (*x) = _skTemp1; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var c: vec4; var _skTemp2: vec4; @@ -57,8 +52,8 @@ fn main(_skParam0: vec2) -> vec4 { return c; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/InoutParamsAreDistinct.metal b/tests/sksl/shared/InoutParamsAreDistinct.metal index 317565aefad4..e0f074813666 100644 --- a/tests/sksl/shared/InoutParamsAreDistinct.metal +++ b/tests/sksl/shared/InoutParamsAreDistinct.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/InoutParamsAreDistinct.wgsl b/tests/sksl/shared/InoutParamsAreDistinct.wgsl index ae8b7ce0bc1c..3c234dc03116 100644 --- a/tests/sksl/shared/InoutParamsAreDistinct.wgsl +++ b/tests/sksl/shared/InoutParamsAreDistinct.wgsl @@ -11,17 +11,14 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn inout_params_are_distinct_bhh(_skParam0: ptr, _skParam1: ptr) -> bool { - let x = _skParam0; - let y = _skParam1; +fn inout_params_are_distinct_bhh(x: ptr, y: ptr) -> bool { { (*x) = 1.0; (*y) = 2.0; return ((*x) == 1.0) && ((*y) == 2.0); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 0.0; var _skTemp0: vec4; @@ -38,8 +35,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/InstanceID.metal b/tests/sksl/shared/InstanceID.metal index 45c1dc1b5837..5b464ebf187d 100644 --- a/tests/sksl/shared/InstanceID.metal +++ b/tests/sksl/shared/InstanceID.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/InstanceID.wgsl b/tests/sksl/shared/InstanceID.wgsl index df178a6e8909..5b00977e0ac9 100644 --- a/tests/sksl/shared/InstanceID.wgsl +++ b/tests/sksl/shared/InstanceID.wgsl @@ -6,13 +6,13 @@ struct VSOut { @location(1) @interpolate(flat) id: i32, @builtin(position) sk_Position: vec4, }; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { (*_stageOut).id = i32(_stageIn.sk_InstanceID); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/InstanceIDInFunction.metal b/tests/sksl/shared/InstanceIDInFunction.metal index 1ef8ddfee5cd..05addaaaad02 100644 --- a/tests/sksl/shared/InstanceIDInFunction.metal +++ b/tests/sksl/shared/InstanceIDInFunction.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/InstanceIDInFunction.wgsl b/tests/sksl/shared/InstanceIDInFunction.wgsl index fc8ace997c39..8a3c3ab21ffa 100644 --- a/tests/sksl/shared/InstanceIDInFunction.wgsl +++ b/tests/sksl/shared/InstanceIDInFunction.wgsl @@ -11,14 +11,14 @@ fn fn_i(_stageIn: VSIn) -> i32 { return i32(_stageIn.sk_InstanceID); } } -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { let _skTemp0 = fn_i(_stageIn); (*_stageOut).id = _skTemp0; } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/IntegerDivisionES3.metal b/tests/sksl/shared/IntegerDivisionES3.metal index 3517aea7aa6a..48b84b69ed11 100644 --- a/tests/sksl/shared/IntegerDivisionES3.metal +++ b/tests/sksl/shared/IntegerDivisionES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/IntegerDivisionES3.wgsl b/tests/sksl/shared/IntegerDivisionES3.wgsl index a79699e28993..35a2a357eb32 100644 --- a/tests/sksl/shared/IntegerDivisionES3.wgsl +++ b/tests/sksl/shared/IntegerDivisionES3.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var zero: i32 = i32(_globalUniforms.colorGreen.x); var one: i32 = i32(_globalUniforms.colorGreen.y); @@ -63,8 +62,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/InterfaceBlockBuffer.metal b/tests/sksl/shared/InterfaceBlockBuffer.metal index a37672bb0321..930cabddfd28 100644 --- a/tests/sksl/shared/InterfaceBlockBuffer.metal +++ b/tests/sksl/shared/InterfaceBlockBuffer.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/InterfaceBlockBuffer.wgsl b/tests/sksl/shared/InterfaceBlockBuffer.wgsl index 25043f2734a9..25ab709a1e68 100644 --- a/tests/sksl/shared/InterfaceBlockBuffer.wgsl +++ b/tests/sksl/shared/InterfaceBlockBuffer.wgsl @@ -9,13 +9,13 @@ struct testBlock { x: f32, }; @group(0) @binding(456) var test : testBlock; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(f32(test.x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/InterfaceBlockMultipleAnonymous.metal b/tests/sksl/shared/InterfaceBlockMultipleAnonymous.metal index ab20755800e2..80c43be0e920 100644 --- a/tests/sksl/shared/InterfaceBlockMultipleAnonymous.metal +++ b/tests/sksl/shared/InterfaceBlockMultipleAnonymous.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/InterfaceBlockMultipleAnonymous.wgsl b/tests/sksl/shared/InterfaceBlockMultipleAnonymous.wgsl index 27559c2f15f5..9e406660c799 100644 --- a/tests/sksl/shared/InterfaceBlockMultipleAnonymous.wgsl +++ b/tests/sksl/shared/InterfaceBlockMultipleAnonymous.wgsl @@ -13,13 +13,13 @@ struct testBlockB { y: vec2, }; @group(0) @binding(2) var _uniform1 : testBlockB; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(vec2(_uniform0.x), vec2(_uniform1.y)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/InterfaceBlockNamed.metal b/tests/sksl/shared/InterfaceBlockNamed.metal index ec79be7d4573..9862193fdbc6 100644 --- a/tests/sksl/shared/InterfaceBlockNamed.metal +++ b/tests/sksl/shared/InterfaceBlockNamed.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/InterfaceBlockNamed.wgsl b/tests/sksl/shared/InterfaceBlockNamed.wgsl index 45c412029163..373237ee9cd0 100644 --- a/tests/sksl/shared/InterfaceBlockNamed.wgsl +++ b/tests/sksl/shared/InterfaceBlockNamed.wgsl @@ -9,13 +9,13 @@ struct testBlock { x: f32, }; @group(0) @binding(456) var test : testBlock; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(f32(test.x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/InterfaceBlockNamedArray.asm.frag b/tests/sksl/shared/InterfaceBlockNamedArray.asm.frag index 67eb19d1c2a7..632ae521c884 100644 --- a/tests/sksl/shared/InterfaceBlockNamedArray.asm.frag +++ b/tests/sksl/shared/InterfaceBlockNamedArray.asm.frag @@ -1,6 +1,6 @@ ### Compilation failed: -error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlock_int_2]' must be a structure type +error: SPIR-V validation error: Block decoration on target '12[%_arr_testBlock_int_2]' must be a structure type OpDecorate %_arr_testBlock_int_2 Block OpCapability Shader @@ -9,12 +9,22 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo OpEntryPoint Fragment %main "main" %sk_Clockwise %sk_FragColor OpExecutionMode %main OriginUpperLeft OpName %testBlock "testBlock" - OpMemberName %testBlock 0 "x" + OpMemberName %testBlock 0 "s" + OpMemberName %testBlock 1 "m" + OpMemberName %testBlock 2 "a" + OpMemberName %testBlock 3 "am" OpName %sk_Clockwise "sk_Clockwise" OpName %sk_FragColor "sk_FragColor" OpName %main "main" + OpDecorate %_arr_float_int_2 ArrayStride 16 + OpDecorate %_arr_mat2v2float_int_2 ArrayStride 32 OpMemberDecorate %testBlock 0 Offset 0 - OpDecorate %_arr_testBlock_int_2 ArrayStride 16 + OpMemberDecorate %testBlock 1 Offset 16 + OpMemberDecorate %testBlock 1 ColMajor + OpMemberDecorate %testBlock 1 MatrixStride 16 + OpMemberDecorate %testBlock 2 Offset 48 + OpMemberDecorate %testBlock 3 Offset 80 + OpDecorate %_arr_testBlock_int_2 ArrayStride 144 OpDecorate %_arr_testBlock_int_2 Block OpDecorate %3 Binding 123 OpDecorate %3 DescriptorSet 0 @@ -22,11 +32,15 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo OpDecorate %sk_FragColor RelaxedPrecision OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 - OpDecorate %24 RelaxedPrecision + OpDecorate %38 RelaxedPrecision %float = OpTypeFloat 32 - %testBlock = OpTypeStruct %float + %v2float = OpTypeVector %float 2 +%mat2v2float = OpTypeMatrix %v2float 2 %int = OpTypeInt 32 1 %int_2 = OpConstant %int 2 +%_arr_float_int_2 = OpTypeArray %float %int_2 +%_arr_mat2v2float_int_2 = OpTypeArray %mat2v2float %int_2 + %testBlock = OpTypeStruct %float %mat2v2float %_arr_float_int_2 %_arr_mat2v2float_int_2 %_arr_testBlock_int_2 = OpTypeArray %testBlock %int_2 %_ptr_Uniform__arr_testBlock_int_2 = OpTypePointer Uniform %_arr_testBlock_int_2 %3 = OpVariable %_ptr_Uniform__arr_testBlock_int_2 Uniform @@ -37,16 +51,26 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output %void = OpTypeVoid - %17 = OpTypeFunction %void - %int_1 = OpConstant %int 1 + %21 = OpTypeFunction %void %int_0 = OpConstant %int 0 %_ptr_Uniform_float = OpTypePointer Uniform %float - %main = OpFunction %void None %17 - %18 = OpLabel - %21 = OpAccessChain %_ptr_Uniform_float %3 %int_1 %int_0 - %23 = OpLoad %float %21 - %24 = OpCompositeConstruct %v4float %23 %23 %23 %23 - OpStore %sk_FragColor %24 + %int_1 = OpConstant %int 1 +%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float + %int_3 = OpConstant %int 3 + %main = OpFunction %void None %21 + %22 = OpLabel + %24 = OpAccessChain %_ptr_Uniform_float %3 %int_0 %int_0 + %26 = OpLoad %float %24 + %28 = OpAccessChain %_ptr_Uniform_v2float %3 %int_1 %int_1 %int_1 + %30 = OpLoad %v2float %28 + %31 = OpCompositeExtract %float %30 0 + %32 = OpAccessChain %_ptr_Uniform_float %3 %int_0 %int_2 %int_1 + %33 = OpLoad %float %32 + %35 = OpAccessChain %_ptr_Uniform_v2float %3 %int_1 %int_3 %int_1 %int_0 + %36 = OpLoad %v2float %35 + %37 = OpCompositeExtract %float %36 1 + %38 = OpCompositeConstruct %v4float %26 %31 %33 %37 + OpStore %sk_FragColor %38 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/InterfaceBlockNamedArray.glsl b/tests/sksl/shared/InterfaceBlockNamedArray.glsl index 996898835360..49ee26500d30 100644 --- a/tests/sksl/shared/InterfaceBlockNamedArray.glsl +++ b/tests/sksl/shared/InterfaceBlockNamedArray.glsl @@ -1,8 +1,11 @@ out vec4 sk_FragColor; layout (binding = 123) uniform testBlock { - float x; + layout (offset = 0) float s; + layout (offset = 16) mat2 m; + layout (offset = 48) float[2] a; + layout (offset = 80) mat2[2] am; } test[2]; void main() { - sk_FragColor = vec4(test[1].x); + sk_FragColor = vec4(test[0].s, test[1].m[1].x, test[0].a[1], test[1].am[1][0].y); } diff --git a/tests/sksl/shared/InterfaceBlockNamedArray.hlsl b/tests/sksl/shared/InterfaceBlockNamedArray.hlsl index 67eb19d1c2a7..632ae521c884 100644 --- a/tests/sksl/shared/InterfaceBlockNamedArray.hlsl +++ b/tests/sksl/shared/InterfaceBlockNamedArray.hlsl @@ -1,6 +1,6 @@ ### Compilation failed: -error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlock_int_2]' must be a structure type +error: SPIR-V validation error: Block decoration on target '12[%_arr_testBlock_int_2]' must be a structure type OpDecorate %_arr_testBlock_int_2 Block OpCapability Shader @@ -9,12 +9,22 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo OpEntryPoint Fragment %main "main" %sk_Clockwise %sk_FragColor OpExecutionMode %main OriginUpperLeft OpName %testBlock "testBlock" - OpMemberName %testBlock 0 "x" + OpMemberName %testBlock 0 "s" + OpMemberName %testBlock 1 "m" + OpMemberName %testBlock 2 "a" + OpMemberName %testBlock 3 "am" OpName %sk_Clockwise "sk_Clockwise" OpName %sk_FragColor "sk_FragColor" OpName %main "main" + OpDecorate %_arr_float_int_2 ArrayStride 16 + OpDecorate %_arr_mat2v2float_int_2 ArrayStride 32 OpMemberDecorate %testBlock 0 Offset 0 - OpDecorate %_arr_testBlock_int_2 ArrayStride 16 + OpMemberDecorate %testBlock 1 Offset 16 + OpMemberDecorate %testBlock 1 ColMajor + OpMemberDecorate %testBlock 1 MatrixStride 16 + OpMemberDecorate %testBlock 2 Offset 48 + OpMemberDecorate %testBlock 3 Offset 80 + OpDecorate %_arr_testBlock_int_2 ArrayStride 144 OpDecorate %_arr_testBlock_int_2 Block OpDecorate %3 Binding 123 OpDecorate %3 DescriptorSet 0 @@ -22,11 +32,15 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo OpDecorate %sk_FragColor RelaxedPrecision OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 - OpDecorate %24 RelaxedPrecision + OpDecorate %38 RelaxedPrecision %float = OpTypeFloat 32 - %testBlock = OpTypeStruct %float + %v2float = OpTypeVector %float 2 +%mat2v2float = OpTypeMatrix %v2float 2 %int = OpTypeInt 32 1 %int_2 = OpConstant %int 2 +%_arr_float_int_2 = OpTypeArray %float %int_2 +%_arr_mat2v2float_int_2 = OpTypeArray %mat2v2float %int_2 + %testBlock = OpTypeStruct %float %mat2v2float %_arr_float_int_2 %_arr_mat2v2float_int_2 %_arr_testBlock_int_2 = OpTypeArray %testBlock %int_2 %_ptr_Uniform__arr_testBlock_int_2 = OpTypePointer Uniform %_arr_testBlock_int_2 %3 = OpVariable %_ptr_Uniform__arr_testBlock_int_2 Uniform @@ -37,16 +51,26 @@ error: SPIR-V validation error: Block decoration on target '8[%_arr_testBlo %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output %void = OpTypeVoid - %17 = OpTypeFunction %void - %int_1 = OpConstant %int 1 + %21 = OpTypeFunction %void %int_0 = OpConstant %int 0 %_ptr_Uniform_float = OpTypePointer Uniform %float - %main = OpFunction %void None %17 - %18 = OpLabel - %21 = OpAccessChain %_ptr_Uniform_float %3 %int_1 %int_0 - %23 = OpLoad %float %21 - %24 = OpCompositeConstruct %v4float %23 %23 %23 %23 - OpStore %sk_FragColor %24 + %int_1 = OpConstant %int 1 +%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float + %int_3 = OpConstant %int 3 + %main = OpFunction %void None %21 + %22 = OpLabel + %24 = OpAccessChain %_ptr_Uniform_float %3 %int_0 %int_0 + %26 = OpLoad %float %24 + %28 = OpAccessChain %_ptr_Uniform_v2float %3 %int_1 %int_1 %int_1 + %30 = OpLoad %v2float %28 + %31 = OpCompositeExtract %float %30 0 + %32 = OpAccessChain %_ptr_Uniform_float %3 %int_0 %int_2 %int_1 + %33 = OpLoad %float %32 + %35 = OpAccessChain %_ptr_Uniform_v2float %3 %int_1 %int_3 %int_1 %int_0 + %36 = OpLoad %v2float %35 + %37 = OpCompositeExtract %float %36 1 + %38 = OpCompositeConstruct %v4float %26 %31 %33 %37 + OpStore %sk_FragColor %38 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/InterfaceBlockNamedArray.metal b/tests/sksl/shared/InterfaceBlockNamedArray.metal index 24e38e37a5e1..cd65c6c91b0f 100644 --- a/tests/sksl/shared/InterfaceBlockNamedArray.metal +++ b/tests/sksl/shared/InterfaceBlockNamedArray.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; @@ -7,7 +10,13 @@ struct Outputs { half4 sk_FragColor [[color(0)]]; }; struct testBlock { - float x; + float s; + char pad0[12]; + float2x2 m; + char pad1[16]; + array a; + char pad2[24]; + array am; } test[2]; struct Globals { constant testBlock* test; @@ -17,6 +26,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant array test : array; - ^^^^ - - diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @@ -13,18 +6,43 @@ struct FSOut { @location(0) sk_FragColor: vec4, }; struct testBlock { - x: f32, + @size(16) s: f32, + @size(32) m: _skMatrix22, + @size(32) a: array<_skArrayElement_f, 2>, + am: array<_skArrayElement_f22, 2>, }; @group(0) @binding(123) var test : array; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { - (*_stageOut).sk_FragColor = vec4(f32(test[1].x)); + (*_stageOut).sk_FragColor = vec4(f32(test[0].s), f32(_skUnpacked_test_m[1][1].x), f32(_skUnpacked_test_a[0][1]), f32(_skUnpacked_test_am[1][1][0].y)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { + _skInitializePolyfilledUniforms(); var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } - -1 error +struct _skArrayElement_f { + @size(16) e : f32 +}; +var _skUnpacked_test_a: array, 2>; +struct _skArrayElement_f22 { + e : _skMatrix22 +}; +struct _skRow2 { + @size(16) r : vec2 +}; +struct _skMatrix22 { + c : array<_skRow2, 2> +}; +var _skUnpacked_test_am: array, 2>, 2>; +var _skUnpacked_test_m: array, 2>; +fn _skInitializePolyfilledUniforms() { + _skUnpacked_test_a[0] = array(test[0].a[0].e, test[0].a[1].e); + _skUnpacked_test_a[1] = array(test[1].a[0].e, test[1].a[1].e); + _skUnpacked_test_am[0] = array, 2>(mat2x2(test[0].am[0].e.c[0].r, test[0].am[0].e.c[1].r), mat2x2(test[0].am[1].e.c[0].r, test[0].am[1].e.c[1].r)); + _skUnpacked_test_am[1] = array, 2>(mat2x2(test[1].am[0].e.c[0].r, test[1].am[0].e.c[1].r), mat2x2(test[1].am[1].e.c[0].r, test[1].am[1].e.c[1].r)); + _skUnpacked_test_m[0] = mat2x2(test[0].m.c[0].r, test[0].m.c[1].r); + _skUnpacked_test_m[1] = mat2x2(test[1].m.c[0].r, test[1].m.c[1].r); +} diff --git a/tests/sksl/shared/LogicalAndShortCircuit.metal b/tests/sksl/shared/LogicalAndShortCircuit.metal index 1721a2d363e5..146e784c316b 100644 --- a/tests/sksl/shared/LogicalAndShortCircuit.metal +++ b/tests/sksl/shared/LogicalAndShortCircuit.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/LogicalAndShortCircuit.wgsl b/tests/sksl/shared/LogicalAndShortCircuit.wgsl index 48e97243982d..a5304069ddd6 100644 --- a/tests/sksl/shared/LogicalAndShortCircuit.wgsl +++ b/tests/sksl/shared/LogicalAndShortCircuit.wgsl @@ -96,7 +96,7 @@ fn FalseFalse_b() -> bool { } return bool(); } -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var _0_TrueTrue: bool; var _2_y: i32 = 1; @@ -140,8 +140,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/LogicalOrShortCircuit.metal b/tests/sksl/shared/LogicalOrShortCircuit.metal index 104a91cc16db..0aca57ffa393 100644 --- a/tests/sksl/shared/LogicalOrShortCircuit.metal +++ b/tests/sksl/shared/LogicalOrShortCircuit.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/LogicalOrShortCircuit.wgsl b/tests/sksl/shared/LogicalOrShortCircuit.wgsl index acc10eb331b2..11cc4eb69f38 100644 --- a/tests/sksl/shared/LogicalOrShortCircuit.wgsl +++ b/tests/sksl/shared/LogicalOrShortCircuit.wgsl @@ -96,7 +96,7 @@ fn FalseFalse_b() -> bool { } return bool(); } -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var _0_TrueTrue: bool; var _2_y: i32 = 1; @@ -133,8 +133,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Matrices.metal b/tests/sksl/shared/Matrices.metal index f3638a89763b..8f27828b1b90 100644 --- a/tests/sksl/shared/Matrices.metal +++ b/tests/sksl/shared/Matrices.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Matrices.wgsl b/tests/sksl/shared/Matrices.wgsl index a65d67009088..60d29208a02d 100644 --- a/tests/sksl/shared/Matrices.wgsl +++ b/tests/sksl/shared/Matrices.wgsl @@ -58,8 +58,7 @@ fn test_comma_b() -> bool { return (all(x[0] == y[0]) && all(x[1] == y[1])); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; var _1_m1: mat2x2 = mat2x2(1.0, 2.0, 3.0, 4.0); @@ -107,8 +106,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp18; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatricesNonsquare.metal b/tests/sksl/shared/MatricesNonsquare.metal index 9d5747595713..927ad6e08a1f 100644 --- a/tests/sksl/shared/MatricesNonsquare.metal +++ b/tests/sksl/shared/MatricesNonsquare.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatricesNonsquare.wgsl b/tests/sksl/shared/MatricesNonsquare.wgsl index cf57bb28fe97..2fd093ae6680 100644 --- a/tests/sksl/shared/MatricesNonsquare.wgsl +++ b/tests/sksl/shared/MatricesNonsquare.wgsl @@ -38,10 +38,10 @@ fn test_half_b() -> bool { var m33: mat3x3 = m43 * m34; let _skTemp7 = mat3x3(35.0, 0.0, 0.0, 0.0, 35.0, 0.0, 0.0, 0.0, 35.0); ok = ok && (all(m33[0] == _skTemp7[0]) && all(m33[1] == _skTemp7[1]) && all(m33[2] == _skTemp7[2])); - m23 = m23 + mat2x3(1.0, 1.0, 1.0, 1.0, 1.0, 1.0); + m23 = mat2x3(m23[0] + 1.0, m23[1] + 1.0); let _skTemp8 = mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0); ok = ok && (all(m23[0] == _skTemp8[0]) && all(m23[1] == _skTemp8[1])); - m32 = m32 - mat3x2(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + m32 = mat3x2(m32[0] - 2.0, m32[1] - 2.0, m32[2] - 2.0); let _skTemp9 = mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0); ok = ok && (all(m32[0] == _skTemp9[0]) && all(m32[1] == _skTemp9[1]) && all(m32[2] == _skTemp9[2])); m24 = m24 * 0.25; @@ -50,8 +50,7 @@ fn test_half_b() -> bool { return ok; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; var _1_m23: mat2x3 = mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0); @@ -66,10 +65,10 @@ fn main(_skParam0: vec2) -> vec4 { var _7_m22: mat2x2 = _3_m32 * _1_m23; let _skTemp14 = mat2x2(8.0, 0.0, 0.0, 8.0); _0_ok = _0_ok && (all(_7_m22[0] == _skTemp14[0]) && all(_7_m22[1] == _skTemp14[1])); - _1_m23 = _1_m23 + mat2x3(1.0, 1.0, 1.0, 1.0, 1.0, 1.0); + _1_m23 = mat2x3(_1_m23[0] + 1.0, _1_m23[1] + 1.0); let _skTemp15 = mat2x3(3.0, 1.0, 1.0, 1.0, 3.0, 1.0); _0_ok = _0_ok && (all(_1_m23[0] == _skTemp15[0]) && all(_1_m23[1] == _skTemp15[1])); - _3_m32 = _3_m32 - mat3x2(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + _3_m32 = mat3x2(_3_m32[0] - 2.0, _3_m32[1] - 2.0, _3_m32[2] - 2.0); let _skTemp16 = mat3x2(2.0, -2.0, -2.0, 2.0, -2.0, -2.0); _0_ok = _0_ok && (all(_3_m32[0] == _skTemp16[0]) && all(_3_m32[1] == _skTemp16[1]) && all(_3_m32[2] == _skTemp16[2])); _2_m24 = _2_m24 * 0.25; @@ -91,8 +90,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp18; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixConstructorsES2.metal b/tests/sksl/shared/MatrixConstructorsES2.metal index 542f893c40ab..c22b181fb9f9 100644 --- a/tests/sksl/shared/MatrixConstructorsES2.metal +++ b/tests/sksl/shared/MatrixConstructorsES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixConstructorsES2.wgsl b/tests/sksl/shared/MatrixConstructorsES2.wgsl index 798cf3afbd3a..908c51b256c0 100644 --- a/tests/sksl/shared/MatrixConstructorsES2.wgsl +++ b/tests/sksl/shared/MatrixConstructorsES2.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { testMatrix2x2: mat2x2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f4: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]); let _skTemp0 = f4.xyz; @@ -35,8 +34,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixConstructorsES3.metal b/tests/sksl/shared/MatrixConstructorsES3.metal index 90335b67d83a..b0dfab1c768d 100644 --- a/tests/sksl/shared/MatrixConstructorsES3.metal +++ b/tests/sksl/shared/MatrixConstructorsES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixConstructorsES3.wgsl b/tests/sksl/shared/MatrixConstructorsES3.wgsl index 876eca7d894f..6f025985a38c 100644 --- a/tests/sksl/shared/MatrixConstructorsES3.wgsl +++ b/tests/sksl/shared/MatrixConstructorsES3.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { testMatrix2x2: mat2x2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f4: vec4 = vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]); let _skTemp0 = f4.xy; @@ -44,8 +43,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixEquality.metal b/tests/sksl/shared/MatrixEquality.metal index 703b62fd0328..7bd5a5ec3e1e 100644 --- a/tests/sksl/shared/MatrixEquality.metal +++ b/tests/sksl/shared/MatrixEquality.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixEquality.wgsl b/tests/sksl/shared/MatrixEquality.wgsl index 4d0da47932af..8bddc4e23fea 100644 --- a/tests/sksl/shared/MatrixEquality.wgsl +++ b/tests/sksl/shared/MatrixEquality.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { testMatrix3x3: mat3x3, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; let _skTemp0 = mat2x2(1.0, 2.0, 3.0, 4.0); @@ -120,8 +119,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_0_ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixIndexLookup.metal b/tests/sksl/shared/MatrixIndexLookup.metal index c5bc2c1b3596..b2ed8d3e10c3 100644 --- a/tests/sksl/shared/MatrixIndexLookup.metal +++ b/tests/sksl/shared/MatrixIndexLookup.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixIndexLookup.wgsl b/tests/sksl/shared/MatrixIndexLookup.wgsl index 50d9a775c296..cb88ed360124 100644 --- a/tests/sksl/shared/MatrixIndexLookup.wgsl +++ b/tests/sksl/shared/MatrixIndexLookup.wgsl @@ -61,8 +61,7 @@ fn test4x4_b() -> bool { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -81,8 +80,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixIndexStore.metal b/tests/sksl/shared/MatrixIndexStore.metal index efb5daac2c18..23fad55247e4 100644 --- a/tests/sksl/shared/MatrixIndexStore.metal +++ b/tests/sksl/shared/MatrixIndexStore.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixIndexStore.wgsl b/tests/sksl/shared/MatrixIndexStore.wgsl index 9e7c4a1b8be5..1796c6581f7d 100644 --- a/tests/sksl/shared/MatrixIndexStore.wgsl +++ b/tests/sksl/shared/MatrixIndexStore.wgsl @@ -53,8 +53,7 @@ fn test4x4_b() -> bool { return (all(matrix[0] == _globalUniforms.testMatrix4x4[0]) && all(matrix[1] == _globalUniforms.testMatrix4x4[1]) && all(matrix[2] == _globalUniforms.testMatrix4x4[2]) && all(matrix[3] == _globalUniforms.testMatrix4x4[3])); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -73,8 +72,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixOpEqualsES2.metal b/tests/sksl/shared/MatrixOpEqualsES2.metal index fa0be0b2dafb..37f67857fb1c 100644 --- a/tests/sksl/shared/MatrixOpEqualsES2.metal +++ b/tests/sksl/shared/MatrixOpEqualsES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/MatrixOpEqualsES2.wgsl b/tests/sksl/shared/MatrixOpEqualsES2.wgsl index d725a60eb731..2e56bdc968cd 100644 --- a/tests/sksl/shared/MatrixOpEqualsES2.wgsl +++ b/tests/sksl/shared/MatrixOpEqualsES2.wgsl @@ -1,17 +1,3 @@ -### Compilation failed: - -error: :29:13 error: no matching overload for operator / (mat3x3, mat3x3) - -4 candidate operators: - operator / (T, T) -> T where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (vecN, T) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (T, vecN) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (vecN, vecN) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - - m = m / splat_4; - ^ - - diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @@ -40,7 +26,7 @@ fn test_matrix_op_matrix_half_b() -> bool { let _skTemp1 = mat3x3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); ok = ok && (all(m[0] == _skTemp1[0]) && all(m[1] == _skTemp1[1]) && all(m[2] == _skTemp1[2])); m = mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); - m = m / splat_4; + m = mat3x3(m[0] / splat_4[0], m[1] / splat_4[1], m[2] / splat_4[2]); let _skTemp2 = mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5); ok = ok && (all(m[0] == _skTemp2[0]) && all(m[1] == _skTemp2[1]) && all(m[2] == _skTemp2[2])); m = splat_4; @@ -52,7 +38,7 @@ fn test_matrix_op_matrix_half_b() -> bool { let _skTemp4 = mat3x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); ok = ok && (all(m[0] == _skTemp4[0]) && all(m[1] == _skTemp4[1]) && all(m[2] == _skTemp4[2])); m = splat_4; - m = m / splat_2; + m = mat3x3(m[0] / splat_2[0], m[1] / splat_2[1], m[2] / splat_2[2]); let _skTemp5 = mat3x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); ok = ok && (all(m[0] == _skTemp5[0]) && all(m[1] == _skTemp5[1]) && all(m[2] == _skTemp5[2])); } @@ -70,27 +56,27 @@ fn test_matrix_op_matrix_half_b() -> bool { } { var m: mat2x2 = mat2x2(2.0, 4.0, 6.0, 8.0); - m = m / mat2x2(2.0, 2.0, 2.0, 4.0); - let _skTemp8 = mat2x2(1.0, 2.0, 3.0, 2.0); - ok = ok && (all(m[0] == _skTemp8[0]) && all(m[1] == _skTemp8[1])); + let _skTemp8 = mat2x2(2.0, 2.0, 2.0, 4.0); + m = mat2x2(m[0] / _skTemp8[0], m[1] / _skTemp8[1]); + let _skTemp9 = mat2x2(1.0, 2.0, 3.0, 2.0); + ok = ok && (all(m[0] == _skTemp9[0]) && all(m[1] == _skTemp9[1])); } { var m: mat2x2 = mat2x2(1.0, 2.0, 7.0, 4.0); m = m * mat2x2(3.0, 5.0, 3.0, 2.0); - let _skTemp9 = mat2x2(38.0, 26.0, 17.0, 14.0); - ok = ok && (all(m[0] == _skTemp9[0]) && all(m[1] == _skTemp9[1])); + let _skTemp10 = mat2x2(38.0, 26.0, 17.0, 14.0); + ok = ok && (all(m[0] == _skTemp10[0]) && all(m[1] == _skTemp10[1])); } { var m: mat3x3 = mat3x3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); m = m * mat3x3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); - let _skTemp10 = mat3x3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); - ok = ok && (all(m[0] == _skTemp10[0]) && all(m[1] == _skTemp10[1]) && all(m[2] == _skTemp10[2])); + let _skTemp11 = mat3x3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); + ok = ok && (all(m[0] == _skTemp11[0]) && all(m[1] == _skTemp11[1]) && all(m[2] == _skTemp11[2])); } return ok; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; { @@ -98,79 +84,78 @@ fn main(_skParam0: vec2) -> vec4 { const _2_splat_2: mat3x3 = mat3x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); var _3_m: mat3x3 = mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); _3_m = _3_m + _1_splat_4; - let _skTemp11 = mat3x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); - _0_ok = _0_ok && (all(_3_m[0] == _skTemp11[0]) && all(_3_m[1] == _skTemp11[1]) && all(_3_m[2] == _skTemp11[2])); - _3_m = mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); - _3_m = _3_m - _1_splat_4; - let _skTemp12 = mat3x3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); + let _skTemp12 = mat3x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); _0_ok = _0_ok && (all(_3_m[0] == _skTemp12[0]) && all(_3_m[1] == _skTemp12[1]) && all(_3_m[2] == _skTemp12[2])); _3_m = mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); - _3_m = _3_m / _1_splat_4; - let _skTemp13 = mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5); + _3_m = _3_m - _1_splat_4; + let _skTemp13 = mat3x3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); _0_ok = _0_ok && (all(_3_m[0] == _skTemp13[0]) && all(_3_m[1] == _skTemp13[1]) && all(_3_m[2] == _skTemp13[2])); - _3_m = _1_splat_4; - _3_m = _3_m + mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); - let _skTemp14 = mat3x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); + _3_m = mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); + _3_m = mat3x3(_3_m[0] / _1_splat_4[0], _3_m[1] / _1_splat_4[1], _3_m[2] / _1_splat_4[2]); + let _skTemp14 = mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5); _0_ok = _0_ok && (all(_3_m[0] == _skTemp14[0]) && all(_3_m[1] == _skTemp14[1]) && all(_3_m[2] == _skTemp14[2])); _3_m = _1_splat_4; - _3_m = _3_m - mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); - let _skTemp15 = mat3x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); + _3_m = _3_m + mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); + let _skTemp15 = mat3x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); _0_ok = _0_ok && (all(_3_m[0] == _skTemp15[0]) && all(_3_m[1] == _skTemp15[1]) && all(_3_m[2] == _skTemp15[2])); _3_m = _1_splat_4; - _3_m = _3_m / _2_splat_2; - let _skTemp16 = mat3x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + _3_m = _3_m - mat3x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0); + let _skTemp16 = mat3x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); _0_ok = _0_ok && (all(_3_m[0] == _skTemp16[0]) && all(_3_m[1] == _skTemp16[1]) && all(_3_m[2] == _skTemp16[2])); + _3_m = _1_splat_4; + _3_m = mat3x3(_3_m[0] / _2_splat_2[0], _3_m[1] / _2_splat_2[1], _3_m[2] / _2_splat_2[2]); + let _skTemp17 = mat3x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + _0_ok = _0_ok && (all(_3_m[0] == _skTemp17[0]) && all(_3_m[1] == _skTemp17[1]) && all(_3_m[2] == _skTemp17[2])); } { var _4_m: mat4x4 = mat4x4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); _4_m = _4_m + mat4x4(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0); - let _skTemp17 = mat4x4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); - _0_ok = _0_ok && (all(_4_m[0] == _skTemp17[0]) && all(_4_m[1] == _skTemp17[1]) && all(_4_m[2] == _skTemp17[2]) && all(_4_m[3] == _skTemp17[3])); + let _skTemp18 = mat4x4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); + _0_ok = _0_ok && (all(_4_m[0] == _skTemp18[0]) && all(_4_m[1] == _skTemp18[1]) && all(_4_m[2] == _skTemp18[2]) && all(_4_m[3] == _skTemp18[3])); } { var _5_m: mat2x2 = mat2x2(10.0, 20.0, 30.0, 40.0); _5_m = _5_m - mat2x2(1.0, 2.0, 3.0, 4.0); - let _skTemp18 = mat2x2(9.0, 18.0, 27.0, 36.0); - _0_ok = _0_ok && (all(_5_m[0] == _skTemp18[0]) && all(_5_m[1] == _skTemp18[1])); + let _skTemp19 = mat2x2(9.0, 18.0, 27.0, 36.0); + _0_ok = _0_ok && (all(_5_m[0] == _skTemp19[0]) && all(_5_m[1] == _skTemp19[1])); } { var _6_m: mat2x2 = mat2x2(2.0, 4.0, 6.0, 8.0); - _6_m = _6_m / mat2x2(2.0, 2.0, 2.0, 4.0); - let _skTemp19 = mat2x2(1.0, 2.0, 3.0, 2.0); - _0_ok = _0_ok && (all(_6_m[0] == _skTemp19[0]) && all(_6_m[1] == _skTemp19[1])); + let _skTemp20 = mat2x2(2.0, 2.0, 2.0, 4.0); + _6_m = mat2x2(_6_m[0] / _skTemp20[0], _6_m[1] / _skTemp20[1]); + let _skTemp21 = mat2x2(1.0, 2.0, 3.0, 2.0); + _0_ok = _0_ok && (all(_6_m[0] == _skTemp21[0]) && all(_6_m[1] == _skTemp21[1])); } { var _7_m: mat2x2 = mat2x2(1.0, 2.0, 7.0, 4.0); _7_m = _7_m * mat2x2(3.0, 5.0, 3.0, 2.0); - let _skTemp20 = mat2x2(38.0, 26.0, 17.0, 14.0); - _0_ok = _0_ok && (all(_7_m[0] == _skTemp20[0]) && all(_7_m[1] == _skTemp20[1])); + let _skTemp22 = mat2x2(38.0, 26.0, 17.0, 14.0); + _0_ok = _0_ok && (all(_7_m[0] == _skTemp22[0]) && all(_7_m[1] == _skTemp22[1])); } { var _8_m: mat3x3 = mat3x3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); _8_m = _8_m * mat3x3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); - let _skTemp21 = mat3x3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); - _0_ok = _0_ok && (all(_8_m[0] == _skTemp21[0]) && all(_8_m[1] == _skTemp21[1]) && all(_8_m[2] == _skTemp21[2])); + let _skTemp23 = mat3x3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); + _0_ok = _0_ok && (all(_8_m[0] == _skTemp23[0]) && all(_8_m[1] == _skTemp23[1]) && all(_8_m[2] == _skTemp23[2])); } - var _skTemp22: vec4; - var _skTemp23: bool; + var _skTemp24: vec4; + var _skTemp25: bool; if _0_ok { - let _skTemp24 = test_matrix_op_matrix_half_b(); - _skTemp23 = _skTemp24; + let _skTemp26 = test_matrix_op_matrix_half_b(); + _skTemp25 = _skTemp26; } else { - _skTemp23 = false; + _skTemp25 = false; } - if _skTemp23 { - _skTemp22 = _globalUniforms.colorGreen; + if _skTemp25 { + _skTemp24 = _globalUniforms.colorGreen; } else { - _skTemp22 = _globalUniforms.colorRed; + _skTemp24 = _globalUniforms.colorRed; } - return _skTemp22; + return _skTemp24; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } - -1 error diff --git a/tests/sksl/shared/MatrixOpEqualsES3.metal b/tests/sksl/shared/MatrixOpEqualsES3.metal index 6a3bf639b0be..f5f5ab25d283 100644 --- a/tests/sksl/shared/MatrixOpEqualsES3.metal +++ b/tests/sksl/shared/MatrixOpEqualsES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/MatrixOpEqualsES3.wgsl b/tests/sksl/shared/MatrixOpEqualsES3.wgsl index bf29d74fab7a..3f1b12f8c8f9 100644 --- a/tests/sksl/shared/MatrixOpEqualsES3.wgsl +++ b/tests/sksl/shared/MatrixOpEqualsES3.wgsl @@ -1,17 +1,3 @@ -### Compilation failed: - -error: :28:13 error: no matching overload for operator / (mat3x2, mat3x2) - -4 candidate operators: - operator / (T, T) -> T where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (vecN, T) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (T, vecN) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - operator / (vecN, vecN) -> vecN where: T is abstract-float, abstract-int, f32, i32, u32 or f16 - - m = m / splat_4; - ^ - - diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @@ -39,7 +25,7 @@ fn test_matrix_op_matrix_half_b() -> bool { let _skTemp1 = mat3x2(-2.0, -4.0, -4.0, -2.0, -4.0, -4.0); ok = ok && (all(m[0] == _skTemp1[0]) && all(m[1] == _skTemp1[1]) && all(m[2] == _skTemp1[2])); m = mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0); - m = m / splat_4; + m = mat3x2(m[0] / splat_4[0], m[1] / splat_4[1], m[2] / splat_4[2]); let _skTemp2 = mat3x2(0.5, 0.0, 0.0, 0.5, 0.0, 0.0); ok = ok && (all(m[0] == _skTemp2[0]) && all(m[1] == _skTemp2[1]) && all(m[2] == _skTemp2[2])); } @@ -54,115 +40,116 @@ fn test_matrix_op_matrix_half_b() -> bool { let _skTemp4 = mat2x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0); ok = ok && (all(m[0] == _skTemp4[0]) && all(m[1] == _skTemp4[1])); m = splat_4; - m = m / mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); let _skTemp5 = mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); - ok = ok && (all(m[0] == _skTemp5[0]) && all(m[1] == _skTemp5[1])); + m = mat2x3(m[0] / _skTemp5[0], m[1] / _skTemp5[1]); + let _skTemp6 = mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + ok = ok && (all(m[0] == _skTemp6[0]) && all(m[1] == _skTemp6[1])); } { var m: mat4x3 = mat4x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0); m = m + mat4x3(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0); - let _skTemp6 = mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); - ok = ok && (all(m[0] == _skTemp6[0]) && all(m[1] == _skTemp6[1]) && all(m[2] == _skTemp6[2]) && all(m[3] == _skTemp6[3])); + let _skTemp7 = mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); + ok = ok && (all(m[0] == _skTemp7[0]) && all(m[1] == _skTemp7[1]) && all(m[2] == _skTemp7[2]) && all(m[3] == _skTemp7[3])); } { var m: mat4x2 = mat4x2(10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0); m = m - mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); - let _skTemp7 = mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); - ok = ok && (all(m[0] == _skTemp7[0]) && all(m[1] == _skTemp7[1]) && all(m[2] == _skTemp7[2]) && all(m[3] == _skTemp7[3])); + let _skTemp8 = mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); + ok = ok && (all(m[0] == _skTemp8[0]) && all(m[1] == _skTemp8[1]) && all(m[2] == _skTemp8[2]) && all(m[3] == _skTemp8[3])); } { var m: mat2x4 = mat2x4(10.0, 20.0, 30.0, 40.0, 10.0, 20.0, 30.0, 40.0); - m = m / mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); - let _skTemp8 = mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); - ok = ok && (all(m[0] == _skTemp8[0]) && all(m[1] == _skTemp8[1])); + let _skTemp9 = mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); + m = mat2x4(m[0] / _skTemp9[0], m[1] / _skTemp9[1]); + let _skTemp10 = mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); + ok = ok && (all(m[0] == _skTemp10[0]) && all(m[1] == _skTemp10[1])); } { var m: mat2x3 = mat2x3(7.0, 9.0, 11.0, 8.0, 10.0, 12.0); m = m * mat2x2(1.0, 4.0, 2.0, 5.0); - let _skTemp9 = mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); - ok = ok && (all(m[0] == _skTemp9[0]) && all(m[1] == _skTemp9[1])); + let _skTemp11 = mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); + ok = ok && (all(m[0] == _skTemp11[0]) && all(m[1] == _skTemp11[1])); } return ok; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; { const _1_splat_4: mat3x2 = mat3x2(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); var _2_m: mat3x2 = mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0); _2_m = _2_m + _1_splat_4; - let _skTemp10 = mat3x2(6.0, 4.0, 4.0, 6.0, 4.0, 4.0); - _0_ok = _0_ok && (all(_2_m[0] == _skTemp10[0]) && all(_2_m[1] == _skTemp10[1]) && all(_2_m[2] == _skTemp10[2])); + let _skTemp12 = mat3x2(6.0, 4.0, 4.0, 6.0, 4.0, 4.0); + _0_ok = _0_ok && (all(_2_m[0] == _skTemp12[0]) && all(_2_m[1] == _skTemp12[1]) && all(_2_m[2] == _skTemp12[2])); _2_m = mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0); _2_m = _2_m - _1_splat_4; - let _skTemp11 = mat3x2(-2.0, -4.0, -4.0, -2.0, -4.0, -4.0); - _0_ok = _0_ok && (all(_2_m[0] == _skTemp11[0]) && all(_2_m[1] == _skTemp11[1]) && all(_2_m[2] == _skTemp11[2])); + let _skTemp13 = mat3x2(-2.0, -4.0, -4.0, -2.0, -4.0, -4.0); + _0_ok = _0_ok && (all(_2_m[0] == _skTemp13[0]) && all(_2_m[1] == _skTemp13[1]) && all(_2_m[2] == _skTemp13[2])); _2_m = mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0); - _2_m = _2_m / _1_splat_4; - let _skTemp12 = mat3x2(0.5, 0.0, 0.0, 0.5, 0.0, 0.0); - _0_ok = _0_ok && (all(_2_m[0] == _skTemp12[0]) && all(_2_m[1] == _skTemp12[1]) && all(_2_m[2] == _skTemp12[2])); + _2_m = mat3x2(_2_m[0] / _1_splat_4[0], _2_m[1] / _1_splat_4[1], _2_m[2] / _1_splat_4[2]); + let _skTemp14 = mat3x2(0.5, 0.0, 0.0, 0.5, 0.0, 0.0); + _0_ok = _0_ok && (all(_2_m[0] == _skTemp14[0]) && all(_2_m[1] == _skTemp14[1]) && all(_2_m[2] == _skTemp14[2])); } { const _3_splat_4: mat2x3 = mat2x3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); var _4_m: mat2x3 = _3_splat_4; _4_m = _4_m + mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0); - let _skTemp13 = mat2x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0); - _0_ok = _0_ok && (all(_4_m[0] == _skTemp13[0]) && all(_4_m[1] == _skTemp13[1])); + let _skTemp15 = mat2x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0); + _0_ok = _0_ok && (all(_4_m[0] == _skTemp15[0]) && all(_4_m[1] == _skTemp15[1])); _4_m = _3_splat_4; _4_m = _4_m - mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0); - let _skTemp14 = mat2x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0); - _0_ok = _0_ok && (all(_4_m[0] == _skTemp14[0]) && all(_4_m[1] == _skTemp14[1])); + let _skTemp16 = mat2x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0); + _0_ok = _0_ok && (all(_4_m[0] == _skTemp16[0]) && all(_4_m[1] == _skTemp16[1])); _4_m = _3_splat_4; - _4_m = _4_m / mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); - let _skTemp15 = mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); - _0_ok = _0_ok && (all(_4_m[0] == _skTemp15[0]) && all(_4_m[1] == _skTemp15[1])); + let _skTemp17 = mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + _4_m = mat2x3(_4_m[0] / _skTemp17[0], _4_m[1] / _skTemp17[1]); + let _skTemp18 = mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); + _0_ok = _0_ok && (all(_4_m[0] == _skTemp18[0]) && all(_4_m[1] == _skTemp18[1])); } { var _5_m: mat4x3 = mat4x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0); _5_m = _5_m + mat4x3(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0); - let _skTemp16 = mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); - _0_ok = _0_ok && (all(_5_m[0] == _skTemp16[0]) && all(_5_m[1] == _skTemp16[1]) && all(_5_m[2] == _skTemp16[2]) && all(_5_m[3] == _skTemp16[3])); + let _skTemp19 = mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); + _0_ok = _0_ok && (all(_5_m[0] == _skTemp19[0]) && all(_5_m[1] == _skTemp19[1]) && all(_5_m[2] == _skTemp19[2]) && all(_5_m[3] == _skTemp19[3])); } { var _6_m: mat4x2 = mat4x2(10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0); _6_m = _6_m - mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); - let _skTemp17 = mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); - _0_ok = _0_ok && (all(_6_m[0] == _skTemp17[0]) && all(_6_m[1] == _skTemp17[1]) && all(_6_m[2] == _skTemp17[2]) && all(_6_m[3] == _skTemp17[3])); + let _skTemp20 = mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); + _0_ok = _0_ok && (all(_6_m[0] == _skTemp20[0]) && all(_6_m[1] == _skTemp20[1]) && all(_6_m[2] == _skTemp20[2]) && all(_6_m[3] == _skTemp20[3])); } { var _7_m: mat2x4 = mat2x4(10.0, 20.0, 30.0, 40.0, 10.0, 20.0, 30.0, 40.0); - _7_m = _7_m / mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); - let _skTemp18 = mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); - _0_ok = _0_ok && (all(_7_m[0] == _skTemp18[0]) && all(_7_m[1] == _skTemp18[1])); + let _skTemp21 = mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); + _7_m = mat2x4(_7_m[0] / _skTemp21[0], _7_m[1] / _skTemp21[1]); + let _skTemp22 = mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); + _0_ok = _0_ok && (all(_7_m[0] == _skTemp22[0]) && all(_7_m[1] == _skTemp22[1])); } { var _8_m: mat2x3 = mat2x3(7.0, 9.0, 11.0, 8.0, 10.0, 12.0); _8_m = _8_m * mat2x2(1.0, 4.0, 2.0, 5.0); - let _skTemp19 = mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); - _0_ok = _0_ok && (all(_8_m[0] == _skTemp19[0]) && all(_8_m[1] == _skTemp19[1])); + let _skTemp23 = mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); + _0_ok = _0_ok && (all(_8_m[0] == _skTemp23[0]) && all(_8_m[1] == _skTemp23[1])); } - var _skTemp20: vec4; - var _skTemp21: bool; + var _skTemp24: vec4; + var _skTemp25: bool; if _0_ok { - let _skTemp22 = test_matrix_op_matrix_half_b(); - _skTemp21 = _skTemp22; + let _skTemp26 = test_matrix_op_matrix_half_b(); + _skTemp25 = _skTemp26; } else { - _skTemp21 = false; + _skTemp25 = false; } - if _skTemp21 { - _skTemp20 = _globalUniforms.colorGreen; + if _skTemp25 { + _skTemp24 = _globalUniforms.colorGreen; } else { - _skTemp20 = _globalUniforms.colorRed; + _skTemp24 = _globalUniforms.colorRed; } - return _skTemp20; + return _skTemp24; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } - -1 error diff --git a/tests/sksl/shared/MatrixScalarMath.metal b/tests/sksl/shared/MatrixScalarMath.metal index bcfd2f067d39..a3149f5511f5 100644 --- a/tests/sksl/shared/MatrixScalarMath.metal +++ b/tests/sksl/shared/MatrixScalarMath.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; constant const int minus = 2; constant const int star = 3; diff --git a/tests/sksl/shared/MatrixScalarMath.wgsl b/tests/sksl/shared/MatrixScalarMath.wgsl index a42417b78d8c..16d63ef03113 100644 --- a/tests/sksl/shared/MatrixScalarMath.wgsl +++ b/tests/sksl/shared/MatrixScalarMath.wgsl @@ -15,23 +15,17 @@ struct _GlobalUniforms { const minus: i32 = 2; const star: i32 = 3; const slash: i32 = 4; -fn test_bifffff22(_skParam0: i32, _skParam1: f32, _skParam2: f32, _skParam3: f32, _skParam4: f32, _skParam5: mat2x2) -> bool { - let op = _skParam0; - let m11 = _skParam1; - let m12 = _skParam2; - let m21 = _skParam3; - let m22 = _skParam4; - let expected = _skParam5; +fn test_bifffff22(op: i32, m11: f32, m12: f32, m21: f32, m22: f32, expected: mat2x2) -> bool { { var one: f32 = f32(_globalUniforms.colorRed.x); var m2: mat2x2 = mat2x2(m11 * one, m12 * one, m21 * one, m22 * one); switch op { case 1 { - m2 = mat2x2(1.0, 1.0, 1.0, 1.0) + m2; + m2 = mat2x2(1.0 + m2[0], 1.0 + m2[1]); break; } case 2 { - m2 = m2 - mat2x2(1.0, 1.0, 1.0, 1.0); + m2 = mat2x2(m2[0] - 1.0, m2[1] - 1.0); break; } case 3 { @@ -56,14 +50,13 @@ fn divisionTest_b() -> bool { var div: mat2x2 = mat * (1.0 / _globalUniforms.testInputs.x); mat = mat * (1.0 / _globalUniforms.testInputs.x); let _skTemp2 = abs(vec4(div[0], div[1]) + vec4(8.0)); - let _skTemp3 = all(_skTemp2 < vec4(0.01)); + let _skTemp3 = all((_skTemp2 < vec4(0.01))); let _skTemp4 = abs(vec4(mat[0], mat[1]) + vec4(8.0)); - let _skTemp5 = all(_skTemp4 < vec4(0.01)); + let _skTemp5 = all((_skTemp4 < vec4(0.01))); return _skTemp3 && _skTemp5; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f1: f32 = f32(_globalUniforms.colorGreen.y); var f2: f32 = f32(2.0 * _globalUniforms.colorGreen.y); @@ -73,7 +66,7 @@ fn main(_skParam0: vec2) -> vec4 { var _1_one: f32 = f32(_globalUniforms.colorRed.x); var _2_m2: mat2x2 = mat2x2(f1 * _1_one, f2 * _1_one, f3 * _1_one, f4 * _1_one); { - _2_m2 = mat2x2(1.0, 1.0, 1.0, 1.0) + _2_m2; + _2_m2 = mat2x2(1.0 + _2_m2[0], 1.0 + _2_m2[1]); } var _skTemp6: vec4; var _skTemp7: bool; @@ -112,8 +105,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp6; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixSwizzleStore.metal b/tests/sksl/shared/MatrixSwizzleStore.metal index 0140b3cf83ca..a3cbc3454f73 100644 --- a/tests/sksl/shared/MatrixSwizzleStore.metal +++ b/tests/sksl/shared/MatrixSwizzleStore.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixSwizzleStore.wgsl b/tests/sksl/shared/MatrixSwizzleStore.wgsl index a71783d24e8f..92a2432cdc1d 100644 --- a/tests/sksl/shared/MatrixSwizzleStore.wgsl +++ b/tests/sksl/shared/MatrixSwizzleStore.wgsl @@ -34,8 +34,7 @@ fn test4x4_b() -> bool { return (all(matrix[0] == _globalUniforms.testMatrix4x4[0]) && all(matrix[1] == _globalUniforms.testMatrix4x4[1]) && all(matrix[2] == _globalUniforms.testMatrix4x4[2]) && all(matrix[3] == _globalUniforms.testMatrix4x4[3])); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_matrix: mat3x3; var _1_values: vec3 = vec3(3.0, 2.0, 1.0); @@ -69,8 +68,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MatrixToVectorCast.metal b/tests/sksl/shared/MatrixToVectorCast.metal index 19c3260bc705..7fd8b40d63ec 100644 --- a/tests/sksl/shared/MatrixToVectorCast.metal +++ b/tests/sksl/shared/MatrixToVectorCast.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/MatrixToVectorCast.wgsl b/tests/sksl/shared/MatrixToVectorCast.wgsl index 3e0b15eea1f8..2246c4c6ad87 100644 --- a/tests/sksl/shared/MatrixToVectorCast.wgsl +++ b/tests/sksl/shared/MatrixToVectorCast.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { testMatrix2x2: mat2x2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var ok: bool = true; ok = ok && all(vec4(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) == vec4(1.0, 2.0, 3.0, 4.0)); @@ -23,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/MultipleAssignments.metal b/tests/sksl/shared/MultipleAssignments.metal index 4662da8878a2..1df848e2ff47 100644 --- a/tests/sksl/shared/MultipleAssignments.metal +++ b/tests/sksl/shared/MultipleAssignments.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/MultipleAssignments.wgsl b/tests/sksl/shared/MultipleAssignments.wgsl index b12fc75016ee..514ccce4b069 100644 --- a/tests/sksl/shared/MultipleAssignments.wgsl +++ b/tests/sksl/shared/MultipleAssignments.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32; var y: f32; @@ -22,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(a * b, f32(x), c, f32(y)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.asm.frag b/tests/sksl/shared/NestedComparisonIntrinsics.asm.frag new file mode 100644 index 000000000000..3c9050c37421 --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.asm.frag @@ -0,0 +1,95 @@ + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_Clockwise %sk_FragColor + OpExecutionMode %_entrypoint_v OriginUpperLeft + OpName %sk_Clockwise "sk_Clockwise" + OpName %sk_FragColor "sk_FragColor" + OpName %_UniformBuffer "_UniformBuffer" + OpMemberName %_UniformBuffer 0 "colorRed" + OpMemberName %_UniformBuffer 1 "colorGreen" + OpName %_entrypoint_v "_entrypoint_v" + OpName %main "main" + OpName %result "result" + OpDecorate %sk_Clockwise BuiltIn FrontFacing + OpDecorate %sk_FragColor RelaxedPrecision + OpDecorate %sk_FragColor Location 0 + OpDecorate %sk_FragColor Index 0 + OpMemberDecorate %_UniformBuffer 0 Offset 0 + OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision + OpMemberDecorate %_UniformBuffer 1 Offset 16 + OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision + OpDecorate %_UniformBuffer Block + OpDecorate %10 Binding 0 + OpDecorate %10 DescriptorSet 0 + OpDecorate %35 RelaxedPrecision + OpDecorate %43 RelaxedPrecision + OpDecorate %51 RelaxedPrecision + OpDecorate %53 RelaxedPrecision + OpDecorate %54 RelaxedPrecision + %bool = OpTypeBool +%_ptr_Input_bool = OpTypePointer Input %bool +%sk_Clockwise = OpVariable %_ptr_Input_bool Input + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float +%sk_FragColor = OpVariable %_ptr_Output_v4float Output +%_UniformBuffer = OpTypeStruct %v4float %v4float +%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer + %10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform + %void = OpTypeVoid + %15 = OpTypeFunction %void + %float_0 = OpConstant %float 0 + %v2float = OpTypeVector %float 2 + %19 = OpConstantComposite %v2float %float_0 %float_0 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %23 = OpTypeFunction %v4float %_ptr_Function_v2float + %v4bool = OpTypeVector %bool 4 +%_ptr_Function_v4bool = OpTypePointer Function %v4bool +%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 + %float_2 = OpConstant %float 2 + %37 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 + %float_3 = OpConstant %float 3 + %40 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3 + %int_1 = OpConstant %int 1 +%_ptr_Function_v4float = OpTypePointer Function %v4float +%_entrypoint_v = OpFunction %void None %15 + %16 = OpLabel + %20 = OpVariable %_ptr_Function_v2float Function + OpStore %20 %19 + %22 = OpFunctionCall %v4float %main %20 + OpStore %sk_FragColor %22 + OpReturn + OpFunctionEnd + %main = OpFunction %v4float None %23 + %24 = OpFunctionParameter %_ptr_Function_v2float + %25 = OpLabel + %result = OpVariable %_ptr_Function_v4bool Function + %45 = OpVariable %_ptr_Function_v4float Function + %31 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 + %35 = OpLoad %v4float %31 + %30 = OpFOrdLessThan %v4bool %35 %37 + %41 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 + %43 = OpLoad %v4float %41 + %38 = OpFOrdGreaterThan %v4bool %40 %43 + %29 = OpLogicalEqual %v4bool %30 %38 + OpStore %result %29 + %44 = OpAll %bool %29 + OpSelectionMerge %49 None + OpBranchConditional %44 %47 %48 + %47 = OpLabel + %50 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 + %51 = OpLoad %v4float %50 + OpStore %45 %51 + OpBranch %49 + %48 = OpLabel + %52 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 + %53 = OpLoad %v4float %52 + OpStore %45 %53 + OpBranch %49 + %49 = OpLabel + %54 = OpLoad %v4float %45 + OpReturnValue %54 + OpFunctionEnd diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.glsl b/tests/sksl/shared/NestedComparisonIntrinsics.glsl new file mode 100644 index 000000000000..7adc997d23fe --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.glsl @@ -0,0 +1,8 @@ + +out vec4 sk_FragColor; +uniform vec4 colorRed; +uniform vec4 colorGreen; +vec4 main() { + bvec4 result = equal(lessThan(colorRed, vec4(2.0)), greaterThan(vec4(3.0), colorGreen)); + return all(result) ? colorGreen : colorRed; +} diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.hlsl b/tests/sksl/shared/NestedComparisonIntrinsics.hlsl new file mode 100644 index 000000000000..fa9ad3243752 --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.hlsl @@ -0,0 +1,45 @@ +cbuffer _UniformBuffer : register(b0, space0) +{ + float4 _10_colorRed : packoffset(c0); + float4 _10_colorGreen : packoffset(c1); +}; + + +static float4 sk_FragColor; + +struct SPIRV_Cross_Output +{ + float4 sk_FragColor : SV_Target0; +}; + +float4 main(float2 _24) +{ + bool4 _30 = bool4(_10_colorRed.x < 2.0f.xxxx.x, _10_colorRed.y < 2.0f.xxxx.y, _10_colorRed.z < 2.0f.xxxx.z, _10_colorRed.w < 2.0f.xxxx.w); + bool4 _38 = bool4(3.0f.xxxx.x > _10_colorGreen.x, 3.0f.xxxx.y > _10_colorGreen.y, 3.0f.xxxx.z > _10_colorGreen.z, 3.0f.xxxx.w > _10_colorGreen.w); + bool4 _29 = bool4(_30.x == _38.x, _30.y == _38.y, _30.z == _38.z, _30.w == _38.w); + bool4 result = _29; + float4 _45 = 0.0f.xxxx; + if (all(_29)) + { + _45 = _10_colorGreen; + } + else + { + _45 = _10_colorRed; + } + return _45; +} + +void frag_main() +{ + float2 _20 = 0.0f.xx; + sk_FragColor = main(_20); +} + +SPIRV_Cross_Output main() +{ + frag_main(); + SPIRV_Cross_Output stage_output; + stage_output.sk_FragColor = sk_FragColor; + return stage_output; +} diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.metal b/tests/sksl/shared/NestedComparisonIntrinsics.metal new file mode 100644 index 000000000000..b07ecc9867ff --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.metal @@ -0,0 +1,22 @@ +#include +#include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif +using namespace metal; +struct Uniforms { + half4 colorRed; + half4 colorGreen; +}; +struct Inputs { +}; +struct Outputs { + half4 sk_FragColor [[color(0)]]; +}; +fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { + Outputs _out; + (void)_out; + bool4 result = ((_uniforms.colorRed < half4(2.0h)) == (half4(3.0h) > _uniforms.colorGreen)); + _out.sk_FragColor = all(result) ? _uniforms.colorGreen : _uniforms.colorRed; + return _out; +} diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.skrp b/tests/sksl/shared/NestedComparisonIntrinsics.skrp new file mode 100644 index 000000000000..2921625a8096 --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.skrp @@ -0,0 +1,19 @@ +17 instructions + +store_src_rg coords = src.rg +init_lane_masks CondMask = LoopMask = RetMask = true +copy_4_uniforms $0..3 = colorRed +splat_4_constants $4..7 = 0x40000000 (2.0) +cmplt_4_floats $0..3 = lessThan($0..3, $4..7) +copy_4_uniforms $4..7 = colorGreen +splat_4_constants $8..11 = 0x40400000 (3.0) +cmplt_4_floats $4..7 = lessThan($4..7, $8..11) +cmpeq_4_ints $0..3 = equal($0..3, $4..7) +copy_4_slots_unmasked result = $0..3 +bitwise_and_2_ints $0..1 &= $2..3 +bitwise_and_int $0 &= $1 +swizzle_4 $0..3 = ($0..3).xxxx +copy_4_uniforms $4..7 = colorRed +copy_4_uniforms $8..11 = colorGreen +mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) +load_src src.rgba = $0..3 diff --git a/tests/sksl/shared/NestedComparisonIntrinsics.wgsl b/tests/sksl/shared/NestedComparisonIntrinsics.wgsl new file mode 100644 index 000000000000..14a7cffca469 --- /dev/null +++ b/tests/sksl/shared/NestedComparisonIntrinsics.wgsl @@ -0,0 +1,25 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct _GlobalUniforms { + colorRed: vec4, + colorGreen: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn _skslMain(coords: vec2) -> vec4 { + { + var result: vec4 = (_globalUniforms.colorRed < vec4(2.0)) == (vec4(3.0) > _globalUniforms.colorGreen); + let _skTemp0 = all(result); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp0)); + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/shared/NoFragCoordsPos.metal b/tests/sksl/shared/NoFragCoordsPos.metal index de1691028692..f8a247120877 100644 --- a/tests/sksl/shared/NoFragCoordsPos.metal +++ b/tests/sksl/shared/NoFragCoordsPos.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { float4 pos [[attribute(0)]]; diff --git a/tests/sksl/shared/NoFragCoordsPos.wgsl b/tests/sksl/shared/NoFragCoordsPos.wgsl index c0ed61f2819f..5d23e59095f1 100644 --- a/tests/sksl/shared/NoFragCoordsPos.wgsl +++ b/tests/sksl/shared/NoFragCoordsPos.wgsl @@ -6,13 +6,13 @@ struct VSOut { @builtin(position) sk_Position: vec4, }; /* unsupported */ var sk_PointSize: f32; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { (*_stageOut).sk_Position = _stageIn.pos; } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/NoFragCoordsPosRT.metal b/tests/sksl/shared/NoFragCoordsPosRT.metal index 68e0100cd70b..dcbd9d7f3612 100644 --- a/tests/sksl/shared/NoFragCoordsPosRT.metal +++ b/tests/sksl/shared/NoFragCoordsPosRT.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 sk_RTAdjust; diff --git a/tests/sksl/shared/NoFragCoordsPosRT.wgsl b/tests/sksl/shared/NoFragCoordsPosRT.wgsl index 39c6710f8851..b2102d75e0f0 100644 --- a/tests/sksl/shared/NoFragCoordsPosRT.wgsl +++ b/tests/sksl/shared/NoFragCoordsPosRT.wgsl @@ -10,14 +10,14 @@ struct _GlobalUniforms { sk_RTAdjust: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { (*_stageOut).sk_Position = _stageIn.pos; (*_stageOut).sk_Position = vec4((*_stageOut).sk_Position.xy * _globalUniforms.sk_RTAdjust.xz + (*_stageOut).sk_Position.ww * _globalUniforms.sk_RTAdjust.yw, 0.0, (*_stageOut).sk_Position.w); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/NormalizationVert.metal b/tests/sksl/shared/NormalizationVert.metal index 85f23cf8db27..66c362a40106 100644 --- a/tests/sksl/shared/NormalizationVert.metal +++ b/tests/sksl/shared/NormalizationVert.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float4 sk_RTAdjust; diff --git a/tests/sksl/shared/NormalizationVert.wgsl b/tests/sksl/shared/NormalizationVert.wgsl index 182ef3f9150f..284050124495 100644 --- a/tests/sksl/shared/NormalizationVert.wgsl +++ b/tests/sksl/shared/NormalizationVert.wgsl @@ -7,14 +7,14 @@ struct _GlobalUniforms { sk_RTAdjust: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_Position = vec4(1.0); (*_stageOut).sk_Position = vec4((*_stageOut).sk_Position.xy * _globalUniforms.sk_RTAdjust.xz + (*_stageOut).sk_Position.ww * _globalUniforms.sk_RTAdjust.yw, 0.0, (*_stageOut).sk_Position.w); } } -@vertex fn vertexMain() -> VSOut { +@vertex fn main() -> VSOut { var _stageOut: VSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/NumberCasts.metal b/tests/sksl/shared/NumberCasts.metal index d6b9f88234b9..6b3ba169f96c 100644 --- a/tests/sksl/shared/NumberCasts.metal +++ b/tests/sksl/shared/NumberCasts.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/NumberCasts.wgsl b/tests/sksl/shared/NumberCasts.wgsl index 4804dc1f0cae..931bc2ff96e6 100644 --- a/tests/sksl/shared/NumberCasts.wgsl +++ b/tests/sksl/shared/NumberCasts.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var B: vec3; B.x = true; @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(f32((F.x * F.y) * F.z), f32((B.x && B.y) && B.z), 0.0, f32((I.x * I.y) * I.z)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/NumberConversions.metal b/tests/sksl/shared/NumberConversions.metal index 19ad4968fef8..5d19dadbebb4 100644 --- a/tests/sksl/shared/NumberConversions.metal +++ b/tests/sksl/shared/NumberConversions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float unknownInput; diff --git a/tests/sksl/shared/NumberConversions.wgsl b/tests/sksl/shared/NumberConversions.wgsl index e3fb4de362a1..9f66ec167b7a 100644 --- a/tests/sksl/shared/NumberConversions.wgsl +++ b/tests/sksl/shared/NumberConversions.wgsl @@ -9,7 +9,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var b: bool = true; var s: i32 = i32(_globalUniforms.unknownInput); @@ -57,8 +57,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = (*_stageOut).sk_FragColor.x + (((((((((((((((((f32(ui2us) + f32(h2us)) + f32(f2us)) + f32(b2us)) + f32(s2ui)) + f32(i2ui)) + f32(us2ui)) + f32(ui2ui)) + f32(h2ui)) + f32(f2ui)) + f32(b2ui)) + f32(s2f)) + f32(i2f)) + f32(us2f)) + f32(ui2f)) + f32(h2f)) + f32(f2f)) + f32(b2f)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/Octal.metal b/tests/sksl/shared/Octal.metal index 18f35c5b3b36..95d1504c9a2f 100644 --- a/tests/sksl/shared/Octal.metal +++ b/tests/sksl/shared/Octal.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Octal.wgsl b/tests/sksl/shared/Octal.wgsl index 53283dffbe31..6d43bc182790 100644 --- a/tests/sksl/shared/Octal.wgsl +++ b/tests/sksl/shared/Octal.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var i1: i32 = 1; var i2: i32 = 342391; @@ -21,8 +20,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((i1 == 1) && (i2 == 342391)) && (i3 == 2000000000)) && (i4 == -2000000000))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Offset.metal b/tests/sksl/shared/Offset.metal index a356c980e0b6..59fe12f4b126 100644 --- a/tests/sksl/shared/Offset.metal +++ b/tests/sksl/shared/Offset.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Test { int x; diff --git a/tests/sksl/shared/Offset.wgsl b/tests/sksl/shared/Offset.wgsl index 1c497972ffa4..7ed4cb84d246 100644 --- a/tests/sksl/shared/Offset.wgsl +++ b/tests/sksl/shared/Offset.wgsl @@ -10,15 +10,15 @@ struct Test { y: i32, z: i32, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var t: Test; t.x = 0; (*_stageOut).sk_FragColor.x = f32(t.x); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/OperatorsES2.metal b/tests/sksl/shared/OperatorsES2.metal index bb9e272fa384..ce9a0f678bff 100644 --- a/tests/sksl/shared/OperatorsES2.metal +++ b/tests/sksl/shared/OperatorsES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OperatorsES2.wgsl b/tests/sksl/shared/OperatorsES2.wgsl index d246c2f73f9a..74dc32b9e8b7 100644 --- a/tests/sksl/shared/OperatorsES2.wgsl +++ b/tests/sksl/shared/OperatorsES2.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 1.0; var y: f32 = 2.0; @@ -38,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((x == 6.0) && (y == 6.0)) && (z == 6))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OperatorsES3.metal b/tests/sksl/shared/OperatorsES3.metal index 4a68ce1595af..b5134f686c86 100644 --- a/tests/sksl/shared/OperatorsES3.metal +++ b/tests/sksl/shared/OperatorsES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OperatorsES3.wgsl b/tests/sksl/shared/OperatorsES3.wgsl index 36ea6b07c0fc..79be522ea2f9 100644 --- a/tests/sksl/shared/OperatorsES3.wgsl +++ b/tests/sksl/shared/OperatorsES3.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 1.0; var y: f32 = 2.0; @@ -44,8 +43,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((w.x == 5) && (w.y == 5)) && (x == 6.0)) && (y == 6.0)) && (z == 6))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Optimizations.wgsl b/tests/sksl/shared/Optimizations.wgsl new file mode 100644 index 000000000000..28e7f6e5edab --- /dev/null +++ b/tests/sksl/shared/Optimizations.wgsl @@ -0,0 +1,169 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct _GlobalUniforms { + colorGreen: vec4, + colorRed: vec4, +}; +@binding(0) @group(0) var _globalUniforms: _GlobalUniforms; +fn flatten_compound_constructor_b() -> bool { + { + var x: vec4 = vec4(vec3(vec2(1, 2), 3), 4); + var y: vec4 = vec4(1, vec3(2, vec2(3, 4))); + return all(x == y); + } +} +fn flatten_known_if_b() -> bool { + { + var value: i32; + if true { + { + value = 1; + } + } else { + { + value = 2; + } + } + return value == 1; + } +} +fn eliminate_empty_if_else_b() -> bool { + { + var check: bool = false; + check = !check; + if check { + { + } + } else { + { + } + } + return check; + } +} +fn eliminate_empty_else_b() -> bool { + { + var check: bool = true; + if check { + { + return true; + } + } else { + { + } + } + return false; + } +} +fn flatten_matching_ternary_b() -> bool { + { + var check: bool = true; + return select(true, true, check); + } +} +fn flatten_expr_without_side_effects_b() -> bool { + { + var check: bool = true; + return check; + } +} +fn eliminate_no_op_arithmetic_b() -> bool { + { + const ONE: i32 = 1; + var a1: array; + var a2: array; + var x: i32 = ONE; + x = x + 0; + x = x * 1; + return x == 1; + } +} +fn flatten_switch_b() -> bool { + { + switch 1 { + case 0 { + return false; + } + case 1 { + return true; + } + case 2 { + return false; + } + case default {} + } + return false; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + var _skTemp0: vec4; + var _skTemp1: bool; + var _skTemp2: bool; + var _skTemp3: bool; + var _skTemp4: bool; + var _skTemp5: bool; + var _skTemp6: bool; + var _skTemp7: bool; + let _skTemp8 = flatten_compound_constructor_b(); + if _skTemp8 { + let _skTemp9 = flatten_known_if_b(); + _skTemp7 = _skTemp9; + } else { + _skTemp7 = false; + } + if _skTemp7 { + let _skTemp10 = eliminate_empty_if_else_b(); + _skTemp6 = _skTemp10; + } else { + _skTemp6 = false; + } + if _skTemp6 { + let _skTemp11 = eliminate_empty_else_b(); + _skTemp5 = _skTemp11; + } else { + _skTemp5 = false; + } + if _skTemp5 { + let _skTemp12 = flatten_matching_ternary_b(); + _skTemp4 = _skTemp12; + } else { + _skTemp4 = false; + } + if _skTemp4 { + let _skTemp13 = flatten_expr_without_side_effects_b(); + _skTemp3 = _skTemp13; + } else { + _skTemp3 = false; + } + if _skTemp3 { + let _skTemp14 = eliminate_no_op_arithmetic_b(); + _skTemp2 = _skTemp14; + } else { + _skTemp2 = false; + } + if _skTemp2 { + let _skTemp15 = flatten_switch_b(); + _skTemp1 = _skTemp15; + } else { + _skTemp1 = false; + } + if _skTemp1 { + _skTemp0 = _globalUniforms.colorGreen; + } else { + _skTemp0 = _globalUniforms.colorRed; + } + return _skTemp0; + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/shared/Ossfuzz26167.metal b/tests/sksl/shared/Ossfuzz26167.metal index 110caabb4fea..59e21684417a 100644 --- a/tests/sksl/shared/Ossfuzz26167.metal +++ b/tests/sksl/shared/Ossfuzz26167.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz26167.wgsl b/tests/sksl/shared/Ossfuzz26167.wgsl index eed097582e9a..fa71feedde6d 100644 --- a/tests/sksl/shared/Ossfuzz26167.wgsl +++ b/tests/sksl/shared/Ossfuzz26167.wgsl @@ -11,13 +11,13 @@ struct FSIn { }; struct FSOut { }; -fn main() { +fn _skslMain() { { } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz26759.metal b/tests/sksl/shared/Ossfuzz26759.metal index 697e57e77d60..453c03d45751 100644 --- a/tests/sksl/shared/Ossfuzz26759.metal +++ b/tests/sksl/shared/Ossfuzz26759.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz26759.wgsl b/tests/sksl/shared/Ossfuzz26759.wgsl index bee56062f7ae..b9aee295d5fd 100644 --- a/tests/sksl/shared/Ossfuzz26759.wgsl +++ b/tests/sksl/shared/Ossfuzz26759.wgsl @@ -11,16 +11,16 @@ struct FSIn { }; struct FSOut { }; -fn main() { +fn _skslMain() { { var i: i32; let _skTemp0 = i; i = i - i32(1); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz28794.metal b/tests/sksl/shared/Ossfuzz28794.metal index 28c58b652fb7..d850b71aa92f 100644 --- a/tests/sksl/shared/Ossfuzz28794.metal +++ b/tests/sksl/shared/Ossfuzz28794.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz28794.wgsl b/tests/sksl/shared/Ossfuzz28794.wgsl index ae2889a8d863..62a3121d6e34 100644 --- a/tests/sksl/shared/Ossfuzz28794.wgsl +++ b/tests/sksl/shared/Ossfuzz28794.wgsl @@ -5,15 +5,15 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var i: i32 = 1; i = 3; (*_stageOut).sk_FragColor.x = f32(i); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz28904.metal b/tests/sksl/shared/Ossfuzz28904.metal index d76dafc43bbb..d509af3381e2 100644 --- a/tests/sksl/shared/Ossfuzz28904.metal +++ b/tests/sksl/shared/Ossfuzz28904.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz28904.wgsl b/tests/sksl/shared/Ossfuzz28904.wgsl index 9e96b7942811..106f7ac649c5 100644 --- a/tests/sksl/shared/Ossfuzz28904.wgsl +++ b/tests/sksl/shared/Ossfuzz28904.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz29085.metal b/tests/sksl/shared/Ossfuzz29085.metal index 110caabb4fea..59e21684417a 100644 --- a/tests/sksl/shared/Ossfuzz29085.metal +++ b/tests/sksl/shared/Ossfuzz29085.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz29085.wgsl b/tests/sksl/shared/Ossfuzz29085.wgsl index eed097582e9a..fa71feedde6d 100644 --- a/tests/sksl/shared/Ossfuzz29085.wgsl +++ b/tests/sksl/shared/Ossfuzz29085.wgsl @@ -11,13 +11,13 @@ struct FSIn { }; struct FSOut { }; -fn main() { +fn _skslMain() { { } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz29494.metal b/tests/sksl/shared/Ossfuzz29494.metal index d76dafc43bbb..d509af3381e2 100644 --- a/tests/sksl/shared/Ossfuzz29494.metal +++ b/tests/sksl/shared/Ossfuzz29494.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz29494.wgsl b/tests/sksl/shared/Ossfuzz29494.wgsl index 9e96b7942811..106f7ac649c5 100644 --- a/tests/sksl/shared/Ossfuzz29494.wgsl +++ b/tests/sksl/shared/Ossfuzz29494.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz36770.metal b/tests/sksl/shared/Ossfuzz36770.metal index bda1c1d336e9..fe4ed5697ed3 100644 --- a/tests/sksl/shared/Ossfuzz36770.metal +++ b/tests/sksl/shared/Ossfuzz36770.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz36770.wgsl b/tests/sksl/shared/Ossfuzz36770.wgsl index eed097582e9a..fa71feedde6d 100644 --- a/tests/sksl/shared/Ossfuzz36770.wgsl +++ b/tests/sksl/shared/Ossfuzz36770.wgsl @@ -11,13 +11,13 @@ struct FSIn { }; struct FSOut { }; -fn main() { +fn _skslMain() { { } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz36852.metal b/tests/sksl/shared/Ossfuzz36852.metal index 29b451be8560..a79860568487 100644 --- a/tests/sksl/shared/Ossfuzz36852.metal +++ b/tests/sksl/shared/Ossfuzz36852.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz36852.wgsl b/tests/sksl/shared/Ossfuzz36852.wgsl index 9e90e1b906bc..eccd50defdcc 100644 --- a/tests/sksl/shared/Ossfuzz36852.wgsl +++ b/tests/sksl/shared/Ossfuzz36852.wgsl @@ -6,16 +6,15 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: mat2x2 = mat2x2(0.0, 1.0, 2.0, 3.0); var y: vec2 = vec2(vec4(x[0], x[1]).xy); return vec4(vec4(y, 0.0, 1.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz37466.metal b/tests/sksl/shared/Ossfuzz37466.metal index 6166483c14cb..32ee1a2d6e7d 100644 --- a/tests/sksl/shared/Ossfuzz37466.metal +++ b/tests/sksl/shared/Ossfuzz37466.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz37466.wgsl b/tests/sksl/shared/Ossfuzz37466.wgsl index 02c994592baf..6ab03eb61c5e 100644 --- a/tests/sksl/shared/Ossfuzz37466.wgsl +++ b/tests/sksl/shared/Ossfuzz37466.wgsl @@ -18,15 +18,15 @@ fn foo_ff(_skParam0: array) -> f32 { return v[0]; } } -fn main() { +fn _skslMain() { { var y: array; let _skTemp0 = foo_ff(y); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz37677.metal b/tests/sksl/shared/Ossfuzz37677.metal index 67bb97538bfe..befacec6c921 100644 --- a/tests/sksl/shared/Ossfuzz37677.metal +++ b/tests/sksl/shared/Ossfuzz37677.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Ossfuzz37677.wgsl b/tests/sksl/shared/Ossfuzz37677.wgsl index aa750c8c7c9c..c70de78ef7de 100644 --- a/tests/sksl/shared/Ossfuzz37677.wgsl +++ b/tests/sksl/shared/Ossfuzz37677.wgsl @@ -10,14 +10,13 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz41000.metal b/tests/sksl/shared/Ossfuzz41000.metal index 01ed30d6d96d..a48324c89a9e 100644 --- a/tests/sksl/shared/Ossfuzz41000.metal +++ b/tests/sksl/shared/Ossfuzz41000.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float x; diff --git a/tests/sksl/shared/Ossfuzz58483.metal b/tests/sksl/shared/Ossfuzz58483.metal index 8d63af5c9617..186510f82351 100644 --- a/tests/sksl/shared/Ossfuzz58483.metal +++ b/tests/sksl/shared/Ossfuzz58483.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz58483.wgsl b/tests/sksl/shared/Ossfuzz58483.wgsl index bf2c80299fbf..12740c61d45f 100644 --- a/tests/sksl/shared/Ossfuzz58483.wgsl +++ b/tests/sksl/shared/Ossfuzz58483.wgsl @@ -6,15 +6,15 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { var p = _skParam0; { p = p * 0.333333343; return vec4(1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Ossfuzz60077.metal b/tests/sksl/shared/Ossfuzz60077.metal index c9014ca32f15..4a8f247d3ff3 100644 --- a/tests/sksl/shared/Ossfuzz60077.metal +++ b/tests/sksl/shared/Ossfuzz60077.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/Ossfuzz60077.wgsl b/tests/sksl/shared/Ossfuzz60077.wgsl index b80f8f9de392..bf6e7473a8a5 100644 --- a/tests/sksl/shared/Ossfuzz60077.wgsl +++ b/tests/sksl/shared/Ossfuzz60077.wgsl @@ -11,34 +11,31 @@ fn d_vi(_skParam0: i32) { var b: i32 = 4; } } -fn c_vi(_skParam0: i32) { - let i = _skParam0; +fn c_vi(i: i32) { { d_vi(i); } } -fn b_vi(_skParam0: i32) { - let i = _skParam0; +fn b_vi(i: i32) { { c_vi(i); } } -fn a_vi(_skParam0: i32) { - let i = _skParam0; +fn a_vi(i: i32) { { b_vi(i); b_vi(i); } } -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var i: i32; a_vi(i); return vec4(0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OutParams.metal b/tests/sksl/shared/OutParams.metal index 475619860269..ec02b835c2d2 100644 --- a/tests/sksl/shared/OutParams.metal +++ b/tests/sksl/shared/OutParams.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OutParams.wgsl b/tests/sksl/shared/OutParams.wgsl index 0fd946477fae..8054a6491bb3 100644 --- a/tests/sksl/shared/OutParams.wgsl +++ b/tests/sksl/shared/OutParams.wgsl @@ -12,146 +12,123 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn out_half_vh(_skParam0: ptr) { - let v = _skParam0; +fn out_half_vh(v: ptr) { { (*v) = _globalUniforms.colorWhite.x; } } -fn out_half2_vh2(_skParam0: ptr>) { - let v = _skParam0; +fn out_half2_vh2(v: ptr>) { { (*v) = vec2(_globalUniforms.colorWhite.y); } } -fn out_half3_vh3(_skParam0: ptr>) { - let v = _skParam0; +fn out_half3_vh3(v: ptr>) { { (*v) = vec3(_globalUniforms.colorWhite.z); } } -fn out_half4_vh4(_skParam0: ptr>) { - let v = _skParam0; +fn out_half4_vh4(v: ptr>) { { (*v) = vec4(_globalUniforms.colorWhite.w); } } -fn out_half2x2_vh22(_skParam0: ptr>) { - let v = _skParam0; +fn out_half2x2_vh22(v: ptr>) { { let _skTemp0 = _globalUniforms.colorWhite.x; (*v) = mat2x2(_skTemp0, 0.0, 0.0, _skTemp0); } } -fn out_half3x3_vh33(_skParam0: ptr>) { - let v = _skParam0; +fn out_half3x3_vh33(v: ptr>) { { let _skTemp1 = _globalUniforms.colorWhite.y; (*v) = mat3x3(_skTemp1, 0.0, 0.0, 0.0, _skTemp1, 0.0, 0.0, 0.0, _skTemp1); } } -fn out_half4x4_vh44(_skParam0: ptr>) { - let v = _skParam0; +fn out_half4x4_vh44(v: ptr>) { { let _skTemp2 = _globalUniforms.colorWhite.z; (*v) = mat4x4(_skTemp2, 0.0, 0.0, 0.0, 0.0, _skTemp2, 0.0, 0.0, 0.0, 0.0, _skTemp2, 0.0, 0.0, 0.0, 0.0, _skTemp2); } } -fn out_int_vi(_skParam0: ptr) { - let v = _skParam0; +fn out_int_vi(v: ptr) { { (*v) = i32(_globalUniforms.colorWhite.x); } } -fn out_int2_vi2(_skParam0: ptr>) { - let v = _skParam0; +fn out_int2_vi2(v: ptr>) { { (*v) = vec2(i32(_globalUniforms.colorWhite.y)); } } -fn out_int3_vi3(_skParam0: ptr>) { - let v = _skParam0; +fn out_int3_vi3(v: ptr>) { { (*v) = vec3(i32(_globalUniforms.colorWhite.z)); } } -fn out_int4_vi4(_skParam0: ptr>) { - let v = _skParam0; +fn out_int4_vi4(v: ptr>) { { (*v) = vec4(i32(_globalUniforms.colorWhite.w)); } } -fn out_float_vf(_skParam0: ptr) { - let v = _skParam0; +fn out_float_vf(v: ptr) { { (*v) = f32(_globalUniforms.colorWhite.x); } } -fn out_float2_vf2(_skParam0: ptr>) { - let v = _skParam0; +fn out_float2_vf2(v: ptr>) { { (*v) = vec2(f32(_globalUniforms.colorWhite.y)); } } -fn out_float3_vf3(_skParam0: ptr>) { - let v = _skParam0; +fn out_float3_vf3(v: ptr>) { { (*v) = vec3(f32(_globalUniforms.colorWhite.z)); } } -fn out_float4_vf4(_skParam0: ptr>) { - let v = _skParam0; +fn out_float4_vf4(v: ptr>) { { (*v) = vec4(f32(_globalUniforms.colorWhite.w)); } } -fn out_float2x2_vf22(_skParam0: ptr>) { - let v = _skParam0; +fn out_float2x2_vf22(v: ptr>) { { let _skTemp3 = f32(_globalUniforms.colorWhite.x); (*v) = mat2x2(_skTemp3, 0.0, 0.0, _skTemp3); } } -fn out_float3x3_vf33(_skParam0: ptr>) { - let v = _skParam0; +fn out_float3x3_vf33(v: ptr>) { { let _skTemp4 = f32(_globalUniforms.colorWhite.y); (*v) = mat3x3(_skTemp4, 0.0, 0.0, 0.0, _skTemp4, 0.0, 0.0, 0.0, _skTemp4); } } -fn out_float4x4_vf44(_skParam0: ptr>) { - let v = _skParam0; +fn out_float4x4_vf44(v: ptr>) { { let _skTemp5 = f32(_globalUniforms.colorWhite.z); (*v) = mat4x4(_skTemp5, 0.0, 0.0, 0.0, 0.0, _skTemp5, 0.0, 0.0, 0.0, 0.0, _skTemp5, 0.0, 0.0, 0.0, 0.0, _skTemp5); } } -fn out_bool_vb(_skParam0: ptr) { - let v = _skParam0; +fn out_bool_vb(v: ptr) { { (*v) = bool(_globalUniforms.colorWhite.x); } } -fn out_bool2_vb2(_skParam0: ptr>) { - let v = _skParam0; +fn out_bool2_vb2(v: ptr>) { { (*v) = vec2(bool(_globalUniforms.colorWhite.y)); } } -fn out_bool3_vb3(_skParam0: ptr>) { - let v = _skParam0; +fn out_bool3_vb3(v: ptr>) { { (*v) = vec3(bool(_globalUniforms.colorWhite.z)); } } -fn out_bool4_vb4(_skParam0: ptr>) { - let v = _skParam0; +fn out_bool4_vb4(v: ptr>) { { (*v) = vec4(bool(_globalUniforms.colorWhite.w)); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var h: f32; var _skTemp6: f32; @@ -288,8 +265,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OutParamsAreDistinct.metal b/tests/sksl/shared/OutParamsAreDistinct.metal index 0d0efe08f5fe..f00e12d25314 100644 --- a/tests/sksl/shared/OutParamsAreDistinct.metal +++ b/tests/sksl/shared/OutParamsAreDistinct.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OutParamsAreDistinct.wgsl b/tests/sksl/shared/OutParamsAreDistinct.wgsl index 1e62d64cf675..3234469e19de 100644 --- a/tests/sksl/shared/OutParamsAreDistinct.wgsl +++ b/tests/sksl/shared/OutParamsAreDistinct.wgsl @@ -11,17 +11,14 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn out_params_are_distinct_bhh(_skParam0: ptr, _skParam1: ptr) -> bool { - let x = _skParam0; - let y = _skParam1; +fn out_params_are_distinct_bhh(x: ptr, y: ptr) -> bool { { (*x) = 1.0; (*y) = 2.0; return ((*x) == 1.0) && ((*y) == 2.0); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 0.0; var _skTemp0: vec4; @@ -38,8 +35,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OutParamsAreDistinctFromGlobal.metal b/tests/sksl/shared/OutParamsAreDistinctFromGlobal.metal index 08ebd2fcbba9..61e9713a89f9 100644 --- a/tests/sksl/shared/OutParamsAreDistinctFromGlobal.metal +++ b/tests/sksl/shared/OutParamsAreDistinctFromGlobal.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OutParamsAreDistinctFromGlobal.wgsl b/tests/sksl/shared/OutParamsAreDistinctFromGlobal.wgsl index 8235f1dfaa86..6527ddd7d977 100644 --- a/tests/sksl/shared/OutParamsAreDistinctFromGlobal.wgsl +++ b/tests/sksl/shared/OutParamsAreDistinctFromGlobal.wgsl @@ -12,15 +12,13 @@ struct _GlobalUniforms { }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; var x: f32 = 1.0; -fn out_params_are_distinct_from_global_bh(_skParam0: ptr) -> bool { - let y = _skParam0; +fn out_params_are_distinct_from_global_bh(y: ptr) -> bool { { (*y) = 2.0; return (x == 1.0) && ((*y) == 2.0); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: f32; @@ -34,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OutParamsDoubleSwizzle.metal b/tests/sksl/shared/OutParamsDoubleSwizzle.metal index 31b49057a7d3..a6171f811fb8 100644 --- a/tests/sksl/shared/OutParamsDoubleSwizzle.metal +++ b/tests/sksl/shared/OutParamsDoubleSwizzle.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OutParamsDoubleSwizzle.wgsl b/tests/sksl/shared/OutParamsDoubleSwizzle.wgsl index c873acb474c2..a0b64eefe041 100644 --- a/tests/sksl/shared/OutParamsDoubleSwizzle.wgsl +++ b/tests/sksl/shared/OutParamsDoubleSwizzle.wgsl @@ -11,18 +11,13 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn swizzle_lvalue_h2hhh2h(_skParam0: f32, _skParam1: f32, _skParam2: ptr>, _skParam3: f32) -> vec2 { - let x = _skParam0; - let y = _skParam1; - let color = _skParam2; - let z = _skParam3; +fn swizzle_lvalue_h2hhh2h(x: f32, y: f32, color: ptr>, z: f32) -> vec2 { { (*color) = ((*color)).yx; return vec2(x + y, z); } } -fn func_vh4(_skParam0: ptr>) { - let color = _skParam0; +fn func_vh4(color: ptr>) { { var _skTemp0: vec2 = (*color).xz; let _skTemp1 = swizzle_lvalue_h2hhh2h(1.0, 2.0, &_skTemp0, 5.0); @@ -31,8 +26,7 @@ fn func_vh4(_skParam0: ptr>) { (*color) = vec4((t), (*color).xz).zxwy; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var result: vec4 = vec4(0.0, 1.0, 2.0, 3.0); var _skTemp2: vec4 = result; @@ -41,8 +35,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(result == vec4(2.0, 3.0, 0.0, 5.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/OutParamsFunctionCallInArgument.metal b/tests/sksl/shared/OutParamsFunctionCallInArgument.metal index 97df0a7c1f7a..70c6e0a8e2a8 100644 --- a/tests/sksl/shared/OutParamsFunctionCallInArgument.metal +++ b/tests/sksl/shared/OutParamsFunctionCallInArgument.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/OutParamsFunctionCallInArgument.wgsl b/tests/sksl/shared/OutParamsFunctionCallInArgument.wgsl index 7e182257a1e9..37bda744f7f8 100644 --- a/tests/sksl/shared/OutParamsFunctionCallInArgument.wgsl +++ b/tests/sksl/shared/OutParamsFunctionCallInArgument.wgsl @@ -11,21 +11,18 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn out_param_func1_vh(_skParam0: ptr) { - let v = _skParam0; +fn out_param_func1_vh(v: ptr) { { (*v) = _globalUniforms.colorGreen.y; } } -fn out_param_func2_ih(_skParam0: ptr) -> i32 { - let v = _skParam0; +fn out_param_func2_ih(v: ptr) -> i32 { { (*v) = _globalUniforms.colorRed.x; return i32((*v)); } } -fn main(_skParam0: vec2) -> vec4 { - let c = _skParam0; +fn _skslMain(c: vec2) -> vec4 { { var testArray: array; var _skTemp0: f32; @@ -38,8 +35,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((testArray[0] == 1.0) && (testArray[1] == 1.0))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Overflow.metal b/tests/sksl/shared/Overflow.metal index df824697d166..76ebd5d34952 100644 --- a/tests/sksl/shared/Overflow.metal +++ b/tests/sksl/shared/Overflow.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/Overflow.wgsl b/tests/sksl/shared/Overflow.wgsl index 19f54c4cfd72..10cb401144ce 100644 --- a/tests/sksl/shared/Overflow.wgsl +++ b/tests/sksl/shared/Overflow.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { colorGreen: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { const h: f32 = 1e+09; let _skTemp0 = 1e+36; @@ -59,8 +58,8 @@ fn main(_skParam0: vec2) -> vec4 { return ((((((((((((_globalUniforms.colorGreen * _skTemp13) * _skTemp14) * _skTemp15) * _skTemp16) * _skTemp17) * _skTemp18) * _skTemp19) * _skTemp20) * _skTemp21) * _skTemp22) * _skTemp23) * _skTemp24) * _skTemp25; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/PostfixExpressions.metal b/tests/sksl/shared/PostfixExpressions.metal index 984dcda4a4a0..e4f770b5e8cd 100644 --- a/tests/sksl/shared/PostfixExpressions.metal +++ b/tests/sksl/shared/PostfixExpressions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/PostfixExpressions.wgsl b/tests/sksl/shared/PostfixExpressions.wgsl index 389ef38a0740..bb2492420e9f 100644 --- a/tests/sksl/shared/PostfixExpressions.wgsl +++ b/tests/sksl/shared/PostfixExpressions.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let c = _skParam0; +fn _skslMain(c: vec2) -> vec4 { { var ok: bool = true; var i: i32 = 5; @@ -90,8 +89,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/PrefixExpressionsES2.metal b/tests/sksl/shared/PrefixExpressionsES2.metal index 3058bd6fe9d2..c616b4214234 100644 --- a/tests/sksl/shared/PrefixExpressionsES2.metal +++ b/tests/sksl/shared/PrefixExpressionsES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/PrefixExpressionsES2.wgsl b/tests/sksl/shared/PrefixExpressionsES2.wgsl index 3cd96520df12..7c420b72cabc 100644 --- a/tests/sksl/shared/PrefixExpressionsES2.wgsl +++ b/tests/sksl/shared/PrefixExpressionsES2.wgsl @@ -12,7 +12,7 @@ struct _GlobalUniforms { testMatrix2x2: mat2x2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var ok: bool = true; var i: i32 = 5; @@ -90,8 +90,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/PrefixExpressionsES3.metal b/tests/sksl/shared/PrefixExpressionsES3.metal index b269d3a86ae1..36a5be9da8d2 100644 --- a/tests/sksl/shared/PrefixExpressionsES3.metal +++ b/tests/sksl/shared/PrefixExpressionsES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/PrefixExpressionsES3.wgsl b/tests/sksl/shared/PrefixExpressionsES3.wgsl index b3eb8941750a..95b728664257 100644 --- a/tests/sksl/shared/PrefixExpressionsES3.wgsl +++ b/tests/sksl/shared/PrefixExpressionsES3.wgsl @@ -11,7 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var ok: bool = true; var val: u32 = u32(_globalUniforms.colorGreen.x); @@ -22,8 +22,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/RectangleTexture.metal b/tests/sksl/shared/RectangleTexture.metal index f29e2e25ae8c..d10566d0981b 100644 --- a/tests/sksl/shared/RectangleTexture.metal +++ b/tests/sksl/shared/RectangleTexture.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/shared/RectangleTexture.skrp b/tests/sksl/shared/RectangleTexture.skrp index 20e14e28e8a0..a136e8e8f383 100644 --- a/tests/sksl/shared/RectangleTexture.skrp +++ b/tests/sksl/shared/RectangleTexture.skrp @@ -1,11 +1,11 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D test2D; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D test2D; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 2: invalid type -layout(binding=1) uniform sampler2D test2DRect; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=1) sampler2D test2DRect; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 4: 'main' must return: 'vec4', 'float4', or 'half4' void main() { ^^^^^^^^^^^ diff --git a/tests/sksl/shared/RectangleTexture.wgsl b/tests/sksl/shared/RectangleTexture.wgsl index b8c87a4afb18..1b0623104bf6 100644 --- a/tests/sksl/shared/RectangleTexture.wgsl +++ b/tests/sksl/shared/RectangleTexture.wgsl @@ -9,7 +9,7 @@ struct FSOut { @group(0) @binding(10001) var test2D_Texture: texture_2d; @group(0) @binding(10002) var test2DRect_Sampler: sampler; @group(0) @binding(10003) var test2DRect_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = textureSample(test2D_Texture, test2D_Sampler, vec2(0.5)); (*_stageOut).sk_FragColor = textureSample(test2DRect_Texture, test2DRect_Sampler, vec2(0.5)); @@ -17,8 +17,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = textureSample(test2DRect_Texture, test2DRect_Sampler, _skTemp4.xy / _skTemp4.z); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/ResizeMatrix.metal b/tests/sksl/shared/ResizeMatrix.metal index 8ea759c2f19d..9a5e76d871c9 100644 --- a/tests/sksl/shared/ResizeMatrix.metal +++ b/tests/sksl/shared/ResizeMatrix.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ResizeMatrix.wgsl b/tests/sksl/shared/ResizeMatrix.wgsl index eeeaeaac39a5..35b665e7b948 100644 --- a/tests/sksl/shared/ResizeMatrix.wgsl +++ b/tests/sksl/shared/ResizeMatrix.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var result: f32 = 0.0; let _skTemp0 = mat3x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); @@ -35,11 +34,11 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp7 = mat3x3(_skTemp6[0][0], _skTemp6[0][1], _skTemp6[0][2], _skTemp6[1][0], _skTemp6[1][1], _skTemp6[1][2], _skTemp6[2][0], _skTemp6[2][1], _skTemp6[2][2]); var f: mat2x2 = mat2x2(_skTemp7[0][0], _skTemp7[0][1], _skTemp7[1][0], _skTemp7[1][1]); result = result + f[0].x; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((result == 6.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(result == 6.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ResizeMatrixNonsquare.metal b/tests/sksl/shared/ResizeMatrixNonsquare.metal index 9ac628f50dfd..09b0e2a23515 100644 --- a/tests/sksl/shared/ResizeMatrixNonsquare.metal +++ b/tests/sksl/shared/ResizeMatrixNonsquare.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ResizeMatrixNonsquare.wgsl b/tests/sksl/shared/ResizeMatrixNonsquare.wgsl index 9f099646a173..95cc01f74b75 100644 --- a/tests/sksl/shared/ResizeMatrixNonsquare.wgsl +++ b/tests/sksl/shared/ResizeMatrixNonsquare.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var result: f32 = 0.0; let _skTemp0 = mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0); @@ -35,11 +34,11 @@ fn main(_skParam0: vec2) -> vec4 { let _skTemp7 = mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0); var l: mat4x2 = mat4x2(_skTemp7[0][0], _skTemp7[0][1], _skTemp7[1][0], _skTemp7[1][1], 0.0, 0.0, 0.0, 0.0); result = result + l[0].x; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((result == 6.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(result == 6.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ReturnBadTypeFromMain.wgsl b/tests/sksl/shared/ReturnBadTypeFromMain.wgsl index 8394b761e2ff..ff5bf576335b 100644 --- a/tests/sksl/shared/ReturnBadTypeFromMain.wgsl +++ b/tests/sksl/shared/ReturnBadTypeFromMain.wgsl @@ -11,14 +11,14 @@ struct FSIn { }; struct FSOut { }; -fn main() -> vec3 { +fn _skslMain() -> vec3 { { return vec3(1, 2, 3); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/shared/ReturnColorFromMain.metal b/tests/sksl/shared/ReturnColorFromMain.metal index 9315e2c19cb0..ebd8094b76bb 100644 --- a/tests/sksl/shared/ReturnColorFromMain.metal +++ b/tests/sksl/shared/ReturnColorFromMain.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/ReturnColorFromMain.wgsl b/tests/sksl/shared/ReturnColorFromMain.wgsl index 933c6003ba66..7e3e063f3ccd 100644 --- a/tests/sksl/shared/ReturnColorFromMain.wgsl +++ b/tests/sksl/shared/ReturnColorFromMain.wgsl @@ -6,14 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return vec4(1.0, 2.0, 3.0, 4.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ReturnsValueOnEveryPathES2.metal b/tests/sksl/shared/ReturnsValueOnEveryPathES2.metal index 53968e56d7ee..af66f7d52319 100644 --- a/tests/sksl/shared/ReturnsValueOnEveryPathES2.metal +++ b/tests/sksl/shared/ReturnsValueOnEveryPathES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ReturnsValueOnEveryPathES2.wgsl b/tests/sksl/shared/ReturnsValueOnEveryPathES2.wgsl index 9d70858afb15..6aeb98ef9fe5 100644 --- a/tests/sksl/shared/ReturnsValueOnEveryPathES2.wgsl +++ b/tests/sksl/shared/ReturnsValueOnEveryPathES2.wgsl @@ -110,8 +110,7 @@ fn if_else_chain_b() -> bool { } return bool(); } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -157,8 +156,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ReturnsValueOnEveryPathES3.metal b/tests/sksl/shared/ReturnsValueOnEveryPathES3.metal index cfd34ab551f9..39ec1dec63c0 100644 --- a/tests/sksl/shared/ReturnsValueOnEveryPathES3.metal +++ b/tests/sksl/shared/ReturnsValueOnEveryPathES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ReturnsValueOnEveryPathES3.wgsl b/tests/sksl/shared/ReturnsValueOnEveryPathES3.wgsl index de0417416ca2..5fd4eada9897 100644 --- a/tests/sksl/shared/ReturnsValueOnEveryPathES3.wgsl +++ b/tests/sksl/shared/ReturnsValueOnEveryPathES3.wgsl @@ -207,8 +207,7 @@ fn switch_with_one_sided_if_then_fallthrough_b() -> bool { } } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp11: vec4; var _skTemp12: bool; @@ -297,8 +296,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp11; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SampleLocations.metal b/tests/sksl/shared/SampleLocations.metal index 546e9209d31a..d0f52393a8d8 100644 --- a/tests/sksl/shared/SampleLocations.metal +++ b/tests/sksl/shared/SampleLocations.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/SampleLocations.wgsl b/tests/sksl/shared/SampleLocations.wgsl index 7fba82e225ba..1961edc9dba2 100644 --- a/tests/sksl/shared/SampleLocations.wgsl +++ b/tests/sksl/shared/SampleLocations.wgsl @@ -8,7 +8,7 @@ struct VSOut { @location(1) vcoord_Stage0: vec2, }; /* unsupported */ var sk_PointSize: f32; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { var x: i32 = i32(_stageIn.sk_InstanceID) % 200; var y: i32 = i32(_stageIn.sk_InstanceID) / 200; @@ -17,21 +17,21 @@ fn main(_stageIn: VSIn, _stageOut: ptr) { var itop: i32 = (i32(_stageIn.sk_InstanceID) * 313) % 17; var ibot: i32 = (itop + 1) + (i32(_stageIn.sk_InstanceID) * 1901) % (17 - itop); var outset: f32 = 0.03125; - outset = select(outset, -outset, (0 == ((x + y) % 2))); + outset = select(outset, -outset, 0 == ((x + y) % 2)); var l: f32 = f32(ileft) * 0.0625 - outset; var r: f32 = f32(iright) * 0.0625 + outset; var t: f32 = f32(itop) * 0.0625 - outset; var b: f32 = f32(ibot) * 0.0625 + outset; var vertexpos: vec2; - vertexpos.x = f32(x) + (select(r, l, (0 == (i32(_stageIn.sk_VertexID) % 2)))); - vertexpos.y = f32(y) + (select(b, t, (0 == (i32(_stageIn.sk_VertexID) / 2)))); - (*_stageOut).vcoord_Stage0.x = f32(select(1, -1, (0 == (i32(_stageIn.sk_VertexID) % 2)))); - (*_stageOut).vcoord_Stage0.y = f32(select(1, -1, (0 == (i32(_stageIn.sk_VertexID) / 2)))); + vertexpos.x = f32(x) + (select(r, l, 0 == (i32(_stageIn.sk_VertexID) % 2))); + vertexpos.y = f32(y) + (select(b, t, 0 == (i32(_stageIn.sk_VertexID) / 2))); + (*_stageOut).vcoord_Stage0.x = f32(select(1, -1, 0 == (i32(_stageIn.sk_VertexID) % 2))); + (*_stageOut).vcoord_Stage0.y = f32(select(1, -1, 0 == (i32(_stageIn.sk_VertexID) / 2))); (*_stageOut).sk_Position = vec4(vertexpos.x, vertexpos.y, 0.0, 1.0); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/ScalarConversionConstructorsES2.metal b/tests/sksl/shared/ScalarConversionConstructorsES2.metal index d94d25009270..adb70d23d2dc 100644 --- a/tests/sksl/shared/ScalarConversionConstructorsES2.metal +++ b/tests/sksl/shared/ScalarConversionConstructorsES2.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ScalarConversionConstructorsES2.wgsl b/tests/sksl/shared/ScalarConversionConstructorsES2.wgsl index df25d879a349..a6d3683ce318 100644 --- a/tests/sksl/shared/ScalarConversionConstructorsES2.wgsl +++ b/tests/sksl/shared/ScalarConversionConstructorsES2.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f: f32 = f32(_globalUniforms.colorGreen.y); var i: i32 = i32(_globalUniforms.colorGreen.y); @@ -26,11 +25,11 @@ fn main(_skParam0: vec2) -> vec4 { var b1: bool = bool(f); var b2: bool = bool(i); var b3: bool = b; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((f32(f1) + f32(f2)) + f32(f3)) + f32(i1)) + f32(i2)) + f32(i3)) + f32(b1)) + f32(b2)) + f32(b3)) == 9.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((((f32(f1) + f32(f2)) + f32(f3)) + f32(i1)) + f32(i2)) + f32(i3)) + f32(b1)) + f32(b2)) + f32(b3)) == 9.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ScalarConversionConstructorsES3.metal b/tests/sksl/shared/ScalarConversionConstructorsES3.metal index 6b3bb526ac2f..9e94ec4802fe 100644 --- a/tests/sksl/shared/ScalarConversionConstructorsES3.metal +++ b/tests/sksl/shared/ScalarConversionConstructorsES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/ScalarConversionConstructorsES3.wgsl b/tests/sksl/shared/ScalarConversionConstructorsES3.wgsl index c574847cd401..552c86a07022 100644 --- a/tests/sksl/shared/ScalarConversionConstructorsES3.wgsl +++ b/tests/sksl/shared/ScalarConversionConstructorsES3.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var f: f32 = f32(_globalUniforms.colorGreen.y); var i: i32 = i32(_globalUniforms.colorGreen.y); @@ -34,11 +33,11 @@ fn main(_skParam0: vec2) -> vec4 { var b2: bool = bool(i); var b3: bool = bool(u); var b4: bool = b; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((((((((((((((((f32(f1) + f32(f2)) + f32(f3)) + f32(f4)) + f32(i1)) + f32(i2)) + f32(i3)) + f32(i4)) + f32(u1)) + f32(u2)) + f32(u3)) + f32(u4)) + f32(b1)) + f32(b2)) + f32(b3)) + f32(b4)) == 16.0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((((((((((((((((f32(f1) + f32(f2)) + f32(f3)) + f32(f4)) + f32(i1)) + f32(i2)) + f32(i3)) + f32(i4)) + f32(u1)) + f32(u2)) + f32(u3)) + f32(u4)) + f32(b1)) + f32(b2)) + f32(b3)) + f32(b4)) == 16.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/ScopedSymbol.metal b/tests/sksl/shared/ScopedSymbol.metal index 3521f8d7bc66..7c3d1d223ef1 100644 --- a/tests/sksl/shared/ScopedSymbol.metal +++ b/tests/sksl/shared/ScopedSymbol.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { int i; diff --git a/tests/sksl/shared/ScopedSymbol.wgsl b/tests/sksl/shared/ScopedSymbol.wgsl index 0519f6ef5e21..feb19622b191 100644 --- a/tests/sksl/shared/ScopedSymbol.wgsl +++ b/tests/sksl/shared/ScopedSymbol.wgsl @@ -38,8 +38,7 @@ fn local_variable_hides_global_variable_b() -> bool { return glob == 1; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { glob = 2; const _0_var: bool = true; @@ -80,8 +79,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StackingVectorCasts.metal b/tests/sksl/shared/StackingVectorCasts.metal index 6b9afd77cb78..ee6040b04adb 100644 --- a/tests/sksl/shared/StackingVectorCasts.metal +++ b/tests/sksl/shared/StackingVectorCasts.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/StackingVectorCasts.wgsl b/tests/sksl/shared/StackingVectorCasts.wgsl index d86a7bb82825..39ac8e286eca 100644 --- a/tests/sksl/shared/StackingVectorCasts.wgsl +++ b/tests/sksl/shared/StackingVectorCasts.wgsl @@ -11,14 +11,13 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitch.metal b/tests/sksl/shared/StaticSwitch.metal index 127d8c2cd0d9..57036ae4b3a5 100644 --- a/tests/sksl/shared/StaticSwitch.metal +++ b/tests/sksl/shared/StaticSwitch.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/StaticSwitch.wgsl b/tests/sksl/shared/StaticSwitch.wgsl index 7938237bd317..0240f751fa2f 100644 --- a/tests/sksl/shared/StaticSwitch.wgsl +++ b/tests/sksl/shared/StaticSwitch.wgsl @@ -11,16 +11,15 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let xy = _skParam0; +fn _skslMain(xy: vec2) -> vec4 { { { return _globalUniforms.colorGreen; } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithBreak.metal b/tests/sksl/shared/StaticSwitchWithBreak.metal index 84765ae9f88b..1b8c269a9a11 100644 --- a/tests/sksl/shared/StaticSwitchWithBreak.metal +++ b/tests/sksl/shared/StaticSwitchWithBreak.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithBreak.wgsl b/tests/sksl/shared/StaticSwitchWithBreak.wgsl index 246a0eb4aa57..521f05acc2e6 100644 --- a/tests/sksl/shared/StaticSwitchWithBreak.wgsl +++ b/tests/sksl/shared/StaticSwitchWithBreak.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; { @@ -14,8 +14,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(f32(x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.metal b/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.metal index 94af44bc2d39..796c3a86ae15 100644 --- a/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.metal +++ b/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.wgsl b/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.wgsl index cacc3fc5faa9..a123b9adfc6e 100644 --- a/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.wgsl +++ b/tests/sksl/shared/StaticSwitchWithBreakInsideBlock.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; { @@ -16,8 +16,8 @@ fn main(_stageOut: ptr) { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithConditionalBreak.metal b/tests/sksl/shared/StaticSwitchWithConditionalBreak.metal index 08f99d2ca340..bada0026bf51 100644 --- a/tests/sksl/shared/StaticSwitchWithConditionalBreak.metal +++ b/tests/sksl/shared/StaticSwitchWithConditionalBreak.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float unknownInput; diff --git a/tests/sksl/shared/StaticSwitchWithConditionalBreak.wgsl b/tests/sksl/shared/StaticSwitchWithConditionalBreak.wgsl index b7324e7f4e0e..f7ff0fe5420b 100644 --- a/tests/sksl/shared/StaticSwitchWithConditionalBreak.wgsl +++ b/tests/sksl/shared/StaticSwitchWithConditionalBreak.wgsl @@ -9,7 +9,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var value: f32 = 0.0; switch 0 { @@ -29,8 +29,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(value); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.metal b/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.metal index a94dbb950d84..0314595bc49d 100644 --- a/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.metal +++ b/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float unknownInput; diff --git a/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.wgsl b/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.wgsl index 74abf8422caa..850ac2f96038 100644 --- a/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.wgsl +++ b/tests/sksl/shared/StaticSwitchWithConditionalBreakInsideBlock.wgsl @@ -9,7 +9,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var value: f32 = 0.0; switch 0 { @@ -31,8 +31,8 @@ fn main(_stageOut: ptr) { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithFallthroughA.metal b/tests/sksl/shared/StaticSwitchWithFallthroughA.metal index 9b19b9d811b8..8827bcafcfff 100644 --- a/tests/sksl/shared/StaticSwitchWithFallthroughA.metal +++ b/tests/sksl/shared/StaticSwitchWithFallthroughA.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithFallthroughA.wgsl b/tests/sksl/shared/StaticSwitchWithFallthroughA.wgsl index 1d871bfb3f48..f164b2d92404 100644 --- a/tests/sksl/shared/StaticSwitchWithFallthroughA.wgsl +++ b/tests/sksl/shared/StaticSwitchWithFallthroughA.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; { @@ -15,8 +15,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(f32(x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithFallthroughB.metal b/tests/sksl/shared/StaticSwitchWithFallthroughB.metal index 4c4678ac328c..4746a2144ba9 100644 --- a/tests/sksl/shared/StaticSwitchWithFallthroughB.metal +++ b/tests/sksl/shared/StaticSwitchWithFallthroughB.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithFallthroughB.wgsl b/tests/sksl/shared/StaticSwitchWithFallthroughB.wgsl index 37e21ca181ad..361688d6f419 100644 --- a/tests/sksl/shared/StaticSwitchWithFallthroughB.wgsl +++ b/tests/sksl/shared/StaticSwitchWithFallthroughB.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; { @@ -14,8 +14,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(f32(x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.metal b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.metal index e8e348e36427..54a3637f81d4 100644 --- a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.metal +++ b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.wgsl b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.wgsl index a9a84aa80f87..60777bfde8fa 100644 --- a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.wgsl +++ b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreak.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; switch 0 { @@ -25,8 +25,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(f32(x)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.metal b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.metal index fbdcf24afaa8..5d5f8bba2aaf 100644 --- a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.metal +++ b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.wgsl b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.wgsl index 748453b06b7f..b458aec0ee29 100644 --- a/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.wgsl +++ b/tests/sksl/shared/StaticSwitchWithStaticConditionalBreakInsideBlock.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 0.0; switch 0 { @@ -27,8 +27,8 @@ fn main(_stageOut: ptr) { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StorageBuffer.metal b/tests/sksl/shared/StorageBuffer.metal index 45e6daa25966..4804c737fb13 100644 --- a/tests/sksl/shared/StorageBuffer.metal +++ b/tests/sksl/shared/StorageBuffer.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct SomeData { float4 a; diff --git a/tests/sksl/shared/StorageBuffer.wgsl b/tests/sksl/shared/StorageBuffer.wgsl index 819381807f96..aa0132ed9ca3 100644 --- a/tests/sksl/shared/StorageBuffer.wgsl +++ b/tests/sksl/shared/StorageBuffer.wgsl @@ -20,8 +20,7 @@ struct SomeData { a: vec4, b: vec2, }; -fn main(_stageIn: FSIn, _skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(_stageIn: FSIn, coords: vec2) -> vec4 { { let _skTemp2 = _storage0.offset; let _skTemp3 = _storage0.offset; @@ -29,8 +28,8 @@ fn main(_stageIn: FSIn, _skParam0: vec2) -> vec4 { return vec4(_storage0.inputData[_stageIn.bufferIndex].a * _storage0.inputData[_stageIn.bufferIndex].b.x); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn, _stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn, _stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StorageBufferVertex.metal b/tests/sksl/shared/StorageBufferVertex.metal index 305ef22d580a..8d078318aef9 100644 --- a/tests/sksl/shared/StorageBufferVertex.metal +++ b/tests/sksl/shared/StorageBufferVertex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/StorageBufferVertex.wgsl b/tests/sksl/shared/StorageBufferVertex.wgsl index f5c6645b036f..86b7800c9b0d 100644 --- a/tests/sksl/shared/StorageBufferVertex.wgsl +++ b/tests/sksl/shared/StorageBufferVertex.wgsl @@ -10,13 +10,13 @@ struct storageBuffer { vertices: array>, }; @group(0) @binding(0) var _storage0 : storageBuffer; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { (*_stageOut).sk_Position = vec4(_storage0.vertices[i32(_stageIn.sk_VertexID)], 1.0, 1.0); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StructArrayFollowedByScalar.metal b/tests/sksl/shared/StructArrayFollowedByScalar.metal index 63f24b22e288..462da3541c9a 100644 --- a/tests/sksl/shared/StructArrayFollowedByScalar.metal +++ b/tests/sksl/shared/StructArrayFollowedByScalar.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { array rgb; diff --git a/tests/sksl/shared/StructArrayFollowedByScalar.wgsl b/tests/sksl/shared/StructArrayFollowedByScalar.wgsl index 3c5698d6364b..981a1c02bdb2 100644 --- a/tests/sksl/shared/StructArrayFollowedByScalar.wgsl +++ b/tests/sksl/shared/StructArrayFollowedByScalar.wgsl @@ -10,8 +10,7 @@ struct S { rgb: array, a: f32, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var s: S; s.rgb[0] = 0.0; @@ -21,8 +20,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(s.rgb[0], s.rgb[1], s.rgb[2], s.a); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StructComparison.metal b/tests/sksl/shared/StructComparison.metal index 96a839f35f4a..58cc83fab59c 100644 --- a/tests/sksl/shared/StructComparison.metal +++ b/tests/sksl/shared/StructComparison.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { int x; diff --git a/tests/sksl/shared/StructComparison.wgsl b/tests/sksl/shared/StructComparison.wgsl index 02b73b70517b..e94339d31e8a 100644 --- a/tests/sksl/shared/StructComparison.wgsl +++ b/tests/sksl/shared/StructComparison.wgsl @@ -39,19 +39,18 @@ struct S { m: mat2x2, a: array, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { - var _array: array = array(1.0, 2.0, 3.0, 4.0, 5.0); - var s1: S = S(1, 2, mat2x2(1.0, 0.0, 0.0, 1.0), _array); + var R_array: array = array(1.0, 2.0, 3.0, 4.0, 5.0); + var s1: S = S(1, 2, mat2x2(1.0, 0.0, 0.0, 1.0), R_array); var s2: S = S(1, 2, mat2x2(1.0, 0.0, 0.0, 1.0), _globalUniforms.testArray); var s3: S = S(1, 2, mat2x2(2.0, 0.0, 0.0, 2.0), array(1.0, 2.0, 3.0, 4.0, 5.0)); return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(((s1.x == s2.x) && (s1.y == s2.y) && (all(s1.m[0] == s2.m[0]) && all(s1.m[1] == s2.m[1])) && ((s1.a[0] == s2.a[0]) && (s1.a[1] == s2.a[1]) && (s1.a[2] == s2.a[2]) && (s1.a[3] == s2.a[3]) && (s1.a[4] == s2.a[4]))) && ((s1.x != s3.x) || (s1.y != s3.y) || (any(s1.m[0] != s3.m[0]) || any(s1.m[1] != s3.m[1])) || ((s1.a[0] != s3.a[0]) || (s1.a[1] != s3.a[1]) || (s1.a[2] != s3.a[2]) || (s1.a[3] != s3.a[3]) || (s1.a[4] != s3.a[4]))))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StructIndexLookup.metal b/tests/sksl/shared/StructIndexLookup.metal index f16c934ae833..383368d135b3 100644 --- a/tests/sksl/shared/StructIndexLookup.metal +++ b/tests/sksl/shared/StructIndexLookup.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct InnerLUT { float3 values; diff --git a/tests/sksl/shared/StructIndexLookup.wgsl b/tests/sksl/shared/StructIndexLookup.wgsl index fa2b72335f56..6b3e921e4b38 100644 --- a/tests/sksl/shared/StructIndexLookup.wgsl +++ b/tests/sksl/shared/StructIndexLookup.wgsl @@ -20,8 +20,7 @@ struct OuterLUT { struct Root { outer: array, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var data: Root; data.outer[0].inner[0].values = vec3(1.0, 10.0, 100.0); @@ -81,8 +80,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StructIndexStore.metal b/tests/sksl/shared/StructIndexStore.metal index c9af0bdf9c76..f2855cd8247c 100644 --- a/tests/sksl/shared/StructIndexStore.metal +++ b/tests/sksl/shared/StructIndexStore.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct InnerLUT { float3 values; diff --git a/tests/sksl/shared/StructIndexStore.wgsl b/tests/sksl/shared/StructIndexStore.wgsl index 3c1d4796e394..ddc71b57a8a4 100644 --- a/tests/sksl/shared/StructIndexStore.wgsl +++ b/tests/sksl/shared/StructIndexStore.wgsl @@ -21,8 +21,7 @@ struct Root { valueAtRoot: i32, outer: array, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var data: Root; data.valueAtRoot = 1234; @@ -66,8 +65,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/StructMaxDepth.metal b/tests/sksl/shared/StructMaxDepth.metal index 456efbf16bb7..b4d492fc4fd8 100644 --- a/tests/sksl/shared/StructMaxDepth.metal +++ b/tests/sksl/shared/StructMaxDepth.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S1 { int x; diff --git a/tests/sksl/shared/Structs.metal b/tests/sksl/shared/Structs.metal index 0e46c2d90c7d..5b06d7a193d6 100644 --- a/tests/sksl/shared/Structs.metal +++ b/tests/sksl/shared/Structs.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct A { int x; diff --git a/tests/sksl/shared/Structs.wgsl b/tests/sksl/shared/Structs.wgsl index 012e195edca3..4e2d30947fdb 100644 --- a/tests/sksl/shared/Structs.wgsl +++ b/tests/sksl/shared/Structs.wgsl @@ -16,15 +16,15 @@ struct B { z: A, }; var b1: B; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { a1.x = 0; b1.x = 0.0; (*_stageOut).sk_FragColor.x = f32(a1.x) + f32(b1.x); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/StructsInFunctions.metal b/tests/sksl/shared/StructsInFunctions.metal index 1e3fd0c43bb4..3122a21ef294 100644 --- a/tests/sksl/shared/StructsInFunctions.metal +++ b/tests/sksl/shared/StructsInFunctions.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct S { float x; diff --git a/tests/sksl/shared/StructsInFunctions.wgsl b/tests/sksl/shared/StructsInFunctions.wgsl index fea3c9b8a657..c5303374950d 100644 --- a/tests/sksl/shared/StructsInFunctions.wgsl +++ b/tests/sksl/shared/StructsInFunctions.wgsl @@ -36,21 +36,18 @@ fn constructs_a_struct_S() -> S { return S(2.0, 3); } } -fn accepts_a_struct_fS(_skParam0: S) -> f32 { - let s = _skParam0; +fn accepts_a_struct_fS(s: S) -> f32 { { return s.x + f32(s.y); } } -fn modifies_a_struct_vS(_skParam0: ptr) { - let s = _skParam0; +fn modifies_a_struct_vS(s: ptr) { { (*s).x = (*s).x + f32(1); (*s).y = (*s).y + i32(1); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = returns_a_struct_S(); var s: S = _skTemp0; @@ -89,8 +86,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(valid)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Switch.wgsl b/tests/sksl/shared/Switch.wgsl index 14d697760856..1f19997eac98 100644 --- a/tests/sksl/shared/Switch.wgsl +++ b/tests/sksl/shared/Switch.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var color: vec4; let _skTemp0 = i32(_globalUniforms.colorGreen.y); @@ -32,8 +32,8 @@ fn main(_skParam0: vec2) -> vec4 { return color; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchDefaultOnly.wgsl b/tests/sksl/shared/SwitchDefaultOnly.wgsl index 409d192a771f..03bd79461bf5 100644 --- a/tests/sksl/shared/SwitchDefaultOnly.wgsl +++ b/tests/sksl/shared/SwitchDefaultOnly.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { let _skTemp0 = i32(_globalUniforms.colorGreen.y); switch _skTemp0 { @@ -21,8 +21,8 @@ fn main(_skParam0: vec2) -> vec4 { } } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchWithEarlyReturn.metal b/tests/sksl/shared/SwitchWithEarlyReturn.metal index eb6db1b5f07d..fb96672a583a 100644 --- a/tests/sksl/shared/SwitchWithEarlyReturn.metal +++ b/tests/sksl/shared/SwitchWithEarlyReturn.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwitchWithEarlyReturn.wgsl b/tests/sksl/shared/SwitchWithEarlyReturn.wgsl index 4f4898877533..7b9c1085849c 100644 --- a/tests/sksl/shared/SwitchWithEarlyReturn.wgsl +++ b/tests/sksl/shared/SwitchWithEarlyReturn.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn return_in_one_case_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn return_in_one_case_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -27,8 +26,7 @@ fn return_in_one_case_bi(_skParam0: i32) -> bool { return val == 1; } } -fn return_in_default_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn return_in_default_bi(x: i32) -> bool { { switch x { case default { @@ -37,8 +35,7 @@ fn return_in_default_bi(_skParam0: i32) -> bool { } } } -fn return_in_every_case_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn return_in_every_case_bi(x: i32) -> bool { { switch x { case 1 { @@ -50,8 +47,7 @@ fn return_in_every_case_bi(_skParam0: i32) -> bool { } } } -fn return_in_every_case_no_default_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn return_in_every_case_no_default_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -67,8 +63,7 @@ fn return_in_every_case_no_default_bi(_skParam0: i32) -> bool { return val == 1; } } -fn case_has_break_before_return_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn case_has_break_before_return_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -86,8 +81,7 @@ fn case_has_break_before_return_bi(_skParam0: i32) -> bool { return val == 1; } } -fn case_has_break_after_return_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn case_has_break_after_return_bi(x: i32) -> bool { { switch x { case 1 { @@ -102,8 +96,7 @@ fn case_has_break_after_return_bi(_skParam0: i32) -> bool { } } } -fn no_return_in_default_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn no_return_in_default_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -121,8 +114,7 @@ fn no_return_in_default_bi(_skParam0: i32) -> bool { return val == 1; } } -fn empty_default_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn empty_default_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -140,8 +132,7 @@ fn empty_default_bi(_skParam0: i32) -> bool { return val == 1; } } -fn return_with_fallthrough_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn return_with_fallthrough_bi(x: i32) -> bool { { switch x { case 1, 2 { @@ -153,8 +144,7 @@ fn return_with_fallthrough_bi(_skParam0: i32) -> bool { } } } -fn fallthrough_ends_in_break_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn fallthrough_ends_in_break_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -169,8 +159,7 @@ fn fallthrough_ends_in_break_bi(_skParam0: i32) -> bool { return val == 1; } } -fn fallthrough_to_default_with_break_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn fallthrough_to_default_with_break_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -182,8 +171,7 @@ fn fallthrough_to_default_with_break_bi(_skParam0: i32) -> bool { return val == 1; } } -fn fallthrough_to_default_with_return_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn fallthrough_to_default_with_return_bi(x: i32) -> bool { { switch x { case 1, 2, default { @@ -192,8 +180,7 @@ fn fallthrough_to_default_with_return_bi(_skParam0: i32) -> bool { } } } -fn fallthrough_with_loop_break_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn fallthrough_with_loop_break_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -224,8 +211,7 @@ fn fallthrough_with_loop_break_bi(_skParam0: i32) -> bool { } } } -fn fallthrough_with_loop_continue_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn fallthrough_with_loop_continue_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -256,8 +242,7 @@ fn fallthrough_with_loop_continue_bi(_skParam0: i32) -> bool { } } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: i32 = i32(_globalUniforms.colorGreen.y); var _skTemp2: vec4; @@ -361,8 +346,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp2; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchWithFallthrough.wgsl b/tests/sksl/shared/SwitchWithFallthrough.wgsl index 67aa15403ef5..4cc78ce51868 100644 --- a/tests/sksl/shared/SwitchWithFallthrough.wgsl +++ b/tests/sksl/shared/SwitchWithFallthrough.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn switch_fallthrough_twice_bi(_skParam0: i32) -> bool { - let value = _skParam0; +fn switch_fallthrough_twice_bi(value: i32) -> bool { { var ok: bool = false; switch value { @@ -29,8 +29,7 @@ fn switch_fallthrough_twice_bi(_skParam0: i32) -> bool { return ok; } } -fn switch_fallthrough_groups_bi(_skParam0: i32) -> bool { - let value = _skParam0; +fn switch_fallthrough_groups_bi(value: i32) -> bool { { var ok: bool = false; switch value { @@ -78,8 +77,7 @@ fn switch_fallthrough_groups_bi(_skParam0: i32) -> bool { return ok; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: i32 = i32(_globalUniforms.colorGreen.y); var _0_ok: bool = false; @@ -118,8 +116,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchWithFallthroughAndVarDecls.wgsl b/tests/sksl/shared/SwitchWithFallthroughAndVarDecls.wgsl index 24a455fe6b6f..00f504449c0e 100644 --- a/tests/sksl/shared/SwitchWithFallthroughAndVarDecls.wgsl +++ b/tests/sksl/shared/SwitchWithFallthroughAndVarDecls.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var ok: bool; { @@ -21,9 +21,17 @@ fn main(_skParam0: vec2) -> vec4 { var c: i32; let _skTemp0 = i32(_globalUniforms.colorGreen.y); switch _skTemp0 { - case 2, 3, 4, 5 { + case 0, 1, 2, 3, 4, 5 { var _skTemp1: bool = false; - if _skTemp0 == 2 { + if _skTemp0 == 0 { + ; + _skTemp1 = true; // fallthrough + } + if _skTemp1 || _skTemp0 == 1 { + ; + _skTemp1 = true; // fallthrough + } + if _skTemp1 || _skTemp0 == 2 { b = ONE; _skTemp1 = true; // fallthrough } @@ -40,17 +48,14 @@ fn main(_skParam0: vec2) -> vec4 { } ok = a; } - case 0, 1 { - ; - } case default {} } } return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchWithLoops.wgsl b/tests/sksl/shared/SwitchWithLoops.wgsl index 1c55d9ec06f1..d69a6bdcb30a 100644 --- a/tests/sksl/shared/SwitchWithLoops.wgsl +++ b/tests/sksl/shared/SwitchWithLoops.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn switch_with_continue_in_loop_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn switch_with_continue_in_loop_bi(x: i32) -> bool { { var val: i32 = 0; switch x { @@ -39,8 +39,7 @@ fn switch_with_continue_in_loop_bi(_skParam0: i32) -> bool { return val == 11; } } -fn loop_with_break_in_switch_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn loop_with_break_in_switch_bi(x: i32) -> bool { { var val: i32 = 0; { @@ -67,8 +66,7 @@ fn loop_with_break_in_switch_bi(_skParam0: i32) -> bool { return val == 20; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: i32 = i32(_globalUniforms.colorGreen.y); var _0_val: i32 = 0; @@ -117,8 +115,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp2; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwitchWithLoopsES3.wgsl b/tests/sksl/shared/SwitchWithLoopsES3.wgsl index 6381e52c84e9..dad632d0facf 100644 --- a/tests/sksl/shared/SwitchWithLoopsES3.wgsl +++ b/tests/sksl/shared/SwitchWithLoopsES3.wgsl @@ -1,3 +1,4 @@ +diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @builtin(position) sk_FragCoord: vec4, @@ -10,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn switch_with_continue_in_while_loop_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn switch_with_continue_in_while_loop_bi(x: i32) -> bool { { var val: i32 = 0; var i: i32 = 0; @@ -38,8 +38,7 @@ fn switch_with_continue_in_while_loop_bi(_skParam0: i32) -> bool { return val == 11; } } -fn while_loop_with_break_in_switch_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn while_loop_with_break_in_switch_bi(x: i32) -> bool { { var val: i32 = 0; var i: i32 = 0; @@ -65,8 +64,7 @@ fn while_loop_with_break_in_switch_bi(_skParam0: i32) -> bool { return val == 20; } } -fn switch_with_break_in_do_while_loop_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn switch_with_break_in_do_while_loop_bi(x: i32) -> bool { { var val: i32 = 0; var i: i32 = 0; @@ -92,8 +90,7 @@ fn switch_with_break_in_do_while_loop_bi(_skParam0: i32) -> bool { return val == 2; } } -fn switch_with_continue_in_do_while_loop_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn switch_with_continue_in_do_while_loop_bi(x: i32) -> bool { { var val: i32 = 0; var i: i32 = 0; @@ -119,8 +116,7 @@ fn switch_with_continue_in_do_while_loop_bi(_skParam0: i32) -> bool { return val == 11; } } -fn do_while_loop_with_break_in_switch_bi(_skParam0: i32) -> bool { - let x = _skParam0; +fn do_while_loop_with_break_in_switch_bi(x: i32) -> bool { { var val: i32 = 0; var i: i32 = 0; @@ -145,8 +141,7 @@ fn do_while_loop_with_break_in_switch_bi(_skParam0: i32) -> bool { return val == 20; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: i32 = i32(_globalUniforms.colorGreen.y); var _0_val: i32 = 0; @@ -215,8 +210,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp4; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleAsLValue.metal b/tests/sksl/shared/SwizzleAsLValue.metal index 279398f49d29..6b523b02415b 100644 --- a/tests/sksl/shared/SwizzleAsLValue.metal +++ b/tests/sksl/shared/SwizzleAsLValue.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwizzleAsLValue.wgsl b/tests/sksl/shared/SwizzleAsLValue.wgsl index 375789e54faf..e3dbf8068523 100644 --- a/tests/sksl/shared/SwizzleAsLValue.wgsl +++ b/tests/sksl/shared/SwizzleAsLValue.wgsl @@ -11,27 +11,27 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { var scalar: vec4; - var _array: array, 1>; + var R_array: array, 1>; scalar = vec4(_globalUniforms.colorGreen) * 0.5; scalar.w = 2.0; scalar.y = scalar.y * 4.0; scalar = vec4((scalar.yzw * mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5)), scalar.x).wxyz; scalar = (scalar.zywx + vec4(0.25, 0.0, 0.0, 0.75)).wyxz; scalar.x = scalar.x + (select(0.0, scalar.z, scalar.w <= 1.0)); - _array[0] = vec4(_globalUniforms.colorGreen) * 0.5; - _array[0].w = 2.0; - _array[0].y = _array[0].y * 4.0; - _array[0] = vec4((_array[0].yzw * mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5)), _array[0].x).wxyz; - _array[0] = (_array[0].zywx + vec4(0.25, 0.0, 0.0, 0.75)).wyxz; - _array[0].x = _array[0].x + (select(0.0, _array[0].z, _array[0].w <= 1.0)); - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(scalar == vec4(1.0, 1.0, 0.25, 1.0)) && all(_array[0] == vec4(1.0, 1.0, 0.25, 1.0)))); + R_array[0] = vec4(_globalUniforms.colorGreen) * 0.5; + R_array[0].w = 2.0; + R_array[0].y = R_array[0].y * 4.0; + R_array[0] = vec4((R_array[0].yzw * mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5)), R_array[0].x).wxyz; + R_array[0] = (R_array[0].zywx + vec4(0.25, 0.0, 0.0, 0.75)).wyxz; + R_array[0].x = R_array[0].x + (select(0.0, R_array[0].z, R_array[0].w <= 1.0)); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(scalar == vec4(1.0, 1.0, 0.25, 1.0)) && all(R_array[0] == vec4(1.0, 1.0, 0.25, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleAsLValueES3.metal b/tests/sksl/shared/SwizzleAsLValueES3.metal index cff5116f29aa..3b747845c2ac 100644 --- a/tests/sksl/shared/SwizzleAsLValueES3.metal +++ b/tests/sksl/shared/SwizzleAsLValueES3.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwizzleAsLValueES3.wgsl b/tests/sksl/shared/SwizzleAsLValueES3.wgsl index dbf28acd2c00..ac26ede0e968 100644 --- a/tests/sksl/shared/SwizzleAsLValueES3.wgsl +++ b/tests/sksl/shared/SwizzleAsLValueES3.wgsl @@ -18,43 +18,43 @@ fn Z_i() -> i32 { return 0; } } -fn main(_skParam0: vec2) -> vec4 { +fn _skslMain(_skParam0: vec2) -> vec4 { { - var _array: array, 1>; + var R_array: array, 1>; let _skTemp0 = Z_i(); let _skTemp1 = _skTemp0; - _array[_skTemp1] = vec4(_globalUniforms.colorGreen) * 0.5; + R_array[_skTemp1] = vec4(_globalUniforms.colorGreen) * 0.5; let _skTemp2 = Z_i(); let _skTemp3 = _skTemp2; - _array[_skTemp3].w = 2.0; + R_array[_skTemp3].w = 2.0; let _skTemp4 = Z_i(); let _skTemp5 = _skTemp4; - _array[_skTemp5].y = _array[_skTemp5].y * 4.0; + R_array[_skTemp5].y = R_array[_skTemp5].y * 4.0; let _skTemp6 = Z_i(); let _skTemp7 = _skTemp6; - _array[_skTemp7] = vec4((_array[_skTemp7].yzw * mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5)), _array[_skTemp7].x).wxyz; + R_array[_skTemp7] = vec4((R_array[_skTemp7].yzw * mat3x3(0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5)), R_array[_skTemp7].x).wxyz; let _skTemp8 = Z_i(); let _skTemp9 = _skTemp8; - _array[_skTemp9] = (_array[_skTemp9].zywx + vec4(0.25, 0.0, 0.0, 0.75)).wyxz; + R_array[_skTemp9] = (R_array[_skTemp9].zywx + vec4(0.25, 0.0, 0.0, 0.75)).wyxz; let _skTemp10 = Z_i(); let _skTemp11 = _skTemp10; var _skTemp12: f32; let _skTemp13 = Z_i(); let _skTemp14 = _skTemp13; - if _array[_skTemp14].w <= 1.0 { + if R_array[_skTemp14].w <= 1.0 { let _skTemp15 = Z_i(); let _skTemp16 = _skTemp15; - _skTemp12 = _array[_skTemp16].z; + _skTemp12 = R_array[_skTemp16].z; } else { let _skTemp17 = Z_i(); _skTemp12 = f32(_skTemp17); } - _array[_skTemp11].x = _array[_skTemp11].x + _skTemp12; - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((gAccessCount == 8) && all(_array[0] == vec4(1.0, 1.0, 0.25, 1.0)))); + R_array[_skTemp11].x = R_array[_skTemp11].x + _skTemp12; + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((gAccessCount == 8) && all(R_array[0] == vec4(1.0, 1.0, 0.25, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleBoolConstants.metal b/tests/sksl/shared/SwizzleBoolConstants.metal index 61061a0b00bc..1864aca1d642 100644 --- a/tests/sksl/shared/SwizzleBoolConstants.metal +++ b/tests/sksl/shared/SwizzleBoolConstants.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwizzleBoolConstants.wgsl b/tests/sksl/shared/SwizzleBoolConstants.wgsl index f30a3e0529ce..c9516ebe0274 100644 --- a/tests/sksl/shared/SwizzleBoolConstants.wgsl +++ b/tests/sksl/shared/SwizzleBoolConstants.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var v: vec4 = vec4(bool(_globalUniforms.colorGreen.y)); var result: vec4 = vec4(v.x, true, true, true); @@ -45,8 +44,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(_skTemp0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleByConstantIndex.metal b/tests/sksl/shared/SwizzleByConstantIndex.metal index 0ccd04956b96..a0ced1364f3e 100644 --- a/tests/sksl/shared/SwizzleByConstantIndex.metal +++ b/tests/sksl/shared/SwizzleByConstantIndex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/shared/SwizzleByConstantIndex.wgsl b/tests/sksl/shared/SwizzleByConstantIndex.wgsl index 252353b9aae9..ab3b9deadf7f 100644 --- a/tests/sksl/shared/SwizzleByConstantIndex.wgsl +++ b/tests/sksl/shared/SwizzleByConstantIndex.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_v: vec4 = _globalUniforms.testInputs; var _1_x: f32 = _0_v.x; @@ -30,8 +29,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((all(a == vec4(-1.25, 0.0, 0.75, 2.25)) && all(b == vec4(-1.25, 0.0, 0.75, 2.25))) && all(c == vec4(0.0, 1.0, 2.0, 3.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleByIndex.metal b/tests/sksl/shared/SwizzleByIndex.metal index aeb000206870..cc83d3c17b86 100644 --- a/tests/sksl/shared/SwizzleByIndex.metal +++ b/tests/sksl/shared/SwizzleByIndex.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/shared/SwizzleByIndex.wgsl b/tests/sksl/shared/SwizzleByIndex.wgsl index 1bccc84babea..878e44a5ad29 100644 --- a/tests/sksl/shared/SwizzleByIndex.wgsl +++ b/tests/sksl/shared/SwizzleByIndex.wgsl @@ -13,8 +13,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_v: vec4 = _globalUniforms.testInputs; var _1_i: vec4 = vec4(_globalUniforms.colorBlack); @@ -29,8 +28,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(vec4(_2_x, _3_y, _4_z, _5_w) == vec4(-1.25, -1.25, -1.25, 0.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleConstants.metal b/tests/sksl/shared/SwizzleConstants.metal index a214aa86d46c..2ac6a9a3f06d 100644 --- a/tests/sksl/shared/SwizzleConstants.metal +++ b/tests/sksl/shared/SwizzleConstants.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 testInputs; diff --git a/tests/sksl/shared/SwizzleConstants.wgsl b/tests/sksl/shared/SwizzleConstants.wgsl index 3d2da35cabb5..d53ef64b4993 100644 --- a/tests/sksl/shared/SwizzleConstants.wgsl +++ b/tests/sksl/shared/SwizzleConstants.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var v: vec4 = _globalUniforms.testInputs; v = vec4(v.x, 1.0, 1.0, 1.0); @@ -44,8 +43,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(v == vec4(0.0, 1.0, 1.0, 1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleIndexLookup.metal b/tests/sksl/shared/SwizzleIndexLookup.metal index cc15d059b35a..df7552ae49d1 100644 --- a/tests/sksl/shared/SwizzleIndexLookup.metal +++ b/tests/sksl/shared/SwizzleIndexLookup.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwizzleIndexLookup.wgsl b/tests/sksl/shared/SwizzleIndexLookup.wgsl index 91712f6dbe9e..77261fba72a8 100644 --- a/tests/sksl/shared/SwizzleIndexLookup.wgsl +++ b/tests/sksl/shared/SwizzleIndexLookup.wgsl @@ -83,8 +83,7 @@ fn test4x4_b() -> bool { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp0: vec4; var _skTemp1: bool; @@ -103,8 +102,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleIndexStore.metal b/tests/sksl/shared/SwizzleIndexStore.metal index 49e3b68f3093..43ad2c980dfc 100644 --- a/tests/sksl/shared/SwizzleIndexStore.metal +++ b/tests/sksl/shared/SwizzleIndexStore.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/SwizzleIndexStore.wgsl b/tests/sksl/shared/SwizzleIndexStore.wgsl index 354df082abd7..89d7bc658ea9 100644 --- a/tests/sksl/shared/SwizzleIndexStore.wgsl +++ b/tests/sksl/shared/SwizzleIndexStore.wgsl @@ -87,8 +87,7 @@ fn test4x4_b() -> bool { return true; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp2: vec4; var _skTemp3: bool; @@ -107,8 +106,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp2; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleLTRB.metal b/tests/sksl/shared/SwizzleLTRB.metal index 74359df2b942..74e47133d569 100644 --- a/tests/sksl/shared/SwizzleLTRB.metal +++ b/tests/sksl/shared/SwizzleLTRB.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/SwizzleLTRB.wgsl b/tests/sksl/shared/SwizzleLTRB.wgsl index 8e8782a7ef8f..d805ce6c7cde 100644 --- a/tests/sksl/shared/SwizzleLTRB.wgsl +++ b/tests/sksl/shared/SwizzleLTRB.wgsl @@ -10,14 +10,13 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return _globalUniforms.colorRed.zwyx; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleOpt.metal b/tests/sksl/shared/SwizzleOpt.metal index fcde6043d99b..b38c8ca2a6b0 100644 --- a/tests/sksl/shared/SwizzleOpt.metal +++ b/tests/sksl/shared/SwizzleOpt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/SwizzleOpt.wgsl b/tests/sksl/shared/SwizzleOpt.wgsl index 1adccb1fdc3c..a18b381dd982 100644 --- a/tests/sksl/shared/SwizzleOpt.wgsl +++ b/tests/sksl/shared/SwizzleOpt.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn fn_hh4(_skParam0: vec4) -> f32 { - let v = _skParam0; +fn fn_hh4(v: vec4) -> f32 { { { var x: i32 = 1; @@ -30,8 +29,7 @@ fn fn_hh4(_skParam0: vec4) -> f32 { } return f32(); } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var v: vec4 = _globalUniforms.testInputs; v = vec4(0.0, v.zyx); @@ -61,8 +59,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(all(v == vec4(1.0)))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleScalar.metal b/tests/sksl/shared/SwizzleScalar.metal index 225d01a935e7..aed9e22f82e9 100644 --- a/tests/sksl/shared/SwizzleScalar.metal +++ b/tests/sksl/shared/SwizzleScalar.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half unknownInput; diff --git a/tests/sksl/shared/SwizzleScalar.wgsl b/tests/sksl/shared/SwizzleScalar.wgsl index ae58a5901409..cbe7688265f8 100644 --- a/tests/sksl/shared/SwizzleScalar.wgsl +++ b/tests/sksl/shared/SwizzleScalar.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var h4: vec4 = vec4(_globalUniforms.unknownInput); h4 = vec4(vec2(_globalUniforms.unknownInput), 0.0, 1.0); @@ -20,8 +19,8 @@ fn main(_skParam0: vec2) -> vec4 { return h4; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleScalarBool.metal b/tests/sksl/shared/SwizzleScalarBool.metal index f5095dbf81ee..63b4435bc50d 100644 --- a/tests/sksl/shared/SwizzleScalarBool.metal +++ b/tests/sksl/shared/SwizzleScalarBool.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half unknownInput; diff --git a/tests/sksl/shared/SwizzleScalarBool.wgsl b/tests/sksl/shared/SwizzleScalarBool.wgsl index 13c7ec62c7b7..afd2d1f0f69e 100644 --- a/tests/sksl/shared/SwizzleScalarBool.wgsl +++ b/tests/sksl/shared/SwizzleScalarBool.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var b: bool = bool(_globalUniforms.unknownInput); var b4: vec4 = vec4(b); @@ -21,8 +20,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(b4); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/SwizzleScalarInt.metal b/tests/sksl/shared/SwizzleScalarInt.metal index 5823c9730d86..9c1ab2b02d25 100644 --- a/tests/sksl/shared/SwizzleScalarInt.metal +++ b/tests/sksl/shared/SwizzleScalarInt.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half unknownInput; diff --git a/tests/sksl/shared/SwizzleScalarInt.wgsl b/tests/sksl/shared/SwizzleScalarInt.wgsl index f2478cfa410b..4cbdc380e1fd 100644 --- a/tests/sksl/shared/SwizzleScalarInt.wgsl +++ b/tests/sksl/shared/SwizzleScalarInt.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var i: i32 = i32(_globalUniforms.unknownInput); var i4: vec4 = vec4(i); @@ -21,8 +20,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(i4); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TemporaryIndexLookup.metal b/tests/sksl/shared/TemporaryIndexLookup.metal index 6b772d62106a..4adc3b7e5b59 100644 --- a/tests/sksl/shared/TemporaryIndexLookup.metal +++ b/tests/sksl/shared/TemporaryIndexLookup.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/TemporaryIndexLookup.wgsl b/tests/sksl/shared/TemporaryIndexLookup.wgsl index f255cb89cf8e..b57491dede7c 100644 --- a/tests/sksl/shared/TemporaryIndexLookup.wgsl +++ b/tests/sksl/shared/TemporaryIndexLookup.wgsl @@ -17,8 +17,7 @@ fn GetTestMatrix_f33() -> mat3x3 { return _globalUniforms.testMatrix3x3; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var expected: f32 = 0.0; { @@ -53,8 +52,8 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.metal b/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.metal index 14ac70871816..319f124b113a 100644 --- a/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.metal +++ b/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.wgsl b/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.wgsl index c92a22c88aae..10ae6dfb7ca1 100644 --- a/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.wgsl +++ b/tests/sksl/shared/TernaryAsLValueEntirelyFoldable.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var r: f32; var g: f32; @@ -16,8 +15,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(r, g, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryAsLValueFoldableTest.metal b/tests/sksl/shared/TernaryAsLValueFoldableTest.metal index 33de46e4de82..55c32b98f58f 100644 --- a/tests/sksl/shared/TernaryAsLValueFoldableTest.metal +++ b/tests/sksl/shared/TernaryAsLValueFoldableTest.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half unknownInput; diff --git a/tests/sksl/shared/TernaryAsLValueFoldableTest.wgsl b/tests/sksl/shared/TernaryAsLValueFoldableTest.wgsl index 42b87162eb1c..6a9f582c59e7 100644 --- a/tests/sksl/shared/TernaryAsLValueFoldableTest.wgsl +++ b/tests/sksl/shared/TernaryAsLValueFoldableTest.wgsl @@ -10,8 +10,7 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var r: f32; var g: f32; @@ -20,8 +19,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(r, g, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryComplexNesting.metal b/tests/sksl/shared/TernaryComplexNesting.metal index d591c538343c..b23994cdec3a 100644 --- a/tests/sksl/shared/TernaryComplexNesting.metal +++ b/tests/sksl/shared/TernaryComplexNesting.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorWhite; diff --git a/tests/sksl/shared/TernaryComplexNesting.wgsl b/tests/sksl/shared/TernaryComplexNesting.wgsl index 994f380ba6c0..7d75d11feb86 100644 --- a/tests/sksl/shared/TernaryComplexNesting.wgsl +++ b/tests/sksl/shared/TernaryComplexNesting.wgsl @@ -10,15 +10,12 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn IsEqual_bh4h4(_skParam0: vec4, _skParam1: vec4) -> bool { - let x = _skParam0; - let y = _skParam1; +fn IsEqual_bh4h4(x: vec4, y: vec4) -> bool { { return all(x == y); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var colorBlue: vec4 = vec4(0.0, 0.0, _globalUniforms.colorWhite.zw); var colorGreen: vec4 = vec4(0.0, _globalUniforms.colorWhite.y, 0.0, _globalUniforms.colorWhite.w); @@ -69,8 +66,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp6; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryExpression.metal b/tests/sksl/shared/TernaryExpression.metal index f43eb8c9864f..6adfaa27aab9 100644 --- a/tests/sksl/shared/TernaryExpression.metal +++ b/tests/sksl/shared/TernaryExpression.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/TernaryExpression.wgsl b/tests/sksl/shared/TernaryExpression.wgsl index e684b0bdc5cd..1bbc398a6587 100644 --- a/tests/sksl/shared/TernaryExpression.wgsl +++ b/tests/sksl/shared/TernaryExpression.wgsl @@ -11,19 +11,18 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var check: i32 = 0; - check = check + i32(select(1, 0, (_globalUniforms.colorGreen.y == 1.0))); - check = check + i32(select(0, 1, (_globalUniforms.colorGreen.x == 1.0))); + check = check + i32(select(1, 0, _globalUniforms.colorGreen.y == 1.0)); + check = check + i32(select(0, 1, _globalUniforms.colorGreen.x == 1.0)); check = check + i32(select(1, 0, all(_globalUniforms.colorGreen.yx == _globalUniforms.colorRed.xy))); check = check + i32(select(0, 1, any(_globalUniforms.colorGreen.yx != _globalUniforms.colorRed.xy))); - return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((check == 0))); + return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(check == 0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryNesting.metal b/tests/sksl/shared/TernaryNesting.metal index 611cef1defea..ea85806f9203 100644 --- a/tests/sksl/shared/TernaryNesting.metal +++ b/tests/sksl/shared/TernaryNesting.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorWhite; diff --git a/tests/sksl/shared/TernaryNesting.wgsl b/tests/sksl/shared/TernaryNesting.wgsl index 902be7427e5c..775e0185ee57 100644 --- a/tests/sksl/shared/TernaryNesting.wgsl +++ b/tests/sksl/shared/TernaryNesting.wgsl @@ -10,18 +10,17 @@ struct _GlobalUniforms { colorWhite: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var colorBlue: vec4 = vec4(0.0, 0.0, _globalUniforms.colorWhite.zw); var colorGreen: vec4 = vec4(0.0, _globalUniforms.colorWhite.y, 0.0, _globalUniforms.colorWhite.w); var colorRed: vec4 = vec4(_globalUniforms.colorWhite.x, 0.0, 0.0, _globalUniforms.colorWhite.w); - var result: vec4 = select((select(_globalUniforms.colorWhite, colorBlue, vec4(any(colorRed != colorGreen)))), (select(colorGreen, colorRed, vec4(all(colorGreen == colorRed)))), vec4(any(_globalUniforms.colorWhite != colorBlue))); - return select((select((select(colorRed, colorBlue, vec4(all(colorRed == _globalUniforms.colorWhite)))), result, vec4(any(colorRed != colorGreen)))), _globalUniforms.colorWhite, vec4(all(colorRed == colorBlue))); + var result: vec4 = select(select(_globalUniforms.colorWhite, colorBlue, vec4(any(colorRed != colorGreen))), select(colorGreen, colorRed, vec4(all(colorGreen == colorRed))), vec4(any(_globalUniforms.colorWhite != colorBlue))); + return select(select(select(colorRed, colorBlue, vec4(all(colorRed == _globalUniforms.colorWhite))), result, vec4(any(colorRed != colorGreen))), _globalUniforms.colorWhite, vec4(all(colorRed == colorBlue))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernarySideEffects.metal b/tests/sksl/shared/TernarySideEffects.metal index 118fd1b0d1a7..68a21f30e2b4 100644 --- a/tests/sksl/shared/TernarySideEffects.metal +++ b/tests/sksl/shared/TernarySideEffects.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/TernarySideEffects.wgsl b/tests/sksl/shared/TernarySideEffects.wgsl index 857cd86ab846..6003df9170b6 100644 --- a/tests/sksl/shared/TernarySideEffects.wgsl +++ b/tests/sksl/shared/TernarySideEffects.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: f32 = 1.0; var y: f32 = 1.0; @@ -85,11 +84,11 @@ fn main(_skParam0: vec2) -> vec4 { _skTemp8 = b; } var c: bool = _skTemp8; - return select((select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((x == 8.0) && (y == 17.0)))), _globalUniforms.colorRed, vec4(c)); + return select(select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4((x == 8.0) && (y == 17.0))), _globalUniforms.colorRed, vec4(c)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/TernaryTrueFalseOptimization.metal b/tests/sksl/shared/TernaryTrueFalseOptimization.metal index 6a8d96bd0fd2..99b25ae7100b 100644 --- a/tests/sksl/shared/TernaryTrueFalseOptimization.metal +++ b/tests/sksl/shared/TernaryTrueFalseOptimization.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/TernaryTrueFalseOptimization.wgsl b/tests/sksl/shared/TernaryTrueFalseOptimization.wgsl index f8320bf4ee03..ce5664bb8125 100644 --- a/tests/sksl/shared/TernaryTrueFalseOptimization.wgsl +++ b/tests/sksl/shared/TernaryTrueFalseOptimization.wgsl @@ -11,8 +11,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var ok: bool = true; ok = ok && (_globalUniforms.colorGreen.y == 1.0); @@ -24,8 +23,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/Texture2D.metal b/tests/sksl/shared/Texture2D.metal index 72ef22e783f6..b949a5eec7e3 100644 --- a/tests/sksl/shared/Texture2D.metal +++ b/tests/sksl/shared/Texture2D.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/shared/Texture2D.skrp b/tests/sksl/shared/Texture2D.skrp index bf11a36f42aa..1ffcee4744d7 100644 --- a/tests/sksl/shared/Texture2D.skrp +++ b/tests/sksl/shared/Texture2D.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 1: invalid type -layout(binding=0) uniform sampler2D tex; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D tex; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 3: 'main' must return: 'vec4', 'float4', or 'half4' void main() { ^^^^^^^^^^^ diff --git a/tests/sksl/shared/Texture2D.wgsl b/tests/sksl/shared/Texture2D.wgsl index 37dd27a07fe3..e1a11e39e95d 100644 --- a/tests/sksl/shared/Texture2D.wgsl +++ b/tests/sksl/shared/Texture2D.wgsl @@ -7,7 +7,7 @@ struct FSOut { }; @group(0) @binding(10000) var tex_Sampler: sampler; @group(0) @binding(10001) var tex_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: vec4 = vec4(textureSample(tex_Texture, tex_Sampler, vec2(0.0))); let _skTemp2 = vec3(0.0); @@ -15,8 +15,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(vec2(a.xy), vec2(b.zw)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/TextureSharpen.metal b/tests/sksl/shared/TextureSharpen.metal index eda19a2503bf..ab0a84339b4d 100644 --- a/tests/sksl/shared/TextureSharpen.metal +++ b/tests/sksl/shared/TextureSharpen.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct sampler2D { diff --git a/tests/sksl/shared/TextureSharpen.skrp b/tests/sksl/shared/TextureSharpen.skrp index ce7fe0e36c1c..96938d47b17c 100644 --- a/tests/sksl/shared/TextureSharpen.skrp +++ b/tests/sksl/shared/TextureSharpen.skrp @@ -1,8 +1,8 @@ ### Compilation failed: error: 3: invalid type -layout(binding=0) uniform sampler2D s; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +layout(binding=0) sampler2D s; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: 5: 'main' must return: 'vec4', 'float4', or 'half4' void main() { ^^^^^^^^^^^ diff --git a/tests/sksl/shared/TextureSharpen.wgsl b/tests/sksl/shared/TextureSharpen.wgsl index 71ac6231fc44..fefc10253344 100644 --- a/tests/sksl/shared/TextureSharpen.wgsl +++ b/tests/sksl/shared/TextureSharpen.wgsl @@ -7,7 +7,7 @@ struct FSOut { }; @group(0) @binding(10000) var s_Sampler: sampler; @group(0) @binding(10001) var s_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: vec4 = vec4(textureSampleBias(s_Texture, s_Sampler, vec2(0.0), -0.475)); let _skTemp2 = vec3(0.0); @@ -15,8 +15,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = vec4(vec2(a.xy), vec2(b.xy)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/UnaryPositiveNegative.metal b/tests/sksl/shared/UnaryPositiveNegative.metal index 97af88e62269..02001067bc56 100644 --- a/tests/sksl/shared/UnaryPositiveNegative.metal +++ b/tests/sksl/shared/UnaryPositiveNegative.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorWhite; diff --git a/tests/sksl/shared/UnaryPositiveNegative.wgsl b/tests/sksl/shared/UnaryPositiveNegative.wgsl index 66e2cd9c61d0..f889559f67f4 100644 --- a/tests/sksl/shared/UnaryPositiveNegative.wgsl +++ b/tests/sksl/shared/UnaryPositiveNegative.wgsl @@ -84,8 +84,7 @@ fn test_hmat4_b() -> bool { return (all(x[0] == negated[0]) && all(x[1] == negated[1]) && all(x[2] == negated[2]) && all(x[3] == negated[3])); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_x: f32 = f32(_globalUniforms.colorWhite.x); _0_x = -_0_x; @@ -161,8 +160,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/UniformArray.metal b/tests/sksl/shared/UniformArray.metal index d2fc449f609b..4e17165e0312 100644 --- a/tests/sksl/shared/UniformArray.metal +++ b/tests/sksl/shared/UniformArray.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { array testArray; diff --git a/tests/sksl/shared/UniformArray.wgsl b/tests/sksl/shared/UniformArray.wgsl index 11c6a10be664..384461c87c12 100644 --- a/tests/sksl/shared/UniformArray.wgsl +++ b/tests/sksl/shared/UniformArray.wgsl @@ -33,8 +33,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { { var index: i32 = 0; @@ -55,9 +54,9 @@ fn main(_skParam0: vec2) -> vec4 { return _globalUniforms.colorGreen; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/UniformBuffers.metal b/tests/sksl/shared/UniformBuffers.metal index 1d7a002f8d29..edc946b29268 100644 --- a/tests/sksl/shared/UniformBuffers.metal +++ b/tests/sksl/shared/UniformBuffers.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/UniformBuffers.wgsl b/tests/sksl/shared/UniformBuffers.wgsl index 7f8ae6d6bc15..9ec6d336c325 100644 --- a/tests/sksl/shared/UniformBuffers.wgsl +++ b/tests/sksl/shared/UniformBuffers.wgsl @@ -1,24 +1,3 @@ -### Compilation failed: - -error: :20:16 error: uniform storage requires that array elements are aligned to 16 bytes, but array element of type 'f32' has a stride of 4 bytes. Consider using a vector or struct as the element type instead. - @size(32) y: array, - ^^^^^^^^^^^^^ - -:17:1 note: see layout of struct: -/* align(16) size(96) */ struct testBlock { -/* offset( 0) align( 4) size( 4) */ x : f32; -/* offset( 4) align( 4) size(12) */ w : i32; -/* offset(16) align( 4) size(32) */ y : array; -/* offset(48) align(16) size(48) */ z : _skMatrix33; -/* */ }; -struct testBlock { -^^^^^^ - -:23:36 note: 'testBlock' used in address space 'uniform' here -@group(0) @binding(0) var _uniform0 : testBlock; - ^^^^^^^^^ - - diagnostic(off, derivative_uniformity); struct FSIn { @builtin(front_facing) sk_Clockwise: bool, @@ -26,31 +5,28 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -struct _skRow3 { - @size(16) r : vec3 -}; -struct _skMatrix33 { - c : array<_skRow3, 3> -}; -fn _skMatrixUnpack33(m : _skMatrix33) -> mat3x3 { - return mat3x3(m.c[0].r, m.c[1].r, m.c[2].r); -} struct testBlock { @size(4) x: f32, @size(12) w: i32, - @size(32) y: array, - z: _skMatrix33, + @size(32) y: array<_skArrayElement_h, 2>, + z: mat3x3, }; @group(0) @binding(0) var _uniform0 : testBlock; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { - (*_stageOut).sk_FragColor = vec4(_uniform0.x, _uniform0.y[0], _uniform0.y[1], 0.0); + (*_stageOut).sk_FragColor = vec4(_uniform0.x, _skUnpacked__uniform0_y[0], _skUnpacked__uniform0_y[1], 0.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { + _skInitializePolyfilledUniforms(); var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } - -1 error +struct _skArrayElement_h { + @size(16) e : f32 +}; +var _skUnpacked__uniform0_y: array; +fn _skInitializePolyfilledUniforms() { + _skUnpacked__uniform0_y = array(_uniform0.y[0].e, _uniform0.y[1].e); +} diff --git a/tests/sksl/shared/UniformMatrixResize.metal b/tests/sksl/shared/UniformMatrixResize.metal index 43600990c810..96f00c584ebf 100644 --- a/tests/sksl/shared/UniformMatrixResize.metal +++ b/tests/sksl/shared/UniformMatrixResize.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { float3x3 testMatrix3x3; diff --git a/tests/sksl/shared/UniformMatrixResize.wgsl b/tests/sksl/shared/UniformMatrixResize.wgsl index e07428ac3936..3e16b0fdace7 100644 --- a/tests/sksl/shared/UniformMatrixResize.wgsl +++ b/tests/sksl/shared/UniformMatrixResize.wgsl @@ -18,8 +18,7 @@ fn resizeMatrix_f22() -> mat2x2 { return mat2x2(_skTemp0[0][0], _skTemp0[0][1], _skTemp0[1][0], _skTemp0[1][1]); } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _skTemp1: vec4; var _skTemp2: bool; @@ -43,8 +42,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp1; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/UnusedVariables.metal b/tests/sksl/shared/UnusedVariables.metal index 292dd405f5e5..914d327f788e 100644 --- a/tests/sksl/shared/UnusedVariables.metal +++ b/tests/sksl/shared/UnusedVariables.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/UnusedVariables.wgsl b/tests/sksl/shared/UnusedVariables.wgsl index 72df2af0525e..428728c8f584 100644 --- a/tests/sksl/shared/UnusedVariables.wgsl +++ b/tests/sksl/shared/UnusedVariables.wgsl @@ -6,14 +6,12 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn userfunc_ff(_skParam0: f32) -> f32 { - let v = _skParam0; +fn userfunc_ff(v: f32) -> f32 { { return v + 1.0; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var b: f32 = 2.0; var c: f32 = 3.0; @@ -45,8 +43,8 @@ fn main(_skParam0: vec2) -> vec4 { return vec4(f32(b == 2.0), f32(b == 3.0), f32(d == 5.0), f32(d == 4.0)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/VectorConstructors.metal b/tests/sksl/shared/VectorConstructors.metal index cb5c0e96c154..5c0b6a9ec9f1 100644 --- a/tests/sksl/shared/VectorConstructors.metal +++ b/tests/sksl/shared/VectorConstructors.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/VectorConstructors.wgsl b/tests/sksl/shared/VectorConstructors.wgsl index 2ae453f18f98..ce60e43cd1c7 100644 --- a/tests/sksl/shared/VectorConstructors.wgsl +++ b/tests/sksl/shared/VectorConstructors.wgsl @@ -12,31 +12,12 @@ struct _GlobalUniforms { unknownInput: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn check_bf2f2f2f3i2i2f2f2f4i2b4f2f2f2b2b2b3i4(_skParam0: vec2, _skParam1: vec2, _skParam2: vec2, _skParam3: vec3, _skParam4: vec2, _skParam5: vec2, _skParam6: vec2, _skParam7: vec2, _skParam8: vec4, _skParam9: vec2, _skParam10: vec4, _skParam11: vec2, _skParam12: vec2, _skParam13: vec2, _skParam14: vec2, _skParam15: vec2, _skParam16: vec3, _skParam17: vec4) -> bool { - let v1 = _skParam0; - let v2 = _skParam1; - let v3 = _skParam2; - let v4 = _skParam3; - let v5 = _skParam4; - let v6 = _skParam5; - let v7 = _skParam6; - let v8 = _skParam7; - let v9 = _skParam8; - let v10 = _skParam9; - let v11 = _skParam10; - let v12 = _skParam11; - let v13 = _skParam12; - let v14 = _skParam13; - let v15 = _skParam14; - let v16 = _skParam15; - let v17 = _skParam16; - let v18 = _skParam17; +fn check_bf2f2f2f3i2i2f2f2f4i2b4f2f2f2b2b2b3i4(v1: vec2, v2: vec2, v3: vec2, v4: vec3, v5: vec2, v6: vec2, v7: vec2, v8: vec2, v9: vec4, v10: vec2, v11: vec4, v12: vec2, v13: vec2, v14: vec2, v15: vec2, v16: vec2, v17: vec3, v18: vec4) -> bool { { return (((((((((((((((((f32(v1.x) + f32(v2.x)) + f32(v3.x)) + f32(v4.x)) + f32(v5.x)) + f32(v6.x)) + f32(v7.x)) + f32(v8.x)) + f32(v9.x)) + f32(v10.x)) + f32(v11.x)) + f32(v12.x)) + f32(v13.x)) + f32(v14.x)) + f32(v15.x)) + f32(v16.x)) + f32(v17.x)) + f32(v18.x)) == 18.0; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var v1: vec2 = vec2(1.0); var v2: vec2 = vec2(1.0, 2.0); @@ -66,8 +47,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/VectorScalarMath.metal b/tests/sksl/shared/VectorScalarMath.metal index 5ae267dfafe2..f057b7a68a14 100644 --- a/tests/sksl/shared/VectorScalarMath.metal +++ b/tests/sksl/shared/VectorScalarMath.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorRed; diff --git a/tests/sksl/shared/VectorScalarMath.wgsl b/tests/sksl/shared/VectorScalarMath.wgsl index 279924fd6ea8..dd525468cde5 100644 --- a/tests/sksl/shared/VectorScalarMath.wgsl +++ b/tests/sksl/shared/VectorScalarMath.wgsl @@ -54,8 +54,7 @@ fn test_int_b() -> bool { return ok; } } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_ok: bool = true; var _1_inputRed: vec4 = _globalUniforms.colorRed; @@ -110,8 +109,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp0; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/VectorToMatrixCast.metal b/tests/sksl/shared/VectorToMatrixCast.metal index 74d3f7c4baea..47aae59d56b3 100644 --- a/tests/sksl/shared/VectorToMatrixCast.metal +++ b/tests/sksl/shared/VectorToMatrixCast.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Uniforms { half4 colorGreen; diff --git a/tests/sksl/shared/VectorToMatrixCast.wgsl b/tests/sksl/shared/VectorToMatrixCast.wgsl index 46d0e90175b5..62931c2e423b 100644 --- a/tests/sksl/shared/VectorToMatrixCast.wgsl +++ b/tests/sksl/shared/VectorToMatrixCast.wgsl @@ -12,8 +12,7 @@ struct _GlobalUniforms { testInputs: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var ok: bool = true; let _skTemp0 = mat2x2(_globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3]); @@ -54,8 +53,8 @@ fn main(_skParam0: vec2) -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/shared/VertexID.metal b/tests/sksl/shared/VertexID.metal index d20eb7ee44b3..64def94f85b5 100644 --- a/tests/sksl/shared/VertexID.metal +++ b/tests/sksl/shared/VertexID.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/VertexID.wgsl b/tests/sksl/shared/VertexID.wgsl index 03f88f2ad575..59dc543dc883 100644 --- a/tests/sksl/shared/VertexID.wgsl +++ b/tests/sksl/shared/VertexID.wgsl @@ -6,13 +6,13 @@ struct VSOut { @location(1) @interpolate(flat) id: i32, @builtin(position) sk_Position: vec4, }; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { (*_stageOut).id = i32(_stageIn.sk_VertexID); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/VertexIDInFunction.metal b/tests/sksl/shared/VertexIDInFunction.metal index 1b31baaa90da..51cfb5855fad 100644 --- a/tests/sksl/shared/VertexIDInFunction.metal +++ b/tests/sksl/shared/VertexIDInFunction.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/VertexIDInFunction.wgsl b/tests/sksl/shared/VertexIDInFunction.wgsl index 5a034c3ad245..19839a44d354 100644 --- a/tests/sksl/shared/VertexIDInFunction.wgsl +++ b/tests/sksl/shared/VertexIDInFunction.wgsl @@ -11,14 +11,14 @@ fn fn_i(_stageIn: VSIn) -> i32 { return i32(_stageIn.sk_VertexID); } } -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { let _skTemp0 = fn_i(_stageIn); (*_stageOut).id = _skTemp0; } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/shared/WhileLoopControlFlow.metal b/tests/sksl/shared/WhileLoopControlFlow.metal index 83ff234c9f86..85fa673ae8b3 100644 --- a/tests/sksl/shared/WhileLoopControlFlow.metal +++ b/tests/sksl/shared/WhileLoopControlFlow.metal @@ -1,5 +1,8 @@ #include #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wall" +#endif using namespace metal; struct Inputs { }; diff --git a/tests/sksl/shared/WhileLoopControlFlow.wgsl b/tests/sksl/shared/WhileLoopControlFlow.wgsl index 473b6d7e7faf..06778c943f0f 100644 --- a/tests/sksl/shared/WhileLoopControlFlow.wgsl +++ b/tests/sksl/shared/WhileLoopControlFlow.wgsl @@ -6,8 +6,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var x: vec4 = vec4(1.0); loop { @@ -38,8 +37,8 @@ fn main(_skParam0: vec2) -> vec4 { return x; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/spirv/CombinedSamplerTypeDawnCompatMode.wgsl b/tests/sksl/spirv/CombinedSamplerTypeDawnCompatMode.wgsl index 9b0922e29989..b89f7c973625 100644 --- a/tests/sksl/spirv/CombinedSamplerTypeDawnCompatMode.wgsl +++ b/tests/sksl/spirv/CombinedSamplerTypeDawnCompatMode.wgsl @@ -26,15 +26,15 @@ fn helper2_h4ZZ(s1_Texture: texture_2d, s1_Sampler: sampler, s2_Texture: te return textureSample(s1_Texture, s1_Sampler, vec2(1.0)) + _skTemp1; } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { let _skTemp2 = helper_h4Z(aSampler_Texture, aSampler_Sampler); let _skTemp3 = helper2_h4ZZ(aSampler_Texture, aSampler_Sampler, anotherSampler_Texture, anotherSampler_Sampler); (*_stageOut).sk_FragColor = (textureSample(aSampler_Texture, aSampler_Sampler, vec2(0.0)) + _skTemp2) + _skTemp3; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.asm.frag b/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.asm.frag index d56d90ccabfc..f5760c9e1b7e 100644 --- a/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.asm.frag +++ b/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.asm.frag @@ -30,44 +30,46 @@ %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %sk_FragColor = OpVariable %_ptr_Output_v4float Output - %13 = OpTypeImage %float 2D 0 0 0 1 Unknown + %13 = OpTypeImage %float 2D 0 0 0 2 Rgba8 %_ptr_UniformConstant_13 = OpTypePointer UniformConstant %13 %aTexture = OpVariable %_ptr_UniformConstant_13 UniformConstant -%aSampledTexture_texture = OpVariable %_ptr_UniformConstant_13 UniformConstant - %17 = OpTypeSampler -%_ptr_UniformConstant_17 = OpTypePointer UniformConstant %17 -%aSampledTexture_sampler = OpVariable %_ptr_UniformConstant_17 UniformConstant + %16 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_16 = OpTypePointer UniformConstant %16 +%aSampledTexture_texture = OpVariable %_ptr_UniformConstant_16 UniformConstant + %19 = OpTypeSampler +%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19 +%aSampledTexture_sampler = OpVariable %_ptr_UniformConstant_19 UniformConstant %v2float = OpTypeVector %float 2 %_ptr_Input_v2float = OpTypePointer Input %v2float %c = OpVariable %_ptr_Input_v2float Input - %22 = OpTypeFunction %v4float %_ptr_UniformConstant_13 %_ptr_UniformConstant_17 %_ptr_UniformConstant_13 - %31 = OpTypeSampledImage %13 - %33 = OpTypeFunction %v4float %_ptr_UniformConstant_13 %_ptr_UniformConstant_13 %_ptr_UniformConstant_17 + %24 = OpTypeFunction %v4float %_ptr_UniformConstant_16 %_ptr_UniformConstant_19 %_ptr_UniformConstant_13 + %33 = OpTypeSampledImage %16 + %35 = OpTypeFunction %v4float %_ptr_UniformConstant_13 %_ptr_UniformConstant_16 %_ptr_UniformConstant_19 %void = OpTypeVoid - %40 = OpTypeFunction %void -%helpers_helper_h4ZT = OpFunction %v4float None %22 - %23 = OpFunctionParameter %_ptr_UniformConstant_13 - %24 = OpFunctionParameter %_ptr_UniformConstant_17 - %25 = OpFunctionParameter %_ptr_UniformConstant_13 - %26 = OpLabel - %28 = OpLoad %13 %23 - %29 = OpLoad %17 %24 - %30 = OpSampledImage %31 %28 %29 - %32 = OpLoad %v2float %c - %27 = OpImageSampleImplicitLod %v4float %30 %32 - OpReturnValue %27 + %42 = OpTypeFunction %void +%helpers_helper_h4ZT = OpFunction %v4float None %24 + %25 = OpFunctionParameter %_ptr_UniformConstant_16 + %26 = OpFunctionParameter %_ptr_UniformConstant_19 + %27 = OpFunctionParameter %_ptr_UniformConstant_13 + %28 = OpLabel + %30 = OpLoad %16 %25 + %31 = OpLoad %19 %26 + %32 = OpSampledImage %33 %30 %31 + %34 = OpLoad %v2float %c + %29 = OpImageSampleImplicitLod %v4float %32 %34 + OpReturnValue %29 OpFunctionEnd -%helper_h4TZ = OpFunction %v4float None %33 - %34 = OpFunctionParameter %_ptr_UniformConstant_13 - %35 = OpFunctionParameter %_ptr_UniformConstant_13 - %36 = OpFunctionParameter %_ptr_UniformConstant_17 - %37 = OpLabel - %38 = OpFunctionCall %v4float %helpers_helper_h4ZT %35 %36 %34 - OpReturnValue %38 +%helper_h4TZ = OpFunction %v4float None %35 + %36 = OpFunctionParameter %_ptr_UniformConstant_13 + %37 = OpFunctionParameter %_ptr_UniformConstant_16 + %38 = OpFunctionParameter %_ptr_UniformConstant_19 + %39 = OpLabel + %40 = OpFunctionCall %v4float %helpers_helper_h4ZT %37 %38 %36 + OpReturnValue %40 OpFunctionEnd - %main = OpFunction %void None %40 - %41 = OpLabel - %42 = OpFunctionCall %v4float %helper_h4TZ %aTexture %aSampledTexture_texture %aSampledTexture_sampler - OpStore %sk_FragColor %42 + %main = OpFunction %void None %42 + %43 = OpLabel + %44 = OpFunctionCall %v4float %helper_h4TZ %aTexture %aSampledTexture_texture %aSampledTexture_sampler + OpStore %sk_FragColor %44 OpReturn OpFunctionEnd diff --git a/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.wgsl b/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.wgsl index 6fbb548a5c61..1f53ed3a9e53 100644 --- a/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.wgsl +++ b/tests/sksl/spirv/FunctionParametersOfTextureAndSamplerTypeDawnCompatMode.wgsl @@ -20,14 +20,14 @@ fn helper_h4TZ(_stageIn: FSIn, t: texture_2d, s_Texture: texture_2d, s return _skTemp0; } } -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { let _skTemp1 = helper_h4TZ(_stageIn, aTexture, aSampledTexture_Texture, aSampledTexture_Sampler); (*_stageOut).sk_FragColor = _skTemp1; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/spirv/MixedSamplerTypes.asm.frag b/tests/sksl/spirv/MixedSamplerTypes.asm.frag new file mode 100644 index 000000000000..68bc7fe3c0fd --- /dev/null +++ b/tests/sksl/spirv/MixedSamplerTypes.asm.frag @@ -0,0 +1,10 @@ +### Compilation failed: + +error: programs cannot contain a mixture of sampler types +error: 3: combined sampler found here: +layout(vulkan, set=1, binding=6) sampler2D vkSampler; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: 2: separate sampler found here: +layout(direct3d, set=1, texture=4, sampler=5) sampler2D d3dSampler; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 errors diff --git a/tests/sksl/spirv/WGSLLayoutInVulkanSPIRV.asm.frag b/tests/sksl/spirv/WGSLLayoutInVulkanSPIRV.asm.frag deleted file mode 100644 index b60230a9bf63..000000000000 --- a/tests/sksl/spirv/WGSLLayoutInVulkanSPIRV.asm.frag +++ /dev/null @@ -1,6 +0,0 @@ -### Compilation failed: - -error: 1: incompatible backend flag in SPIR-V codegen -layout(wgsl, set=1, texture=2, sampler=3) uniform sampler2D aSampler; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -1 error diff --git a/tests/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.asm.frag b/tests/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.asm.frag new file mode 100644 index 000000000000..1316a7224871 --- /dev/null +++ b/tests/sksl/spirv/WrongCombinedSamplerLayoutForWebGPUSampler.asm.frag @@ -0,0 +1,6 @@ +### Compilation failed: + +error: 1: selected backend requires separate texture and sampler indices +layout(webgpu, set=0, binding=0) sampler2D aSampler; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 error diff --git a/tests/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.asm.frag b/tests/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.asm.frag deleted file mode 100644 index b9fc08d59c28..000000000000 --- a/tests/sksl/spirv/WrongCombinedSamplerLayoutSPIRVDawnCompatMode.asm.frag +++ /dev/null @@ -1,6 +0,0 @@ -### Compilation failed: - -error: 2: SPIR-V dawn compatibility mode requires an explicit texture and sampler index -layout(set=0, binding=0) uniform sampler2D aSampler; -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -1 error diff --git a/tests/sksl/wgsl/BuiltinFragmentStageIO.wgsl b/tests/sksl/wgsl/BuiltinFragmentStageIO.wgsl index 6aeac569e961..6ee31bb99547 100644 --- a/tests/sksl/wgsl/BuiltinFragmentStageIO.wgsl +++ b/tests/sksl/wgsl/BuiltinFragmentStageIO.wgsl @@ -6,15 +6,15 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { var x: f32 = _stageIn.sk_FragCoord.x; var y: f32 = f32(_stageIn.sk_Clockwise); (*_stageOut).sk_FragColor = vec4(f32(x), f32(y), 1.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/BuiltinVertexStageIO.wgsl b/tests/sksl/wgsl/BuiltinVertexStageIO.wgsl index 46357ccfc0ff..09825e4186cb 100644 --- a/tests/sksl/wgsl/BuiltinVertexStageIO.wgsl +++ b/tests/sksl/wgsl/BuiltinVertexStageIO.wgsl @@ -7,7 +7,7 @@ struct VSOut { @builtin(position) sk_Position: vec4, }; /* unsupported */ var sk_PointSize: f32; -fn main(_stageIn: VSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: VSIn, _stageOut: ptr) { { var x: f32 = f32(i32(_stageIn.sk_VertexID)); var y: f32 = f32(i32(_stageIn.sk_InstanceID)); @@ -15,8 +15,8 @@ fn main(_stageIn: VSIn, _stageOut: ptr) { (*_stageOut).sk_Position = vec4(x, y, 1.0, 1.0); } } -@vertex fn vertexMain(_stageIn: VSIn) -> VSOut { +@vertex fn main(_stageIn: VSIn) -> VSOut { var _stageOut: VSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastMat2x2ToMat3x3.wgsl b/tests/sksl/wgsl/CastMat2x2ToMat3x3.wgsl index 8d1dc278f1c1..1e4d1f955334 100644 --- a/tests/sksl/wgsl/CastMat2x2ToMat3x3.wgsl +++ b/tests/sksl/wgsl/CastMat2x2ToMat3x3.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: mat3x3 = mat3x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); let _skTemp0 = mat2x2(1.0, 0.0, 0.0, 1.0); @@ -13,8 +13,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = f32(select(1, 0, all(a[0] == b[0]))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastMat2x2ToVec4.wgsl b/tests/sksl/wgsl/CastMat2x2ToVec4.wgsl index cb1701092e93..7c48b8633ce4 100644 --- a/tests/sksl/wgsl/CastMat2x2ToVec4.wgsl +++ b/tests/sksl/wgsl/CastMat2x2ToVec4.wgsl @@ -10,13 +10,13 @@ struct _GlobalUniforms { h: mat2x2, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = (vec4(_globalUniforms.h[0], _globalUniforms.h[1]) + vec4(vec4(_globalUniforms.f[0], _globalUniforms.f[1]))) + vec4(vec4(vec4(_globalUniforms.h[0], _globalUniforms.h[1])) + vec4(_globalUniforms.f[0], _globalUniforms.f[1])); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastMat2x3ToMat4x4.wgsl b/tests/sksl/wgsl/CastMat2x3ToMat4x4.wgsl index 6093f17399c3..db272876b4e0 100644 --- a/tests/sksl/wgsl/CastMat2x3ToMat4x4.wgsl +++ b/tests/sksl/wgsl/CastMat2x3ToMat4x4.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: mat4x4 = mat4x4(6.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0, 0.0, 0.0, 0.0, 6.0, 0.0, 0.0, 0.0, 0.0, 6.0); let _skTemp0 = mat2x3(7.0, 0.0, 0.0, 0.0, 7.0, 0.0); @@ -13,8 +13,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = f32(select(1, 0, all(a[1] == b[1]))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastMat4x4ToMat3x4.wgsl b/tests/sksl/wgsl/CastMat4x4ToMat3x4.wgsl index 05c8fb7d2c1d..391ba6324320 100644 --- a/tests/sksl/wgsl/CastMat4x4ToMat3x4.wgsl +++ b/tests/sksl/wgsl/CastMat4x4ToMat3x4.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: mat3x4 = mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); let _skTemp0 = mat4x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); @@ -13,8 +13,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = f32(select(1, 0, all(a[0] == b[0]))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastMat4x4ToMat4x3.wgsl b/tests/sksl/wgsl/CastMat4x4ToMat4x3.wgsl index 58e7759bdf36..98af9ff32a1c 100644 --- a/tests/sksl/wgsl/CastMat4x4ToMat4x3.wgsl +++ b/tests/sksl/wgsl/CastMat4x4ToMat4x3.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: mat4x3 = mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); let _skTemp0 = mat4x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); @@ -13,8 +13,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor.x = f32(select(1, 0, all(a[0] == b[0]))); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/CastVec4ToMat2x2.wgsl b/tests/sksl/wgsl/CastVec4ToMat2x2.wgsl index 6cb9d9b74b48..43cd5cd380c3 100644 --- a/tests/sksl/wgsl/CastVec4ToMat2x2.wgsl +++ b/tests/sksl/wgsl/CastVec4ToMat2x2.wgsl @@ -5,7 +5,7 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var m1: mat2x2 = mat2x2(1.0, 2.0, 3.0, 4.0); var m2: mat2x2 = mat2x2(1.0, 2.0, 3.0, 4.0); @@ -14,8 +14,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = ((m1 * m2) * mat2x2(m3 * m4)[0]).xyxy; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/EntrypointIsWrittenLast.wgsl b/tests/sksl/wgsl/EntrypointIsWrittenLast.wgsl new file mode 100644 index 000000000000..02adc545a365 --- /dev/null +++ b/tests/sksl/wgsl/EntrypointIsWrittenLast.wgsl @@ -0,0 +1,40 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, + @builtin(position) sk_FragCoord: vec4, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct Uniforms { + colorGreen: vec4, +}; +@group(0) @binding(0) var _uniform0 : Uniforms; +fn this_function_is_defined_before_use_h4h4(x: vec4) -> vec4 { + { + let _skTemp1 = this_function_is_defined_near_the_end_h4h4(x); + return -_skTemp1; + } +} +fn _skslMain(coords: vec2) -> vec4 { + { + let _skTemp2 = this_function_is_defined_after_use_h4h4(_uniform0.colorGreen); + return _skTemp2; + } +} +fn this_function_is_defined_after_use_h4h4(x: vec4) -> vec4 { + { + let _skTemp3 = this_function_is_defined_before_use_h4h4(-x); + return _skTemp3; + } +} +fn this_function_is_defined_near_the_end_h4h4(x: vec4) -> vec4 { + { + return x; + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); + return _stageOut; +} diff --git a/tests/sksl/wgsl/Equality.wgsl b/tests/sksl/wgsl/Equality.wgsl index 06350b39e103..cda2ef2f3c8d 100644 --- a/tests/sksl/wgsl/Equality.wgsl +++ b/tests/sksl/wgsl/Equality.wgsl @@ -28,7 +28,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main() -> vec4 { +fn _skslMain() -> vec4 { { var ok: bool = true; ok = ok && (_globalUniforms.f1 == _globalUniforms.f2); @@ -62,8 +62,8 @@ fn main() -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(); + _stageOut.sk_FragColor = _skslMain(); return _stageOut; } diff --git a/tests/sksl/wgsl/FunctionCallDependencies.wgsl b/tests/sksl/wgsl/FunctionCallDependencies.wgsl index 9d62010b6b8a..2d7d4de84ab0 100644 --- a/tests/sksl/wgsl/FunctionCallDependencies.wgsl +++ b/tests/sksl/wgsl/FunctionCallDependencies.wgsl @@ -6,21 +6,18 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn getColor_h4h(_skParam0: f32) -> vec4 { - let c = _skParam0; +fn getColor_h4h(c: f32) -> vec4 { { return vec4(c); } } -fn getFragCoordAugmentedColor_h4h(_stageIn: FSIn, _skParam0: f32) -> vec4 { - let c = _skParam0; +fn getFragCoordAugmentedColor_h4h(_stageIn: FSIn, c: f32) -> vec4 { { let _skTemp0 = getColor_h4h(c); return vec4(_stageIn.sk_FragCoord.xyxy * vec4(_skTemp0)); } } -fn writeColorToOutput_vh(_stageOut: ptr, _skParam0: f32) { - let c = _skParam0; +fn writeColorToOutput_vh(_stageOut: ptr, c: f32) { { let _skTemp1 = getColor_h4h(c); (*_stageOut).sk_FragColor = _skTemp1; @@ -37,14 +34,14 @@ fn modifyOutputColor_v(_stageIn: FSIn, _stageOut: ptr) { (*_stageOut).sk_FragColor = (*_stageOut).sk_FragColor + _skTemp2; } } -fn main(_stageIn: FSIn, _stageOut: ptr) { +fn _skslMain(_stageIn: FSIn, _stageOut: ptr) { { writeToOutput_v(_stageOut); modifyOutputColor_v(_stageIn, _stageOut); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(_stageIn, &_stageOut); + _skslMain(_stageIn, &_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/GlobalUniforms.wgsl b/tests/sksl/wgsl/GlobalUniforms.wgsl index 16c9435888bf..204e8d547822 100644 --- a/tests/sksl/wgsl/GlobalUniforms.wgsl +++ b/tests/sksl/wgsl/GlobalUniforms.wgsl @@ -8,16 +8,16 @@ struct FSOut { struct _GlobalUniforms { colorGreen: vec4, colorRed: vec4, - _array: array, 5>, + R_array: array, 5>, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main() -> vec4 { +fn _skslMain() -> vec4 { { return vec4(_globalUniforms.colorGreen.x, _globalUniforms.colorRed.x, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(); + _stageOut.sk_FragColor = _skslMain(); return _stageOut; } diff --git a/tests/sksl/wgsl/IfStatement.wgsl b/tests/sksl/wgsl/IfStatement.wgsl index af299309e18d..696a34e2ae73 100644 --- a/tests/sksl/wgsl/IfStatement.wgsl +++ b/tests/sksl/wgsl/IfStatement.wgsl @@ -54,14 +54,14 @@ fn braced_v(_stageOut: ptr) { } } } -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { unbraced_v(_stageOut); braced_v(_stageOut); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/IndexExpression.wgsl b/tests/sksl/wgsl/IndexExpression.wgsl index 5a3e91201e6f..a725ead446f8 100644 --- a/tests/sksl/wgsl/IndexExpression.wgsl +++ b/tests/sksl/wgsl/IndexExpression.wgsl @@ -6,21 +6,21 @@ struct FSOut { @location(0) sk_FragColor: vec4, }; struct _GlobalUniforms { - _array: array, 5>, + R_array: array, 5>, vector: vec2, matrix: mat2x2, idx: i32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main() -> vec4 { +fn _skslMain() -> vec4 { { let _skTemp0 = _globalUniforms.idx + 1; let _skTemp1 = _globalUniforms.idx + 1; - return vec4(f32(_globalUniforms._array[_globalUniforms.idx][_globalUniforms.idx]), f32(_globalUniforms.vector[_skTemp0]), f32(_globalUniforms.matrix[_globalUniforms.idx][_skTemp1]), 1.0); + return vec4(f32(_globalUniforms.R_array[_globalUniforms.idx][_globalUniforms.idx]), f32(_globalUniforms.vector[_skTemp0]), f32(_globalUniforms.matrix[_globalUniforms.idx][_skTemp1]), 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(); + _stageOut.sk_FragColor = _skslMain(); return _stageOut; } diff --git a/tests/sksl/wgsl/InterfaceBlockUniforms.wgsl b/tests/sksl/wgsl/InterfaceBlockUniforms.wgsl index cb2e59d3d251..a8b4b03c9362 100644 --- a/tests/sksl/wgsl/InterfaceBlockUniforms.wgsl +++ b/tests/sksl/wgsl/InterfaceBlockUniforms.wgsl @@ -5,27 +5,31 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -struct _skRow2 { - @size(16) r : vec2 -}; -struct _skMatrix22 { - c : array<_skRow2, 2> -}; -fn _skMatrixUnpack22(m : _skMatrix22) -> mat2x2 { - return mat2x2(m.c[0].r, m.c[1].r); -} struct UniformBuffer { @size(32) m1: _skMatrix22, m2: _skMatrix22, }; @group(12) @binding(34) var _uniform0 : UniformBuffer; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { - (*_stageOut).sk_FragColor = vec4(_skMatrixUnpack22(_uniform0.m1)[0].x, _skMatrixUnpack22(_uniform0.m1)[1].y, _skMatrixUnpack22(_uniform0.m2)[0].x, _skMatrixUnpack22(_uniform0.m2)[1].y); + (*_stageOut).sk_FragColor = vec4(_skUnpacked__uniform0_m1[0].x, _skUnpacked__uniform0_m1[1].y, _skUnpacked__uniform0_m2[0].x, _skUnpacked__uniform0_m2[1].y); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { + _skInitializePolyfilledUniforms(); var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } +struct _skRow2 { + @size(16) r : vec2 +}; +struct _skMatrix22 { + c : array<_skRow2, 2> +}; +var _skUnpacked__uniform0_m1: mat2x2; +var _skUnpacked__uniform0_m2: mat2x2; +fn _skInitializePolyfilledUniforms() { + _skUnpacked__uniform0_m1 = mat2x2(_uniform0.m1.c[0].r, _uniform0.m1.c[1].r); + _skUnpacked__uniform0_m2 = mat2x2(_uniform0.m2.c[0].r, _uniform0.m2.c[1].r); +} diff --git a/tests/sksl/wgsl/MainDoesNotHaveFragCoordParameter.wgsl b/tests/sksl/wgsl/MainDoesNotHaveFragCoordParameter.wgsl index b14a59902fdc..9509a1f14bb9 100644 --- a/tests/sksl/wgsl/MainDoesNotHaveFragCoordParameter.wgsl +++ b/tests/sksl/wgsl/MainDoesNotHaveFragCoordParameter.wgsl @@ -6,13 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageIn: FSIn) -> vec4 { +fn _skslMain(_stageIn: FSIn) -> vec4 { { return vec4(f32(_stageIn.sk_FragCoord.x), 0.0, 0.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn); + _stageOut.sk_FragColor = _skslMain(_stageIn); return _stageOut; } diff --git a/tests/sksl/wgsl/MainHasFragCoordParameter.wgsl b/tests/sksl/wgsl/MainHasFragCoordParameter.wgsl index 7302da719333..9cf299ab8246 100644 --- a/tests/sksl/wgsl/MainHasFragCoordParameter.wgsl +++ b/tests/sksl/wgsl/MainHasFragCoordParameter.wgsl @@ -6,14 +6,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { return vec4(f32(coords.x), f32(coords.y), 1.0, 1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/wgsl/MainHasVoidReturn.wgsl b/tests/sksl/wgsl/MainHasVoidReturn.wgsl index b2e5388e4fca..7d083ac8e497 100644 --- a/tests/sksl/wgsl/MainHasVoidReturn.wgsl +++ b/tests/sksl/wgsl/MainHasVoidReturn.wgsl @@ -5,13 +5,13 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { (*_stageOut).sk_FragColor = vec4(1.0); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/MatrixConstructorDiagonal.wgsl b/tests/sksl/wgsl/MatrixConstructorDiagonal.wgsl index e46d987afaec..c376234e79b8 100644 --- a/tests/sksl/wgsl/MatrixConstructorDiagonal.wgsl +++ b/tests/sksl/wgsl/MatrixConstructorDiagonal.wgsl @@ -12,7 +12,7 @@ struct _GlobalUniforms { f: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn main() -> vec4 { +fn _skslMain() -> vec4 { { var ok: bool = true; ok = ok && all((mat2x2(2.0, 0.0, 0.0, 2.0) * vec2(_globalUniforms.f)) == vec2(2.0 * _globalUniforms.f)); @@ -20,8 +20,8 @@ fn main() -> vec4 { return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4(ok)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(); + _stageOut.sk_FragColor = _skslMain(); return _stageOut; } diff --git a/tests/sksl/wgsl/OutParams.wgsl b/tests/sksl/wgsl/OutParams.wgsl index 8d9a99f38393..49c60f1fc7a6 100644 --- a/tests/sksl/wgsl/OutParams.wgsl +++ b/tests/sksl/wgsl/OutParams.wgsl @@ -9,24 +9,19 @@ struct _GlobalUniforms { uFloat: f32, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn various_parameter_types_vhhh(_stageOut: ptr, _skParam0: f32, _skParam1: ptr, _skParam2: ptr) { - let a = _skParam0; - let b = _skParam1; - let c = _skParam2; +fn various_parameter_types_vhhh(_stageOut: ptr, a: f32, b: ptr, c: ptr) { { (*_stageOut).sk_FragColor = vec4(a, (*b), (*c), _globalUniforms.uFloat); (*b) = a; (*c) = _globalUniforms.uFloat; } } -fn one_out_param_vh(_skParam0: ptr) { - let h = _skParam0; +fn one_out_param_vh(h: ptr) { { (*h) = 2.0; } } -fn one_out_param_indirect_vh(_skParam0: ptr) { - let h = _skParam0; +fn one_out_param_indirect_vh(h: ptr) { { var _skTemp0: f32; one_out_param_vh(&_skTemp0); @@ -36,7 +31,7 @@ fn one_out_param_indirect_vh(_skParam0: ptr) { struct S { v: vec4, }; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var x: f32 = 1.0; var _skTemp1: f32; @@ -79,8 +74,8 @@ fn main(_stageOut: ptr) { x = _skTemp14; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/Sample.wgsl b/tests/sksl/wgsl/Sample.wgsl index c317e43d01a8..df715f027d3a 100644 --- a/tests/sksl/wgsl/Sample.wgsl +++ b/tests/sksl/wgsl/Sample.wgsl @@ -7,7 +7,7 @@ struct FSOut { }; @group(1) @binding(3) var tex_Sampler: sampler; @group(1) @binding(2) var tex_Texture: texture_2d; -fn main(_stageOut: ptr) { +fn _skslMain(_stageOut: ptr) { { var a: vec4 = textureSample(tex_Texture, tex_Sampler, vec2(1.0)); let _skTemp0 = vec3(1.0); @@ -17,8 +17,8 @@ fn main(_stageOut: ptr) { (*_stageOut).sk_FragColor = (a * b) * c; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(&_stageOut); + _skslMain(&_stageOut); return _stageOut; } diff --git a/tests/sksl/wgsl/TernaryThenShortCircuit.wgsl b/tests/sksl/wgsl/TernaryThenShortCircuit.wgsl index 32b1536fd00f..c211b791cbe5 100644 --- a/tests/sksl/wgsl/TernaryThenShortCircuit.wgsl +++ b/tests/sksl/wgsl/TernaryThenShortCircuit.wgsl @@ -1,14 +1,14 @@ /* -:62:3 warning: code is unreachable +:61:3 warning: code is unreachable return bool(); ^^^^^^ -:95:3 warning: code is unreachable +:94:3 warning: code is unreachable return bool(); ^^^^^^ -:128:3 warning: code is unreachable +:127:3 warning: code is unreachable return bool(); ^^^^^^ @@ -27,8 +27,7 @@ struct _GlobalUniforms { colorRed: vec4, }; @binding(0) @group(0) var _globalUniforms: _GlobalUniforms; -fn Increment_ii(_skParam0: ptr) -> i32 { - let y = _skParam0; +fn Increment_ii(y: ptr) -> i32 { { (*y) = (*y) + 1; return (*y); @@ -143,8 +142,7 @@ fn FalseFalse_b() -> bool { } return bool(); } -fn main(_skParam0: vec2) -> vec4 { - let coords = _skParam0; +fn _skslMain(coords: vec2) -> vec4 { { var _0_TrueTrue: bool; var _2_y: i32 = 1; @@ -197,8 +195,8 @@ fn main(_skParam0: vec2) -> vec4 { return _skTemp22; } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - _stageOut.sk_FragColor = main(_stageIn.sk_FragCoord.xy); + _stageOut.sk_FragColor = _skslMain(_stageIn.sk_FragCoord.xy); return _stageOut; } diff --git a/tests/sksl/wgsl/UniformArrays.wgsl b/tests/sksl/wgsl/UniformArrays.wgsl new file mode 100644 index 000000000000..2ea22121c969 --- /dev/null +++ b/tests/sksl/wgsl/UniformArrays.wgsl @@ -0,0 +1,114 @@ +diagnostic(off, derivative_uniformity); +struct FSIn { + @builtin(front_facing) sk_Clockwise: bool, +}; +struct FSOut { + @location(0) sk_FragColor: vec4, +}; +struct UniformBuffer { + uf: array<_skArrayElement_f, 3>, + uf2: array<_skArrayElement_f2, 3>, + uf3: array<_skArrayElement_f3, 3>, + uf4: array, 3>, + uh: array<_skArrayElement_h, 3>, + uh2: array<_skArrayElement_h2, 3>, + uh3: array<_skArrayElement_h3, 3>, + uh4: array, 3>, + ui: array<_skArrayElement_i, 3>, + ui2: array<_skArrayElement_i2, 3>, + ui3: array<_skArrayElement_i3, 3>, + ui4: array, 3>, +}; +@group(0) @binding(1) var _uniform0 : UniformBuffer; +struct StorageBuffer { + sf: array<_skArrayElement_f, 4>, + sf2: array<_skArrayElement_f2, 4>, + sf3: array<_skArrayElement_f3, 4>, + sf4: array, 4>, + sh: array<_skArrayElement_h, 4>, + sh2: array<_skArrayElement_h2, 4>, + sh3: array<_skArrayElement_h3, 4>, + sh4: array, 4>, + si: array<_skArrayElement_i, 4>, + si2: array<_skArrayElement_i2, 4>, + si3: array<_skArrayElement_i3, 4>, + si4: array, 4>, +}; +@group(0) @binding(2) var _storage1 : StorageBuffer; +fn _skslMain() -> vec4 { + { + var value: f32 = ((((((((((((((((((((((_skUnpacked__uniform0_uf[1] + _skUnpacked__uniform0_uf2[1].x) + _skUnpacked__uniform0_uf3[1].x) + _uniform0.uf4[1].x) + f32(_skUnpacked__uniform0_uh[1])) + f32(_skUnpacked__uniform0_uh2[1].x)) + f32(_skUnpacked__uniform0_uh3[1].x)) + f32(_uniform0.uh4[1].x)) + f32(_skUnpacked__uniform0_ui[1])) + f32(_skUnpacked__uniform0_ui2[1].x)) + f32(_skUnpacked__uniform0_ui3[1].x)) + f32(_uniform0.ui4[1].x)) + _skUnpacked__storage1_sf[1]) + _skUnpacked__storage1_sf2[1].x) + _skUnpacked__storage1_sf3[1].x) + _storage1.sf4[1].x) + f32(_skUnpacked__storage1_sh[1])) + f32(_skUnpacked__storage1_sh2[1].x)) + f32(_skUnpacked__storage1_sh3[1].x)) + f32(_storage1.sh4[1].x)) + f32(_skUnpacked__storage1_si[1])) + f32(_skUnpacked__storage1_si2[1].x)) + f32(_skUnpacked__storage1_si3[1].x)) + f32(_storage1.si4[1].x); + return vec4(f32(value)); + } +} +@fragment fn main(_stageIn: FSIn) -> FSOut { + _skInitializePolyfilledUniforms(); + var _stageOut: FSOut; + _stageOut.sk_FragColor = _skslMain(); + return _stageOut; +} +struct _skArrayElement_f { + @size(16) e : f32 +}; +var _skUnpacked__storage1_sf: array; +struct _skArrayElement_f2 { + @size(16) e : vec2 +}; +var _skUnpacked__storage1_sf2: array, 4>; +struct _skArrayElement_f3 { + @size(16) e : vec3 +}; +var _skUnpacked__storage1_sf3: array, 4>; +struct _skArrayElement_h { + @size(16) e : f32 +}; +var _skUnpacked__storage1_sh: array; +struct _skArrayElement_h2 { + @size(16) e : vec2 +}; +var _skUnpacked__storage1_sh2: array, 4>; +struct _skArrayElement_h3 { + @size(16) e : vec3 +}; +var _skUnpacked__storage1_sh3: array, 4>; +struct _skArrayElement_i { + @size(16) e : i32 +}; +var _skUnpacked__storage1_si: array; +struct _skArrayElement_i2 { + @size(16) e : vec2 +}; +var _skUnpacked__storage1_si2: array, 4>; +struct _skArrayElement_i3 { + @size(16) e : vec3 +}; +var _skUnpacked__storage1_si3: array, 4>; +var _skUnpacked__uniform0_uf: array; +var _skUnpacked__uniform0_uf2: array, 3>; +var _skUnpacked__uniform0_uf3: array, 3>; +var _skUnpacked__uniform0_uh: array; +var _skUnpacked__uniform0_uh2: array, 3>; +var _skUnpacked__uniform0_uh3: array, 3>; +var _skUnpacked__uniform0_ui: array; +var _skUnpacked__uniform0_ui2: array, 3>; +var _skUnpacked__uniform0_ui3: array, 3>; +fn _skInitializePolyfilledUniforms() { + _skUnpacked__storage1_sf = array(_storage1.sf[0].e, _storage1.sf[1].e, _storage1.sf[2].e, _storage1.sf[3].e); + _skUnpacked__storage1_sf2 = array, 4>(_storage1.sf2[0].e, _storage1.sf2[1].e, _storage1.sf2[2].e, _storage1.sf2[3].e); + _skUnpacked__storage1_sf3 = array, 4>(_storage1.sf3[0].e, _storage1.sf3[1].e, _storage1.sf3[2].e, _storage1.sf3[3].e); + _skUnpacked__storage1_sh = array(_storage1.sh[0].e, _storage1.sh[1].e, _storage1.sh[2].e, _storage1.sh[3].e); + _skUnpacked__storage1_sh2 = array, 4>(_storage1.sh2[0].e, _storage1.sh2[1].e, _storage1.sh2[2].e, _storage1.sh2[3].e); + _skUnpacked__storage1_sh3 = array, 4>(_storage1.sh3[0].e, _storage1.sh3[1].e, _storage1.sh3[2].e, _storage1.sh3[3].e); + _skUnpacked__storage1_si = array(_storage1.si[0].e, _storage1.si[1].e, _storage1.si[2].e, _storage1.si[3].e); + _skUnpacked__storage1_si2 = array, 4>(_storage1.si2[0].e, _storage1.si2[1].e, _storage1.si2[2].e, _storage1.si2[3].e); + _skUnpacked__storage1_si3 = array, 4>(_storage1.si3[0].e, _storage1.si3[1].e, _storage1.si3[2].e, _storage1.si3[3].e); + _skUnpacked__uniform0_uf = array(_uniform0.uf[0].e, _uniform0.uf[1].e, _uniform0.uf[2].e); + _skUnpacked__uniform0_uf2 = array, 3>(_uniform0.uf2[0].e, _uniform0.uf2[1].e, _uniform0.uf2[2].e); + _skUnpacked__uniform0_uf3 = array, 3>(_uniform0.uf3[0].e, _uniform0.uf3[1].e, _uniform0.uf3[2].e); + _skUnpacked__uniform0_uh = array(_uniform0.uh[0].e, _uniform0.uh[1].e, _uniform0.uh[2].e); + _skUnpacked__uniform0_uh2 = array, 3>(_uniform0.uh2[0].e, _uniform0.uh2[1].e, _uniform0.uh2[2].e); + _skUnpacked__uniform0_uh3 = array, 3>(_uniform0.uh3[0].e, _uniform0.uh3[1].e, _uniform0.uh3[2].e); + _skUnpacked__uniform0_ui = array(_uniform0.ui[0].e, _uniform0.ui[1].e, _uniform0.ui[2].e); + _skUnpacked__uniform0_ui2 = array, 3>(_uniform0.ui2[0].e, _uniform0.ui2[1].e, _uniform0.ui2[2].e); + _skUnpacked__uniform0_ui3 = array, 3>(_uniform0.ui3[0].e, _uniform0.ui3[1].e, _uniform0.ui3[2].e); +} diff --git a/tests/sksl/wgsl/UniformMatrices.wgsl b/tests/sksl/wgsl/UniformMatrices.wgsl index 66a110821f5c..479cd4a7916e 100644 --- a/tests/sksl/wgsl/UniformMatrices.wgsl +++ b/tests/sksl/wgsl/UniformMatrices.wgsl @@ -5,37 +5,25 @@ struct FSIn { struct FSOut { @location(0) sk_FragColor: vec4, }; -struct _skRow2 { - @size(16) r : vec2 -}; -struct _skMatrix22 { - c : array<_skRow2, 2> -}; -fn _skMatrixUnpack22(m : _skMatrix22) -> mat2x2 { - return mat2x2(m.c[0].r, m.c[1].r); -} -struct _skMatrix32 { - c : array<_skRow2, 3> -}; -fn _skMatrixUnpack32(m : _skMatrix32) -> mat3x2 { - return mat3x2(m.c[0].r, m.c[1].r, m.c[2].r); -} -struct _skMatrix42 { - c : array<_skRow2, 4> -}; -fn _skMatrixUnpack42(m : _skMatrix42) -> mat4x2 { - return mat4x2(m.c[0].r, m.c[1].r, m.c[2].r, m.c[3].r); -} struct UniformBuffer { u22: _skMatrix22, u23: mat2x3, u24: mat2x4, - u32: _skMatrix32, + R_u32: _skMatrix32, u33: mat3x3, u34: mat3x4, u42: _skMatrix42, u43: mat4x3, u44: mat4x4, + au22: array<_skArrayElement_f22, 3>, + au23: array, 3>, + au24: array, 3>, + au32: array<_skArrayElement_f32, 3>, + au33: array, 3>, + au34: array, 3>, + au42: array<_skArrayElement_f42, 3>, + au43: array, 3>, + au44: array, 3>, }; @group(0) @binding(1) var _uniform0 : UniformBuffer; struct StorageBuffer { @@ -48,15 +36,73 @@ struct StorageBuffer { s42: _skMatrix42, s43: mat4x3, s44: mat4x4, + as22: array<_skArrayElement_f22, 3>, + as23: array, 3>, + as24: array, 3>, + as32: array<_skArrayElement_f32, 3>, + as33: array, 3>, + as34: array, 3>, + as42: array<_skArrayElement_f42, 3>, + as43: array, 3>, + as44: array, 3>, }; @group(0) @binding(2) var _storage1 : StorageBuffer; -fn main() -> vec4 { +fn _skslMain() -> vec4 { { - return vec4(0.0); + var value: f32 = ((((((((((((((((((((((((((((((((((_skUnpacked__uniform0_u22[0].x + _uniform0.u23[0].x) + _uniform0.u24[0].x) + _skUnpacked__uniform0_R_u32[0].x) + _uniform0.u33[0].x) + _uniform0.u34[0].x) + _skUnpacked__uniform0_u42[0].x) + _uniform0.u43[0].x) + _uniform0.au44[0][0].x) + _skUnpacked__uniform0_au22[0][0].x) + _uniform0.au23[0][0].x) + _uniform0.au24[0][0].x) + _skUnpacked__uniform0_au32[0][0].x) + _uniform0.au33[0][0].x) + _uniform0.au34[0][0].x) + _skUnpacked__uniform0_au42[0][0].x) + _uniform0.au43[0][0].x) + _uniform0.au44[0][0].x) + _skUnpacked__storage1_s22[0].x) + _storage1.s23[0].x) + _storage1.s24[0].x) + _skUnpacked__storage1_s32[0].x) + _storage1.s33[0].x) + _storage1.s34[0].x) + _skUnpacked__storage1_s42[0].x) + _storage1.s43[0].x) + _storage1.as44[0][0].x) + _skUnpacked__storage1_as22[0][0].x) + _storage1.as23[0][0].x) + _storage1.as24[0][0].x) + _skUnpacked__storage1_as32[0][0].x) + _storage1.as33[0][0].x) + _storage1.as34[0][0].x) + _skUnpacked__storage1_as42[0][0].x) + _storage1.as43[0][0].x) + _storage1.as44[0][0].x; + return vec4(f32(value)); } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { + _skInitializePolyfilledUniforms(); var _stageOut: FSOut; - _stageOut.sk_FragColor = main(); + _stageOut.sk_FragColor = _skslMain(); return _stageOut; } +struct _skArrayElement_f22 { + e : _skMatrix22 +}; +struct _skRow2 { + @size(16) r : vec2 +}; +struct _skMatrix22 { + c : array<_skRow2, 2> +}; +var _skUnpacked__storage1_as22: array, 3>; +struct _skArrayElement_f32 { + e : _skMatrix32 +}; +struct _skMatrix32 { + c : array<_skRow2, 3> +}; +var _skUnpacked__storage1_as32: array, 3>; +struct _skArrayElement_f42 { + e : _skMatrix42 +}; +struct _skMatrix42 { + c : array<_skRow2, 4> +}; +var _skUnpacked__storage1_as42: array, 3>; +var _skUnpacked__storage1_s22: mat2x2; +var _skUnpacked__storage1_s32: mat3x2; +var _skUnpacked__storage1_s42: mat4x2; +var _skUnpacked__uniform0_R_u32: mat3x2; +var _skUnpacked__uniform0_au22: array, 3>; +var _skUnpacked__uniform0_au32: array, 3>; +var _skUnpacked__uniform0_au42: array, 3>; +var _skUnpacked__uniform0_u22: mat2x2; +var _skUnpacked__uniform0_u42: mat4x2; +fn _skInitializePolyfilledUniforms() { + _skUnpacked__storage1_as22 = array, 3>(mat2x2(_storage1.as22[0].e.c[0].r, _storage1.as22[0].e.c[1].r), mat2x2(_storage1.as22[1].e.c[0].r, _storage1.as22[1].e.c[1].r), mat2x2(_storage1.as22[2].e.c[0].r, _storage1.as22[2].e.c[1].r)); + _skUnpacked__storage1_as32 = array, 3>(mat3x2(_storage1.as32[0].e.c[0].r, _storage1.as32[0].e.c[1].r, _storage1.as32[0].e.c[2].r), mat3x2(_storage1.as32[1].e.c[0].r, _storage1.as32[1].e.c[1].r, _storage1.as32[1].e.c[2].r), mat3x2(_storage1.as32[2].e.c[0].r, _storage1.as32[2].e.c[1].r, _storage1.as32[2].e.c[2].r)); + _skUnpacked__storage1_as42 = array, 3>(mat4x2(_storage1.as42[0].e.c[0].r, _storage1.as42[0].e.c[1].r, _storage1.as42[0].e.c[2].r, _storage1.as42[0].e.c[3].r), mat4x2(_storage1.as42[1].e.c[0].r, _storage1.as42[1].e.c[1].r, _storage1.as42[1].e.c[2].r, _storage1.as42[1].e.c[3].r), mat4x2(_storage1.as42[2].e.c[0].r, _storage1.as42[2].e.c[1].r, _storage1.as42[2].e.c[2].r, _storage1.as42[2].e.c[3].r)); + _skUnpacked__storage1_s22 = mat2x2(_storage1.s22.c[0].r, _storage1.s22.c[1].r); + _skUnpacked__storage1_s32 = mat3x2(_storage1.s32.c[0].r, _storage1.s32.c[1].r, _storage1.s32.c[2].r); + _skUnpacked__storage1_s42 = mat4x2(_storage1.s42.c[0].r, _storage1.s42.c[1].r, _storage1.s42.c[2].r, _storage1.s42.c[3].r); + _skUnpacked__uniform0_R_u32 = mat3x2(_uniform0.R_u32.c[0].r, _uniform0.R_u32.c[1].r, _uniform0.R_u32.c[2].r); + _skUnpacked__uniform0_au22 = array, 3>(mat2x2(_uniform0.au22[0].e.c[0].r, _uniform0.au22[0].e.c[1].r), mat2x2(_uniform0.au22[1].e.c[0].r, _uniform0.au22[1].e.c[1].r), mat2x2(_uniform0.au22[2].e.c[0].r, _uniform0.au22[2].e.c[1].r)); + _skUnpacked__uniform0_au32 = array, 3>(mat3x2(_uniform0.au32[0].e.c[0].r, _uniform0.au32[0].e.c[1].r, _uniform0.au32[0].e.c[2].r), mat3x2(_uniform0.au32[1].e.c[0].r, _uniform0.au32[1].e.c[1].r, _uniform0.au32[1].e.c[2].r), mat3x2(_uniform0.au32[2].e.c[0].r, _uniform0.au32[2].e.c[1].r, _uniform0.au32[2].e.c[2].r)); + _skUnpacked__uniform0_au42 = array, 3>(mat4x2(_uniform0.au42[0].e.c[0].r, _uniform0.au42[0].e.c[1].r, _uniform0.au42[0].e.c[2].r, _uniform0.au42[0].e.c[3].r), mat4x2(_uniform0.au42[1].e.c[0].r, _uniform0.au42[1].e.c[1].r, _uniform0.au42[1].e.c[2].r, _uniform0.au42[1].e.c[3].r), mat4x2(_uniform0.au42[2].e.c[0].r, _uniform0.au42[2].e.c[1].r, _uniform0.au42[2].e.c[2].r, _uniform0.au42[2].e.c[3].r)); + _skUnpacked__uniform0_u22 = mat2x2(_uniform0.u22.c[0].r, _uniform0.u22.c[1].r); + _skUnpacked__uniform0_u42 = mat4x2(_uniform0.u42.c[0].r, _uniform0.u42.c[1].r, _uniform0.u42.c[2].r, _uniform0.u42.c[3].r); +} diff --git a/tests/sksl/wgsl/UserDefinedPipelineIO.wgsl b/tests/sksl/wgsl/UserDefinedPipelineIO.wgsl index fb3221ed3b9d..8e363d281385 100644 --- a/tests/sksl/wgsl/UserDefinedPipelineIO.wgsl +++ b/tests/sksl/wgsl/UserDefinedPipelineIO.wgsl @@ -14,12 +14,12 @@ struct FSOut { @location(4) @interpolate(flat) output4: i32, @location(5) @interpolate(flat) output5: vec2, }; -fn main() { +fn _skslMain() { { } } -@fragment fn fragmentMain(_stageIn: FSIn) -> FSOut { +@fragment fn main(_stageIn: FSIn) -> FSOut { var _stageOut: FSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/wgsl/VertexPositionOutputIsAlwaysDeclared.wgsl b/tests/sksl/wgsl/VertexPositionOutputIsAlwaysDeclared.wgsl index 90f16ce6ce95..9033ac3ae59c 100644 --- a/tests/sksl/wgsl/VertexPositionOutputIsAlwaysDeclared.wgsl +++ b/tests/sksl/wgsl/VertexPositionOutputIsAlwaysDeclared.wgsl @@ -2,12 +2,12 @@ diagnostic(off, derivative_uniformity); struct VSOut { @builtin(position) sk_Position: vec4, }; -fn main() { +fn _skslMain() { { } } -@vertex fn vertexMain() -> VSOut { +@vertex fn main() -> VSOut { var _stageOut: VSOut; - main(); + _skslMain(); return _stageOut; } diff --git a/tests/sksl/workarounds/VoidInSequenceExpressions.glsl b/tests/sksl/workarounds/VoidInSequenceExpressions.glsl new file mode 100644 index 000000000000..eadc591bc1b9 --- /dev/null +++ b/tests/sksl/workarounds/VoidInSequenceExpressions.glsl @@ -0,0 +1,16 @@ + +out vec4 sk_FragColor; +uniform vec4 colorGreen; +float setGreen_vh4(inout vec4 c) { + c.y = 1.0; + return 0.0; +} +float setAlpha_vh4(inout vec4 c) { + c.w = 1.0; + return 0.0; + return 0.0; +} +vec4 main() { + vec4 color = vec4(0.0); + return ((setGreen_vh4(color), setAlpha_vh4(color)), color); +} diff --git a/tests/sksl/workarounds/VoidInSequenceExpressionsStandaloneSettings.glsl b/tests/sksl/workarounds/VoidInSequenceExpressionsStandaloneSettings.glsl new file mode 100644 index 000000000000..94f4333dfb72 --- /dev/null +++ b/tests/sksl/workarounds/VoidInSequenceExpressionsStandaloneSettings.glsl @@ -0,0 +1,14 @@ + +out vec4 sk_FragColor; +uniform vec4 colorGreen; +void setGreen_vh4(inout vec4 c) { + c.y = 1.0; +} +void setAlpha_vh4(inout vec4 c) { + c.w = 1.0; + return; +} +vec4 main() { + vec4 color = vec4(0.0); + return ((setGreen_vh4(color), setAlpha_vh4(color)), color); +} diff --git a/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.glsl b/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.glsl new file mode 100644 index 000000000000..4dd7f7e3fada --- /dev/null +++ b/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMain.glsl @@ -0,0 +1,17 @@ + +out vec4 sk_FragColor; +uniform vec4 colorGreen; +float setGreen_vh4(inout vec4 c) { + c.y = 1.0; + return 0.0; +} +float setAlpha_vh4(inout vec4 c) { + c.w = 1.0; + return 0.0; + return 0.0; +} +void main() { + vec4 color = vec4(0.0); + sk_FragColor = ((setGreen_vh4(color), setAlpha_vh4(color)), color); + return; +} diff --git a/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMainStandaloneSettings.glsl b/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMainStandaloneSettings.glsl new file mode 100644 index 000000000000..b25e32b4a5ba --- /dev/null +++ b/tests/sksl/workarounds/VoidInSequenceExpressionsWithVoidMainStandaloneSettings.glsl @@ -0,0 +1,15 @@ + +out vec4 sk_FragColor; +uniform vec4 colorGreen; +void setGreen_vh4(inout vec4 c) { + c.y = 1.0; +} +void setAlpha_vh4(inout vec4 c) { + c.w = 1.0; + return; +} +void main() { + vec4 color = vec4(0.0); + sk_FragColor = ((setGreen_vh4(color), setAlpha_vh4(color)), color); + return; +} diff --git a/tests/testgroups.bzl b/tests/testgroups.bzl index 8f9d5f831f12..effd992f6418 100644 --- a/tests/testgroups.bzl +++ b/tests/testgroups.bzl @@ -173,7 +173,6 @@ CPU_ONLY_TESTS = [ "SortTest.cpp", "SrcOverTest.cpp", "StreamTest.cpp", - "StrikeForGPUTest.cpp", "StringTest.cpp", "StrokeTest.cpp", "SwizzlerTest.cpp", @@ -303,6 +302,7 @@ GANESH_TESTS = [ "SpecialImageTest.cpp", "SpecialSurfaceTest.cpp", "SrcSrcOverBatchTest.cpp", + "StrikeForGPUTest.cpp", "SurfaceDrawContextTest.cpp", "SurfaceSemaphoreTest.cpp", # "SurfaceTest.cpp", # TODO(b/277938020): Linux - Fails at a test assertion. diff --git a/third_party/go.mod b/third_party/go.mod new file mode 100644 index 000000000000..bc594e0c8b94 --- /dev/null +++ b/third_party/go.mod @@ -0,0 +1,3 @@ +// This empty go.mod file exists for the sole purpose of making commands such as "go mod tidy" +// ignore this directory. + diff --git a/third_party/libgrapheme/BUILD.gn b/third_party/libgrapheme/BUILD.gn index 3591995f3f7e..7914a62419b7 100644 --- a/third_party/libgrapheme/BUILD.gn +++ b/third_party/libgrapheme/BUILD.gn @@ -114,6 +114,9 @@ action_foreach("generate_headers") { source_set("headers") { sources = get_target_outputs(":generate_headers") + + #get_target_outputs does not actually depend on the outputs + deps = [ ":generate_headers" ] } third_party("libgrapheme") { diff --git a/third_party/vello/BUILD.gn b/third_party/vello/BUILD.gn index 7ea2bd30ae3a..5bc754d2c3ee 100644 --- a/third_party/vello/BUILD.gn +++ b/third_party/vello/BUILD.gn @@ -43,11 +43,19 @@ if (skia_enable_vello_shaders) { "BUILD.bazel", "src/lib.rs", ] - outputs = [ "$root_out_dir/libvello_ffi.a" ] + outputs = [ + "$root_out_dir/libvello_ffi.a", + "$root_out_dir/third_party/vello/src/lib.rs.h", + ] args = [ "//third_party/vello:vello_ffi", rebase_path("//bazel-bin/third_party/vello/libvello_ffi.a", root_build_dir), + + # we want the header to not simply be copied into the output directory, + # but in the same path as the Bazel build uses. + rebase_path("//bazel-bin/third_party/vello/src/lib.rs.h", + root_build_dir) + "=third_party/vello/src/lib.rs.h", ] + bazel_args } @@ -69,7 +77,8 @@ if (skia_enable_vello_shaders) { } third_party("vello") { - public_include_dirs = [ "../../bazel-bin/" ] + # this is where third_party/vello/src/lib.rs.h was generated and exists. + public_include_dirs = [ "$root_out_dir" ] libs = [ "$root_out_dir/libvello_ffi.a", "$root_out_dir/libvello_rust.a", diff --git a/toolchain/linux_trampolines/IWYU_mapping.imp b/toolchain/linux_trampolines/IWYU_mapping.imp index 77545473c256..6ebf69fe3a76 100644 --- a/toolchain/linux_trampolines/IWYU_mapping.imp +++ b/toolchain/linux_trampolines/IWYU_mapping.imp @@ -399,6 +399,7 @@ { symbol: ["std::time_t", "private", "", "public"] }, { symbol: ["time_t", "private", "", "public"] }, + { symbol: ["tm", "private", "", "public"] }, # We are pretty forgiving with iostream headers. If we specify # any of them, that is generally sufficient. diff --git a/toolchain/linux_trampolines/clang_trampoline_linux.sh b/toolchain/linux_trampolines/clang_trampoline_linux.sh index 2b17982ef07c..2e8ccc319995 100755 --- a/toolchain/linux_trampolines/clang_trampoline_linux.sh +++ b/toolchain/linux_trampolines/clang_trampoline_linux.sh @@ -64,7 +64,9 @@ supported_files_or_dirs=( "src/core/SkGeometry.cpp" "src/core/SkGlyph.cpp" "src/core/SkGlyphRunPainter.cpp" + "src/core/SkGraphics.cpp" "src/core/SkICC.cpp" + "src/core/SkImageFilter.cpp" "src/core/SkImageFilterTypes.cpp" "src/core/SkImageGenerator.cpp" "src/core/SkImageInfo.cpp" @@ -86,10 +88,7 @@ supported_files_or_dirs=( "src/core/SkPixmapDraw.cpp" "src/core/SkPoint.cpp" "src/core/SkRRect.cpp" - "src/core/SkReadBuffer.cpp" - "src/core/SkReadPixelsRec.cpp" - "src/core/SkRecord" - "src/core/SkRect.cpp" + "src/core/SkRe" "src/core/SkRuntime" "src/core/SkScalar.cpp" "src/core/SkSpecialImage.cpp" @@ -97,6 +96,8 @@ supported_files_or_dirs=( "src/core/SkStream.cpp" "src/core/SkStrike" "src/core/SkString.cpp" + "src/core/SkTime.cpp" + "src/core/SkTypeface.cpp" "src/core/SkWriteBuffer.cpp" "src/core/SkWritePixelsRec.cpp" "src/core/SkYUVAInfo.cpp" @@ -128,6 +129,7 @@ supported_files_or_dirs=( "src/gpu/ganesh/SkGr.cpp" "src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp" "src/gpu/ganesh/gl/GrGLBackendSurface.cpp" + "src/gpu/ganesh/gl/GrGLGpu.cpp" "src/pdf/SkJpeg" # See //bazel/generate_cpp_files_for_headers.bzl and //include/BUILD.bazel for more. diff --git a/tools/ToolUtils.cpp b/tools/ToolUtils.cpp index cd8ec10f75e4..d31e7cb59c83 100644 --- a/tools/ToolUtils.cpp +++ b/tools/ToolUtils.cpp @@ -37,8 +37,7 @@ #include "include/core/SkTiledImageUtils.h" #include "include/gpu/graphite/Image.h" #include "include/gpu/graphite/ImageProvider.h" - -#include +#include "src/core/SkLRUCache.h" #endif #if defined(SK_ENABLE_SVG) @@ -692,6 +691,7 @@ SkSpan VariationSliders::g // TODO: add testing of a single ImageProvider passed to multiple recorders class TestingImageProvider : public skgpu::graphite::ImageProvider { public: + TestingImageProvider() : fCache(kDefaultNumCachedImages) {} ~TestingImageProvider() override {} sk_sp findOrCreate(skgpu::graphite::Recorder* recorder, @@ -704,16 +704,16 @@ class TestingImageProvider : public skgpu::graphite::ImageProvider { // key, we could remove the hidden non-mipmapped key/image from the cache. ImageKey mipMappedKey(image, /* mipmapped= */ true); auto result = fCache.find(mipMappedKey); - if (result != fCache.end()) { - return result->second; + if (result) { + return *result; } } ImageKey key(image, requiredProps.fMipmapped); auto result = fCache.find(key); - if (result != fCache.end()) { - return result->second; + if (result) { + return *result; } sk_sp newImage = SkImages::TextureFromImage(recorder, image, requiredProps); @@ -721,13 +721,15 @@ class TestingImageProvider : public skgpu::graphite::ImageProvider { return nullptr; } - auto [iter, success] = fCache.insert({ key, newImage }); - SkASSERT(success); + result = fCache.insert(key, std::move(newImage)); + SkASSERT(result); - return iter->second; + return *result; } private: + static constexpr int kDefaultNumCachedImages = 256; + class ImageKey { public: ImageKey(const SkImage* image, bool mipmapped) { @@ -760,7 +762,7 @@ class TestingImageProvider : public skgpu::graphite::ImageProvider { size_t operator()(const ImageKey& key) const { return key.hash(); } }; - std::unordered_map, ImageHash> fCache; + SkLRUCache, ImageHash> fCache; }; skgpu::graphite::RecorderOptions CreateTestingRecorderOptions() { diff --git a/tools/blob_cache_sim.cpp b/tools/blob_cache_sim.cpp index 8f08f74055e6..f01a4e73b4bc 100644 --- a/tools/blob_cache_sim.cpp +++ b/tools/blob_cache_sim.cpp @@ -5,6 +5,7 @@ * found in the LICENSE file. */ +#include "include/core/SkCanvas.h" #include "include/core/SkColor.h" #include "include/core/SkStream.h" #include "include/core/SkSurface.h" diff --git a/tools/fiddle/fiddle_main.cpp b/tools/fiddle/fiddle_main.cpp index 1a3ac9f8e09a..3bb8ce7a5e96 100644 --- a/tools/fiddle/fiddle_main.cpp +++ b/tools/fiddle/fiddle_main.cpp @@ -11,8 +11,8 @@ #include #include "src/core/SkAutoPixmapStorage.h" +#include "src/core/SkMemset.h" #include "src/core/SkMipmap.h" -#include "src/core/SkOpts.h" #include "tools/flags/CommandLineFlags.h" #include "tools/fiddle/fiddle_main.h" diff --git a/tools/flags/BUILD.bazel b/tools/flags/BUILD.bazel index 54296512f747..5ac4ae805f42 100644 --- a/tools/flags/BUILD.bazel +++ b/tools/flags/BUILD.bazel @@ -12,6 +12,7 @@ skia_filegroup( "CommandLineFlags.h", ], visibility = [ + "//gm:__pkg__", "//modules/skottie:__pkg__", "//tests:__subpackages__", "//tools:__pkg__", @@ -25,9 +26,13 @@ skia_filegroup( srcs = [ "CommonFlags.h", "CommonFlagsFontMgr.cpp", - "CommonFlagsGpu.cpp", - ], + "CommonFlagsImages.cpp", + ] + select({ + "//src/gpu:has_ganesh_backend": ["CommonFlagsGpu.cpp"], + "//conditions:default": [], + }), visibility = [ + "//gm:__pkg__", "//tools:__subpackages__", ], ) diff --git a/tools/flags/CommandLineFlags.h b/tools/flags/CommandLineFlags.h index bdf76ec99107..a72c97ea8355 100644 --- a/tools/flags/CommandLineFlags.h +++ b/tools/flags/CommandLineFlags.h @@ -11,6 +11,7 @@ #include "include/core/SkString.h" #include "include/private/base/SkTArray.h" #include "include/private/base/SkTDArray.h" +#include "src/core/SkTHash.h" /** * Including this file (and compiling CommandLineFlags.cpp) provides command line @@ -159,6 +160,28 @@ class CommandLineFlags { const SkString* begin() const { return fStrings.begin(); } const SkString* end() const { return fStrings.end(); } + /** + * Parses and validates a string flag that requires exactly one value out of a set of + * possible values. Returns a non-empty message in the case of errors. + */ + template + SkString parseAndValidate(const char* name, + const skia_private::THashMap& possibleValues, + E* out) const { + if (size() == 0) { + return SkStringPrintf("Flag %s is required.", name); + } + if (size() != 1) { + return SkStringPrintf("Flag %s takes 1 value, got %d.", name, size()); + } + E* found = possibleValues.find(SkString(operator[](0))); + if (found != nullptr) { + *out = *found; + return SkString(); + } + return SkStringPrintf("Unknown value for flag %s: %s.", name, operator[](0)); + } + private: void reset() { fStrings.clear(); } diff --git a/tools/flags/CommonFlags.h b/tools/flags/CommonFlags.h index 147bf73afd12..e87971cccd95 100644 --- a/tools/flags/CommonFlags.h +++ b/tools/flags/CommonFlags.h @@ -10,6 +10,10 @@ #include "include/private/base/SkTArray.h" #include "tools/flags/CommandLineFlags.h" +namespace skgpu::graphite { +struct ContextOptions; +}; + namespace CommonFlags { /** * Helper to assist in collecting image paths from |dir| specified through a command line diff --git a/tools/flags/CommonFlagsConfig.cpp b/tools/flags/CommonFlagsConfig.cpp index 75bd358b5e92..582e02e05701 100644 --- a/tools/flags/CommonFlagsConfig.cpp +++ b/tools/flags/CommonFlagsConfig.cpp @@ -100,9 +100,6 @@ static const struct { { "angle_mtl_es2", "gpu", "api=angle_mtl_es2" }, { "angle_mtl_es3", "gpu", "api=angle_mtl_es3" }, { "mock", "gpu", "api=mock" }, -#ifdef SK_DAWN - { "dawn", "gpu", "api=dawn" }, -#endif #ifdef SK_VULKAN { "vk", "gpu", "api=vulkan" }, { "vkf16", "gpu", "api=vulkan,color=f16" }, @@ -140,13 +137,13 @@ static const struct { { "grd3d", "graphite", "api=direct3d" }, #endif #ifdef SK_DAWN - { "grdawn", "graphite", "api=dawn" }, - { "grdawn_d3d11", "graphite", "api=dawn_d3d11" }, - { "grdawn_d3d12", "graphite", "api=dawn_d3d12" }, - { "grdawn_mtl", "graphite", "api=dawn_mtl" }, - { "grdawn_vk", "graphite", "api=dawn_vk" }, - { "grdawn_gl", "graphite", "api=dawn_gl" }, - { "grdawn_gles", "graphite", "api=dawn_gles" }, + { "grdawn", "graphite", "api=dawn,wgsl=true" }, + { "grdawn_d3d11", "graphite", "api=dawn_d3d11,wgsl=true" }, + { "grdawn_d3d12", "graphite", "api=dawn_d3d12,wgsl=true" }, + { "grdawn_mtl", "graphite", "api=dawn_mtl,wgsl=true" }, + { "grdawn_vk", "graphite", "api=dawn_vk,wgsl=true" }, + { "grdawn_gl", "graphite", "api=dawn_gl,wgsl=true" }, + { "grdawn_gles", "graphite", "api=dawn_gles,wgsl=true" }, #endif #ifdef SK_METAL { "grmtl", "graphite", "api=metal" }, @@ -306,71 +303,65 @@ static bool parse_option_gpu_api(const SkString& value, bool* outFakeGLESVersion2) { *outFakeGLESVersion2 = false; if (value.equals("gl")) { - *outContextType = GrContextFactory::kGL_ContextType; + *outContextType = skgpu::ContextType::kGL; return true; } if (value.equals("gles")) { - *outContextType = GrContextFactory::kGLES_ContextType; + *outContextType = skgpu::ContextType::kGLES; return true; } if (value.equals("glesfakev2")) { - *outContextType = GrContextFactory::kGLES_ContextType; + *outContextType = skgpu::ContextType::kGLES; *outFakeGLESVersion2 = true; return true; } if (value.equals("angle_d3d9_es2")) { - *outContextType = GrContextFactory::kANGLE_D3D9_ES2_ContextType; + *outContextType = skgpu::ContextType::kANGLE_D3D9_ES2; return true; } if (value.equals("angle_d3d11_es2")) { - *outContextType = GrContextFactory::kANGLE_D3D11_ES2_ContextType; + *outContextType = skgpu::ContextType::kANGLE_D3D11_ES2; return true; } if (value.equals("angle_d3d11_es3")) { - *outContextType = GrContextFactory::kANGLE_D3D11_ES3_ContextType; + *outContextType = skgpu::ContextType::kANGLE_D3D11_ES3; return true; } if (value.equals("angle_gl_es2")) { - *outContextType = GrContextFactory::kANGLE_GL_ES2_ContextType; + *outContextType = skgpu::ContextType::kANGLE_GL_ES2; return true; } if (value.equals("angle_gl_es3")) { - *outContextType = GrContextFactory::kANGLE_GL_ES3_ContextType; + *outContextType = skgpu::ContextType::kANGLE_GL_ES3; return true; } if (value.equals("angle_mtl_es2")) { - *outContextType = GrContextFactory::kANGLE_Metal_ES2_ContextType; + *outContextType = skgpu::ContextType::kANGLE_Metal_ES2; return true; } if (value.equals("angle_mtl_es3")) { - *outContextType = GrContextFactory::kANGLE_Metal_ES3_ContextType; + *outContextType = skgpu::ContextType::kANGLE_Metal_ES3; return true; } if (value.equals("mock")) { - *outContextType = GrContextFactory::kMock_ContextType; + *outContextType = skgpu::ContextType::kMock; return true; } #ifdef SK_VULKAN if (value.equals("vulkan")) { - *outContextType = GrContextFactory::kVulkan_ContextType; + *outContextType = skgpu::ContextType::kVulkan; return true; } #endif #ifdef SK_METAL if (value.equals("metal")) { - *outContextType = GrContextFactory::kMetal_ContextType; + *outContextType = skgpu::ContextType::kMetal; return true; } #endif #ifdef SK_DIRECT3D if (value.equals("direct3d")) { - *outContextType = GrContextFactory::kDirect3D_ContextType; - return true; - } -#endif -#ifdef SK_DAWN - if (value.equals("dawn")) { - *outContextType = GrContextFactory::kDawn_ContextType; + *outContextType = skgpu::ContextType::kDirect3D; return true; } #endif @@ -486,49 +477,49 @@ class ExtendedOptions { } #ifdef SK_DAWN if (optionValue->equals("dawn")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_ContextType; + *outContextType = skgpu::ContextType::kDawn; return true; } if (optionValue->equals("dawn_d3d11")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_D3D11_ContextType; + *outContextType = skgpu::ContextType::kDawn_D3D11; return true; } if (optionValue->equals("dawn_d3d12")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_D3D12_ContextType; + *outContextType = skgpu::ContextType::kDawn_D3D12; return true; } if (optionValue->equals("dawn_mtl")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_Metal_ContextType; + *outContextType = skgpu::ContextType::kDawn_Metal; return true; } if (optionValue->equals("dawn_vk")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_Vulkan_ContextType; + *outContextType = skgpu::ContextType::kDawn_Vulkan; return true; } if (optionValue->equals("dawn_gl")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_OpenGL_ContextType; + *outContextType = skgpu::ContextType::kDawn_OpenGL; return true; } if (optionValue->equals("dawn_gles")) { - *outContextType = sk_gpu_test::GrContextFactory::kDawn_OpenGLES_ContextType; + *outContextType = skgpu::ContextType::kDawn_OpenGLES; return true; } #endif #ifdef SK_DIRECT3D if (optionValue->equals("direct3d")) { - *outContextType = sk_gpu_test::GrContextFactory::kDirect3D_ContextType; + *outContextType = skgpu::ContextType::kDirect3D; return true; } #endif #ifdef SK_METAL if (optionValue->equals("metal")) { - *outContextType = sk_gpu_test::GrContextFactory::kMetal_ContextType; + *outContextType = skgpu::ContextType::kMetal; return true; } #endif #ifdef SK_VULKAN if (optionValue->equals("vulkan")) { - *outContextType = sk_gpu_test::GrContextFactory::kVulkan_ContextType; + *outContextType = skgpu::ContextType::kVulkan; return true; } #endif @@ -614,7 +605,7 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& ta const TArray& vias, const SkString& options) { // Defaults for GPU backend. - SkCommandLineConfigGpu::ContextType contextType = GrContextFactory::kGL_ContextType; + SkCommandLineConfigGpu::ContextType contextType = skgpu::ContextType::kGL; bool useDIText = false; bool useDMSAA = false; int samples = 1; @@ -686,14 +677,15 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& ta #if defined(SK_GRAPHITE) -SkCommandLineConfigGraphite* parse_command_line_config_graphite(const SkString& tag, +SkCommandLineConfigGraphite* parse_command_line_config_graphite(const SkString& tag, const TArray& vias, - const SkString& options) { - using ContextType = sk_gpu_test::GrContextFactory::ContextType; + const SkString& options) { + using ContextType = skgpu::ContextType; - ContextType contextType = sk_gpu_test::GrContextFactory::kMetal_ContextType; + ContextType contextType = skgpu::ContextType::kMetal; SkColorType colorType = kRGBA_8888_SkColorType; SkAlphaType alphaType = kPremul_SkAlphaType; + bool wgsl = false; bool parseSucceeded = false; ExtendedOptions extendedOptions(options, &parseSucceeded); @@ -702,28 +694,25 @@ SkCommandLineConfigGraphite* parse_command_line_config_graphite(const SkString& } bool validOptions = extendedOptions.get_option_graphite_api("api", &contextType) && - extendedOptions.get_option_gpu_color("color", &colorType, &alphaType); + extendedOptions.get_option_gpu_color("color", &colorType, &alphaType) && + extendedOptions.get_option_bool("wgsl", &wgsl); if (!validOptions) { return nullptr; } - return new SkCommandLineConfigGraphite(tag, - vias, - contextType, - colorType, - alphaType); + return new SkCommandLineConfigGraphite(tag, vias, contextType, colorType, alphaType, wgsl); } #endif -SkCommandLineConfigSvg::SkCommandLineConfigSvg(const SkString& tag, +SkCommandLineConfigSvg::SkCommandLineConfigSvg(const SkString& tag, const TArray& viaParts, - int pageIndex) + int pageIndex) : SkCommandLineConfig(tag, SkString("svg"), viaParts), fPageIndex(pageIndex) {} -SkCommandLineConfigSvg* parse_command_line_config_svg(const SkString& tag, +SkCommandLineConfigSvg* parse_command_line_config_svg(const SkString& tag, const TArray& vias, - const SkString& options) { + const SkString& options) { // Defaults for SVG backend. int pageIndex = 0; @@ -746,12 +735,12 @@ void ParseConfigs(const CommandLineFlags::StringArray& configs, SkCommandLineConfigArray* outResult) { outResult->clear(); for (int i = 0; i < configs.size(); ++i) { - SkString extendedBackend; - SkString extendedOptions; - SkString simpleBackend; + SkString extendedBackend; + SkString extendedOptions; + SkString simpleBackend; TArray vias; - SkString tag(configs[i]); + SkString tag(configs[i]); TArray parts; SkStrSplit(tag.c_str(), "[", kStrict_SkStrSplitMode, &parts); if (parts.size() == 2) { diff --git a/tools/flags/CommonFlagsConfig.h b/tools/flags/CommonFlagsConfig.h index ff1aca20c5f7..845e77995ba8 100644 --- a/tools/flags/CommonFlagsConfig.h +++ b/tools/flags/CommonFlagsConfig.h @@ -53,7 +53,7 @@ class SkCommandLineConfig { class SkCommandLineConfigGpu : public SkCommandLineConfig { public: enum class SurfType { kDefault, kBackendTexture, kBackendRenderTarget }; - typedef sk_gpu_test::GrContextFactory::ContextType ContextType; + typedef skgpu::ContextType ContextType; typedef sk_gpu_test::GrContextFactory::ContextOverrides ContextOverrides; SkCommandLineConfigGpu(const SkString& tag, @@ -113,28 +113,32 @@ class SkCommandLineConfigGpu : public SkCommandLineConfig { class SkCommandLineConfigGraphite : public SkCommandLineConfig { public: - using ContextType = sk_gpu_test::GrContextFactory::ContextType; + using ContextType = skgpu::ContextType; - SkCommandLineConfigGraphite(const SkString& tag, + SkCommandLineConfigGraphite(const SkString& tag, const skia_private::TArray& viaParts, - ContextType contextType, - SkColorType colorType, - SkAlphaType alphaType) + ContextType contextType, + SkColorType colorType, + SkAlphaType alphaType, + bool wgsl) : SkCommandLineConfig(tag, SkString("graphite"), viaParts) , fContextType(contextType) , fColorType(colorType) - , fAlphaType(alphaType) { - } + , fAlphaType(alphaType) + , fWGSL(wgsl) {} + const SkCommandLineConfigGraphite* asConfigGraphite() const override { return this; } ContextType getContextType() const { return fContextType; } SkColorType getColorType() const { return fColorType; } SkAlphaType getAlphaType() const { return fAlphaType; } + bool getWGSL() const { return fWGSL; } private: ContextType fContextType; SkColorType fColorType; SkAlphaType fAlphaType; + bool fWGSL; }; #endif // SK_GRAPHITE diff --git a/tools/fonts/TestTypeface.cpp b/tools/fonts/TestTypeface.cpp index 01cf802b10f4..9f92ef579097 100644 --- a/tools/fonts/TestTypeface.cpp +++ b/tools/fonts/TestTypeface.cpp @@ -117,7 +117,8 @@ void SkTestFont::init(const SkScalar* pts, const unsigned char* verbs) { case SkPath::kClose_Verb: b.close(); break; - default: SkDEBUGFAIL("bad verb"); return; + default: + SK_ABORT("bad verb"); } } fPaths[index] = b.detach(); diff --git a/tools/gpu/BUILD.bazel b/tools/gpu/BUILD.bazel index 9d6db2f00388..a5255002725c 100644 --- a/tools/gpu/BUILD.bazel +++ b/tools/gpu/BUILD.bazel @@ -12,11 +12,14 @@ skia_cc_library( "BackendSurfaceFactory.h", "BackendTextureImageFactory.cpp", "BackendTextureImageFactory.h", + "ContextType.cpp", + "ContextType.h", "FenceSync.h", "FlushFinishTracker.cpp", "FlushFinishTracker.h", "GpuTimer.h", "GrContextFactory.cpp", + "GrContextFactory.h", "GrTest.cpp", "ManagedBackendTexture.cpp", "ManagedBackendTexture.h", @@ -43,10 +46,6 @@ skia_cc_library( "//tools/gpu/vk:private_hdrs", "//tools/gpu/vk:srcs", ], - "//src/gpu:dawn_ganesh": [ - "//tools/gpu/dawn:private_hdrs", - "//tools/gpu/dawn:srcs", - ], "//src/gpu:metal_ganesh": [ "//tools/gpu/mtl:private_hdrs", "//tools/gpu/mtl:srcs", @@ -64,7 +63,6 @@ skia_cc_library( ], deps = ["//:skia_internal"] + select_multi({ "//src/gpu:gl_ganesh": ["//tools/gpu/gl:deps"], - "//src/gpu:dawn_ganesh": ["//tools/gpu/dawn:deps"], }) + select({ "@platforms//os:macos": ["//tools:autorelease_pool_objc"], "//conditions:default": ["//tools:autorelease_pool"], diff --git a/tools/gpu/ContextType.cpp b/tools/gpu/ContextType.cpp new file mode 100644 index 000000000000..6b52d87daae6 --- /dev/null +++ b/tools/gpu/ContextType.cpp @@ -0,0 +1,149 @@ +/* + * Copyright 2023 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/GrTypes.h" +#include "tools/gpu/ContextType.h" + +const char* skgpu::ContextTypeName(skgpu::ContextType type) { + switch (type) { + case skgpu::ContextType::kGL: + return "OpenGL"; + case skgpu::ContextType::kGLES: + return "OpenGLES"; + case skgpu::ContextType::kANGLE_D3D9_ES2: + return "ANGLE D3D9 ES2"; + case skgpu::ContextType::kANGLE_D3D11_ES2: + return "ANGLE D3D11 ES2"; + case skgpu::ContextType::kANGLE_D3D11_ES3: + return "ANGLE D3D11 ES3"; + case skgpu::ContextType::kANGLE_GL_ES2: + return "ANGLE GL ES2"; + case skgpu::ContextType::kANGLE_GL_ES3: + return "ANGLE GL ES3"; + case skgpu::ContextType::kANGLE_Metal_ES2: + return "ANGLE Metal ES2"; + case skgpu::ContextType::kANGLE_Metal_ES3: + return "ANGLE Metal ES3"; + case skgpu::ContextType::kVulkan: + return "Vulkan"; + case skgpu::ContextType::kMetal: + return "Metal"; + case skgpu::ContextType::kDirect3D: + return "Direct3D"; + case skgpu::ContextType::kDawn: + return "Dawn"; + case skgpu::ContextType::kDawn_D3D11: + return "Dawn D3D11"; + case skgpu::ContextType::kDawn_D3D12: + return "Dawn D3D12"; + case skgpu::ContextType::kDawn_Metal: + return "Dawn Metal"; + case skgpu::ContextType::kDawn_Vulkan: + return "Dawn Vulkan"; + case skgpu::ContextType::kDawn_OpenGL: + return "Dawn OpenGL"; + case skgpu::ContextType::kDawn_OpenGLES: + return "Dawn OpenGLES"; + case skgpu::ContextType::kMock: + return "Mock"; + } + SkUNREACHABLE; +} + +bool skgpu::IsNativeBackend(skgpu::ContextType type) { + switch (type) { + case ContextType::kDirect3D: + case ContextType::kGL: + case ContextType::kGLES: + case ContextType::kMetal: + case ContextType::kVulkan: + return true; + + default: + // Mock doesn't use the GPU, and Dawn and ANGLE add a layer between Skia and the native + // GPU backend. + return false; + } +} + +bool skgpu::IsRenderingContext(ContextType type) { + return type != ContextType::kMock; +} + +GrBackendApi skgpu::ganesh::ContextTypeBackend(skgpu::ContextType type) { + switch (type) { + case skgpu::ContextType::kGL: + case skgpu::ContextType::kGLES: + case skgpu::ContextType::kANGLE_D3D9_ES2: + case skgpu::ContextType::kANGLE_D3D11_ES2: + case skgpu::ContextType::kANGLE_D3D11_ES3: + case skgpu::ContextType::kANGLE_GL_ES2: + case skgpu::ContextType::kANGLE_GL_ES3: + case skgpu::ContextType::kANGLE_Metal_ES2: + case skgpu::ContextType::kANGLE_Metal_ES3: + return GrBackendApi::kOpenGL; + + case ContextType::kVulkan: + return GrBackendApi::kVulkan; + + case ContextType::kMetal: + return GrBackendApi::kMetal; + + case ContextType::kDirect3D: + return GrBackendApi::kDirect3D; + + case ContextType::kDawn: + case ContextType::kDawn_D3D11: + case ContextType::kDawn_D3D12: + case ContextType::kDawn_Metal: + case ContextType::kDawn_Vulkan: + case ContextType::kDawn_OpenGL: + case ContextType::kDawn_OpenGLES: + return GrBackendApi::kUnsupported; + + case ContextType::kMock: + return GrBackendApi::kMock; + } + SkUNREACHABLE; +} + +skgpu::BackendApi skgpu::graphite::ContextTypeBackend(ContextType type) { + switch (type) { + case skgpu::ContextType::kGL: + case skgpu::ContextType::kGLES: + case skgpu::ContextType::kANGLE_D3D9_ES2: + case skgpu::ContextType::kANGLE_D3D11_ES2: + case skgpu::ContextType::kANGLE_D3D11_ES3: + case skgpu::ContextType::kANGLE_GL_ES2: + case skgpu::ContextType::kANGLE_GL_ES3: + case skgpu::ContextType::kANGLE_Metal_ES2: + case skgpu::ContextType::kANGLE_Metal_ES3: + case skgpu::ContextType::kDirect3D: + return BackendApi::kUnsupported; + + case ContextType::kVulkan: + return BackendApi::kVulkan; + + case ContextType::kMetal: + return BackendApi::kMetal; + + case ContextType::kDawn: + case ContextType::kDawn_D3D11: + case ContextType::kDawn_D3D12: + case ContextType::kDawn_Metal: + case ContextType::kDawn_Vulkan: + case ContextType::kDawn_OpenGL: + case ContextType::kDawn_OpenGLES: + return BackendApi::kDawn; + + case ContextType::kMock: + return BackendApi::kMock; + } + SkUNREACHABLE; +} diff --git a/tools/gpu/ContextType.h b/tools/gpu/ContextType.h new file mode 100644 index 000000000000..cb3ec499dc29 --- /dev/null +++ b/tools/gpu/ContextType.h @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef ContextType_DEFINED +#define ContextType_DEFINED + +enum class GrBackendApi : unsigned; + +namespace skgpu { + +enum class BackendApi : unsigned; + +// The availability of context types is subject to platform and build configuration +// restrictions. +enum class ContextType { + kGL, //! OpenGL context. + kGLES, //! OpenGL ES context. + kANGLE_D3D9_ES2, //! ANGLE on Direct3D9 OpenGL ES 2 context. + kANGLE_D3D11_ES2, //! ANGLE on Direct3D11 OpenGL ES 2 context. + kANGLE_D3D11_ES3, //! ANGLE on Direct3D11 OpenGL ES 3 context. + kANGLE_GL_ES2, //! ANGLE on OpenGL OpenGL ES 2 context. + kANGLE_GL_ES3, //! ANGLE on OpenGL OpenGL ES 3 context. + kANGLE_Metal_ES2, //! ANGLE on Metal ES 2 context. + kANGLE_Metal_ES3, //! ANGLE on Metal ES 3 context. + kVulkan, //! Vulkan + kMetal, //! Metal + kDirect3D, //! Direct3D 12 + kDawn, //! Dawn + kDawn_D3D11, //! Dawn on Direct3D11 + kDawn_D3D12, //! Dawn on Direct3D12 + kDawn_Metal, //! Dawn on Metal + kDawn_Vulkan, //! Dawn on Vulkan + kDawn_OpenGL, //! Dawn on OpenGL + kDawn_OpenGLES, //! Dawn on OpenGL ES + kMock, //! Mock context that does not draw. + kLastContextType = kMock +}; + +static const int kContextTypeCount = (int)ContextType::kLastContextType + 1; + +const char* ContextTypeName(skgpu::ContextType type); + +bool IsNativeBackend(skgpu::ContextType type); + +bool IsRenderingContext(skgpu::ContextType type); + +namespace ganesh { + +GrBackendApi ContextTypeBackend(skgpu::ContextType type); + +} // namespace ganesh + +namespace graphite { + +skgpu::BackendApi ContextTypeBackend(skgpu::ContextType type); + +} // namespace graphite +} // namespace skgpu + +#endif diff --git a/tools/gpu/GrContextFactory.cpp b/tools/gpu/GrContextFactory.cpp index 449bedac0374..1542d59c6cfb 100644 --- a/tools/gpu/GrContextFactory.cpp +++ b/tools/gpu/GrContextFactory.cpp @@ -25,9 +25,6 @@ #ifdef SK_DIRECT3D #include "tools/gpu/d3d/D3DTestContext.h" #endif -#ifdef SK_DAWN -#include "tools/gpu/dawn/DawnTestContext.h" -#endif #include "src/gpu/ganesh/GrCaps.h" #include "tools/gpu/mock/MockTestContext.h" @@ -48,11 +45,10 @@ extern "C" { bool gCreateProtectedContext = false; namespace sk_gpu_test { -GrContextFactory::GrContextFactory() { } +GrContextFactory::GrContextFactory() {} GrContextFactory::GrContextFactory(const GrContextOptions& opts) - : fGlobalOptions(opts) { -} + : fGlobalOptions(opts) {} GrContextFactory::~GrContextFactory() { this->destroyContexts(); @@ -92,7 +88,7 @@ void GrContextFactory::abandonContexts() { context.fTestContext->testAbandon(); } GrBackendApi api = context.fGrContext->backend(); - bool requiresEarlyAbandon = api == GrBackendApi::kVulkan || api == GrBackendApi::kDawn; + bool requiresEarlyAbandon = api == GrBackendApi::kVulkan; if (requiresEarlyAbandon) { context.fGrContext->abandonContext(); } @@ -166,7 +162,7 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv } std::unique_ptr testCtx; - GrBackendApi backend = ContextTypeBackend(type); + GrBackendApi backend = skgpu::ganesh::ContextTypeBackend(type); switch (backend) { #ifdef SK_GL case GrBackendApi::kOpenGL: { @@ -174,14 +170,14 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv ? static_cast(primaryContext->fTestContext) : nullptr; GLTestContext* glCtx; switch (type) { - case kGL_ContextType: + case ContextType::kGL: glCtx = CreatePlatformGLTestContext(kGL_GrGLStandard, glShareContext); break; - case kGLES_ContextType: + case ContextType::kGLES: glCtx = CreatePlatformGLTestContext(kGLES_GrGLStandard, glShareContext); break; #if SK_ANGLE - case kANGLE_D3D9_ES2_ContextType: + case ContextType::kANGLE_D3D9_ES2: glCtx = MakeANGLETestContext(ANGLEBackend::kD3D9, ANGLEContextVersion::kES2, glShareContext).release(); // Chrome will only run on D3D9 with NVIDIA for 2012 and earlier drivers. @@ -195,27 +191,27 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv } } break; - case kANGLE_D3D11_ES2_ContextType: + case ContextType::kANGLE_D3D11_ES2: glCtx = MakeANGLETestContext(ANGLEBackend::kD3D11, ANGLEContextVersion::kES2, glShareContext).release(); break; - case kANGLE_D3D11_ES3_ContextType: + case ContextType::kANGLE_D3D11_ES3: glCtx = MakeANGLETestContext(ANGLEBackend::kD3D11, ANGLEContextVersion::kES3, glShareContext).release(); break; - case kANGLE_GL_ES2_ContextType: + case ContextType::kANGLE_GL_ES2: glCtx = MakeANGLETestContext(ANGLEBackend::kOpenGL, ANGLEContextVersion::kES2, glShareContext).release(); break; - case kANGLE_GL_ES3_ContextType: + case ContextType::kANGLE_GL_ES3: glCtx = MakeANGLETestContext(ANGLEBackend::kOpenGL, ANGLEContextVersion::kES3, glShareContext).release(); break; - case kANGLE_Metal_ES2_ContextType: + case ContextType::kANGLE_Metal_ES2: glCtx = MakeANGLETestContext(ANGLEBackend::kMetal, ANGLEContextVersion::kES2, glShareContext).release(); break; - case kANGLE_Metal_ES3_ContextType: + case ContextType::kANGLE_Metal_ES3: glCtx = MakeANGLETestContext(ANGLEBackend::kMetal, ANGLEContextVersion::kES3, glShareContext).release(); break; @@ -238,7 +234,7 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv case GrBackendApi::kVulkan: { VkTestContext* vkSharedContext = primaryContext ? static_cast(primaryContext->fTestContext) : nullptr; - SkASSERT(kVulkan_ContextType == type); + SkASSERT(ContextType::kVulkan == type); testCtx.reset(CreatePlatformVkTestContext(vkSharedContext)); if (!testCtx) { return ContextInfo(); @@ -263,7 +259,7 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv case GrBackendApi::kMetal: { MtlTestContext* mtlSharedContext = primaryContext ? static_cast(primaryContext->fTestContext) : nullptr; - SkASSERT(kMetal_ContextType == type); + SkASSERT(ContextType::kMetal == type); testCtx.reset(CreatePlatformMtlTestContext(mtlSharedContext)); if (!testCtx) { return ContextInfo(); @@ -275,28 +271,17 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv case GrBackendApi::kDirect3D: { D3DTestContext* d3dSharedContext = primaryContext ? static_cast(primaryContext->fTestContext) : nullptr; - SkASSERT(kDirect3D_ContextType == type); + SkASSERT(ContextType::kDirect3D == type); testCtx.reset(CreatePlatformD3DTestContext(d3dSharedContext)); if (!testCtx) { return ContextInfo(); } break; } -#endif -#ifdef SK_DAWN - case GrBackendApi::kDawn: { - DawnTestContext* dawnSharedContext = primaryContext - ? static_cast(primaryContext->fTestContext) : nullptr; - testCtx.reset(CreatePlatformDawnTestContext(dawnSharedContext)); - if (!testCtx) { - return ContextInfo(); - } - break; - } #endif case GrBackendApi::kMock: { TestContext* sharedContext = primaryContext ? primaryContext->fTestContext : nullptr; - SkASSERT(kMock_ContextType == type); + SkASSERT(ContextType::kMock == type); testCtx.reset(CreateMockTestContext(sharedContext)); if (!testCtx) { return ContextInfo(); diff --git a/tools/gpu/GrContextFactory.h b/tools/gpu/GrContextFactory.h index a701d149a977..b1c33686be4c 100644 --- a/tools/gpu/GrContextFactory.h +++ b/tools/gpu/GrContextFactory.h @@ -12,11 +12,12 @@ #include "include/gpu/GrDirectContext.h" #include "include/private/base/SkTArray.h" +#include "tools/gpu/ContextType.h" +#include "tools/gpu/TestContext.h" #ifdef SK_GL #include "tools/gpu/gl/GLTestContext.h" #endif -#include "tools/gpu/TestContext.h" struct GrVkBackendContext; @@ -32,33 +33,7 @@ class ContextInfo; */ class GrContextFactory : SkNoncopyable { public: - // The availability of context types is subject to platform and build configuration - // restrictions. - enum ContextType { - kGL_ContextType, //! OpenGL context. - kGLES_ContextType, //! OpenGL ES context. - kANGLE_D3D9_ES2_ContextType, //! ANGLE on Direct3D9 OpenGL ES 2 context. - kANGLE_D3D11_ES2_ContextType, //! ANGLE on Direct3D11 OpenGL ES 2 context. - kANGLE_D3D11_ES3_ContextType, //! ANGLE on Direct3D11 OpenGL ES 3 context. - kANGLE_GL_ES2_ContextType, //! ANGLE on OpenGL OpenGL ES 2 context. - kANGLE_GL_ES3_ContextType, //! ANGLE on OpenGL OpenGL ES 3 context. - kANGLE_Metal_ES2_ContextType, //! ANGLE on Metal ES 2 context. - kANGLE_Metal_ES3_ContextType, //! ANGLE on Metal ES 3 context. - kVulkan_ContextType, //! Vulkan - kMetal_ContextType, //! Metal - kDirect3D_ContextType, //! Direct3D 12 - kDawn_ContextType, //! Dawn - kDawn_D3D11_ContextType, //! Dawn on Direct3D11 - kDawn_D3D12_ContextType, //! Dawn on Direct3D12 - kDawn_Metal_ContextType, //! Dawn on Metal - kDawn_Vulkan_ContextType, //! Dawn on Vulkan - kDawn_OpenGL_ContextType, //! Dawn on Vulkan - kDawn_OpenGLES_ContextType, //! Dawn on Vulkan - kMock_ContextType, //! Mock context that does not draw. - kLastContextType = kMock_ContextType - }; - - static const int kContextTypeCnt = kLastContextType + 1; + using ContextType = skgpu::ContextType; /** * Overrides for the initial GrContextOptions provided at construction time, and required @@ -71,99 +46,6 @@ class GrContextFactory : SkNoncopyable { kReducedShaders = 0x4, }; - static bool IsRenderingContext(ContextType type) { - switch (type) { - case kMock_ContextType: - return false; - default: - return true; - } - } - - static bool IsNativeBackend(ContextType type) { - switch (type) { - case kDirect3D_ContextType: - case kGL_ContextType: - case kGLES_ContextType: - case kMetal_ContextType: - case kVulkan_ContextType: - return true; - default: - // Mock doesn't use the GPU, and Dawn and ANGLE add a layer between Skia and the - // native GPU backend. - return false; - } - } - - static GrBackendApi ContextTypeBackend(ContextType type) { - switch (type) { - case kVulkan_ContextType: - return GrBackendApi::kVulkan; - case kMetal_ContextType: - return GrBackendApi::kMetal; - case kDirect3D_ContextType: - return GrBackendApi::kDirect3D; - case kDawn_ContextType: - case kDawn_D3D11_ContextType: - case kDawn_D3D12_ContextType: - case kDawn_Metal_ContextType: - case kDawn_Vulkan_ContextType: - case kDawn_OpenGL_ContextType: - case kDawn_OpenGLES_ContextType: - return GrBackendApi::kDawn; - case kMock_ContextType: - return GrBackendApi::kMock; - default: - return GrBackendApi::kOpenGL; - } - } - - static const char* ContextTypeName(ContextType contextType) { - switch (contextType) { - case kGL_ContextType: - return "OpenGL"; - case kGLES_ContextType: - return "OpenGLES"; - case kANGLE_D3D9_ES2_ContextType: - return "ANGLE D3D9 ES2"; - case kANGLE_D3D11_ES2_ContextType: - return "ANGLE D3D11 ES2"; - case kANGLE_D3D11_ES3_ContextType: - return "ANGLE D3D11 ES3"; - case kANGLE_GL_ES2_ContextType: - return "ANGLE GL ES2"; - case kANGLE_GL_ES3_ContextType: - return "ANGLE GL ES3"; - case kANGLE_Metal_ES2_ContextType: - return "ANGLE Metal ES2"; - case kANGLE_Metal_ES3_ContextType: - return "ANGLE Metal ES3"; - case kVulkan_ContextType: - return "Vulkan"; - case kMetal_ContextType: - return "Metal"; - case kDirect3D_ContextType: - return "Direct3D"; - case kDawn_ContextType: - return "Dawn"; - case kDawn_D3D11_ContextType: - return "Dawn D3D11"; - case kDawn_D3D12_ContextType: - return "Dawn D3D12"; - case kDawn_Metal_ContextType: - return "Dawn Metal"; - case kDawn_Vulkan_ContextType: - return "Dawn Vulkan"; - case kDawn_OpenGL_ContextType: - return "Dawn OpenGL"; - case kDawn_OpenGLES_ContextType: - return "Dawn OpenGLES"; - case kMock_ContextType: - return "Mock"; - } - SK_ABORT("Unreachable"); - } - explicit GrContextFactory(const GrContextOptions& opts); GrContextFactory(); @@ -221,8 +103,8 @@ class ContextInfo { ContextInfo(const ContextInfo&) = default; ContextInfo& operator=(const ContextInfo&) = default; - GrContextFactory::ContextType type() const { return fType; } - GrBackendApi backend() const { return GrContextFactory::ContextTypeBackend(fType); } + skgpu::ContextType type() const { return fType; } + GrBackendApi backend() const { return skgpu::ganesh::ContextTypeBackend(fType); } GrDirectContext* directContext() const { return fContext; } TestContext* testContext() const { return fTestContext; } @@ -237,13 +119,13 @@ class ContextInfo { const GrContextOptions& options() const { return fOptions; } private: - ContextInfo(GrContextFactory::ContextType type, + ContextInfo(skgpu::ContextType type, TestContext* testContext, GrDirectContext* context, const GrContextOptions& options) : fType(type), fTestContext(testContext), fContext(context), fOptions(options) {} - GrContextFactory::ContextType fType = GrContextFactory::kGL_ContextType; + skgpu::ContextType fType = skgpu::ContextType::kGL; // Valid until the factory destroys it via abandonContexts() or destroyContexts(). TestContext* fTestContext = nullptr; GrDirectContext* fContext = nullptr; diff --git a/tools/gpu/ProtectedUtils.cpp b/tools/gpu/ProtectedUtils.cpp index 096913920981..72287d58bf88 100644 --- a/tools/gpu/ProtectedUtils.cpp +++ b/tools/gpu/ProtectedUtils.cpp @@ -13,38 +13,8 @@ #include "tools/gpu/BackendSurfaceFactory.h" #include "tools/gpu/BackendTextureImageFactory.h" -#ifdef SK_GL -#include "src/gpu/ganesh/gl/GrGLCaps.h" -#endif -#ifdef SK_VULKAN -#include "src/gpu/ganesh/vk/GrVkCaps.h" -#endif - namespace ProtectedUtils { -bool ContextSupportsProtected(GrDirectContext* dContext) { - [[maybe_unused]] const GrCaps* caps = dContext->priv().caps(); - -#ifdef SK_GL - if (dContext->backend() == GrBackendApi::kOpenGL) { - const GrGLCaps* glCaps = static_cast(caps); - return glCaps->supportsProtected(); - } -#endif -#ifdef SK_VULKAN - if (dContext->backend() == GrBackendApi::kVulkan) { - const GrVkCaps* vkCaps = static_cast(caps); - return vkCaps->supportsProtectedMemory(); - } -#endif - if (dContext->backend() == GrBackendApi::kMock) { - return true; - } - - // Metal, Dawn and D3D don't support protected textures - return false; -} - sk_sp CreateProtectedSkSurface(GrDirectContext* dContext, SkISize size, bool textureable, diff --git a/tools/gpu/ProtectedUtils.h b/tools/gpu/ProtectedUtils.h index 9d5c0b57fa52..7a84e6119f38 100644 --- a/tools/gpu/ProtectedUtils.h +++ b/tools/gpu/ProtectedUtils.h @@ -18,8 +18,6 @@ struct SkISize; namespace ProtectedUtils { -bool ContextSupportsProtected(GrDirectContext*); - sk_sp CreateProtectedSkSurface(GrDirectContext*, SkISize size, bool textureable = true, diff --git a/tools/gpu/dawn/BUILD.bazel b/tools/gpu/dawn/BUILD.bazel deleted file mode 100644 index 1903c41d7059..000000000000 --- a/tools/gpu/dawn/BUILD.bazel +++ /dev/null @@ -1,30 +0,0 @@ -load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_deps", "skia_filegroup") - -licenses(["notice"]) - -exports_files_legacy() - -skia_filegroup( - name = "private_hdrs", - srcs = [ - "DawnTestContext.h", - ], - visibility = ["//tools/gpu:__pkg__"], -) - -skia_filegroup( - name = "srcs", - srcs = [ - "DawnTestContext.cpp", - ], - visibility = ["//tools/gpu:__pkg__"], -) - -skia_cc_deps( - name = "deps", - visibility = ["//tools/gpu:__pkg__"], - deps = select({ - "@platforms//os:linux": ["//include/third_party/vulkan"], - "//conditions:default": [], - }), -) diff --git a/tools/gpu/dawn/DawnTestContext.cpp b/tools/gpu/dawn/DawnTestContext.cpp deleted file mode 100644 index 6309916bb082..000000000000 --- a/tools/gpu/dawn/DawnTestContext.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "webgpu/webgpu_cpp.h" -#include "tools/gpu/dawn/DawnTestContext.h" - -#ifdef SK_BUILD_FOR_UNIX -#include "GL/glx.h" -#endif - -#ifdef SK_BUILD_FOR_WIN -#include -#endif - -#define USE_OPENGL_BACKEND 0 - -#ifdef SK_DAWN -#include "webgpu/webgpu.h" -#include "dawn/dawn_proc.h" -#include "include/gpu/GrDirectContext.h" -#include "tools/AutoreleasePool.h" -#if USE_OPENGL_BACKEND -#include "dawn/native/OpenGLBackend.h" -#elif defined(SK_BUILD_FOR_MAC) -#include "dawn/native/MetalBackend.h" -#elif defined(SK_BUILD_FOR_WIN) -#include "dawn/native/D3D12Backend.h" -#elif defined(SK_BUILD_FOR_UNIX) || (defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26) -#include "dawn/native/VulkanBackend.h" -#endif - -#if defined(SK_BUILD_FOR_MAC) && USE_OPENGL_BACKEND -#include -static void* getProcAddressMacOS(const char* procName) { - return dlsym(RTLD_DEFAULT, procName); -} -#endif - -namespace { - -#ifdef SK_BUILD_FOR_WIN -class ProcGetter { -public: - typedef void(*Proc)(); - - ProcGetter() - : fModule(LoadLibraryA("opengl32.dll")) { - SkASSERT(!fInstance); - fInstance = this; - } - - ~ProcGetter() { - if (fModule) { - FreeLibrary(fModule); - } - fInstance = nullptr; - } - - static void* getProcAddress(const char* name) { - return fInstance->getProc(name); - } - -private: - Proc getProc(const char* name) { - PROC proc; - if ((proc = GetProcAddress(fModule, name))) { - return (Proc) proc; - } - if ((proc = wglGetProcAddress(name))) { - return (Proc) proc; - } - return nullptr; - } - - HMODULE fModule; - static ProcGetter* fInstance; -}; - -ProcGetter* ProcGetter::fInstance; -#endif - -static void PrintDeviceError(WGPUErrorType, const char* message, void*) { - SkDebugf("Device error: %s\n", message); -} - -static void PrintDeviceLostMessage(WGPUDeviceLostReason reason, const char* message, void*) { - if (reason != WGPUDeviceLostReason_Destroyed) { - SkDebugf("Device lost: %s\n", message); - } -} - -class DawnTestContextImpl : public sk_gpu_test::DawnTestContext { -public: - static wgpu::Device createDevice(const dawn::native::Instance& instance, - wgpu::BackendType type) { - DawnProcTable backendProcs = dawn::native::GetProcs(); - dawnProcSetProcs(&backendProcs); - - std::vector adapters = instance.GetAdapters(); - for (dawn::native::Adapter adapter : adapters) { - wgpu::AdapterProperties properties; - adapter.GetProperties(&properties); - if (properties.backendType == type) { - return wgpu::Device::Acquire(adapter.CreateDevice()); - } - } - return nullptr; - } - - static DawnTestContext* Create(DawnTestContext* sharedContext) { - std::unique_ptr instance = std::make_unique(); - wgpu::Device device; - if (sharedContext) { - device = sharedContext->getDevice(); - } else { - wgpu::BackendType type; -#if USE_OPENGL_BACKEND - type = wgpu::BackendType::OpenGL; - dawn::native::opengl::PhysicalDeviceDiscoveryOptions PhysicalDeviceOptions( - static_cast(type)); - PhysicalDeviceOptions.getProc = reinterpret_cast( -#if defined(SK_BUILD_FOR_UNIX) - glXGetProcAddress -#elif defined(SK_BUILD_FOR_MAC) - getProcAddressMacOS -#elif defined(SK_BUILD_FOR_WIN) - ProcGetter::getProcAddress -#endif - ); -#else // !USE_OPENGL_BACKEND -#if defined(SK_BUILD_FOR_MAC) - type = wgpu::BackendType::Metal; - dawn::native::metal::PhysicalDeviceDiscoveryOptions PhysicalDeviceOptions; -#elif defined(SK_BUILD_FOR_WIN) - type = wgpu::BackendType::D3D12; - dawn::native::d3d12::PhysicalDeviceDiscoveryOptions PhysicalDeviceOptions; -#elif defined(SK_BUILD_FOR_UNIX) || (defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26) - type = wgpu::BackendType::Vulkan; - dawn::native::vulkan::PhysicalDeviceDiscoveryOptions PhysicalDeviceOptions; -#endif -#endif // USE_OPENGL_BACKEND - instance->DiscoverPhysicalDevices(&PhysicalDeviceOptions); - device = createDevice(*instance, type); - if (device) { - device.SetUncapturedErrorCallback(PrintDeviceError, 0); - device.SetDeviceLostCallback(PrintDeviceLostMessage, 0); - } - } - if (!device) { - return nullptr; - } - return new DawnTestContextImpl(std::move(instance), device); - } - - ~DawnTestContextImpl() override { this->teardown(); } - - void testAbandon() override {} - - void finish() override {} - - sk_sp makeContext(const GrContextOptions& options) override { - return GrDirectContext::MakeDawn(fDevice, options); - } - -protected: - void teardown() override { - INHERITED::teardown(); - } - -private: - DawnTestContextImpl(std::unique_ptr instance, - const wgpu::Device& device) - : DawnTestContext(std::move(instance), device) { - fFenceSupport = true; - } - - void onPlatformMakeNotCurrent() const override {} - void onPlatformMakeCurrent() const override {} - std::function onPlatformGetAutoContextRestore() const override { return nullptr; } - - using INHERITED = sk_gpu_test::DawnTestContext; -}; -} // anonymous namespace - -namespace sk_gpu_test { -DawnTestContext* CreatePlatformDawnTestContext(DawnTestContext* sharedContext) { - return DawnTestContextImpl::Create(sharedContext); -} -} // namespace sk_gpu_test - -#endif diff --git a/tools/gpu/dawn/DawnTestContext.h b/tools/gpu/dawn/DawnTestContext.h deleted file mode 100644 index e90414680db3..000000000000 --- a/tools/gpu/dawn/DawnTestContext.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef DawnTestContext_DEFINED -#define DawnTestContext_DEFINED - -#include "tools/gpu/TestContext.h" -#include "dawn/native/DawnNative.h" - -#ifdef SK_DAWN - -namespace sk_gpu_test { -class DawnTestContext : public TestContext { -public: - virtual GrBackend backend() override { return GrBackendApi::kDawn; } - - const wgpu::Device& getDevice() { - return fDevice; - } - -protected: - DawnTestContext(std::unique_ptr instance, const wgpu::Device& device) - : fInstance(std::move(instance)), fDevice(device) {} - - std::unique_ptr fInstance; - wgpu::Device fDevice; - -private: - using INHERITED = TestContext; -}; - -/** - * Creates Dawn context object bound to the Dawn library. - */ -DawnTestContext* CreatePlatformDawnTestContext(DawnTestContext*); - -} // namespace sk_gpu_test - -#endif - -#endif diff --git a/tools/gpu/gl/GLTestContext.cpp b/tools/gpu/gl/GLTestContext.cpp index 757dae6870b2..9654136bb7a4 100644 --- a/tools/gpu/gl/GLTestContext.cpp +++ b/tools/gpu/gl/GLTestContext.cpp @@ -213,7 +213,7 @@ void GLTestContext::teardown() { void GLTestContext::testAbandon() { INHERITED::testAbandon(); -#if defined(SK_GL) && GR_TEST_UTILS +#if defined(SK_GL) && defined(GR_TEST_UTILS) if (fGLInterface) { fGLInterface->abandon(); fOriginalGLInterface->abandon(); diff --git a/tools/gpu/gl/interface/gen_interface.go b/tools/gpu/gl/interface/gen_interface.go index 0a4dc57f3a48..f01aec733e18 100644 --- a/tools/gpu/gl/interface/gen_interface.go +++ b/tools/gpu/gl/interface/gen_interface.go @@ -152,7 +152,7 @@ func fillAssembleTemplate(template string, features []FeatureSet, getReqs Requir } sort.Strings(feature.TestOnlyFunctions) if len(feature.TestOnlyFunctions) > 0 { - block += "#if GR_TEST_UTILS\n" + block += "#if defined(GR_TEST_UTILS)\n" for _, function := range feature.TestOnlyFunctions { block = assembleFunction(block, ifExpr, function, req) } @@ -368,7 +368,7 @@ func functionCheck(feature FeatureSet, indentLevel int) string { } preCheck := "" if len(testOnly) != 0 { - preCheck = fmt.Sprintf(`#if GR_TEST_UTILS + preCheck = fmt.Sprintf(`#if defined(GR_TEST_UTILS) %sif (%s) { %s%sRETURN_FALSE_INTERFACE; %s} diff --git a/tools/gpu/gl/interface/templates.go b/tools/gpu/gl/interface/templates.go index cba6102a1288..4ce7069408be 100644 --- a/tools/gpu/gl/interface/templates.go +++ b/tools/gpu/gl/interface/templates.go @@ -313,11 +313,11 @@ bool GrGLInterface::validate() const { return true; } -#if GR_TEST_UTILS +#if defined(GR_TEST_UTILS) void GrGLInterface::abandon() const { const_cast(this)->fFunctions = GrGLInterface::Functions(); } -#endif // GR_TEST_UTILS +#endif // defined(GR_TEST_UTILS) ` diff --git a/tools/gpu/vk/VkTestHelper.cpp b/tools/gpu/vk/VkTestHelper.cpp index aea196d4eb96..3926fc212643 100644 --- a/tools/gpu/vk/VkTestHelper.cpp +++ b/tools/gpu/vk/VkTestHelper.cpp @@ -75,6 +75,7 @@ bool VkTestHelper::init() { return false; } + SkASSERT(fDirectContext->supportsProtectedContent() == fIsProtected); return true; } diff --git a/tools/gpu/vk/VkYcbcrSamplerHelper.cpp b/tools/gpu/vk/VkYcbcrSamplerHelper.cpp index a73cc0f8e486..a71104b18441 100644 --- a/tools/gpu/vk/VkYcbcrSamplerHelper.cpp +++ b/tools/gpu/vk/VkYcbcrSamplerHelper.cpp @@ -10,6 +10,7 @@ #ifdef SK_VULKAN #include "include/gpu/GrDirectContext.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/vk/GrVkGpu.h" #include "src/gpu/ganesh/vk/GrVkUtil.h" @@ -223,7 +224,7 @@ bool VkYcbcrSamplerHelper::createBackendTexture(uint32_t width, uint32_t height) GrProtected::kNo, ycbcrInfo}; - fTexture = GrBackendTexture(width, height, imageInfo); + fTexture = GrBackendTextures::MakeVk(width, height, imageInfo); return true; } diff --git a/tools/gpu/vk/VkYcbcrSamplerHelper.h b/tools/gpu/vk/VkYcbcrSamplerHelper.h index 19e51685b4ae..28f11bcdeaba 100644 --- a/tools/gpu/vk/VkYcbcrSamplerHelper.h +++ b/tools/gpu/vk/VkYcbcrSamplerHelper.h @@ -13,6 +13,7 @@ #ifdef SK_VULKAN #include "include/gpu/GrBackendSurface.h" +#include "include/gpu/vk/GrVkTypes.h" class GrDirectContext; class GrVkGpu; diff --git a/tools/graphite/ContextFactory.cpp b/tools/graphite/ContextFactory.cpp index 97df2e488514..b975df59b342 100644 --- a/tools/graphite/ContextFactory.cpp +++ b/tools/graphite/ContextFactory.cpp @@ -27,7 +27,7 @@ ContextFactory::ContextInfo::ContextInfo(ContextInfo&& other) , fContext(std::move(other.fContext)) { } -ContextFactory::ContextInfo::ContextInfo(GrContextFactory::ContextType type, +ContextFactory::ContextInfo::ContextInfo(skgpu::ContextType type, std::unique_ptr testContext, std::unique_ptr context) : fType(type) @@ -37,13 +37,12 @@ ContextFactory::ContextInfo::ContextInfo(GrContextFactory::ContextType type, //////////////////////////////////////////////////////////////////////////////////////////////////// ContextFactory::ContextFactory(const skgpu::graphite::ContextOptions& options) - : fOptions(options) { -} + : fOptions(options) {} ContextFactory::~ContextFactory() {} std::tuple ContextFactory::getContextInfo( - GrContextFactory::ContextType type) { + skgpu::ContextType type) { for (ContextInfo& c : fContexts) { if (c.type() == type) { @@ -54,17 +53,17 @@ std::tuple ContextFactory::getC std::unique_ptr testCtx; switch (type) { - case GrContextFactory::kMetal_ContextType: { + case skgpu::ContextType::kMetal: { #ifdef SK_METAL testCtx = graphite::MtlTestContext::Make(); #endif } break; - case GrContextFactory::kVulkan_ContextType: { + case skgpu::ContextType::kVulkan: { #ifdef SK_VULKAN testCtx = graphite::VulkanTestContext::Make(); #endif } break; - case GrContextFactory::kDawn_ContextType: + case skgpu::ContextType::kDawn: { #ifdef SK_DAWN // Pass nullopt for default backend. @@ -73,14 +72,13 @@ std::tuple ContextFactory::getC } break; #ifdef SK_DAWN -#define CASE(TYPE) \ - case GrContextFactory::kDawn_##TYPE##_ContextType: \ - { \ - testCtx = graphite::DawnTestContext::Make(wgpu::BackendType::TYPE); \ - } break; +#define CASE(TYPE) \ + case skgpu::ContextType::kDawn_##TYPE: \ + testCtx = graphite::DawnTestContext::Make(wgpu::BackendType::TYPE); \ + break; #else -#define CASE(TYPE) \ - case GrContextFactory::kDawn_##TYPE##_ContextType: \ +#define CASE(TYPE) \ + case skgpu::ContextType::kDawn_##TYPE: \ break; #endif // SK_DAWN CASE(D3D11) diff --git a/tools/graphite/ContextFactory.h b/tools/graphite/ContextFactory.h index 5f4a9b3cca20..a0a724f1112b 100644 --- a/tools/graphite/ContextFactory.h +++ b/tools/graphite/ContextFactory.h @@ -12,15 +12,9 @@ #include "include/core/SkRefCnt.h" #include "include/gpu/graphite/ContextOptions.h" #include "include/gpu/graphite/GraphiteTypes.h" +#include "tools/gpu/ContextType.h" #include "tools/graphite/GraphiteTestContext.h" -// TODO: This is only included to get access to GrContextFactory::ContextType. We should instead -// move all of tools/gpu/ into tools/gpu/ganesh and tools/graphite into tools/gpu/graphite. Then in -// tools gpu we can have files for shared things between ganesh and graphite like ContextType. -#include "tools/gpu/GrContextFactory.h" - -using sk_gpu_test::GrContextFactory; - namespace skgpu::graphite { class Context; } @@ -35,7 +29,7 @@ class ContextFactory { ContextInfo(ContextInfo&& other); ~ContextInfo() = default; - GrContextFactory::ContextType type() const { return fType; } + skgpu::ContextType type() const { return fType; } skgpu::graphite::Context* context() const { return fContext.get(); } GraphiteTestContext* testContext() const { return fTestContext.get(); } @@ -43,12 +37,12 @@ class ContextFactory { private: friend class ContextFactory; // for ctor - ContextInfo(GrContextFactory::ContextType type, + ContextInfo(skgpu::ContextType type, std::unique_ptr testContext, std::unique_ptr context); - GrContextFactory::ContextType fType = GrContextFactory::kMock_ContextType; - std::unique_ptr fTestContext; + skgpu::ContextType fType = skgpu::ContextType::kMock; + std::unique_ptr fTestContext; std::unique_ptr fContext; }; @@ -60,7 +54,7 @@ class ContextFactory { ~ContextFactory(); std::tuple getContextInfo( - GrContextFactory::ContextType); + skgpu::ContextType); private: std::vector fContexts; diff --git a/tools/graphite/dawn/GraphiteDawnTestContext.cpp b/tools/graphite/dawn/GraphiteDawnTestContext.cpp index 0e1a294557f6..297abb2658c2 100644 --- a/tools/graphite/dawn/GraphiteDawnTestContext.cpp +++ b/tools/graphite/dawn/GraphiteDawnTestContext.cpp @@ -66,36 +66,49 @@ std::unique_ptr DawnTestContext::Make(std::optional features = { - wgpu::FeatureName::DepthClipControl, - }; + std::vector features; + wgpu::Adapter adapter = gAdapter.Get(); + if (adapter.HasFeature(wgpu::FeatureName::MSAARenderToSingleSampled)) { + features.push_back(wgpu::FeatureName::MSAARenderToSingleSampled); + } + if (adapter.HasFeature(wgpu::FeatureName::TransientAttachments)) { + features.push_back(wgpu::FeatureName::TransientAttachments); + } + wgpu::DeviceDescriptor desc; +#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME + desc.requiredFeatureCount = features.size(); +#else desc.requiredFeaturesCount = features.size(); +#endif desc.requiredFeatures = features.data(); -#if !defined(SK_DEBUG) - wgpu::DawnTogglesDescriptor deviceTogglesDesc; - std::array toggles = { - "skip_validation", - }; - deviceTogglesDesc.enabledTogglesCount = toggles.size(); - deviceTogglesDesc.enabledToggles = toggles.data(); - desc.nextInChain = &deviceTogglesDesc; + wgpu::DawnTogglesDescriptor deviceTogglesDesc; + static constexpr const char* kToggles[] = { + "use_user_defined_labels_in_backend" + }; +#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME + deviceTogglesDesc.enabledToggleCount = std::size(kToggles); +#else + deviceTogglesDesc.enabledTogglesCount = std::size(kToggles); #endif - auto device = wgpu::Device::Acquire(gAdapter.CreateDevice(&desc)); + deviceTogglesDesc.enabledToggles = kToggles; + desc.nextInChain = &deviceTogglesDesc; + + wgpu::Device device = wgpu::Device::Acquire(gAdapter.CreateDevice(&desc)); SkASSERT(device); device.SetUncapturedErrorCallback( [](WGPUErrorType type, const char* message, void*) { SkDebugf("Device error: %s\n", message); }, - 0); + /*userdata=*/nullptr); device.SetDeviceLostCallback( [](WGPUDeviceLostReason reason, const char* message, void*) { if (reason != WGPUDeviceLostReason_Destroyed) { SK_ABORT("Device lost: %s\n", message); } }, - 0); + /*userdata=*/nullptr); skgpu::graphite::DawnBackendContext backendContext; backendContext.fDevice = device; diff --git a/tools/install_dependencies.sh b/tools/install_dependencies.sh index c99aae5441ae..d88675c7f3a8 100755 --- a/tools/install_dependencies.sh +++ b/tools/install_dependencies.sh @@ -39,6 +39,9 @@ if command -v lsb_release > /dev/null ; then libjpeg-dev libpng-dev libwebp-dev + libx11-xcb-dev + libxcb-xkb-dev + xcb EOF ) if [ $(lsb_release -r -s) = '14.04' ] ; then diff --git a/tools/rewrite_includes.py b/tools/rewrite_includes.py index 5add9d76bff8..b1168dd6f79b 100755 --- a/tools/rewrite_includes.py +++ b/tools/rewrite_includes.py @@ -24,7 +24,6 @@ 'bench', 'dm', 'docs', - 'example', 'experimental', 'fuzz', 'gm', @@ -95,6 +94,7 @@ def to_rewrite(): 'jetski' in file_path or 'tools/window' in file_path or file_path.startswith('bazel/rbe') or + 'example/external_client/' in file_path or # We intentionally list SkUserConfig.h not from the root in this file. file_path == 'include/private/base/SkLoadUserConfig.h'): continue diff --git a/tools/run-wasm-gm-tests/run-wasm-gm-tests.html b/tools/run-wasm-gm-tests/run-wasm-gm-tests.html index 00704df07304..cda55a9a69f9 100644 --- a/tools/run-wasm-gm-tests/run-wasm-gm-tests.html +++ b/tools/run-wasm-gm-tests/run-wasm-gm-tests.html @@ -239,13 +239,10 @@ 'WritePixelsNonTextureMSAA_Gpu', // These SkSL tests fail on the Quadro P400s in the Golo - 'SkSLCommaSideEffects_GPU', - 'SkSLMatrixScalarNoOpFolding_GPU', - 'SkSLPreserveSideEffects_GPU', - 'SkSLStructFieldNoFolding_GPU', - - // This SkSL test generates GLSL which violates the WebGL2 spec (b/294893925) - 'SkSLCommaExpressionsAllowInlining_GPU', + 'SkSLCommaSideEffects_Ganesh', + 'SkSLMatrixScalarNoOpFolding_Ganesh', + 'SkSLPreserveSideEffects_Ganesh', + 'SkSLStructFieldNoFolding_Ganesh', // These tests use files on disk, which is not supported for WASM 'Stream', diff --git a/tools/sk_app/BUILD.bazel b/tools/sk_app/BUILD.bazel index 75fcb83e2a28..167460a0b97f 100644 --- a/tools/sk_app/BUILD.bazel +++ b/tools/sk_app/BUILD.bazel @@ -43,10 +43,6 @@ skia_objc_library( ] + select_multi( { # TODO(kjlubick, jmbetancourt) Graphite backend - "//src/gpu:dawn_ganesh": [ - "DawnWindowContext.h", - "DawnWindowContext.cpp", - ], "//src/gpu:gl_ganesh": [ "GLWindowContext.cpp", "GLWindowContext.h", diff --git a/tools/sk_app/Window.h b/tools/sk_app/Window.h index 96e8cce54f54..aaeefa090066 100644 --- a/tools/sk_app/Window.h +++ b/tools/sk_app/Window.h @@ -67,7 +67,6 @@ class Window { kANGLE_BackendType, #endif #ifdef SK_DAWN - kDawn_BackendType, #if defined(SK_GRAPHITE) kGraphiteDawn_BackendType, #endif diff --git a/tools/sk_app/mac/BUILD.bazel b/tools/sk_app/mac/BUILD.bazel index b165681ba8e9..2afb19ddc542 100644 --- a/tools/sk_app/mac/BUILD.bazel +++ b/tools/sk_app/mac/BUILD.bazel @@ -16,7 +16,6 @@ skia_filegroup( ] + select({ # TODO(kjlubick, jmbetancourt) Graphite backend "//src/gpu:gl_ganesh": ["GLWindowContext_mac.mm"], - "//src/gpu:dawn_ganesh": ["DawnMTLWindowContext_mac.mm"], "//src/gpu:metal_ganesh": ["MetalWindowContext_mac.mm"], "//conditions:default": [], }), diff --git a/tools/sk_app/mac/Window_mac.mm b/tools/sk_app/mac/Window_mac.mm index 1f67bff12e64..22cecd12952b 100644 --- a/tools/sk_app/mac/Window_mac.mm +++ b/tools/sk_app/mac/Window_mac.mm @@ -123,9 +123,6 @@ - (MainView*)initWithWindow:(sk_app::Window_mac*)initWindow; info.fMainView = [fWindow contentView]; switch (attachType) { #ifdef SK_DAWN - case kDawn_BackendType: - fWindowContext = MakeDawnMTLForMac(info, fRequestedDisplayParams); - break; #if defined(SK_GRAPHITE) case kGraphiteDawn_BackendType: fWindowContext = MakeGraphiteDawnMetalForMac(info, fRequestedDisplayParams); diff --git a/tools/sk_app/unix/BUILD.bazel b/tools/sk_app/unix/BUILD.bazel index c2475e77ffd6..6ea3c601059c 100644 --- a/tools/sk_app/unix/BUILD.bazel +++ b/tools/sk_app/unix/BUILD.bazel @@ -1,5 +1,4 @@ load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_deps", "skia_filegroup") -load("//bazel:flags.bzl", "selects") licenses(["notice"]) @@ -18,14 +17,6 @@ skia_filegroup( visibility = ["//tools/sk_app:__pkg__"], ) -selects.config_setting_group( - name = "dawn_or_vulkan", - match_any = [ - "//src/gpu:dawn_ganesh", - "//src/gpu:vulkan_ganesh", - ], -) - skia_cc_deps( name = "deps", testonly = True, @@ -35,12 +26,12 @@ skia_cc_deps( "-lXau", # dep of xcb "-lXdmcp", # dep of xcb ] + select({ - ":dawn_or_vulkan": ["-lX11-xcb"], + "//src/gpu:vulkan_ganesh": ["-lX11-xcb"], "//conditions:default": [], }), visibility = ["//tools/sk_app:__pkg__"], deps = select({ - ":dawn_or_vulkan": ["//tools/gpu/vk:testutils"], + "//src/gpu:vulkan_ganesh": ["//tools/gpu/vk:testutils"], "//conditions:default": [], }), ) diff --git a/tools/sk_app/unix/Window_unix.cpp b/tools/sk_app/unix/Window_unix.cpp index cb7452d83fa5..b699f7215112 100644 --- a/tools/sk_app/unix/Window_unix.cpp +++ b/tools/sk_app/unix/Window_unix.cpp @@ -395,11 +395,6 @@ bool Window_unix::attach(BackendType attachType) { } switch (attachType) { -#ifdef SK_DAWN - case kDawn_BackendType: - fWindowContext = skwindow::MakeDawnVulkanForXlib(winInfo, fRequestedDisplayParams); - break; -#endif #if defined(SK_DAWN) && defined(SK_GRAPHITE) case kGraphiteDawn_BackendType: fWindowContext = skwindow::MakeGraphiteDawnVulkanForXlib(winInfo, diff --git a/tools/sk_app/win/Window_win.cpp b/tools/sk_app/win/Window_win.cpp index e51641e2107a..7b137866f06f 100644 --- a/tools/sk_app/win/Window_win.cpp +++ b/tools/sk_app/win/Window_win.cpp @@ -363,9 +363,6 @@ bool Window_win::attach(BackendType attachType) { break; #endif #ifdef SK_DAWN - case kDawn_BackendType: - fWindowContext = skwindow::MakeDawnD3D12ForWin(fHWnd, fRequestedDisplayParams); - break; #if defined(SK_GRAPHITE) case kGraphiteDawn_BackendType: fWindowContext = skwindow::MakeGraphiteDawnD3D12ForWin(fHWnd, fRequestedDisplayParams); diff --git a/tools/skiaserve/Request.cpp b/tools/skiaserve/Request.cpp index 7f45000b7f2e..a33d8cf331d7 100644 --- a/tools/skiaserve/Request.cpp +++ b/tools/skiaserve/Request.cpp @@ -58,10 +58,10 @@ sk_sp Request::writeCanvasToPng(SkCanvas* canvas) { SkCanvas* Request::getCanvas() { #ifdef SK_GL GrContextFactory* factory = fContextFactory; - GLTestContext* gl = factory->getContextInfo(GrContextFactory::kGL_ContextType, + GLTestContext* gl = factory->getContextInfo(skgpu::ContextType::kGL, GrContextFactory::ContextOverrides::kNone).glContext(); if (!gl) { - gl = factory->getContextInfo(GrContextFactory::kGLES_ContextType, + gl = factory->getContextInfo(skgpu::ContextType::kGLES, GrContextFactory::ContextOverrides::kNone).glContext(); } if (gl) { @@ -100,10 +100,10 @@ sk_sp Request::writeOutSkp() { } GrDirectContext* Request::directContext() { - auto result = fContextFactory->get(GrContextFactory::kGL_ContextType, + auto result = fContextFactory->get(skgpu::ContextType::kGL, GrContextFactory::ContextOverrides::kNone); if (!result) { - result = fContextFactory->get(GrContextFactory::kGLES_ContextType, + result = fContextFactory->get(skgpu::ContextType::kGLES, GrContextFactory::ContextOverrides::kNone); } return result; diff --git a/tools/skottie2movie.cpp b/tools/skottie2movie.cpp index dec7e1466382..11a1b3373fd9 100644 --- a/tools/skottie2movie.cpp +++ b/tools/skottie2movie.cpp @@ -53,7 +53,7 @@ int main(int argc, char** argv) { return -1; } - auto contextType = sk_gpu_test::GrContextFactory::kGL_ContextType; + auto contextType = skgpu::ContextType::kGL; GrContextOptions grCtxOptions; sk_gpu_test::GrContextFactory factory(grCtxOptions); diff --git a/tools/skottie_ios_app/SkiaGLContext.mm b/tools/skottie_ios_app/SkiaGLContext.mm index 547ee679b6f5..befa7187414f 100644 --- a/tools/skottie_ios_app/SkiaGLContext.mm +++ b/tools/skottie_ios_app/SkiaGLContext.mm @@ -9,6 +9,7 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" +#include "include/gpu/ganesh/gl/GrGLBackendSurface.h" #include "include/gpu/gl/GrGLInterface.h" #include "include/gpu/gl/GrGLTypes.h" @@ -35,11 +36,11 @@ static void configure_glkview_for_skia(GLKView* view) { glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fboid); return SkSurfaces::WrapBackendRenderTarget( dContext, - GrBackendRenderTarget(width, - height, - kSampleCount, - kStencilBits, - GrGLFramebufferInfo{(GrGLuint)fboid, GL_RGBA8}), + GrBackendRenderTargets::MakeGL(width, + height, + kSampleCount, + kStencilBits, + GrGLFramebufferInfo{(GrGLuint)fboid, GL_RGBA8}), kBottomLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType, nullptr, diff --git a/tools/skqp/README.md b/tools/skqp/README.md index 8c28d7feaac0..80d7174fa8b8 100644 --- a/tools/skqp/README.md +++ b/tools/skqp/README.md @@ -22,7 +22,7 @@ How to build and run the SkQP tests - Install the [Android NDK](https://developer.android.com/ndk/downloads/). ( cd ~; unzip ~/Downloads/android-ndk-*.zip ) - ANDROID_NDK=$(ls -d ~/android-ndk-*) # Or wherever you installed the Android NDK. + ANDROID_NDK_HOME=$(ls -d ~/android-ndk-*) # Or wherever you installed the Android NDK. - Install the [Android SDK](https://developer.android.com/studio/#command-tools). Set the `ANDROID_HOME` environment variable. diff --git a/tools/skqp/create_apk.py b/tools/skqp/create_apk.py index fd62393487af..b84c654141ae 100755 --- a/tools/skqp/create_apk.py +++ b/tools/skqp/create_apk.py @@ -11,8 +11,8 @@ python create_apk.py arm x86 -The environment variables ANDROID_NDK and ANDROID_HOME must be set to the -locations of the Android NDK and SDK. +The environment variables ANDROID_NDK_HOME and ANDROID_HOME must be set to +the locations of the Android NDK and SDK. Additionally, `ninja` should be in your path. @@ -125,7 +125,7 @@ def create_apk_impl(opts): apps_dir = 'platform_tools/android/apps' app = 'skqp' - lib = 'lib%s_app.so' % app + lib = 'lib%s_jni.so' % app # These are the locations in the tree where the gradle needs or will create # not-checked-in files. Treat them specially to keep the tree clean. @@ -199,10 +199,10 @@ def __init__(self): self.error = '' if not check_ninja(): self.error += '`ninja` is not in the path.\n' - for var in ['ANDROID_NDK', 'ANDROID_HOME']: + for var in ['ANDROID_NDK_HOME', 'ANDROID_HOME']: if not os.path.exists(os.environ.get(var, '')): self.error += 'Environment variable `%s` is not set.\n' % var - self.android_ndk = os.path.abspath(os.environ['ANDROID_NDK']) + self.android_ndk = os.path.abspath(os.environ['ANDROID_NDK_HOME']) self.android_home = os.path.abspath(os.environ['ANDROID_HOME']) args = sys.argv[1:] for arg in args: @@ -220,7 +220,7 @@ def gn_args(self, arch): api_level=26) def write(self, o): - for k, v in [('ANDROID_NDK', self.android_ndk), + for k, v in [('ANDROID_NDK_HOME', self.android_ndk), ('ANDROID_HOME', self.android_home), ('SKQP_OUTPUT_DIR', self.final_output_dir), ('SKQP_BUILD_DIR', self.build_dir), diff --git a/tools/skqp/make_apk.sh b/tools/skqp/make_apk.sh index cd1bb7b14b0b..620508a744cf 100755 --- a/tools/skqp/make_apk.sh +++ b/tools/skqp/make_apk.sh @@ -2,4 +2,4 @@ # Copyright 2019 Google Inc. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -exec python "$(dirname "$0")"/make_universal_apk.py "$@" +exec python3"$(dirname "$0")"/make_universal_apk.py "$@" diff --git a/tools/skqp/make_universal_apk b/tools/skqp/make_universal_apk index e90a92d9f455..73cb78db5d5c 100755 --- a/tools/skqp/make_universal_apk +++ b/tools/skqp/make_universal_apk @@ -4,4 +4,4 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -exec python "$(dirname "$0")"/make_universal_apk.py "$@" +exec python3 "$(dirname "$0")"/make_universal_apk.py "$@" diff --git a/tools/skqp/make_universal_apk.py b/tools/skqp/make_universal_apk.py index 2cb75de7649d..ffe7dbd330bd 100755 --- a/tools/skqp/make_universal_apk.py +++ b/tools/skqp/make_universal_apk.py @@ -11,7 +11,7 @@ python make_universal_apk.py arm x86 -The environment variables ANDROID_NDK and ANDROID_HOME must be set to the +The environment variables ANDROID_NDK_HOME and ANDROID_HOME must be set to the locations of the Android NDK and SDK. Additionally, `ninja` should be in your path. diff --git a/tools/skqp/src/skqp.cpp b/tools/skqp/src/skqp.cpp index e45d78d7ff44..6f10f5254f09 100644 --- a/tools/skqp/src/skqp.cpp +++ b/tools/skqp/src/skqp.cpp @@ -154,8 +154,8 @@ std::vector SkQP::executeTest(SkQP::UnitTest test) { CtsEnforcement::RunMode::kRunStrict) { options.fDisableDriverCorrectnessWorkarounds = true; } - if (test->fContextOptionsProc) { - test->fContextOptionsProc(&options); + if (test->fGaneshContextOptionsProc) { + test->fGaneshContextOptionsProc(&options); } test->ganesh(&r, options); fTestResults.push_back(TestResult{test->fName, r.fErrors}); diff --git a/tools/skqp/src/skqp_GpuTestProcs.cpp b/tools/skqp/src/skqp_GpuTestProcs.cpp index cc48916443b8..f535c386a7a3 100644 --- a/tools/skqp/src/skqp_GpuTestProcs.cpp +++ b/tools/skqp/src/skqp_GpuTestProcs.cpp @@ -30,23 +30,20 @@ using sk_gpu_test::GLTestContext; namespace skiatest { -bool IsGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kOpenGL == GrContextFactory::ContextTypeBackend(type); +bool IsGLContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kOpenGL; } -bool IsVulkanContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return GrBackendApi::kVulkan == GrContextFactory::ContextTypeBackend(type); +bool IsVulkanContextType(skgpu::ContextType type) { + return skgpu::ganesh::ContextTypeBackend(type) == GrBackendApi::kVulkan; } -bool IsRenderingGLContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return IsGLContextType(type) && GrContextFactory::IsRenderingContext(type); -} -bool IsMockContextType(sk_gpu_test::GrContextFactory::ContextType type) { - return type == GrContextFactory::kMock_ContextType; +bool IsMockContextType(skgpu::ContextType type) { + return type == skgpu::ContextType::kMock; } // These are not supported -bool IsMetalContextType(sk_gpu_test::GrContextFactory::ContextType type) { return false; } -bool IsDirect3DContextType(sk_gpu_test::GrContextFactory::ContextType type) { return false; } -bool IsDawnContextType(sk_gpu_test::GrContextFactory::ContextType type) { return false; } +bool IsMetalContextType(skgpu::ContextType type) { return false; } +bool IsDirect3DContextType(skgpu::ContextType type) { return false; } +bool IsDawnContextType(skgpu::ContextType type) { return false; } static bool vk_has_physical_devices() { static bool supported = false; @@ -67,19 +64,18 @@ static bool vk_has_physical_devices() { #if defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_MAC) // Used for testing on desktop machines. -static constexpr auto kNativeGLType = GrContextFactory::kGL_ContextType; +static constexpr auto kNativeGLType = skgpu::ContextType::kGL; #else -static constexpr auto kNativeGLType = GrContextFactory::kGLES_ContextType; +static constexpr auto kNativeGLType = skgpu::ContextType::kGLES; #endif #ifdef SK_BUILD_FOR_ANDROID -static_assert(kNativeGLType == GrContextFactory::kGLES_ContextType, "CTS requires GLES"); +static_assert(kNativeGLType == skgpu::ContextType::kGLES, "CTS requires GLES"); #endif -static bool skip_context(GrContextFactory::ContextType contextType) { +static bool skip_context(skgpu::ContextType contextType) { // Use "native" instead of explicitly trying both OpenGL and OpenGL ES. - if (contextType == GrContextFactory::kGL_ContextType || - contextType == GrContextFactory::kGLES_ContextType) { + if (contextType == skgpu::ContextType::kGL || contextType == skgpu::ContextType::kGLES) { if (contextType != kNativeGLType) { return true; } @@ -88,18 +84,18 @@ static bool skip_context(GrContextFactory::ContextType contextType) { // The Android CDD (https://source.android.com/compatibility/12/android-12-cdd.pdf) does not // require Vulkan, but if it enumerates at least one VkPhysicalDevice then it is expected that // Vulkan is supported - if (contextType == GrContextFactory::kVulkan_ContextType && !vk_has_physical_devices()) { + if (contextType == skgpu::ContextType::kVulkan && !vk_has_physical_devices()) { return true; } return false; } void RunWithGaneshTestContexts(GrContextTestFn* testFn, - GrContextTypeFilterFn* filter, + ContextTypeFilterFn* filter, Reporter* reporter, const GrContextOptions& options) { - for (int typeInt = 0; typeInt < GrContextFactory::kContextTypeCnt; ++typeInt) { - GrContextFactory::ContextType contextType = (GrContextFactory::ContextType)typeInt; + for (int typeInt = 0; typeInt < skgpu::kContextTypeCount; ++typeInt) { + skgpu::ContextType contextType = static_cast(typeInt); if (skip_context(contextType)) { continue; } @@ -112,7 +108,7 @@ void RunWithGaneshTestContexts(GrContextTestFn* testFn, sk_gpu_test::GrContextFactory factory(options); sk_gpu_test::ContextInfo ctxInfo = factory.getContextInfo(contextType); - ReporterContext ctx(reporter, SkString(GrContextFactory::ContextTypeName(contextType))); + ReporterContext ctx(reporter, SkString(skgpu::ContextTypeName(contextType))); if (ctxInfo.directContext()) { ctxInfo.testContext()->makeCurrent(); (*testFn)(reporter, ctxInfo); @@ -127,8 +123,11 @@ void RunWithGaneshTestContexts(GrContextTestFn* testFn, namespace graphite { void RunWithGraphiteTestContexts(GraphiteTestFn* test, - GrContextTypeFilterFn* filter, - Reporter* reporter) { SK_ABORT(); } + ContextTypeFilterFn* filter, + Reporter* reporter, + const skgpu::graphite::ContextOptions&) { + SK_ABORT(); +} } // namespace graphite @@ -141,23 +140,22 @@ void SkQP::printBackendInfo(const char* dstPath) { SkFILEWStream out(dstPath); out.writeText("[\n"); - GrContextFactory::ContextType contextsToDump[] = {skiatest::kNativeGLType, - GrContextFactory::kVulkan_ContextType}; + skgpu::ContextType contextsToDump[] = {skiatest::kNativeGLType, skgpu::ContextType::kVulkan}; for (auto contextType : contextsToDump) { std::unique_ptr testCtx; switch (contextType) { #ifdef SK_GL - case GrContextFactory::kGL_ContextType: + case skgpu::ContextType::kGL: testCtx.reset(sk_gpu_test::CreatePlatformGLTestContext(kGL_GrGLStandard, nullptr)); break; - case GrContextFactory::kGLES_ContextType: + case skgpu::ContextType::kGLES: testCtx.reset( sk_gpu_test::CreatePlatformGLTestContext(kGLES_GrGLStandard, nullptr)); break; #endif #ifdef SK_VULKAN - case GrContextFactory::kVulkan_ContextType: + case skgpu::ContextType::kVulkan: testCtx.reset(sk_gpu_test::CreatePlatformVkTestContext(nullptr)); break; #endif diff --git a/tools/sksl-minify/BUILD.bazel b/tools/sksl-minify/BUILD.bazel index 737f5806a537..91fae2f3d6a7 100644 --- a/tools/sksl-minify/BUILD.bazel +++ b/tools/sksl-minify/BUILD.bazel @@ -37,7 +37,6 @@ skia_cc_binary_with_flags( name = "sksl_minify", srcs = ["SkSLMinify.cpp"], set_flags = { - "enable_sksl": ["True"], "enable_skslc": ["True"], }, deps = [ diff --git a/tools/sksl-minify/SkSLMinify.cpp b/tools/sksl-minify/SkSLMinify.cpp index efddabf0da2f..13c630f9a115 100644 --- a/tools/sksl-minify/SkSLMinify.cpp +++ b/tools/sksl-minify/SkSLMinify.cpp @@ -121,14 +121,12 @@ static std::forward_list> compile_module_lis if (!m) { return {}; } - if (!gUnoptimized) { - // We need to optimize every module in the chain. We rename private functions at global - // scope, and we need to make sure there are no name collisions between nested modules. - // (i.e., if module A claims names `$a` and `$b` at global scope, module B will need to - // start at `$c`. The most straightforward way to handle this is to actually perform the - // renames.) - compiler.optimizeModuleBeforeMinifying(kind, *m); - } + // We need to optimize every module in the chain. We rename private functions at global + // scope, and we need to make sure there are no name collisions between nested modules. + // (i.e., if module A claims names `$a` and `$b` at global scope, module B will need to + // start at `$c`. The most straightforward way to handle this is to actually perform the + // renames.) + compiler.optimizeModuleBeforeMinifying(kind, *m, /*shrinkSymbols=*/!gUnoptimized); modules.push_front(std::move(m)); } // Return all of the modules to transfer their ownership to the caller. diff --git a/tools/skslc/BUILD.bazel b/tools/skslc/BUILD.bazel index ac55e88374e1..166396adb4a9 100644 --- a/tools/skslc/BUILD.bazel +++ b/tools/skslc/BUILD.bazel @@ -11,7 +11,6 @@ skia_cc_binary_with_flags( "Main.cpp", ], set_flags = { - "enable_sksl": ["True"], "enable_sksl_tracing": ["True"], "enable_skslc": ["True"], }, diff --git a/tools/skslc/Main.cpp b/tools/skslc/Main.cpp index ba6ec50dc59f..f30af6a995c0 100644 --- a/tools/skslc/Main.cpp +++ b/tools/skslc/Main.cpp @@ -116,6 +116,15 @@ class ShaderCapsTestFactory : public SkSL::ShaderCapsFactory { return sCaps; } + static const SkSL::ShaderCaps* CannotUseVoidInSequenceExpressions() { + static const SkSL::ShaderCaps* sCaps = [] { + std::unique_ptr caps = MakeShaderCaps(); + caps->fCanUseVoidInSequenceExpressions = false; + return caps.release(); + }(); + return sCaps; + } + static const SkSL::ShaderCaps* EmulateAbsIntFunction() { static const SkSL::ShaderCaps* sCaps = [] { std::unique_ptr caps = MakeShaderCaps(); @@ -196,6 +205,16 @@ class ShaderCapsTestFactory : public SkSL::ShaderCapsFactory { return sCaps; } + static const SkSL::ShaderCaps* NoExternalTextureSupport() { + static const SkSL::ShaderCaps* sCaps = [] { + std::unique_ptr caps = MakeShaderCaps(); + caps->fVersionDeclString = "#version 400"; + caps->fExternalTextureSupport = false; + return caps.release(); + }(); + return sCaps; + } + static const SkSL::ShaderCaps* RemovePowWithConstantExponent() { static const SkSL::ShaderCaps* sCaps = [] { std::unique_ptr caps = MakeShaderCaps(); @@ -347,6 +366,9 @@ static bool detect_shader_settings(const std::string& text, if (consume_suffix(&settingsText, " CannotUseMinAndAbsTogether")) { *caps = Factory::CannotUseMinAndAbsTogether(); } + if (consume_suffix(&settingsText, " CannotUseVoidInSequenceExpressions")) { + *caps = Factory::CannotUseVoidInSequenceExpressions(); + } if (consume_suffix(&settingsText, " Default")) { *caps = Factory::Default(); } @@ -374,6 +396,9 @@ static bool detect_shader_settings(const std::string& text, if (consume_suffix(&settingsText, " NoBuiltinFMASupport")) { *caps = Factory::NoBuiltinFMASupport(); } + if (consume_suffix(&settingsText, " NoExternalTextureSupport")) { + *caps = Factory::NoExternalTextureSupport(); + } if (consume_suffix(&settingsText, " RemovePowWithConstantExponent")) { *caps = Factory::RemovePowWithConstantExponent(); } @@ -420,9 +445,6 @@ static bool detect_shader_settings(const std::string& text, if (consume_suffix(&settingsText, " NoRTFlip")) { settings->fForceNoRTFlip = true; } - if (consume_suffix(&settingsText, " NoTraceVarInDebugTrace")) { - settings->fAllowTraceVarInDebugTrace = false; - } if (consume_suffix(&settingsText, " InlineThresholdMax")) { settings->fInlineThreshold = INT_MAX; } @@ -433,9 +455,6 @@ static bool detect_shader_settings(const std::string& text, settings->fOptimize = false; *debugTrace = std::make_unique(); } - if (consume_suffix(&settingsText, " SPIRVDawnCompatMode")) { - settings->fSPIRVDawnCompatMode = true; - } if (settingsText.empty()) { break; diff --git a/tools/viewer/GMSlide.cpp b/tools/viewer/GMSlide.cpp index c98d43315170..0c6511cc8957 100644 --- a/tools/viewer/GMSlide.cpp +++ b/tools/viewer/GMSlide.cpp @@ -22,7 +22,7 @@ class SkMetaData; GMSlide::GMSlide(std::unique_ptr gm) : fGM(std::move(gm)) { fGM->setMode(skiagm::GM::kSample_Mode); - fName.printf("GM_%s", fGM->getName()); + fName.printf("GM_%s", fGM->getName().c_str()); } GMSlide::~GMSlide() = default; diff --git a/tools/viewer/ProtectedSlide.cpp b/tools/viewer/ProtectedSlide.cpp index dd506eaead9d..1ba74f4a8abd 100644 --- a/tools/viewer/ProtectedSlide.cpp +++ b/tools/viewer/ProtectedSlide.cpp @@ -5,72 +5,226 @@ * found in the LICENSE file. */ +#include "include/core/SkTypes.h" + +#if defined(SK_GANESH) && defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26 + +#include "include/android/SkImageAndroid.h" +#include "include/android/SkSurfaceAndroid.h" +#include "include/core/SkBitmap.h" #include "include/core/SkCanvas.h" -#include "include/effects/SkImageFilters.h" +#include "include/core/SkColorSpace.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" -#include "tools/gpu/ProtectedUtils.h" +#include "tools/ToolUtils.h" #include "tools/viewer/Slide.h" +#include + +namespace { + +static void cleanup_resources(AHardwareBuffer* buffer) { + if (buffer) { + AHardwareBuffer_release(buffer); + } +} + +sk_sp create_protected_AHB_surface(GrDirectContext* dContext, int width, int height) { + + AHardwareBuffer* buffer = nullptr; + + AHardwareBuffer_Desc hwbDesc; + hwbDesc.width = width; + hwbDesc.height = height; + hwbDesc.layers = 1; + hwbDesc.usage = AHARDWAREBUFFER_USAGE_CPU_READ_NEVER | + AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER | + AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE | + AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT; + + hwbDesc.usage |= AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT; + + hwbDesc.format = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM; + // The following three are not used in the allocate + hwbDesc.stride = 0; + hwbDesc.rfu0= 0; + hwbDesc.rfu1= 0; + + if (int error = AHardwareBuffer_allocate(&hwbDesc, &buffer)) { + SkDebugf("Failed to allocated hardware buffer, error: %d\n", error); + cleanup_resources(buffer); + return nullptr; + } + + sk_sp surface = SkSurfaces::WrapAndroidHardwareBuffer(dContext, buffer, + kTopLeft_GrSurfaceOrigin, + nullptr, nullptr); + if (!surface) { + SkDebugf("Failed to make SkSurface.\n"); + cleanup_resources(buffer); + return nullptr; + } + + return surface; +} + +sk_sp create_protected_AHB_image(GrDirectContext* dContext, + SkColor color, int width, int height) { + sk_sp surf = create_protected_AHB_surface(dContext, width, height); + if (!surf) { + return nullptr; + } + + ToolUtils::draw_checkerboard(surf->getCanvas(), color, SK_ColorTRANSPARENT, 32); + + return surf->makeImageSnapshot(); +} + +sk_sp create_unprotected_AHB_image(SkColor color, int width, int height) { + + const SkBitmap srcBitmap = ToolUtils::create_checkerboard_bitmap(width, height, color, + SK_ColorTRANSPARENT, 32); + + AHardwareBuffer* buffer = nullptr; + + AHardwareBuffer_Desc hwbDesc; + hwbDesc.width = width; + hwbDesc.height = height; + hwbDesc.layers = 1; + hwbDesc.usage = AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN | + AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE; + + hwbDesc.format = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM; + // The following three are not used in the allocate + hwbDesc.stride = 0; + hwbDesc.rfu0= 0; + hwbDesc.rfu1= 0; + + if (int error = AHardwareBuffer_allocate(&hwbDesc, &buffer)) { + SkDebugf("Failed to allocated hardware buffer, error: %d", error); + cleanup_resources(buffer); + return nullptr; + } + + // Get actual desc for allocated buffer so we know the stride for uploading cpu data. + AHardwareBuffer_describe(buffer, &hwbDesc); + + uint32_t* bufferAddr; + if (AHardwareBuffer_lock(buffer, AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN, -1, nullptr, + reinterpret_cast(&bufferAddr))) { + SkDebugf("Failed to lock hardware buffer"); + cleanup_resources(buffer); + return nullptr; + } + + int bbp = srcBitmap.bytesPerPixel(); + uint32_t* src = (uint32_t*)srcBitmap.getPixels(); + + uint32_t* dst = bufferAddr; + for (int y = 0; y < height; ++y) { + memcpy(dst, src, width * bbp); + src += width; + dst += hwbDesc.stride; + } + AHardwareBuffer_unlock(buffer, nullptr); + + return SkImages::DeferredFromAHardwareBuffer(buffer, kPremul_SkAlphaType, + /* colorSpace= */ nullptr, + kTopLeft_GrSurfaceOrigin); +} + +sk_sp create_skia_image(GrDirectContext* dContext, int width, int height, + SkColor color, bool isProtected) { + SkImageInfo ii = SkImageInfo::Make(width, height, kRGBA_8888_SkColorType, + kPremul_SkAlphaType); + + sk_sp tmpSurface = SkSurfaces::RenderTarget(dContext, + skgpu::Budgeted::kYes, + ii, + /* sampleCount= */ 1, + kTopLeft_GrSurfaceOrigin, + /* surfaceProps= */ nullptr, + /* shouldCreateWithMips= */ false, + /* isProtected= */ true); + if (!tmpSurface) { + return nullptr; + } + + ToolUtils::draw_checkerboard(tmpSurface->getCanvas(), color, SK_ColorTRANSPARENT, 32); + + return tmpSurface->makeImageSnapshot(); +} + +} // anonymous namespace + class ProtectedSlide : public Slide { public: ProtectedSlide() { fName = "Protected"; } SkISize getDimensions() const override { return {kSize, 2*kSize}; } - void draw(SkCanvas* canvas) override { - canvas->clear(SK_ColorDKGRAY); + void draw(SkCanvas* origCanvas) override { + origCanvas->clear(SK_ColorDKGRAY); -#if defined(SK_GANESH) - GrDirectContext* dContext = GrAsDirectContext(canvas->recordingContext()); - if (!dContext) { - canvas->clear(SK_ColorGREEN); + GrDirectContext* dContext = GrAsDirectContext(origCanvas->recordingContext()); + if (!dContext || !dContext->supportsProtectedContent()) { + origCanvas->clear(SK_ColorGREEN); return; } if (fCachedContext != dContext) { fCachedContext = dContext; - - // Intentionally leak these. The issue is that, on Android, Viewer keeps recreating - // the context w/o signaling the slides. - (void) fProtectedImage.release(); - (void) fUnProtectedImage.release(); - - if (ProtectedUtils::ContextSupportsProtected(dContext)) { - fProtectedImage = ProtectedUtils::CreateProtectedSkImage(dContext, { kSize, kSize }, - SkColors::kRed, - /* isProtected= */ true); - } - - fUnProtectedImage = ProtectedUtils::CreateProtectedSkImage(dContext, { kSize, kSize }, - SkColors::kRed, - /* isProtected= */ false); + fProtectedAHBImage = create_protected_AHB_image(dContext, SK_ColorRED, kSize, kSize); + fUnprotectedAHBImage = create_unprotected_AHB_image(SK_ColorGREEN, kSize, kSize); + fProtectedSkImage = create_skia_image(dContext, kSize, kSize, SK_ColorBLUE, + /* isProtected= */ true); + fUnprotectedSkImage = create_skia_image(dContext, kSize, kSize, SK_ColorCYAN, + /* isProtected= */ false); } - SkPaint stroke; - stroke.setStyle(SkPaint::kStroke_Style); - stroke.setStrokeWidth(2); - - SkPaint paint; - paint.setColor(SK_ColorBLUE); - paint.setShader(fProtectedImage ? fProtectedImage->makeShader({}) : nullptr); - paint.setImageFilter(SkImageFilters::Blur(10, 10, nullptr)); - - canvas->drawRect(SkRect::MakeWH(kSize, kSize), paint); - canvas->drawRect(SkRect::MakeWH(kSize, kSize), stroke); + // Pick one of the four combinations to draw. Only the protected AHB-backed image will + // reproduce the bug (b/242266174). + SkImage* imgToUse = fProtectedAHBImage.get(); +// SkImage* imgToUse = fUnprotectedAHBImage.get(); +// SkImage* imgToUse = fProtectedSkImage.get(); +// SkImage* imgToUse = fUnprotectedSkImage.get(); + + sk_sp indirectImg; + + { + SkImageInfo ii = SkImageInfo::Make(kSize, kSize, kRGBA_8888_SkColorType, + kPremul_SkAlphaType); + sk_sp tmpS = SkSurfaces::RenderTarget(dContext, + skgpu::Budgeted::kYes, + ii, + /* sampleCount= */ 1, + kTopLeft_GrSurfaceOrigin, + /* surfaceProps= */ nullptr, + /* shouldCreateWithMips= */ false, + /* isProtected= */ true); + + tmpS->getCanvas()->clear(SK_ColorMAGENTA); + tmpS->getCanvas()->drawCircle(64, 64, 32, SkPaint()); + + // For protected AHB-backed images this draw seems to poison all above the draws too + tmpS->getCanvas()->drawImage(imgToUse, 0, 0); + indirectImg = tmpS->makeImageSnapshot(); + } - paint.setShader(fUnProtectedImage->makeShader({})); - canvas->drawRect(SkRect::MakeXYWH(0, kSize, kSize, kSize), paint); - canvas->drawRect(SkRect::MakeXYWH(0, kSize, kSize, kSize), stroke); -#endif // SK_GANESH + origCanvas->drawImage(imgToUse, 0, 0); + origCanvas->drawImage(indirectImg, 0, kSize); } private: static const int kSize = 128; GrDirectContext* fCachedContext = nullptr; - sk_sp fProtectedImage; - sk_sp fUnProtectedImage; + sk_sp fProtectedAHBImage; + sk_sp fUnprotectedAHBImage; + sk_sp fProtectedSkImage; + sk_sp fUnprotectedSkImage; }; DEF_SLIDE( return new ProtectedSlide(); ) + +#endif diff --git a/tools/viewer/SkottieSlide.cpp b/tools/viewer/SkottieSlide.cpp index dece427cb447..495b6dc60d3c 100644 --- a/tools/viewer/SkottieSlide.cpp +++ b/tools/viewer/SkottieSlide.cpp @@ -19,12 +19,12 @@ #include "modules/skottie/include/SkottieProperty.h" #include "modules/skottie/include/SlotManager.h" #include "modules/skottie/utils/SkottieUtils.h" +#include "modules/skottie/utils/TextEditor.h" #include "modules/skresources/include/SkResources.h" #include "src/core/SkOSFile.h" #include "src/utils/SkOSPath.h" #include "tools/Resources.h" #include "tools/timer/TimeUtils.h" -#include "tools/viewer/SkottieTextEditor.h" #include #include @@ -551,8 +551,8 @@ void SkottieSlide::init() { // Attach the editor to the first text layer, and track the rest as dependents. auto editor_target = std::move(text_props[0]); text_props.erase(text_props.cbegin()); - fTextEditor = sk_make_sp(std::move(editor_target), - std::move(text_props)); + fTextEditor = sk_make_sp(std::move(editor_target), + std::move(text_props)); } } else { SkDebugf("failed to load Bodymovin animation: %s\n", fPath.c_str()); diff --git a/tools/viewer/SkottieSlide.h b/tools/viewer/SkottieSlide.h index 3342f0656d61..c9e9439b059f 100644 --- a/tools/viewer/SkottieSlide.h +++ b/tools/viewer/SkottieSlide.h @@ -16,7 +16,9 @@ #include -class SkottieTextEditor; +namespace skottie_utils { +class TextEditor; +} namespace sksg { class Scene; } @@ -52,7 +54,7 @@ class SkottieSlide : public Slide { sksg::InvalidationController fInvalController; sk_sp fTransformTracker; std::unique_ptrfSlotManagerInterface; - sk_sp fTextEditor; + sk_sp fTextEditor; std::vector fFrameTimes; SkSize fWinSize = SkSize::MakeEmpty(); double fTimeBase = 0, diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index e77adc199f02..42dde2e28ad6 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -244,7 +244,6 @@ const char* get_backend_string(sk_app::Window::BackendType type) { case sk_app::Window::kANGLE_BackendType: return "ANGLE"; #endif #ifdef SK_DAWN - case sk_app::Window::kDawn_BackendType: return "Dawn"; #if defined(SK_GRAPHITE) case sk_app::Window::kGraphiteDawn_BackendType: return "Dawn (Graphite)"; #endif @@ -272,9 +271,6 @@ const char* get_backend_string(sk_app::Window::BackendType type) { static sk_app::Window::BackendType get_backend_type(const char* str) { #ifdef SK_DAWN - if (0 == strcmp(str, "dawn")) { - return sk_app::Window::kDawn_BackendType; - } else #if defined(SK_GRAPHITE) if (0 == strcmp(str, "grdawn")) { return sk_app::Window::kGraphiteDawn_BackendType; @@ -951,7 +947,7 @@ void Viewer::initSlides() { int firstGM = fSlides.size(); for (const skiagm::GMFactory& gmFactory : skiagm::GMRegistry::Range()) { std::unique_ptr gm = gmFactory(); - if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName())) { + if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName().c_str())) { auto slide = sk_make_sp(std::move(gm)); fSlides.push_back(std::move(slide)); } @@ -2026,8 +2022,6 @@ void Viewer::drawImGui() { ImGui::RadioButton("ANGLE", &newBackend, sk_app::Window::kANGLE_BackendType); #endif #if defined(SK_DAWN) - ImGui::SameLine(); - ImGui::RadioButton("Dawn", &newBackend, sk_app::Window::kDawn_BackendType); #if defined(SK_GRAPHITE) ImGui::SameLine(); ImGui::RadioButton("Dawn (Graphite)", &newBackend, @@ -2633,27 +2627,37 @@ void Viewer::drawImGui() { }); } #if defined(SK_GRAPHITE) -#if GRAPHITE_TEST_UTILS +#if defined(GRAPHITE_TEST_UTILS) if (skgpu::graphite::Context* gctx = fWindow->graphiteContext()) { - // TODO(skia:14418): populate fCachedShaders with recently-used shaders + int index = 1; auto callback = [&](const skgpu::UniqueKey& key, const skgpu::graphite::GraphicsPipeline* pipeline) { // Retrieve the shaders from the pipeline. - const skgpu::graphite::GraphicsPipeline::Shaders& shaders = - pipeline->getPipelineShaders(); + const skgpu::graphite::GraphicsPipeline::PipelineInfo& pipelineInfo = + pipeline->getPipelineInfo(); + const skgpu::graphite::ShaderCodeDictionary* dict = + gctx->priv().shaderCodeDictionary(); + skgpu::graphite::PaintParamsKey paintKey = + dict->lookup(pipelineInfo.fPaintID); CachedShader& entry(fCachedShaders.push_back()); entry.fKey = nullptr; - entry.fKeyString.printf("Pipeline 0x%08X", key.hash()); + entry.fKeyString = SkStringPrintf("#%-3d RenderStep: %u, Paint: ", + index++, + pipelineInfo.fRenderStepID); + entry.fKeyString.append(paintKey.toString(dict)); if (sksl) { - entry.fShader[kVertex_GrShaderType] = shaders.fSkSLVertexShader; - entry.fShader[kFragment_GrShaderType] = shaders.fSkSLFragmentShader; + entry.fShader[kVertex_GrShaderType] = + pipelineInfo.fSkSLVertexShader; + entry.fShader[kFragment_GrShaderType] = + pipelineInfo.fSkSLFragmentShader; entry.fShaderType = SkSetFourByteTag('S', 'K', 'S', 'L'); } else { - entry.fShader[kVertex_GrShaderType] = shaders.fNativeVertexShader; + entry.fShader[kVertex_GrShaderType] = + pipelineInfo.fNativeVertexShader; entry.fShader[kFragment_GrShaderType] = - shaders.fNativeFragmentShader; + pipelineInfo.fNativeFragmentShader; // We could derive the shader type from the GraphicsPipeline's type // if there is ever a need to. entry.fShaderType = SkSetFourByteTag('?', '?', '?', '?'); diff --git a/tools/window/BUILD.bazel b/tools/window/BUILD.bazel index e08e3699d0f2..3172e9f36148 100644 --- a/tools/window/BUILD.bazel +++ b/tools/window/BUILD.bazel @@ -11,10 +11,6 @@ skia_cc_library( "RasterWindowContext.h", "WindowContext.cpp", ] + select_multi({ - "//src/gpu:dawn_ganesh": [ - "DawnWindowContext.h", - "DawnWindowContext.cpp", - ], "//src/gpu:gl_ganesh": [ "GLWindowContext.cpp", "GLWindowContext.h", diff --git a/tools/window/BUILD.gn b/tools/window/BUILD.gn index 03a5d0a1ea21..507619811bda 100644 --- a/tools/window/BUILD.gn +++ b/tools/window/BUILD.gn @@ -144,13 +144,8 @@ skia_component("window") { } if (skia_use_dawn) { - sources += [ - "DawnWindowContext.cpp", - "DawnWindowContext.h", - ] if (is_linux) { if (dawn_enable_vulkan) { - sources += [ "unix/DawnVulkanWindowContext_unix.cpp" ] defines = [ "VK_USE_PLATFORM_XCB_KHR" ] libs += [ "X11-xcb" ] if (skia_enable_graphite) { @@ -163,7 +158,6 @@ skia_component("window") { } } else if (is_win) { if (dawn_enable_d3d12) { - sources += [ "win/DawnD3D12WindowContext_win.cpp" ] if (skia_enable_graphite) { sources += [ "GraphiteDawnWindowContext.cpp", @@ -174,7 +168,6 @@ skia_component("window") { } } else if (is_mac) { if (dawn_enable_metal) { - sources += [ "mac/DawnMTLWindowContext_mac.mm" ] if (skia_enable_graphite) { sources += [ "GraphiteDawnWindowContext.cpp", diff --git a/tools/window/DawnWindowContext.cpp b/tools/window/DawnWindowContext.cpp deleted file mode 100644 index d09a1ce75a59..000000000000 --- a/tools/window/DawnWindowContext.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "include/core/SkSurface.h" -#include "include/gpu/GrBackendSurface.h" -#include "include/gpu/GrDirectContext.h" -#include "include/gpu/ganesh/SkSurfaceGanesh.h" -#include "src/base/SkAutoMalloc.h" -#include "tools/window/DawnWindowContext.h" - -#include "dawn/dawn_proc.h" - -static wgpu::TextureUsage kUsage = wgpu::TextureUsage::RenderAttachment | - wgpu::TextureUsage::CopySrc; - -static void PrintDeviceError(WGPUErrorType, const char* message, void*) { - printf("Device error: %s\n", message); - SkASSERT(false); -} - -static wgpu::SwapChainDescriptor CreateSwapChainDesc(int width, - int height, - wgpu::TextureFormat format) { - wgpu::SwapChainDescriptor desc; - desc.format = format; - desc.usage = kUsage; - desc.width = width; - desc.height = height; - desc.presentMode = wgpu::PresentMode::Mailbox; - return desc; -} - -namespace skwindow::internal { - -DawnWindowContext::DawnWindowContext(const DisplayParams& params, - wgpu::TextureFormat swapChainFormat) - : WindowContext(params) - , fSwapChainFormat(swapChainFormat) - , fInstance(std::make_unique()) { -} - -void DawnWindowContext::initializeContext(int width, int height) { - SkASSERT(!fContext); - - fWidth = width; - fHeight = height; - fDevice = onInitializeContext(); - - fContext = GrDirectContext::MakeDawn(fDevice, fDisplayParams.fGrContextOptions); - if (!fContext) { - return; - } - - wgpu::SwapChainDescriptor swapChainDesc = - CreateSwapChainDesc(width, height, fSwapChainFormat); - fSwapChain = fDevice.CreateSwapChain(fDawnSurface, &swapChainDesc); - if (!fSwapChain) { - fContext.reset(); - return; - } - - fDevice.SetUncapturedErrorCallback(PrintDeviceError, 0); -} - -DawnWindowContext::~DawnWindowContext() { -} - -void DawnWindowContext::destroyContext() { - if (!fDevice.Get()) { - return; - } - - this->onDestroyContext(); - - fContext.reset(); - fDevice = nullptr; -} - -sk_sp DawnWindowContext::getBackbufferSurface() { - GrDawnRenderTargetInfo rtInfo; - rtInfo.fTextureView = fSwapChain.GetCurrentTextureView(); - rtInfo.fFormat = fSwapChainFormat; - rtInfo.fLevelCount = 1; // FIXME - GrBackendRenderTarget backendRenderTarget(fWidth, fHeight, fDisplayParams.fMSAASampleCount, 8, - rtInfo); - fSurface = SkSurfaces::WrapBackendRenderTarget(fContext.get(), - backendRenderTarget, - this->getRTOrigin(), - fDisplayParams.fColorType, - fDisplayParams.fColorSpace, - &fDisplayParams.fSurfaceProps); - return fSurface; -} - -void DawnWindowContext::onSwapBuffers() { - fSwapChain.Present(); -} - -void DawnWindowContext::resize(int w, int h) { - fWidth = w; - fHeight = h; - wgpu::SwapChainDescriptor swapChainDesc = - CreateSwapChainDesc(w, h, fSwapChainFormat); - fSwapChain = fDevice.CreateSwapChain(fDawnSurface, &swapChainDesc); - if (!fSwapChain) { - fContext.reset(); - return; - } -} - -void DawnWindowContext::setDisplayParams(const DisplayParams& params) { - fDisplayParams = params; -} - -wgpu::Device DawnWindowContext::createDevice(wgpu::BackendType type) { - fInstance->DiscoverDefaultPhysicalDevices(); - DawnProcTable backendProcs = dawn::native::GetProcs(); - dawnProcSetProcs(&backendProcs); - - std::vector adapters = fInstance->GetAdapters(); - for (dawn::native::Adapter adapter : adapters) { - wgpu::AdapterProperties properties; - adapter.GetProperties(&properties); - if (properties.backendType == type) { - return adapter.CreateDevice(); - } - } - return nullptr; -} - -} //namespace skwindow::internal diff --git a/tools/window/DawnWindowContext.h b/tools/window/DawnWindowContext.h deleted file mode 100644 index 82130415891d..000000000000 --- a/tools/window/DawnWindowContext.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#ifndef DawnWindowContext_DEFINED -#define DawnWindowContext_DEFINED - -#include "include/core/SkRefCnt.h" -#include "include/core/SkSurface.h" - -#include "tools/window/WindowContext.h" -#include "webgpu/webgpu_cpp.h" -#include "dawn/native/DawnNative.h" - -namespace skwindow::internal { - -class DawnWindowContext : public WindowContext { -public: - DawnWindowContext(const DisplayParams&, wgpu::TextureFormat swapChainFormat); - ~DawnWindowContext() override; - sk_sp getBackbufferSurface() override; - bool isValid() override { return SkToBool(fDevice.Get()); } - - void resize(int w, int h) override; - - void setDisplayParams(const DisplayParams& params) override; - -protected: - bool isGpuContext() override { return true; } - void initializeContext(int width, int height); - wgpu::Device createDevice(wgpu::BackendType type); - virtual wgpu::Device onInitializeContext() = 0; - virtual void onDestroyContext() = 0; - virtual GrSurfaceOrigin getRTOrigin() const { return kTopLeft_GrSurfaceOrigin; } - void destroyContext(); - void onSwapBuffers() override; - - sk_sp fSurface; - wgpu::TextureFormat fSwapChainFormat; - wgpu::Surface fDawnSurface; - wgpu::SwapChain fSwapChain; - wgpu::Device fDevice; - std::unique_ptr fInstance; -}; - -} // namespace skwindow::internal - -#endif diff --git a/tools/window/MetalWindowContext.mm b/tools/window/MetalWindowContext.mm index b76bfb091e6b..d5a89ead8a28 100644 --- a/tools/window/MetalWindowContext.mm +++ b/tools/window/MetalWindowContext.mm @@ -139,10 +139,7 @@ GrMtlTextureInfo fbInfo; fbInfo.fTexture.retain(currentDrawable.texture); - GrBackendRenderTarget backendRT(fWidth, - fHeight, - fSampleCount, - fbInfo); + GrBackendRenderTarget backendRT(fWidth, fHeight, fbInfo); surface = SkSurfaces::WrapBackendRenderTarget(fContext.get(), backendRT, diff --git a/tools/window/VulkanWindowContext.cpp b/tools/window/VulkanWindowContext.cpp index 58a41112d037..e72abba21d4a 100644 --- a/tools/window/VulkanWindowContext.cpp +++ b/tools/window/VulkanWindowContext.cpp @@ -12,6 +12,7 @@ #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/ganesh/SkSurfaceGanesh.h" +#include "include/gpu/ganesh/vk/GrVkBackendSurface.h" #include "include/gpu/vk/GrVkTypes.h" #include "include/gpu/vk/VulkanExtensions.h" #include "src/base/SkAutoMalloc.h" @@ -361,7 +362,7 @@ bool VulkanWindowContext::createBuffers(VkFormat format, info.fSharingMode = sharingMode; if (usageFlags & VK_IMAGE_USAGE_SAMPLED_BIT) { - GrBackendTexture backendTexture(fWidth, fHeight, info); + GrBackendTexture backendTexture = GrBackendTextures::MakeVk(fWidth, fHeight, info); fSurfaces[i] = SkSurfaces::WrapBackendTexture(fContext.get(), backendTexture, kTopLeft_GrSurfaceOrigin, @@ -373,7 +374,8 @@ bool VulkanWindowContext::createBuffers(VkFormat format, if (fDisplayParams.fMSAASampleCount > 1) { return false; } - GrBackendRenderTarget backendRT(fWidth, fHeight, fSampleCount, info); + info.fSampleCount = fSampleCount; + GrBackendRenderTarget backendRT = GrBackendRenderTargets::MakeVk(fWidth, fHeight, info); fSurfaces[i] = SkSurfaces::WrapBackendRenderTarget(fContext.get(), backendRT, kTopLeft_GrSurfaceOrigin, diff --git a/tools/window/android/GLWindowContext_android.cpp b/tools/window/android/GLWindowContext_android.cpp index f142de12ca0f..32668606b6b6 100644 --- a/tools/window/android/GLWindowContext_android.cpp +++ b/tools/window/android/GLWindowContext_android.cpp @@ -113,7 +113,14 @@ sk_sp GLWindowContext_android::onInitializeContext() { // SkDebugf("Vendor: %s", eglQueryString(fDisplay, EGL_VENDOR)); // SkDebugf("Extensions: %s", eglQueryString(fDisplay, EGL_EXTENSIONS)); - fSurfaceAndroid = eglCreateWindowSurface(fDisplay, surfaceConfig, fNativeWindow, nullptr); + const EGLint surfaceAttribs[] = { + fDisplayParams.fCreateProtectedNativeBackend ? EGL_PROTECTED_CONTENT_EXT :EGL_NONE, + fDisplayParams.fCreateProtectedNativeBackend ? EGL_TRUE : EGL_NONE, + EGL_NONE + }; + + fSurfaceAndroid = eglCreateWindowSurface(fDisplay, surfaceConfig, fNativeWindow, + surfaceAttribs); SkASSERT(EGL_NO_SURFACE != fSurfaceAndroid); SkAssertResult(eglMakeCurrent(fDisplay, fSurfaceAndroid, fSurfaceAndroid, fEGLContext)); diff --git a/tools/window/mac/DawnMTLWindowContext_mac.mm b/tools/window/mac/DawnMTLWindowContext_mac.mm deleted file mode 100644 index f920b51041e8..000000000000 --- a/tools/window/mac/DawnMTLWindowContext_mac.mm +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "tools/window/DawnWindowContext.h" -#include "tools/window/DisplayParams.h" -#include "tools/window/mac/WindowContextFactory_mac.h" -#include "webgpu/webgpu_cpp.h" -#include "dawn/native/DawnNative.h" - -#import -#import - -using skwindow::DisplayParams; -using skwindow::MacWindowInfo; -using skwindow::internal::DawnWindowContext; - -namespace { - -class DawnMTLWindowContext : public DawnWindowContext { -public: - DawnMTLWindowContext(const MacWindowInfo& info, const DisplayParams& params); - ~DawnMTLWindowContext() override; - wgpu::Device onInitializeContext() override; - void onDestroyContext() override; - void resize(int width, int height) override; -private: - NSView* fMainView; - CAMetalLayer* fLayer; -}; - -DawnMTLWindowContext::DawnMTLWindowContext(const MacWindowInfo& info, const DisplayParams& params) - : DawnWindowContext(params, wgpu::TextureFormat::BGRA8Unorm) - , fMainView(info.fMainView) { - CGFloat backingScaleFactor = skwindow::GetBackingScaleFactor(fMainView); - CGSize size = fMainView.bounds.size; - size.width *= backingScaleFactor; - size.height *= backingScaleFactor; - this->initializeContext(size.width, size.height); -} - -DawnMTLWindowContext::~DawnMTLWindowContext() { - this->destroyContext(); -} - -wgpu::Device DawnMTLWindowContext::onInitializeContext() { - fLayer = [CAMetalLayer layer]; - [fLayer setFramebufferOnly: YES]; - [fLayer setColorspace: CGColorSpaceCreateDeviceRGB()]; - [fLayer setContentsScale: skwindow::GetBackingScaleFactor(fMainView)]; - [fLayer setContentsGravity: kCAGravityTopLeft]; - [fLayer setAutoresizingMask: kCALayerHeightSizable | kCALayerWidthSizable]; - - [fMainView setWantsLayer: YES]; - [fMainView setLayer: fLayer]; - - wgpu::SurfaceDescriptorFromMetalLayer layerDesc; - layerDesc.layer = fLayer; - - wgpu::SurfaceDescriptor surfaceDesc; - surfaceDesc.nextInChain = &layerDesc; - - fDawnSurface = wgpu::Instance(fInstance->Get()).CreateSurface(&surfaceDesc); - SkASSERT(fDawnSurface); - - return this->createDevice(wgpu::BackendType::Metal); -} - -void DawnMTLWindowContext::onDestroyContext() { -} - -void DawnMTLWindowContext::resize(int w, int h) { - CGFloat backingScaleFactor = skwindow::GetBackingScaleFactor(fMainView); - CGSize size = fMainView.bounds.size; - size.width *= backingScaleFactor; - size.height *= backingScaleFactor; - - fLayer.drawableSize = size; - fLayer.contentsScale = backingScaleFactor; - - DawnWindowContext::resize(size.width, size.height); -} - -} // anonymous namespace - -namespace skwindow { - -std::unique_ptr MakeDawnMTLForMac(const MacWindowInfo& winInfo, - const DisplayParams& params) { - std::unique_ptr ctx(new DawnMTLWindowContext(winInfo, params)); - if (!ctx->isValid()) { - return nullptr; - } - return ctx; -} - -} // namespace skwindow diff --git a/tools/window/mac/WindowContextFactory_mac.h b/tools/window/mac/WindowContextFactory_mac.h index 6f9c5b2b6dc0..7e1ae062c00b 100644 --- a/tools/window/mac/WindowContextFactory_mac.h +++ b/tools/window/mac/WindowContextFactory_mac.h @@ -46,7 +46,6 @@ std::unique_ptr MakeGLForMac(const MacWindowInfo&, const DisplayP #endif #ifdef SK_DAWN -std::unique_ptr MakeDawnMTLForMac(const MacWindowInfo&, const DisplayParams&); #if defined(SK_GRAPHITE) std::unique_ptr MakeGraphiteDawnMetalForMac(const MacWindowInfo&, const DisplayParams&); #endif diff --git a/tools/window/unix/BUILD.bazel b/tools/window/unix/BUILD.bazel index cef262e8a0ff..f5421f23fa81 100644 --- a/tools/window/unix/BUILD.bazel +++ b/tools/window/unix/BUILD.bazel @@ -1,5 +1,4 @@ load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_deps", "skia_filegroup") -load("//bazel:flags.bzl", "selects") licenses(["notice"]) @@ -12,7 +11,6 @@ skia_filegroup( "RasterWindowContext_unix.cpp", "WindowContextFactory_unix.h", ] + select({ - "//src/gpu:dawn_ganesh": ["DawnVulkanWindowContext_unix.cpp"], "//src/gpu:gl_ganesh": ["GLWindowContext_unix.cpp"], "//src/gpu:vulkan_ganesh": ["VulkanWindowContext_unix.cpp"], "//conditions:default": [], @@ -20,14 +18,6 @@ skia_filegroup( visibility = ["//tools/window:__pkg__"], ) -selects.config_setting_group( - name = "dawn_or_vulkan", - match_any = [ - "//src/gpu:dawn_ganesh", - "//src/gpu:vulkan_ganesh", - ], -) - skia_cc_deps( name = "deps", testonly = True, @@ -37,12 +27,12 @@ skia_cc_deps( "-lXau", # dep of xcb "-lXdmcp", # dep of xcb ] + select({ - ":dawn_or_vulkan": ["-lX11-xcb"], + "//src/gpu:vulkan_ganesh": ["-lX11-xcb"], "//conditions:default": [], }), visibility = ["//tools/sk_app:__pkg__"], deps = select({ - ":dawn_or_vulkan": ["//tools/gpu/vk:testutils"], + "//src/gpu:vulkan_ganesh": ["//tools/gpu/vk:testutils"], "//conditions:default": [], }), ) diff --git a/tools/window/unix/DawnVulkanWindowContext_unix.cpp b/tools/window/unix/DawnVulkanWindowContext_unix.cpp deleted file mode 100644 index e4c059f81e1f..000000000000 --- a/tools/window/unix/DawnVulkanWindowContext_unix.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "tools/window/DawnWindowContext.h" -#include "tools/window/unix/WindowContextFactory_unix.h" -#include "dawn/native/DawnNative.h" - -using skwindow::XlibWindowInfo; -using skwindow::DisplayParams; -using skwindow::internal::DawnWindowContext; - -namespace { - -class DawnVulkanWindowContext_xlib : public DawnWindowContext { -public: - DawnVulkanWindowContext_xlib(const XlibWindowInfo&, const DisplayParams&); - ~DawnVulkanWindowContext_xlib() override {} - wgpu::Device onInitializeContext() override; - void onDestroyContext() override {} - -private: - Display* fDisplay; - XWindow fWindow; -}; - -DawnVulkanWindowContext_xlib::DawnVulkanWindowContext_xlib(const XlibWindowInfo& winInfo, - const DisplayParams& params) - : DawnWindowContext(params, wgpu::TextureFormat::BGRA8Unorm) - , fDisplay(winInfo.fDisplay) - , fWindow(winInfo.fWindow) { - XWindow root; - int x, y; - unsigned int border_width, depth; - unsigned int width, height; - XGetGeometry(fDisplay, fWindow, &root, &x, &y, &width, &height, &border_width, &depth); - this->initializeContext(width, height); -} - -wgpu::Device DawnVulkanWindowContext_xlib::onInitializeContext() { - wgpu::SurfaceDescriptorFromXlibWindow xlibDesc; - xlibDesc.display = fDisplay; - xlibDesc.window = fWindow; - - wgpu::SurfaceDescriptor surfaceDesc; - surfaceDesc.nextInChain = &xlibDesc; - - fDawnSurface = wgpu::Instance(fInstance->Get()).CreateSurface(&surfaceDesc); - SkASSERT(fDawnSurface); - - return this->createDevice(wgpu::BackendType::Vulkan); -} - -} // anonymous namespace - -namespace skwindow { - -std::unique_ptr MakeDawnVulkanForXlib(const XlibWindowInfo& winInfo, - const DisplayParams& params) { - std::unique_ptr ctx(new DawnVulkanWindowContext_xlib(winInfo, params)); - if (!ctx->isValid()) { - return nullptr; - } - return ctx; -} - -} // namespace skwindow diff --git a/tools/window/unix/WindowContextFactory_unix.h b/tools/window/unix/WindowContextFactory_unix.h index 19bc61d29f24..3decbb4ee655 100644 --- a/tools/window/unix/WindowContextFactory_unix.h +++ b/tools/window/unix/WindowContextFactory_unix.h @@ -46,10 +46,6 @@ std::unique_ptr MakeGraphiteVulkanForXlib(const XlibWindowInfo&, std::unique_ptr MakeGLForXlib(const XlibWindowInfo&, const DisplayParams&); #endif -#ifdef SK_DAWN -std::unique_ptr MakeDawnVulkanForXlib(const XlibWindowInfo&, const DisplayParams&); -#endif - #if defined(SK_DAWN) && defined(SK_GRAPHITE) std::unique_ptr MakeGraphiteDawnVulkanForXlib(const XlibWindowInfo&, const DisplayParams&); diff --git a/tools/window/win/DawnD3D12WindowContext_win.cpp b/tools/window/win/DawnD3D12WindowContext_win.cpp deleted file mode 100644 index d19aca37adac..000000000000 --- a/tools/window/win/DawnD3D12WindowContext_win.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2019 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "tools/window/DawnWindowContext.h" -#include "tools/window/DisplayParams.h" -#include "tools/window/win/WindowContextFactory_win.h" -#include "webgpu/webgpu_cpp.h" -#include "dawn/native/DawnNative.h" - -using skwindow::DisplayParams; -using skwindow::internal::DawnWindowContext; - -namespace { - -class DawnD3D12WindowContext : public DawnWindowContext { -public: - DawnD3D12WindowContext(HWND hwnd, const DisplayParams& params); - ~DawnD3D12WindowContext() override; - wgpu::Device onInitializeContext() override; - void onDestroyContext() override; -private: - HWND fWindow; -}; - -// NOTE: this texture format must match the one in D3D12's swap chain impl -DawnD3D12WindowContext::DawnD3D12WindowContext(HWND hwnd, const DisplayParams& params) - : DawnWindowContext(params, wgpu::TextureFormat::RGBA8Unorm) - , fWindow(hwnd) { - RECT rect; - GetClientRect(hwnd, &rect); - this->initializeContext(rect.right - rect.left, rect.bottom - rect.top); -} - -DawnD3D12WindowContext::~DawnD3D12WindowContext() { - this->destroyContext(); -} - -wgpu::Device DawnD3D12WindowContext::onInitializeContext() { - wgpu::SurfaceDescriptorFromWindowsHWND hwndDesc; - hwndDesc.hwnd = fWindow; - hwndDesc.hinstance = GetModuleHandle(nullptr); - - wgpu::SurfaceDescriptor surfaceDesc; - surfaceDesc.nextInChain = &hwndDesc; - - fDawnSurface = wgpu::Instance(fInstance->Get()).CreateSurface(&surfaceDesc); - SkASSERT(fDawnSurface); - - return this->createDevice(wgpu::BackendType::D3D12); -} - -void DawnD3D12WindowContext::onDestroyContext() { -} - -} // anonymous namespace - -namespace skwindow { - -std::unique_ptr MakeDawnD3D12ForWin(HWND hwnd, - const DisplayParams& params) { - std::unique_ptr ctx(new DawnD3D12WindowContext(hwnd, params)); - if (!ctx->isValid()) { - return nullptr; - } - return ctx; -} - -} //namespace skwindow diff --git a/tools/window/win/WindowContextFactory_win.h b/tools/window/win/WindowContextFactory_win.h index 6731abf7e03a..cac5f5dc3ec0 100644 --- a/tools/window/win/WindowContextFactory_win.h +++ b/tools/window/win/WindowContextFactory_win.h @@ -38,7 +38,6 @@ std::unique_ptr MakeD3D12ForWin(HWND, const DisplayParams&); #endif #ifdef SK_DAWN -std::unique_ptr MakeDawnD3D12ForWin(HWND, const DisplayParams&); #if defined(SK_GRAPHITE) std::unique_ptr MakeGraphiteDawnD3D12ForWin(HWND, const DisplayParams&); #endif