Skip to content

[skia-sync] Merge upstream chrome/m149#252

Closed
mattleibow wants to merge 365 commits into
skiasharpfrom
skia-sync/m149
Closed

[skia-sync] Merge upstream chrome/m149#252
mattleibow wants to merge 365 commits into
skiasharpfrom
skia-sync/m149

Conversation

@mattleibow

Copy link
Copy Markdown
Collaborator

Automated upstream merge of chrome/m149.

mono/skia PR Summary: Merge upstream chrome/m149

Overview

Upstream Skia milestone m149 merged into skia-sync/m149 branch targeting skiasharp.

Upstream Merge

  • Source branch: upstream/chrome/m149 (google/skia)
  • Base: origin/skiasharp at 1a155bae3a ([skia] Merge upstream chrome/m148 [skia-sync] Merge upstream chrome/m148 #250)
  • Upstream merge commit: see cgmanifest.json upstream_merge_commit field

Conflicts Resolved

File Strategy Notes
DEPS Keep ours (fork pins), update infra_revision Kept our pins for: expat 2.8.1, freetype 2.14.3, harfbuzz 14.2.0, libjpeg-turbo 3.1.4.1, libpng 1.6.58, libwebp, brotli, zlib, vulkanmemoryallocator; kept Dawn/emsdk commented out
RELEASE_NOTES.md Take upstream Added m149 release notes
src/core/SkPixmap.cpp Keep ours Preserves fork patch for kRGBA_1010102/kBGRA_1010102 bit extraction order fix
src/gpu/graphite/render/SDFTextLCDRenderStep.cpp Take upstream Graphite-only, no fork patches
tests/RegionTest.cpp Take upstream No fork patches
tests/SkGlyphTest.cpp Take upstream No fork patches

Breaking Change Analysis (m148→m149)

Change Risk C API Impact
SkCodec::Register removed from public API 🔴 HIGH ✅ None — not used in C shim
SkShader::isOpaque() made pure virtual 🟡 MEDIUM ✅ None — C shim never subclasses SkShader
SkFontMgr::match() + fallback() new APIs with Request struct 🟢 LOW ✅ None — additive, not yet wrapped
SkFontArguments::Coordinate tag constants (wght, wdth, slnt, ital, opsz) 🟢 LOW ✅ None — additive
GpuStatsFlags bitfield operators added ⚪ SKIP ✅ None — Graphite only
AdaptiveGlobalToneMap::isValid() method added 🟢 LOW ✅ None — additive
New sparse strips files in src/gpu/graphite/ ⚪ SKIP ✅ None — Graphite only

C API Changes

None. No new C API functions added in this milestone update.
SK_C_INCREMENT remains at 0. No changes to src/c/*.cpp or include/c/*.h.

Validation

  • Validated by independent explore agent (claude-opus-4-5)
  • All 75 C API shim files: zero conflict markers, zero impact from m149 upstream changes
  • BUILD.gn: clean merge, no renamed/removed GN args
  • DEPS: fork-specific dependency pins preserved correctly

Items Needing Human Attention

  1. SkFontMgr new APIs: match() and fallback() with Request struct are new in m149. These are higher-level font matching APIs. Consider wrapping in a future API-add PR if needed by SkiaSharp users.

  2. SkPixmap.cpp fork patch: The fix for kRGBA_1010102/kBGRA_1010102 bit extraction was preserved. Upstream m149 has functionally equivalent logic (reads bits 0-9 as r, swaps for BGRA). This patch could be removed in a follow-up PR after verification.

Created by skia-upstream-sync.

skia-autoroll and others added 30 commits April 14, 2026 22:25
https://skia.googlesource.com/buildbot.git/+log/61363e8559c7..1139a26d53b5

2026-04-14 eduardoyap@google.com [perf] Fix commit offset translation in manual_plot_mode
2026-04-14 borenet@google.com [bazel] Update archive URLs for basealpine
2026-04-14 borenet@google.com [skfe] Add DNS entry for mcp.skia.org
2026-04-14 borenet@google.com [autoroll] Add gcloud to autoroll-be image
2026-04-14 borenet@google.com [autoroll] Allow newlines in error display
2026-04-14 faridzad@google.com [explore-simple-sk] Moved the flaky X-Axis switching unit tests to Puppeteer.
2026-04-14 mordeckimarcin@google.com Regr2 - index for untriaged regressions on /a page
2026-04-14 faridzad@google.com Rename 'existing-bug-dialog-sk' test files for consistency with other modules.
2026-04-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll luci-auth from da8829f4f05eb5ea3... to 8048c0858d1b3c95b... (1 revision)
2026-04-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Depot Tools from bac00505a8c1 to b9d2b54daea6 (2 revisions)
2026-04-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll command_wrapper from a18359f597f780003... to 784de3b26e0623ca9... (1 revision)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/infra-skia
Please CC borenet@google.com,skiabot@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia Infra: https://bugs.chromium.org/p/skia/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: chromium:495382033,chromium:500385535
Tbr: borenet@google.com
Change-Id: Ib827a7cbd3e9209724a9e5376fbd4dae050edc66
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210038
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/angle/angle.git/+log/5e591d03650d..e45b5fbf2710

2026-04-14 uchintala@google.com Tests : Add Club Vegas Casino Slots Games trace
2026-04-14 abdolrashidi@google.com Check depth for cube map arrays in size validation
2026-04-14 nikolaysmirnov@google.com Implement GL_QCOM_texture_lod_bias extension

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC jmadill@google.com,thomsmit@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Release-ANGLE;skia/skia.primary:Build-Mac-Clang-arm64-Release-ANGLE;skia/skia.primary:Test-Win11-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win11-Clang-Dell3930-GPU-GTX1660-x86_64-Debug-All-ANGLE
Tbr: thomsmit@google.com
Test: Test: angle_end2end_tests --gtest_filter=QCOMTextureLodBiasTest.*
Test: Test: angle_trace_tests --gtest_filter=*club_vegas_casino_slots
Change-Id: I1c1885aafc168508574a9ede2f685f90c865d876
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210436
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
We want the CodeSize builders to reflect what is actually shipped
to clients, which currently does not include PartitionAlloc. This
sets skia_use_partition_alloc=false for the OptimizeForSize
configurations.

Note that this only affects the Build-* and CodeSize-* tasks for
the OptimizeForSize configuration, as well as one specific Perf
bot. Zero Test-* tasks use OptimizeForSize. Functional testing
of PartitionAlloc (which uses Debug and Release configurations)
remains unaffected.

Bug: 351867706
Change-Id: I3da0bb12ee2c45e9bba2caf8158fa2c053cbae8d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1207398
Auto-Submit: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Eric Boren <borenet@google.com>
Also removes bungeman

Change-Id: Ice0cfff02209de8f44aba2f8d4a8fa4ed66e37a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210756
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
https://skia.googlesource.com/buildbot.git/+/74a6444abdcf6cb1da6ac9387aa08de5d3e38cd0

[fiddler] Forward signals to child process in secwrap

Change-Id: Idfc243b3ea2eea0230cde36fb601669c8d73bfb6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210040
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com <louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com>
Some geometry types (hinted at in maskToDevice()) have a 3rd coordinate
space that they have all tracked in an ad hoc manner. This turns out to
have bad consequences for the KeyContext (they are sometimes drawn with
a different local matrix, impacting sampling calculations).

It will also simplify a bit how the atlas vs. renderer code flows
through drawGeometry(). That is all future work; this change defines
the function and updates ClipStack::DrawShape to store Transform in
line so that it can modify it to be the mask-to-device matrix if
the Geometry has one.

I wanted this as a separate CL on the off chance that the optimization
to store a pointer to the draw's original local-to-device transform
was actually doing something meaningful.

Bug: b/502265025
Change-Id: I016c7fa0f1ec04b97df7c154c06bdb0f0d291ad4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1208996
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
The assertion now checks the bounds of `n` to prevent potential integer overflow when calculating the total size, ensuring `n * Size` does not exceed `kMaxByteSize`.

See (internal-only): go/code-terracotta-review-explainer

This is a phase 1 quick fix

Bug: 499152771
Change-Id: I4fddd49e114518756353e85d52448aa906a5b81c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1209996
Commit-Queue: Francisco Ochoa <frankchavez@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
… line breaks"

This is a reland of commit 9a0def8

The reland was reverted (339e3c3) because soft hyphen tests still
failed on Ubuntu-NativeFonts bots: the hardcoded layout width of 60px
was too close to the actual advance width of "inter" at 20px Roboto
on those bots, causing the text to not break at the expected position.

Fix: increase the test layout width from 60 to 80px. At 20px Roboto,
"inter" measures ~40-55px across font versions (fits in 80), while
"international" measures ~100-130px (does not fit in 80), so the
break at the soft hyphen is reliably triggered.

Original change's description:
> When text is laid out and a line break occurs at a soft hyphen
> (U+00AD) position, a visible hyphen glyph ("-") is now shaped
> and appended to the end of that line. Soft hyphens that are not
> at line break positions remain invisible (zero-width), as before.
>
> This behavior is gated behind ParagraphStyle::setRenderSoftHyphens(),
> which defaults to false to preserve existing behavior for current
> consumers. Callers must opt in to enable visible hyphen rendering.

R=jlavrova@google.com, kjlubick@google.com

Change-Id: I23b21e5d2b5fbd6bcb990e0a631c87456e46ad10
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1208837
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
https://chromium.googlesource.com/vulkan-deps.git/+log/7646a87dd950..b59a366edcc0

Also rolling transitive DEPS:
  https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/5d7c08d0cde5ba67e540ba379b2ef0ee2fc92fa9..4b3bd66f3806ee0b67d9fe7c591d8f29ca535ccd
  https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/cd5e8020b5feea8f9364c87290cda4f9180be01a..e2f236b273bfcd9c665306fdd53451b923d659ab

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-skia-autoroll
Please CC skiabot@google.com,thomsmit@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win11-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: thomsmit@google.com
Change-Id: Ia26c5e9f8c7e4f92d7e3d129b1996717ed16fb14
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210801
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
This simplifies some of the atlas logic flow inside drawGeometry()
because once the atlas provides a CoverageMaskShape it can be recorded
as if it were a regular fill.

The return type of the PathAtlas is also simpler, and importantly, the
CoverageMaskShape is now completely self-descriptive from a "geometric"
sense. The draw's local-to-device transform is now only used to affect
shading.

This also fixes a subtle bug where the 4x4 device-to-local matrix was
being uploaded as if it were the 3x3 inverse of the flattened local
to device matrix, which is not the case when there's perspective or Z
manipulation.

Bug: b/445976767
Bug: b/502265025
Change-Id: Icf5b96751adfc39293ecc4331fbd912f245112d9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1123837
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
This flag is not supported in Louhi, and it's causing our CD builds of
some apps to fail.

Change-Id: Ife504b77f0d5943d05f75d39b84f4b594291587c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211116
Reviewed-by: Brandon Wilson <bwils@google.com>
* Allow stencil draws to continue (bounded) searching after finding a compatible match.

* Reduces pipeline changes on:
  MotionmarkSuitsClip: 1306 -> 881
  MotionmarkSuits:     6690 -> 2102

Change-Id: Id87467d696f65b722bd829f8cd02bcd46b5449ea
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1174716
Commit-Queue: Thomas Smith <thomsmit@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8684426341943139121

depot_tools:
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/7914a55a091a90fe228e1937b27fc0198e19c33f
  7914a55 (bsheedy@chromium.org)
      Track edit monitor opt outs

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ide6bc1fd7afa755392da32b254f62dcd856044bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211156
Bot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8684422563561874529

depot_tools:
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/0ea4801192281fff1675855b6c03fd71811133e2
  0ea4801 (gavinmak@google.com)
      Fix CheckForCommitObjects to include submodules in file scan

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I3c4a6ab5e435549d1fdd63a1e7cc41c8524f1447
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211157
Commit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
https://skia.googlesource.com/buildbot.git/+/1bac3fe419791a0629ebcbd42e39db14309f2a85

[fiddler] Add missing madvise syscall to allowlist

Change-Id: Ic97baf3959e74fdfe2da1b88ed4eed45c8d1f329
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211256
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Brett Somocurcio <brettos@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Auto-Submit: louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com <louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com>
Reviewed-by: Brett Somocurcio <brettos@google.com>
https://dawn.googlesource.com/dawn.git/+log/63b237e40fc2..678a2d1cb827

2026-04-16 bsheedy@google.com Update Win/CMake dimensions
2026-04-16 lokokung@google.com Reland "[dawn][native] Some cleanup of DeviceLostEvent code."
2026-04-16 dsinclair@chromium.org Remove shadows from dependency graph
2026-04-16 bajones@chromium.org Vulkan: Prevent double-closing stale FD
2026-04-16 bsheedy@google.com Ignore Starlark changes for Chromium trybots
2026-04-16 jiawei.shao@intel.com Clarify `offset` counts elements of the component type in subgroup matrix
2026-04-15 dsinclair@chromium.org Remove SKIP test results.
2026-04-15 lmjr@google.com Rename tryjob method to cq_settings
2026-04-15 qjw@chromium.org third_party: allow autoroller to update README.chromium metadata
2026-04-15 bsheedy@google.com Remove legacy_builders.star
2026-04-15 rharrison@chromium.org [val] Add missing IR validator tests 1/5
2026-04-15 jrprice@google.com [tint] Fix loop analysis for limit cases
2026-04-15 jrprice@google.com [tint] Refactor loop analysis tests
2026-04-15 bsheedy@google.com Move tricium-clang-tidy
2026-04-15 amaiorano@google.com [native][d3d12] Fix potential leak in T2B copy when temp buffer workaround active
2026-04-15 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 5e591d03650d to e45b5fbf2710 (3 revisions)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC amaiorano@google.com,cwallez@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Dawn: https://bugs.chromium.org/p/dawn/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Debug-Graphite_Dawn_Vulkan;skia/skia.primary:Test-Mac14-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ASAN_Graphite_Dawn_Metal;skia/skia.primary:Test-Win11-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Dawn_D3D12;skia/skia.primary:Test-Win11-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Graphite_Dawn_D3D11
Bug: None
Tbr: amaiorano@google.com
Change-Id: I47003388bd23624ffd99b206191a93d15f163676
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211316
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
https://skia.googlesource.com/buildbot.git/+log/1139a26d53b5..8a3814645574

2026-04-15 louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com Toggle Perfserver Freeze - off - perf/FREEZELOCK
2026-04-15 louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com Toggle Perfserver Freeze - on - perf/FREEZELOCK
2026-04-15 bwils@google.com Add ability to open and view lottie without upload
2026-04-15 sergeirudenkov@google.com build metric for dashboard
2026-04-15 jeffyoon@google.com authproxy: Add support for secure logout redirect
2026-04-15 borenet@google.com [cd] Symlink git to /usr/bin/git
2026-04-15 borenet@google.com [fiddler] Forward signals to child process in secwrap
2026-04-15 mordeckimarcin@google.com Anomtable: show untriaged oldest first, triaged newest first
2026-04-15 maximsheshukov@google.com Poll bisect job status in autotriage
2026-04-15 maximsheshukov@google.com Query legacy pinpoint for a job state
2026-04-15 maximsheshukov@google.com Split pinpoint client into gateway and legacy client
2026-04-15 maximsheshukov@google.com Move request/response structs to types.go
2026-04-15 maximsheshukov@google.com Move legacy pinpoint client from frontend to pinpoint
2026-04-15 eduardoyap@google.com [perf] Remove 'Unable to find requested data range' error toast
2026-04-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll command_wrapper from 784de3b26e0623ca9... to ec61833fc8f3b9f4a... (1 revision)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/infra-skia
Please CC borenet@google.com,skiabot@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia Infra: https://bugs.chromium.org/p/skia/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: chromium:495382033,chromium:496659575,chromium:501830027
Tbr: borenet@google.com
Change-Id: Id2ac5ea5ef367b9f1d4c5347309f71e52ce65931
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211336
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/vulkan-deps.git/+log/b59a366edcc0..88bc797c62ac

Also rolling transitive DEPS:
  https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/869266ad9e6050197d87cf0a22aab59abf7ad008..ad9184e76a66b1001c29db9b0a3e87f646c64de0
  https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/4b3bd66f3806ee0b67d9fe7c591d8f29ca535ccd..8d245e02504488aaa51ab561cfd8725b7916c91d

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-skia-autoroll
Please CC skiabot@google.com,thomsmit@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win11-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: thomsmit@google.com
Change-Id: I654c4c72938b5e1d11dae0cb80a0d5dfd28b49fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211329
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/angle/angle.git/+log/e45b5fbf2710..942c07d0c8a6

2026-04-15 gman@chromium.org Fix RGBX Tests
2026-04-15 yuxinhu@google.com IR Validation: MergeInput is only allowed for block inputs
2026-04-15 abdolrashidi@google.com Vulkan: Disable swapchain deferred memory for NV/Wayland
2026-04-15 abdolrashidi@google.com Vulkan: Remove unsupported compatible present modes
2026-04-15 yuxinhu@google.com IR Validation: enforce unique switch case values
2026-04-15 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from c8fb3065f829 to c4d011f329e4 (1449 revisions)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC jmadill@google.com,thomsmit@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Release-ANGLE;skia/skia.primary:Build-Mac-Clang-arm64-Release-ANGLE;skia/skia.primary:Test-Win11-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win11-Clang-Dell3930-GPU-GTX1660-x86_64-Debug-All-ANGLE
Tbr: thomsmit@google.com
Change-Id: Ice6ef42c7845e859e592d2e78ce6d5a4e20a5fea
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211277
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
This reverts commit 55d88dd.

Reason for revert: outage has passed

Original change's description:
> Temporarily remove Bazel from the CQ
>
> Affected by http://irm/i_Su5JMCT1XffnPLB7cFMz
>
> Change-Id: I19efaba1f481e151807bbbad3189daa7cb6690ee
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1204536
> Reviewed-by: Greg Daniel <egdaniel@google.com>

Change-Id: I246fec17a8b643210b7d248c9751f0514ff3110a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210256
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Following the same pattern as CoverageMaskShape, text had the same
mismatch between the transform being passed to drawGeometry() and the
actual shading matrix used for the KeyContext.

This pushes calculating the inverse of the local-to-device into the GPU.
If that causes a regression, I will follow-up with a change that derives
the 3x3 inverse from the existing 4x4 inverse.

Bug: b/502265025
Change-Id: I788d353db3ed12196e1c22da5a39419735e3ad9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1209896
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
https://skia.googlesource.com/buildbot.git/+/c21d4134a71a31b339cbbbf72a7a649947206925

[fiddler] Log the fiddle hash and code before compile+run

Change-Id: Iee6de2f36b194f33be42fba7393215e8404736cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211676
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Auto-Submit: louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com <louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
* Change text rendersteps as a sounding board for `textureSize` intrinsic performance characteristics.

* The inverse atlas size is calculated in the fragment shader, per fragment invocation. In the future we may move this to the vertex shader.

Change-Id: I1f11b19498c96b787cd89e4751f7bf48de1cbb9a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211196
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Thomas Smith <thomsmit@google.com>
The existing code always emits the children first, then the current
marked content, then the current content items. Instead these should be
emitted in the order the user specified but interleaved based on the
order they were drawn. This will allow users to interleave children and
content and avoid creating unecessary children just to hold content.

Bug: chromium:40864325
Change-Id: I948889ea887c82ef7f70c8c9d25eaf8e6cac0dab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210277
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
This will allow lab managers to apply security updates regularly without
our needing to update the dimensions every time. GPU drivers shouldn't
be updated as part of this process.

Bug: b/502205782
Change-Id: Iff9458e6cd3ebcc29ff79c06e6529c3be0fe7665
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211717
Auto-Submit: Eric Boren <borenet@google.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8684346443280873569

depot_tools:
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/13c80751ffc4178d02eb6d951b9a551614158ab1
  13c8075 (gavinmak@google.com)
      Revert "Fix CheckForCommitObjects to include submodules in file...

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ie0c38d2e36ac98827a410faca767b50372b5195c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211386
Commit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
quick fix for a  potential security issue

Bug: 500071763
Change-Id: I24a6f4a6a4b58706b792668037011d86da8bd1d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1210036
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Daniel Angulo <angdaniel@google.com>
I believe historically I'd pushed to constrain when we adjusted the
sampling to just quad/rect rendering so the old shape check was a
proxy for that. In practice, since this doesn't change pipelines, and
we're already doing the work for shapes and quads (common benchmark
stress scenarios), I don't see any reason not to just always start
with the default flags.

Additionally, in a follow up where we do want to more intentionally
opt into blend mode optimizations, it makes the initial flag choice
logic cleaner to only bring in one non-default flag.

Bug: b/478239991
Change-Id: I495ff5745a7545b3dcd6ee62a7ff87630341e580
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1206916
Reviewed-by: Thomas Smith <thomsmit@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This moves where DependsOnDst is applied, allowing ShaderParams'
fDstUsage to be exact except for the (src-over + opaque) case. This
makes it easier to reason about when doing three follow-up changes:
1. Supporting inner fills for Src that still requires dst reads
2. Switching srcover+opaque to src
3. Rewriting srcover+opaque+coverage to src for the inner fill

Bug: b/478239991
Change-Id: I158b978ad49d7ce212efc2634a3c0fc00561f1a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1207638
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
https://chromium.googlesource.com/vulkan-deps.git/+log/88bc797c62ac..859ad1479ce2

Also rolling transitive DEPS:
  https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/8d245e02504488aaa51ab561cfd8725b7916c91d..2e8b5e20ee8d9bdb37a6416508247955087a3453

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-skia-autoroll
Please CC skiabot@google.com,thomsmit@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in skia: https://bugs.chromium.org/p/skia/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Ubuntu24.04-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win11-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: thomsmit@google.com
Change-Id: I44c0e9e4d2c7fdbcf6c78e766ce712fa81da2425
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1211558
Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
Thomas Smith and others added 27 commits May 4, 2026 10:06
* With certain inputs, an attacker can exploit the typing in SkTDArray to cause a mismatch between the actual allocation of the array which is in bytes, and the allocation that the SkTDArray *thinks* it has, which is in units of T.

* Guard this scenario by promoting size_t earlier in the memory reservation call stack.

Bug: b/501511299
Change-Id: I98e851dcc6b060dd21e1fdd2b416a0a25e7c4f08
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1223036
Commit-Queue: Thomas Smith <thomsmit@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
This moves the array of TextureUsage and SampleCount bitmasks to be
stored on Caps and removes the unused ColorTypeInfo struct.

Bug: b/390473370
Change-Id: Ide1143129055856ae0dfd384462095d02e6b4bc2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1213516
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This will help us reproduce issues from oss-fuzz/cluster fuzz

Change-Id: I3c4e8a15c1060619ab3d6f1342ac3eecff6f06a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1225556
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Change-Id: Ic6dbba084b514589cf2542cad10e1a2b69f1871c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1226256
Bot-Commit: chrome-branch-day <chrome-branch-day@chops-service-accounts.iam.gserviceaccount.com>
Change-Id: I9ce25212407643b4ba65594557d6a9a02529dcd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1226258
Bot-Commit: chrome-branch-day <chrome-branch-day@chops-service-accounts.iam.gserviceaccount.com>
I added some logging to SkOpCoincidence::fixUp and ::release and,
with the new test case (which has multiple coincidences [1]), observed

```
fixUp: release(0x...7378, 0x...7378)
release: head_arg=0x...7378, remove=0x...7378, global fHead=...7378
release: updated global fHead to 0x...72b8
fixUp: after release global fHead=0x...72b8
fixUp: release(0x...7378, 0x...6ec8)
```

As per the linked bug, this leads to a faulty state because the
old head pointer 0x...7378 is being used after it was "released".
I could not get ASAN to fire on this but it is worth fixing for
correctness and consistency.

My change fixes that particular issue and adds some asserts to avoid
this happening again.

I also rewrote some do while loops to
avoid iffy behavior where we were releasing coin and then for
the next iteration still calling coin->next(). This worked because
we had an SkArenaAlloc and that memory wasn't "fully" released.

[1] a coincidence is an overlap between two path segments that
lasts for more than a single point. e.g. two squares sharing an edge.

Bug: 513001309
Fixed: 514929752
Change-Id: Ie3f6cea575acf9575e984b2b0d2eb788bb4b2052
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1238176
Reviewed-by: Thomas Smith <thomsmit@google.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
(cherry picked from commit 33b70be)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1240556
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Thomas Smith <thomsmit@google.com>
Bug: 514063977
Fixed: 514930114
Change-Id: I03ccdf8224f6d6413c4632adf1d75216d8093e81
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1238257
Commit-Queue: Thomas Smith <thomsmit@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
(cherry picked from commit d93793d)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1241058
Bug: 513972075
Fixed: 515276005
Change-Id: Ieeaf92c87343aa328479302d9cffeb36b5b0c8e4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1238159
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
(cherry picked from commit 3471ebf)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1242256
Commit-Queue: Greg Daniel <egdaniel@google.com>
I found the ES 2 spec [1] helpful for reference here.

The calculate_count_neq_int is not strictly necessary (I was unable
to find a case that tricked the existing floats with ints), but
I like the refactoring and it mirrors the gt/lt cases nicely.

[1] https://registry.khronos.org/OpenGL/specs/es/2.0/GLSL_ES_Specification_1.00.pdf

Change-Id: I0b9117f347e4b7d5d336de0f14337b9bec510ff2
Bug: 513337118
Fixed: 515276121
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1236656
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
(cherry picked from commit 5f4f454)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1242416
I was unable to make a test case that caused an overflow
and didn't timeout, but I think the possibility exists
for both.

This removes that, adds a few defensive asserts, and
makes one assert actually checked at runtime, just to be safe.

Change-Id: I4ce112624cb346ac7597466ac9c78402c5061e1c
Bug: 513973560
Fixed: 515276259
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1239556
Reviewed-by: Thomas Smith <thomsmit@google.com>
(cherry picked from commit 7c9ffcb)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1242417
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
Bug: 514017326
Fixed: 515627566
Change-Id: I9425c1f86aa8762333ba72b4ba30f5a056cdbfa9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1239738
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
(cherry picked from commit 43f969a)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1243597
Reviewed-by: Thomas Smith <thomsmit@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
Original change's description:
> Report and handle failure for inlineUpload(...) calls
>
> * The bug associated with this change called out that we should not attempt to perform an upload on an externally-owned secondary command buffer.
>
> * Exiting early does not appropriately signal that an upload failed, so modify `GrOpsRenderPass::inlineUpload(...)` base class to return a bool indicating success or failure. Upon failure, do not attempt the associated immediate draw call and report that the draw failed.
>
> * To maintain current behavior, have `inlineUpload(...)` return true in nearly all cases except that identified in the associated bug.
>
> Bug: b/513948178
> Change-Id: Idfeb2527062818e5fa63a38112dd1c26f7847998
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1239496
> Commit-Queue: Nicolette Prevost <nicolettep@google.com>
> Auto-Submit: Nicolette Prevost <nicolettep@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

(cherry picked from commit defc3a5)

Bug: 515628783,b/513948178
Change-Id: Idfeb2527062818e5fa63a38112dd1c26f7847998
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245696
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Other than these two sites, kForInputAttachment and
kForNonCoherentAdvBlend are not treated as mutually exclusive.

When using only == kForInputAttachment, the layout and bindings wouldn't
apply correctly for a renderpass that was using both forms of self
dependencies.

Bug: 512995705
Fixed: 515954112
Change-Id: I40aff60a9209be77e6743d7a2f73dac46985507a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1242516
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Nicolette Prevost <nicolettep@google.com>
(cherry picked from commit 544395a)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245736
This skips recording draws with more than 1M color stops, primarily as
a way to avoid worrying about overflowing during intermediate
calculations. We can increase it if necessary, but hopefully this is
healthy enough no one is trying to make shaders this large.

This also skips recording draws when the FSM has maxed out its
allocatable size for a single buffer. Given how large that is,
we shouldn't encounter it in the wild but this lets us fail semi
gracefully. If needed, we can revisit by either flushing the entire
Recorder when reaching a limit, or by allowing a recording to use
multiple buffers

Bug: 515467789
Fixed: 517017060
Change-Id: Ie032f9ed35b6cf0316a18b32bb36e3ec3c047097
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1243936
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
(cherry picked from commit 5ecba66)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1247096
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Thomas Smith <thomsmit@google.com>
This also removes the unique ID from SkShaderBase as the FSM was the
only system that relied on it.

Bug: 512986879
Fixed: 517018284
Change-Id: Icd43c13a75a1cdd212eea2b9db03033d13be47f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1243937
Reviewed-by: Thomas Smith <thomsmit@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
(cherry picked from commit 2e4a568)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1247057
Original change's description:
> Clamp displacement values before offsetting sampling coordinates
>
> Bug: b/514082801
> Change-Id: I4662eb2d969bc6003cd7178306e82b6d3580758a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1239498
> Auto-Submit: Jorge Betancourt <jmbetancourt@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>

(cherry picked from commit bd3d88b)

Bug: 515954609,b/514082801
Change-Id: I4662eb2d969bc6003cd7178306e82b6d3580758a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1247396
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Original change's description:
> [ganesh] Use submitted proc to confirm async reads were issued
>
> Ganesh's finish proc doesn't have a status, but if flushSurface()
> failed for unrelated reasons (due to queued operations before the
> asyncRead was requested), the finish proc would be executed without
> actually submitting the copy command to the GPU.
>
> This tracks whether or not it was successfully submitted and makes
> that a requirement before handing the result to the original callback.
> The code is updated to more closely match Graphite's structure,
> including unmapping any buffers on failure.
>
> Bug: 513340227
> Change-Id: If2998749a754d114b70e26e312a9a4cb08ea20e2
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1242617
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

(cherry picked from commit e6c23e3)

Bug: 517405382,513340227
Change-Id: If2998749a754d114b70e26e312a9a4cb08ea20e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1248156
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Original change's description:
> Remove serialization of drawables from SkCustomTypeface
>
> We added it here https://review.skia.org/540736 but ended up not
> using it for Skottie (only paths). This will help reduce the attack
> surface of deserializing fonts.
>
> Change-Id: Id890c3d0f56f11377563f795f9bfede5a7d84d66
> Bug: 513820666
> Fixed: 513820666
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245976
> Reviewed-by: Alexis Cruz-Ayala <alexisdavidc@google.com>
> Auto-Submit: Kaylee Lubick <kjlubick@google.com>
> Commit-Queue: Kaylee Lubick <kjlubick@google.com>
> Commit-Queue: Alexis Cruz-Ayala <alexisdavidc@google.com>

(cherry picked from commit 9da67e2)

Bug: 517794513,513820666,513820666
Change-Id: Id890c3d0f56f11377563f795f9bfede5a7d84d66
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249197
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
…n reset"

* `getMappedUniformBuffer` was changed after M148 but before M149. This caused comments in the unit test to be wrong, causing M148 cherry pick to fail CQ.

* Change the unit test to instead use `getMappedIndexBuffer`, which is stable across the relevant releases, and has been confirmed to trigger the bug.

* These changes purely affect the unit test and not the fix itself.

This reverts commit c329e87.

Original change's description:
> Revert "[graphite] BufferSubAllocator respects failed mapping on reset"
>
> This reverts commit e7bff78.
>
> Fails clang-tidy
>
> Original change's description:
> > [graphite] BufferSubAllocator respects failed mapping on reset
> >
> > Bug: b/516981393
> > Change-Id: If6837e26ee520ad34c8df46a34850220ec5b538c
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1247536
> > Commit-Queue: Thomas Smith <thomsmit@google.com>
> > Reviewed-by: Michael Ludwig <michaelludwig@google.com>
>
> Bug: b/516981393
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Change-Id: I8cf69a8ba2ff318aab65033af821954e4493e5cb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249556
> Auto-Submit: Thomas Smith <thomsmit@google.com>
> Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>

Bug: 516981393
Fixed: 517794557
Change-Id: I3688a446d9042ffdb79a6c91d73f72bd5016716e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249557
Commit-Queue: Thomas Smith <thomsmit@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
(cherry picked from commit 04b084c)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249857
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Original change's description:
> [rust icc] Harden ICC CLUT grid validation
>
> Reject Rust ICC A2B/B2A CLUTs whose active grid dimensions produce too
> many total grid points before exporting them to skcms transform code.
>
> This mirrors the skcms parser-side complexity limit while keeping the
> check at the C++ bridge boundary.
>
> Add regression coverage for an oversized 4D CLUT grid.
>
> Bug: 513702971
> Change-Id: Ib9167dc0c499d45262414602cf0f010909aff642
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1241196
> Commit-Queue: Kaylee Lubick <kjlubick@google.com>
> Reviewed-by: Kaylee Lubick <kjlubick@google.com>
> Reviewed-by: Florin Malita <fmalita@google.com>

(cherry picked from commit 9309dfc)

Bug: 515954052,513702971
Change-Id: Ib9167dc0c499d45262414602cf0f010909aff642
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245776
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Alexis Cruz-Ayala <alexisdavidc@google.com>
Original change's description:
> Roll skcms from a7a3b15f0635 to 6010f3583977 (1 revision)
> 
> https://skia.googlesource.com/skcms.git/+log/a7a3b15f0635..6010f3583977
> 
> 2026-05-21 thomasanderson@google.com [skcms] Harden CLUT indexing, enforce limits, and add test case
> 
> If this roll has caused a breakage, revert this CL and stop the roller
> using the controls here:
> https://autoroll.skia.org/r/skcms-skia-autoroll
> Please CC kjlubick@google.com,robertphillips@google.com on the revert to ensure that a human
> is aware of the problem.
> 
> To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
> 
> To report a problem with the AutoRoller itself, please file a bug:
> https://issues.skia.org/issues/new?component=1389291&template=1850622
> 
> Documentation for the AutoRoller is here:
> https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
> 
> Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
> Tbr: kjlubick@google.com,robertphillips@google.com
> Change-Id: Ifa588620a81758e8090bad663949162d57eef21d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1241949
> Commit-Queue: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>
> Bot-Commit: skia-autoroll@skia-public.iam.gserviceaccount.com <skia-autoroll@skia-public.iam.gserviceaccount.com>

Bug: 515954052
Change-Id: Ifa588620a81758e8090bad663949162d57eef21d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245777
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Alexis Cruz-Ayala <alexisdavidc@google.com>
Importantly, we don't want typefaces or textblobs in
SkPictureBackedGlyphDrawable. In fact, we can look at
the code used to make the drawables by our various backends
[1][2][3][4] and see we only draw paths and use paints. Thus, we can
restrict deserializing these to just those (and the helper tags).

The SVG fonts could be a bit more complex [5] but chromium doesn't
use those (SkGraphics::SetOpenTypeSVGDecoderFactory is never called)

See also http://graphviz/#57cc93d0c3c73546055bec64fa8e27cb

[1] https://skia.googlesource.com/skia/+/9da67e212e59fbe4f144a92315ca6f8b876c9c01/src/ports/SkFontHost_FreeType_common.cpp#1567
[2] https://skia.googlesource.com/skia/+/9da67e212e59fbe4f144a92315ca6f8b876c9c01/src/ports/SkFontHost_FreeType_common.cpp#1078
[3] https://skia.googlesource.com/skia/+/9da67e212e59fbe4f144a92315ca6f8b876c9c01/src/ports/SkScalerContext_win_dw.cpp#677
[4] https://skia.googlesource.com/skia/+/9da67e212e59fbe4f144a92315ca6f8b876c9c01/src/ports/SkTypeface_fontations.cpp#1336

[4] https://skia.googlesource.com/skia/+/9da67e212e59fbe4f144a92315ca6f8b876c9c01/modules/svg/src/SkSVGOpenTypeSVGDecoder.cpp#160

Bug: 516457532
Fixed: 517794301
Change-Id: If852aac417e04f5574dd073138abbe74f792734e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1245617
Reviewed-by: Florin Malita <fmalita@google.com>
(cherry picked from commit f1b8ba8)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249796
Reviewed-by: Alexis Cruz-Ayala <alexisdavidc@google.com>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Alexis Cruz-Ayala <alexisdavidc@google.com>
Original change's description:
> Turn off LCD in SDF slugs when downscaling too far
>
> LCD text samples the glyph at 1/3 offsets derived from screen-space
> derivatives of its local coords. Each SDF atlas only has 2px of
> transparent padding that these offsets can read into.
>
> If an LCD slug was downscaled after creating its masks by a scale
> of ~0.2, its R and B samples could extend into adjacent glyphs.
> At such a downscaling, the SDF is already fairly low quality because
> it's not sampled by mipmaps. IMO switching to grayscale SDF looked
> better because it approached smooth gray vs. randomized colors.
>
> This applies to both Ganesh and Graphite, although Graphite is able to
> continue to use LCD with SDFs when there's perspective. Since Ganesh
> only uses SkMatrix and not Transform, there's no easy way to estimate
> the perspective scale factors applied over the slug's bounding box.
>
> I tested by modifying GM_slug to use LCD and SDF fonts and interacted
> with viewer's dynamic transforms to trigger the switch between modes.
>
> Bug: 516915337
> Change-Id: Idfa838cfe4ff9443bf2c15078ff52d34a5a5c8f3
> Fixed: 516915337
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1251156
> Reviewed-by: Thomas Smith <thomsmit@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

(cherry picked from commit 95dbfa2)

Bug: 519445145,516915337,516915337
Change-Id: Idfa838cfe4ff9443bf2c15078ff52d34a5a5c8f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1253999
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
* Allow subRuns which are drawn with drawable or path rendering to exit gracefully instead of failing.

* Remove erroneous SFINAE

This reverts commit c480ba2.

Original change's description:
> Revert "Reconstruct subRun bounds from glyphs"
>
> This reverts commit f93ed13.
>
> Reason for revert: SkRemoteGlyphCacheTest failures and build failures
>
>          ../../../../../skia/tests/SkRemoteGlyphCacheTest.cpp:193:37: error: unused function template 'get_container_ptr' [-Werror,-Wunused-template]
>   193 | const sktext::gpu::SubRunContainer* get_container_ptr(const T& t) {
>       |                                     ^~~~~~~~~~~~~~~~~
> ../../../../../skia/tests/SkRemoteGlyphCacheTest.cpp:212:37: error: unused function template 'get_container' [-Werror,-Wunused-template]
>   212 | const sktext::gpu::SubRunContainer* get_container(T* slugImpl) {
>       |                                     ^~~~~~~~~~~~~
> 2 errors generated.
>
> and
>
>
>               ../../../../../skia/tests/SkRemoteGlyphCacheTest.cpp:660	Dst subrun is null for TransformedMaskSubRun [SkRemoteGlyphCache_SubRunBoundsReconstruction, OpenGL]
>
> Original change's description:
> > Reconstruct subRun bounds from glyphs
> >
> > * Reconstruct the bounds of a subRun after deserialization instead of packaging onto the VertexFiller.
> >
> > * An attacker could create a VertexFiller with creation bounds that did not contain its glyphs but were entirely contained within the current clip, enabling to the glyphs to ignore the creation bounds clip and sample from stale scratch textures
> >
> > Bug: b/513948227
> > Change-Id: Ib4902657e6a50dd5675db4d73a1576b77c4ce88e
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1239916
> > Commit-Queue: Thomas Smith <thomsmit@google.com>
> > Reviewed-by: Michael Ludwig <michaelludwig@google.com>
>
> Bug: b/513948227
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Change-Id: Ide85466e17b870d2cc738bd25602d6cbf65d332b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249276
> Auto-Submit: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>

Bug: 520919400
Change-Id: I7f5bff928f1b58830075c1ec6ca15600d49519c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1249536
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Thomas Smith <thomsmit@google.com>
(cherry picked from commit b854499)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1257281
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
This shouldn't happen during normal use [1] but if the data
is corrupted, there are some assumptions that can can cause
issues, like the ones linked in the bug.

This rejects those and turns one assert into an actual runtime
check to provide defense in depth.

[1] https://github.com/google/skia/blob/9eecbdc30f7da675edab96974b23174a9d521e0c/src/text/gpu/SubRunContainer.cpp#L1578-L1581

Bug: 520113415
Fixed: 520919400
Change-Id: I6ec23df9a23ea588fa89f7a62dc1f197fe3905fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1256016
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Thomas Smith <thomsmit@google.com>
(cherry picked from commit a145861)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1257616
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Original change's description:
> Avoid improper mask formats for SDFT runs
>
> SDFTSubRun has a hard assumption of the kA8 mask format and
> if the vertex filler differs, there will be a memory mismatch.
>
> This catches it when deserializing the Slug and changes the
> debug-only assert to be runtime to make sure we don't miss other
> places.
>
> Bug: 520571816
> Fixed: 520571816
> Change-Id: I9ae3e509397e23d38d621cb7eb8bb5b955a43d7d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1257397
> Commit-Queue: Kaylee Lubick <kjlubick@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Thomas Smith <thomsmit@google.com>

(cherry picked from commit eac1515)

Bug: 522134839,520571816,520571816
Change-Id: I9ae3e509397e23d38d621cb7eb8bb5b955a43d7d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1260696
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.