This renumbers the dehydrated data.
Change-Id: Ic1fc610d073a12d4e552a7c03e2e8630d8138a3a
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393236
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: Icc710e414388e4026a5e9819a53b8dac8ee0a2d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394896
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This is allowed in OpenGL ES2, and its absence in SkSL has been a pain
point for new users adopting Runtime Effects.
Change-Id: Id2ed78261a2cd2b14b49ad22cb74cdc9e0905f8a
Bug: skia:11368
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393418
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Includes a general explanation of device vs. local, how shaders don't
move with geometry, and how to use canvas transforms. Also shows
localMatrix on an SkShader. Finally, links to that from the SkSL page,
and adds SkSL-specific notes about coordinates.
Bug: skia:11763
Change-Id: I31462aff66ff8514392098b972a10e7c96e4f254
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393516
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Change-Id: I2654ad43acd90d8a65dc2f54b47c0d9085e69175
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394836
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
These were added to SkRuntimeEffects, but we need to do a bit of fixup
in the CK bindings. Note that 'getUniformFloatCount' is now poorly
named, but the idea still stands: it's how many total scalar values are
required.
Bug: skia:11803
Change-Id: If464156d8e6240736e324ef833e57ba7d53f55a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394476
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
fc28c1db5f..4340fcfaa8
2021-04-09 cclao@google.com Vulkan: Add command option to run app traces with minimum GPU work
2021-04-08 cnorthrop@google.com Tests: Add Call Break: Offline Card Game trace
2021-04-08 doughorn@google.com Revert "Fix multithreaded crash on draw commands on D3D11 backend."
2021-04-08 timvp@google.com PPO: Fix updating sampler uniforms between draws
2021-04-08 cnorthrop@google.com Tests: Add Bubble Shooter trace
2021-04-08 ynovikov@chromium.org Fix iOS and Android component builds
2021-04-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from c8a676460af3 to 6cad7c765c8b (151 revisions)
2021-04-08 doughorn@google.com Fix multithreaded crash on draw commands on D3D11 backend.
2021-04-08 timvp@google.com Reset mCurrentGraphicsPipeline in ProgramExecutableVk::reset
2021-04-08 jmadill@chromium.org Make "force context check" an optional GN flag.
2021-04-08 lubosz.sarnecki@collabora.com Tests: Add Professional Baseball Spirits trace.
2021-04-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 575b36060ded to c18d8cd5016c (3 revisions)
2021-04-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 743bf032b75b to c8a676460af3 (490 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 csmartdalton@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/master/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: csmartdalton@google.com
Test: Test: ProgramPipelineTest31.SampleTextureAThenTextureBTest: Test: Ran MultithreadingTest. Test exhibits a crash before thisTest: Test: SamplersTest31.SampleTextureAThenTextureBTest: Test: angle_perftests --gtest_filter="*bubble_shooter*"Test: Test: angle_perftests --gtest_filter="*call_break_offline_card_game*"Test: Test: angle_perftests --gtest_filter="*professional_baseball_spirits*"
Change-Id: I4128511bfc4427d88bb5afeb075739324e51e6cb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394716
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This assert was only accurate if the input edge flags were all 0s or
all 1s, and set in conjunction with the overall aa policy (e.g. aa = yes
meant all edge flags were 1). Then any cropping of a large draw would
have no change when it updated the edge flags.
However, this premise is flawed when the quad has mixed edge flags,
since it could still be anti-aliased but have non-aa edges that are
off screen. When they are cropped, those edge flags would correctly
switch from 0 to 1.
I didn't go so far as to replace *aa with GrAA::kNo, even though the
crop to the device bounds is technically non-aa. Keeping it as *aa
increases the probability that we keep the flags as 0000 or 1111,
which are slightly faster than mixed flags. Any cropping to the
device bounds is visually the same either way since they will be
cropping to integer coords.
Bug: chromium:1196090
Change-Id: If8fc6006b5846967e33e90063f00b82b50fe61f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394356
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
No functionality changes, just making the naming consistent with our
other enums.
Change-Id: Ic9bc4a89f8373e4dc1060067a41468fb626e5fa1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394160
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
This commit introduces the foundation for android kit.
Included is the ability to make calls to native code through the JNI as well as a wrapper for SkCanvas to be used in the Android view hierarchy.
Change-Id: Id2416776e676210d4600898bada3356a9116eb55
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393356
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
This function will be used by the resource allocator to figure out
whether an allocation plan is feasible without committing to it.
Bug: skia:10877
Change-Id: I135b7b80d53d9c3541d2fa0313d91d14a1d54eb2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394156
Commit-Queue: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
RSXForm is not stored directly in the glyph run. The Tx and
Ty portions are stored in the positions, and the scos, and ssin
portions in a span of SkVector.
This CL just adds the space for the extra information, but does
not utilize it yet.
Change-Id: I93e2140fb28a6638a57b6d811ed6dc823e8de6ae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394217
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
The resource allocator already has a scratch key and it
needs to be able to find scratch textures without instantiating them.
Bug: skia:10877
Change-Id: Ia0d4c52147ae799f4e19fb0eabdc2d63cf21c110
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394117
Commit-Queue: Adlai Holler <adlai@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
OpenGL ES2 allows structs to be compared: http://screen/6KnX4ZfkdLtqDWv
This already worked in GLSL, Metal and SkVM.
Change-Id: Iaf7029c0c1ea9d447348c8280a2788f0d36befad
Bug: skia:11846
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393598
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This allows it to access the resource cache as well as the provider,
and paves the way for memory budgeting inside the resource allocator.
Bug: skia:10877
Change-Id: I01e9c02e445494ac431b288f41006ae7360ff791
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394116
Auto-Submit: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Now that we have a non-msaa FBO on Adreno chips this workaround is no
longer necessary.
Bug: skia:11396
Bug: skia:11838
Change-Id: Ibd3386dcbcbefcf9506a07bbd095ee9431552d2a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393718
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
As part of this we also create two fbos now for
multisampled_render_to_texture: one msaa and one not.
Bug: skia:11396
Change-Id: If519b52ec79de4b2abeac2c5658f766f1c7e8d9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392746
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
dfa7cca5f3..f9350be1e4
Includes fixes for COLRv1 fuzzer findings and fixes for issues
with state kept between glyphs in hinting.
Change-Id: I72dba955e948715bbf7b2f6c45a44339f74cfaa5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/394036
Auto-Submit: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
We then store this handle on the GrVkFramebuffer. This will be used in
follow on CL to help remove the use of GrVkRenderTarget in the
GrVkOpsRenderPass.
Bug: skia:11809
Change-Id: I979de4e474be1d5e5683dc263fe347cfb63b2342
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393376
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Bug: skia:11840
Change-Id: Ief89855554e4ed21da20a2fdef4945294cf46498
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393416
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: Ic1f5d28651e8de9d9ecea2a0bcfa73063dd90a9d
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393337
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
It is no longer used.
Change-Id: I1f5861ea4043440d7a6a31e5268e24c62fb1660e
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393217
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Vector and matrix typecasting is mechanically very similar, so it makes
sense to represent these with a single constructor type and paper over
the tiny differences in each backend. (SPIR-V in particular needs a
separate path for matrix casting versus vector casting.)
Change-Id: Id9ea7ca6297e69b3e813c69bfdc56073b50d8d89
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393216
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
We believe with advent of GrBackendSurfaceMutableState that this is
only needed for inline atlas uploads. Those call GrGpu directly.
Bug: 1191058
Change-Id: Iad851ebc9f5b7df21d16064a84caa9575da98634
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393082
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
ConstructorComposite is a slight rework of ConstructorVector;
mechanically, both vector and matrix composition behave the same and
can share the same logic.
The generated code in SPIR-V and Metal still has some tweaks due to
different handling for matrices in these languages, but the SkSL
internal model mimics GLSL's view that vectors and matrices can be
created by lumping together any mix of scalars and vectors.
The backends will continue to adapt this model to their reality.
Change-Id: Ia2781c8a9dd3b4ba55ef93e33ac252eaeec844ac
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393178
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Bug: skia:11374
Change-Id: I63d605eabbe514a0469d00d8a671969874f3edd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393081
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2f22157acd..6d905c7631
2021-04-07 cclao@google.com Vulkan: Remove initImmutableImage and use initImage instead
2021-04-07 cclao@google.com Vulkan: Remove maxLevel and immutable from ImageHelper::initExternal
2021-04-07 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 99ef73b66e73 to 9bacc030553c (0 revision)
2021-04-06 jmadill@chromium.org Vulkan: Suppress draw-time push constant VVL warnings.
2021-04-06 cclao@google.com Vulkan: Remove mMaxLevel from ImageHelper class
2021-04-06 timvp@google.com Mark most draw modes valid when no program is bound
2021-04-06 sunnyps@chromium.org Support GL_EXT_texture_type_2_10_10_10_REV on D3D backend
2021-04-06 cclao@google.com Vulkan: Remove mBaseLevel from ImageHelper class
2021-04-06 jmadill@chromium.org Vulkan: Use constants for descriptor types.
2021-04-06 lexa.knyazev@gmail.com GL: Align emulated ETC1 handling with other backends
2021-04-06 cclao@google.com Vulkan: Make storage actually immutable for immutable textures
2021-04-06 b.schade@samsung.com Vulkan: Fix geometry shader validation with vertex shaders
2021-04-06 liaoyuke@chromium.org Lacros: Fix xvfb condition in angle
2021-04-06 m.maiya@samsung.com Vulkan: Assign XFB location first then assign varying location
2021-04-06 cwallez@chromium.org Factor common Vulkan build_overrides in vulkan_common.gni
2021-04-06 cwallez@chromium.org Add tint: to the list of allowed Bug: tags.
2021-04-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 61083c4a2ae0 to fac6f6b00985 (4 revisions)
2021-04-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 9c9ca054e2bc to 99ef73b66e73 (584 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 csmartdalton@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/master/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: csmartdalton@google.com
Test: Test: KHR-GLES31.core.draw_indirect.basic-mode-*adjacencyTest: Test: KHR-GLES32.core.geometry_shader.api.fs_gs_draw_callTest: Test: KHR-GLES32.core.geometry_shader.api.pipeline_program_without_active_vsTest: Test: KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_inTest: Test: SimpleOperationTest31.DrawWithoutProgramBoundTest: Test: built Chromium and Angle from sourceTest: Test: gpu_angle_passthrough_fuzzer
Change-Id: Ie3f92899ba5b28cb27c736d3c8327dda4aebb8a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392971
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This constructor aggregates scalars and smaller vectors together into
one vector. It is not responsible for splats or typecasts; those are
handled in separate classes which were added previously.
Change-Id: I9194bec50d58d94c331e0bb883686e26b86af347
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392816
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This reverts commit 5a2de5e72f.
Reason for revert: Upon further investigation this still leaks
Original change's description:
> put an arena on GrSurfaceDrawContext
>
> This is part one of two CLs. In this CL, I put a
> sk_sp<GrArenas> on GrSurfaceFillContext where GrArenas wraps
> a SkArenaAlloc to add ref counting. Creating
> a GrOpsTask shares the GrArenas with the ops task. New plumbing
> was added to GR_DRAW_OP_TEST_DEFINE to allow a proper
> GrSurfaceDrawContext to be passed to GrAtlasTextOp's
> GR_DRAW_OP_TEST_DEFINE so the arena will have a proper lifetime.
>
> The second CL will work on replacing GrOpsTask's fAllocators
> system with the shared arena.
>
> Change-Id: Ife3be0ab265441cbffab360f2808f5eed86db8b3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392936
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=bsalomon@google.com,herb@google.com
Change-Id: I9ca5c8b1e16b468003788cd3126eda1d40ff93ed
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393177
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit f00d6a8efd.
Reason for revert: In the long run, it seems like this might leak.
Original change's description:
> remove fAllocators from GrOpsTask
>
> Change-Id: I5901f005c2758a92692e5cd70ba46a2b5ad797fd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393116
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Adlai Holler <adlai@google.com>
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=herb@google.com,robertphillips@google.com,csmartdalton@google.com,adlai@google.com
Change-Id: I895e47c999c6961fa14c356d6d5bde80dd86b63e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393176
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I9f02b1e07bf7a20a90f259d94ca58c26d2783ea6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392993
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Also adds tests of non-uniform shader declarations. These are currently
allowed, but will be detected as an error in the next CL.
Bug: skia:11374
Change-Id: I3fee0a0c97ae590f7bc6952cb367f7e94436b891
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393080
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This approach gives us similar flexibility but requires fewer lines of
code to get the same result. In a followup CL we will be able to
eliminate get[BFI]VecExpression as well. This approach will also scale
to arrays and structs if we want to support constant-folding on these.
Change-Id: Ib0034935926c7004f84ba62ddbdb3168df8ce91d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393076
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This shook out a long-standing bug; constant folding would treat a
matrix resize as if the cells not covered by the original matrix were
all zero. This is wrong; GLSL populates the unknown cells with an
identity matrix. We actually tested for the wrong behavior, so the tests
were updated to match the correct behavior, and an equivalent test was
added that does not constant-fold (to verify that our constant folder
matches reality).
Change-Id: I03df10ce646fbef0a36e9c1a841a7637182de122
Bug: skia:11032
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/392916
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>