Thomas Smith
90d · built 2026-09-08
Performance
What Thomas Smith shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+2.2engineers
delivers like 3.2 (3.2x pre-AI)
Output (ETV)
16.4ETV
+79.2% vs 9.1 prior
Features share
21.3%
−6.9 pp vs prior window
Fixes share
39.6%
+5.6 pp vs prior window
Work mix
21.3% Features17% Maintenance20.9% Tests1.3% Docs39.6% Fixes
50 commits over 90 days, ending 2026-09-08.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 2.0ETV[ganesh] More triangulator guards * more speculative fixes for triangulator dereferencing behavior Bug: chromium:473156318 Bug: chromium:470210175 Bug: chromium:546237339 Change-Id: I4d41121c08161b5eebecd46b28c7b8a641477ca2 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1323017 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · c12ebabc · 2026-08-19
- 1.4ETV[SkSL] Support readonly textures as sampled textures or storage images * Previously, adding the readonly qualifier to a texture always upgraded it to a storage texture. However, only textures which require writing need the storage modifier. * This patch allows a `readonly texture2D` to represent either a sampled texture (by omitting the pixel format) or a true read-only storage image (by including the pixel format). * This distinction matters because in SPIR-V, a sampled texture performs a texture read with `OpImageFetch`, but a storage image uses `OpImageRead` Bug: b/262429132 Bug: b/537737666 Change-Id: I407178fd26fe60261522b311e19a87447be0480f Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1342296 Reviewed-by: Michael Ludwig <michaelludwig@google.com> Reviewed-by: Nathan Sanchez <nathanasanchez@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · 64ddea0f · 2026-09-02
- 1.0ETV[sksl][SPIRV] Limit array stride decorator * array stride decorator was incorrectly applied to workgroup memory arrays. * This is incorrect unless SPV_KHR_workgroup_memory_explicit_layout is enabled * Limit the decorator to Uniforms, Storage Buffers, Physical Storage Buffers, and Push Constants. Change-Id: I317ecf40549b055f91489699052cf16870b1c0f2 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1274196 Reviewed-by: Michael Ludwig <michaelludwig@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · 7fb304a5 · 2026-06-23
- 0.9ETV[ganesh] Prevent silent updateData failure * Under high memory pressure scenarios, most notably flushCpuData(), updateData() can fail silently, enabling an attacker to potentially draw stale data from a buffer. * Pipes out the result from updateData() in several places, dropping the draw if a failure occurs. Bug: b/553130676 Change-Id: Id281f53d9f6e4d79d0737fa7b54a102e59ab5f00 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1339637 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · 13ed848e · 2026-09-02
- 0.7ETV[graphite] Add OracleValidator and SkpValidator * Adds OracleValidator, which uses the SparseStrips oracle to perform end to end validation of the entire sparse strips pipeline. * Adds SkpValidator, which sniffs skps for paths, and then runs and comapres the OracleValidator and SparseStrips pipeline. * Refactors the files so that the SkpValidator, Oracle Validator, and Oracle each have their own file. CoverageTestUtils is now used as a generalize helper across the SparseStrips testing files. Bug: b/466122293 Bug: b/466119734 Bug: b/385170952 Change-Id: I2af3109f4202235cea625f2abfae9485522e76da Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1329756 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · ffc2cc46 · 2026-08-25
- 0.7ETV[graphite] SparseStrips approximate conics with cubics * Prior to this change, conics were approximated with quadratics, now they are approximated with cubics using Floater's method, which provides a G1 approximation whose error decreases at n^6. Before this change: 97/97 MB 3 2.15ms 2.19ms 2.19ms 2.25ms 1% ▂▁▄▁▅█▄▆▆▄ grmtl SparseStrips_Flatten_SIMD_Conics After this change: 60/60 MB 5 1.07ms 1.09ms 1.08ms 1.1ms 1% ▁▅▃▅▁▆▄█▃▄ grmtl SparseStrips_Flatten_SIMD_Conics Change-Id: I67cdccb88a497895334355ea39b1c2fe785e4f7b Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1289176 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · 6cdc17ff · 2026-07-27
- 0.6ETV[graphite] Replace StorageBufferManager with StorageContext * Removes SBM from recorder. * Now, each DrawList now holds a StorageContext, which contains a device level cache. * This cache persists across flushes triggered in drawGeometry, but clears after organic flushing. * Snapping the drawPass triggers storageContext finalization, which aligns and pads out the gradient data in anticipation of future appended data. Bug: b/537737666 Change-Id: I27f8fd70efc4803afc80d41b22ebdb0f5cedfa22 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1298917 Commit-Queue: Thomas Smith <thomsmit@google.com> Reviewed-by: Michael Ludwig <michaelludwig@google.com>github.com-google-skia · 8904946b · 2026-08-12
- 0.6ETVReland "[graphite] Replace StorageBufferManager with StorageContext" This reverts commit 791e4ac110f4d05115c80549779a123e663b75e1. Fixes incorrect downcast behavior in test Original change's description: > Revert "[graphite] Replace StorageBufferManager with StorageContext" > > This reverts commit 8904946b4201e76ee1556e8cd8cdf2e3c0e57342. > > Reason for revert: Unit test failure on the tree and blocking the Dawn roll > > Failure Link: <LINK TO FAILURE> > > Original change's description: > > [graphite] Replace StorageBufferManager with StorageContext > > > > * Removes SBM from recorder. > > > > * Now, each DrawList now holds a StorageContext, which contains a device level cache. > > > > * This cache persists across flushes triggered in drawGeometry, but clears after organic flushing. > > > > * Snapping the drawPass triggers storageContext finalization, which > > aligns and pads out the gradient data in anticipation of future appended > > data. > > > > Bug: b/537737666 > > Change-Id: I27f8fd70efc4803afc80d41b22ebdb0f5cedfa22 > > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1298917 > > Commit-Queue: Thomas Smith <thomsmit@google.com> > > Reviewed-by: Michael Ludwig <michaelludwig@google.com> > > Bug: b/537737666 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Change-Id: I233a554f32d1590d421de1bf1a6a027bce0cb06b > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1324516 > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> > Commit-Queue: Robert Phillips <robertphillips@google.com> Bug: b/537737666 Change-Id: Id55bf4d986975c4f9c55bc39f90bd038efd19474 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1324576 Commit-Queue: Thomas Smith <thomsmit@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>github.com-google-skia · 3ac5239a · 2026-08-13
- 0.6ETV[graphite] Adds kRead texture usage and getter functions * We want to use readonly textures as a proxy for storage buffers when storage buffers are unsupported, so we add the kRead texture usage. * Across all backends, a supported texture can always be read or sampled, but not necessarily linearly filtered. This texture usage simply exposes the case where we want readability but don't care about filtering. * Note, this is usage is not to be confused with storage textures, which require writability. Bug: b/537737666 Change-Id: I056f6cb0777167bc97ee7f0f1e465098eee449be Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1326916 Reviewed-by: Michael Ludwig <michaelludwig@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · c75b9f86 · 2026-08-26
- 0.6ETV[graphite] Add Storage Attributes to Rendersteps Change-Id: I0607161698824b7933032880c180379705b9adb6 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1304056 Reviewed-by: Michael Ludwig <michaelludwig@google.com> Commit-Queue: Thomas Smith <thomsmit@google.com>github.com-google-skia · 70cc137d · 2026-08-19