Now that we support sampling from an SkBlender inside a Runtime Effect,
we can leverage that to reuse the blends from SkBlender::Mode. This lets
us avoid hard-coding copies of every built-in blend function.
Change-Id: I51f380490611fbde943c16648999b4fd4e6a14a9
Bug: skia:12257, skia:12085
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434472
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Runtime shaders, color filters, and blenders are all able to sample from
a blender. These use the blend-function signature; both a src-color and
dst-color must be passed to sample. i.e.: sample(blender, s, d)
Change-Id: I3738e6b0b4af6d1d79e62ca1815c80d6a1ae9d6f
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/432056
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Bug: skia:11837
Change-Id: If8dd864d6cd8bc5ab9569fbab40866e1810dbc27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434162
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Bug: skia:12063
Change-Id: I86833ddfac9414348cbc6cf5bfb39e09c02c7d92
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434857
Auto-Submit: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Previously, a cloned Runtime Blend FP would lose its
kIsBlendFunction_Flag, causing invalid code to be generated.
This broke the `filltypespersp` slide when "Force Runtime Blends" is on.
Change-Id: I9a140bc6467536e5ebeb2ca47eca6f013462dd58
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434919
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
TopDeviceSurfaceFillContext can return null if there is a paint filter
on the canvas.
Change-Id: I4aa5db63278a561dabea3390b0975bf072e1f679
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434918
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Without the SkVx.h #include this broke the G3 roll as part of:
https://skia-review.googlesource.com/c/skia/+/431384 (Retract GrSurfaceDrawContext.h a bit)
This new version should work. This is part of making v1::SurfaceDrawContext V1-only.
Bug: skia:11837
Change-Id: I240e5feeef6de89199882e666c71a864d13b9605
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434163
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
When GrBlendFragmentProcessor is used to implement a SkBlender, we need
to pass distinct source and destination colors. A single `_input`
argument doesn't allow for this, but by enabling the blend-function
signature on the FP, we get both a `_src` and `_dst` color to work with.
By default, the GrBlendFragmentProcessor continues to pass `_src` to
both `srcFP` and `dstFP` since this is how it has historically worked.
To use the `_dst` color, the caller can wrap the dstFP in a
`UseDestColorAsInput` FP.
Change-Id: I105e1ee2554c3d526a82fffd26bc696a2b8dc248
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434045
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Returns a fragment processor which samples the passed-in fragment
processor using `args.fDestColor` as its input color. Pass a null FP
and it will return `args.fDestColor` directly. (This is only meaningful
in contexts like blenders, which use a source and dest color.)
This also fixes a bug in invokeChild which failed to forward along the
dest color when one blend function invokes another blend function, and
fixes an edge case where GrSkSLFP where it would fail to enable the
blend-function mode when the dstFP is null.
Change-Id: I46c8bffeb602d0c0b2b4dd1723a893582f3007ed
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434681
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This reverts commit cc9d20f308.
Reason for revert: Wrong API pre-C++17
Original change's description:
> SkCanvas: switch from SkDeque to std::deque
>
> Bug: skia:10987
> Change-Id: If252f644dc3b8827356f9c7044c8e01fd0fc5afe
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434676
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
TBR=brianosman@google.com,reed@google.com,michaelludwig@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
Change-Id: Ica125d5ad04332d68f54dd544373fa29eaf2b69c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10987
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434856
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
ae24c9d387..3036e0903c
2021-07-29 syoussefi@chromium.org Vulkan: Direct SPIR-V Gen: Support the precise keyword
2021-07-29 syoussefi@chromium.org Define angle::HashSet potentially using abseil
2021-07-29 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from ecc420b25566 to 55a0cb8b66ac (8 revisions)
2021-07-29 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from b8bcc42a41e5 to 44660405ea6c (1 revision)
2021-07-29 kbr@chromium.org Disable Metal shader cache again in angle_end2end_tests.
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 kjlubick@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: kjlubick@google.com
Change-Id: I164f3c83a65c35a6edc133bcb3f1db4d944388ac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434798
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (recipe_engine) into this repository.
recipe_engine:
9fd324104c~..910def8f654695ebcb84d02a60f69ec0cfd1d32a
9fd3241 (wenbinzhang@google.com)
Fix issue when recipe launch with RECIPES_DEBUG_SLEEP
910def8 (yuanjunh@google.com)
Make sure all coverage files are removed
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
R=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ie6069c7e32c47314fde23c0fa03003e013deda8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434757
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <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, recipe_engine) into this repository.
depot_tools:
45d2afa080
45d2afa (avi@chromium.org)
Revert "New vpython release to depot_tools."
recipe_engine:
adf6ca4b1b
adf6ca4 (yuanjunh@google.com)
[python3] make test _runner command py3 compatible
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
R=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I294c748781a093a727f1194cd076a6644f83f001
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434532
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This is meant to help disambiguate the FP from `args.fDestColor`.
Change-Id: I59a4527e64970811a6798a635191016c645587ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434679
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This allows us to support a chain of FPs that includes both blenders
and matrices.
Change-Id: Ic8a4ea3eb24b7fd45552607be196461e999f03ea
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434656
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Bug: skia:10987
Change-Id: If252f644dc3b8827356f9c7044c8e01fd0fc5afe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434676
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools, recipe_engine) into this repository.
depot_tools:
517f6beeaa
517f6be (meiring@google.com)
[depot_tools] roll rdb to 2be056d0
recipe_engine:
5f4efc8641
5f4efc8 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
Roll CAS Client from 5408cdaa3a03 to faa49b9522a8
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
R=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I69b0c455354a6b9b0a907c1e8ed27372e0742c1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434521
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
This hoists logic that was being done only for GrSkSLFP to the base
class, and avoids having to write these functions lazily on first-call.
To simplify things further, stop storing the names of child processor
functions in the parent. Simply have each processor store its *own*
name. This avoids storing empty strings for null children.
Change-Id: I53afbae6dc0986575e3e91aba5532a27f7ef25d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434466
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This CL also factors out the child effect reading and writing code into
helper functions, to avoid repeating it verbatim.
Change-Id: Ia48e5f346aa557179bec83daaa91e772765181a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434117
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
If there are colors, and the incoming paint has a shader,
then they need to be blended.
Bug=Skia:11822
Change-Id: Id5a1d7dffcaedb678214c694c9c87d0c71cdc991
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434161
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
When called in the typical FP context, we only have a paint color, not a
separate source and destination color. So we pass the paint color in
each slot. This seems counterintuitive, but the upshot is that a runtime
blender will now pass the paint color as the input color to the source
effect and dest effect. (In a followup CL, sampling directly from a
runtime blender will allow distinct values to be passed into each slot,
and these values will be honored as-is.)
Change-Id: I96b016527d1066f0431a763f6609c3983b4854ec
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433516
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I7b53df1eae83a596c4d1f3620e7f9bd146f68af2
Bug: oss-fuzz:36655
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434465
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
The fuzzer generated the expression `(6).xx`, which triggered a
type-checking assertion. This swizzle was otherwise harmless.
Change-Id: Icb12f93fe3f6d88265d67e689ceb85cf1085c9e8
Bug: oss-fuzz:36655
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434464
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Multiply degree values by 180 as FreeType returns them just as in the
font format. Add more tests for skew and transform, and a sweep
test. Update the test font to follow changes from a work in progress
FontTools branch which implements the new format.
Roll FreeType to include parsing changes
d3dc2da9b2..47b1a541cb
Bug: skia:12272
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Release-All-Android_NativeFonts
Change-Id: Iaaf3a53dbf40828b908202c19de91319cc68b0b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/432976
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reuse all the existing SkTriColorShader, implement the
matrix code using SKvM.
Bug=skia:11822
Change-Id: I1a1f0dd005939386ca7bf9ba812e717967525089
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434159
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Tessellation is extremely fast for large batches of small paths. That,
combined with its ability to render without caching and the atlas's
well-defined memory limits, make it desirable over
GrSmallPathRenderer's CPU-generated bitmap cache. We may want to
reconsider use cases for distance fields though, and those could be
prioritized above the atlas.
Bug: skia:12258
Change-Id: I7b8218eb02f38b3b0c1462b181b9373f5c84cdaa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434199
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Blend functions are fragment processors that take two arguments, a
source color and dest color.
Change-Id: Ia26fadae42610fd8849716ad68db867cfa082169
Bug: skia:12257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433361
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Also does some evolutions of Dawn's API and suppresses
runtime_intrinsics_matrix when using Dawn because Tint doesn't implement
a SPIR-V -> WGSL MatrixInverse polyfill yet.
Roll third_party/externals/dawn/ 170ea75f2..d59ba7c18 (121 commits; 1 trivial rolls)
https://dawn.googlesource.com/dawn.git/+log/170ea75f2ad2..d59ba7c18b29
Roll third_party/externals/spirv-headers/ bcf55210f..cf653e4ca (25 commits)
bcf55210f1..cf653e4ca4
Roll third_party/externals/spirv-tools/ dc72924cb..11cd875ed (89 commits)
dc72924cb3..11cd875ed8
Roll third_party/externals/tint/ ea1a4680d..cc6d5b464 (185 commits)
https://dawn.googlesource.com/tint/+log/ea1a4680d490..cc6d5b464dcb
Created with:
roll-dep third_party/externals/dawn third_party/externals/spirv-headers third_party/externals/spirv-tools third_party/externals/tint
Bug: tint:1045
Change-Id: I40b18282538910cf9528096d2c6114465fbe5266
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/431958
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Stephen White <senorblanco@google.com>
This will definitely cause regressions on a whole slew of benchmarks
that were carelessly regurgitating cached bitmaps until the system
memory was blown. But the well defined memory limits of the atlas and
resilience to animation are worth it. If a client still wants this
type of caching they can always render their own bitmaps using Skia
and cache them.
Bug: chromium:928984
Bug: skia:12258
Change-Id: I277f50cb9192f1cf5fe8d4b7f629abe72432150a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433917
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Change-Id: I2069553795403ea85e51eb84d4b146d10e59b027
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434296
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This will cause some regressions on static, cached content, but the
hope is that the overall reliability of the atlas approach is more
desirable in the end.
Bug: skia:12258
Change-Id: I6db29342a70af6ebef61ebe91d406ed7692467f8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433916
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
The way GrDynamicAtlas works, a single 2048x1 path is given an entire
2048x2048 atlas with draw bounds of 2048x1025. Limit the max width to
1024 to avoid this landmine until it's resolved.
Bug: skia:12291
Change-Id: I4719ea789615a22238fa30b66f857dbfc113f33d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433966
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Implements the atlas properly with draw lists instead of taking a
shortcut with uber paths. This speeds up the chalkboard by ~20% on my
Windows laptop (10.9 -> 8.6ms).
Bug: skia:12258
Bug: chromium:928984
Change-Id: Icabccd9a797f5802a11eb087fc97c23edd895679
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433876
Commit-Queue: Chris Dalton <csmartdalton@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 (recipe_engine) into this repository.
recipe_engine:
c5dc7a267c
c5dc7a2 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
Roll CAS Client from 4a50fe70103e to 0bed1f0a6f81
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
R=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ieda5ae595dda868fc5552aa284119c113029bbef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433963
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Change-Id: Id3e4d10456be6e0e0329600f05641034f3ffdb8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434336
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
This CL is mostly mechanical. It:
replaces "src/gpu/GrSurfaceDrawContext.h" #includes with
"src/gpu/v1/SurfaceDrawContext_v1.h" and reorders
replaces "class GrSurfaceDrawContext;" with
"namespace skgpu { namespace v1 { class SurfaceDrawContext; }}"
replaces "GrSurfaceDrawContext*" with "auto" where possible
replaces "rtc" with "sdc"
replaces "surfaceDrawContext" with "sdc"
replaces GrSurfaceDrawContext with skgpu::v1::SurfaceDrawContext
reflows parameters as needed
This CL does not try to:
make skgpu::v1::SurfaceDrawContext V1-only
minimize the skgpu and/or skgpu::v1 prefixes
Those two tasks will be accomplished in follow up CLs. This CL is just trying to get the bulk of the mechanical changes comprehensibly landed.
Bug: skia:11837
Change-Id: I6fe59080249d585df8f5d27c6b67569cdc35842f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433156
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: skia:12063
Change-Id: I47257179d38de0452766ce70857eaf0a920b7abc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/434156
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Auto-Submit: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Eric Boren <borenet@google.com>