The DSLParser is an alternative to the existing SkSLParser which goes
directly to IR code using the SkSL DSL. It is substantially faster and
simpler than the existing parser->IRGenerator pipeline, but not yet
feature complete nor fully tested.
Change-Id: Iee45e9b527a3b88faa2ea74fc512051c8a38c5d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/400622
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: 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) into this repository.
depot_tools:
3912091152
3912091 (sokcevic@google.com)
Use py3 for remaining tools in depot_tools path
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: I756315d83c2e7764cd57223192a01fe8ff2d7c95
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430596
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>
Sets up creation of the framebuffer object from the current render
target and adds it to the OpsRenderPass.
Bug: skia:12186
Change-Id: I08984553bcef2afcf3003d3f59e40c2fa9e383a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430042
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
The ANGLE/CHROMIUM glBlitFramebuffer requires full size blits, which
is really bad for DMSAA. The NV extension does allow blits of
sub-rectangles, so we prefer that one if it's available.
Bug: skia:12176
Bug: skia:12177
Bug: skia:12234
Bug: skia:12235
Change-Id: I463ac631fff64ad564f294cf2f26be7410e8c356
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430576
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This doesn't change anything for the current code path, but makes the
logic accessible to the DSL in upcoming changes.
Change-Id: I5199e4f86ef9dea51baa2658ea2e5a8cb6434e22
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430416
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
If the final MSAA resolve must contain the entire render target (as is
the case in ANGLE ES2), then we also need to draw the entire proxy
bounds into the DMSAA attachment during load. This is because we will
have no other choice than to do a full size resolve at the end of the
render pass, so the entire DMSAA attachment needs valid content.
Bug: skia:12176
Bug: skia:12177
Bug: skia:12234
Bug: skia:12235
Change-Id: I106a8724de1c9cbf7106ed3720dabf37c0c17ab0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430256
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Change-Id: I46844754a86ae44b61747b7244edf6cc1fd73d61
Bug: skia:12080
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429102
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Some GM slides behave differently when a GrDirectContext is passed (e.g.
the CTMPathEffectGM disables itself when the GrDirectContext is non-null
because it asserts when run on GPU).
Change-Id: Ida18f191474f94426c6077d3a5de659e739056a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430476
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
The dependencies between these headers made modifying the SDC and Ops separately somewhat difficult.
Bug: skia:11837
Change-Id: I0c3ca118ce206bf8db5b6753be1ef46531ae1f58
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430041
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@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.
depot_tools:
61c72651d7
61c7265 (tommckee@chromium.org)
Harden _PresubmitResult against varying string types
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: Id9fdc35b324e1e8b29acb1f428256fecf355394f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430317
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>
(it had already been abandoned by Skia)
MakeMatrixTransform now takes FilterOptions | CubicResampler
(just like drawAtlas) so that it can have a single entry-point
that picks either variant of SamplingOptions.
Proposal : migrate this pattern (one name, 2 parameter types)
to methods like drawImage, drawImageRect, etc.
Change-Id: I309fbd8be94e642a57ab3016dad7252537ded7d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429496
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Mike Reed <reed@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:
8e0273d138
8e0273d (yiwzhang@google.com)
py3: run luciexe unitest in both py2 and py3
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: Ia18f0c482b5bb464dcac0ac7282a566e839d8ee2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430316
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>
4d9e1f230f..6a86d2079f
2021-07-20 jgilbert@mozilla.com Add a feature flag allowES3OnFL10_0 to allow ES3 on d3d10.0.
2021-07-20 jgilbert@mozilla.com Add missing header to build config.
2021-07-19 jmadill@chromium.org Trace Tests: Autodetect Goma.
2021-07-19 kbr@chromium.org Fix multiple end2end crashes in direct-to-MSL compiler.
2021-07-19 jmadill@chromium.org GN: Update dcheck/assert conditions.
2021-07-19 jmadill@chromium.org Implement EGL_KHR_mutable_render_buffer in the front-end.
2021-07-19 syoussefi@chromium.org Revert "Ignore VUID-VkSpecializationMapEntry-constantID-00776"
2021-07-19 Richard Coles android: Explicitly specify exported activities.
2021-07-19 m.maiya@samsung.com Bug fix in ValidateCopyImageSubDataBase
2021-07-19 m.maiya@samsung.com Vulkan: Add support for YUV internal format extension
2021-07-19 jmadill@chromium.org Capture/Replay tests: Fix missing usage of ApplicationDir.
2021-07-19 jgilbert@mozilla.com Build fixes needed by Firefox circa 2021-feb.
2021-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll VK-GL-CTS from 6b9a0f391fa4 to 571256871c2e (17 revisions)
2021-07-19 jmadill@chromium.org Vulkan: Remove loader logging message in RendererVk.
2021-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from ba18c78e4696 to c6747d98397d (1 revision)
2021-07-19 yang.gu@intel.com Extend Intel graphics driver version to 2 fields
2021-07-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from ac347590d69b to f8ef6fcfb849 (67 revisions)
2021-07-19 cnorthrop@google.com Skip GLSLTest_ES31.BoolInInterfaceBlocks/ES3_1_OpenGL AMD Linux
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 ethannicholas@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: ethannicholas@google.com
Test: Test: Texture2DTestES3.TexStorage2D*Yuv*Vulkan*
Test: Test: dEQP-GLES31.functional.debug.
Change-Id: I9837f813daaa741912adbc8244f53a2516d3e32c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430296
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 (depot_tools, recipe_engine) into this repository.
depot_tools:
5b118d1441
5b118d1 (bryner@google.com)
cpython3 3.8.10.chromium.20 to depot_tools stable.
recipe_engine:
5530960b32~..fcea2752f66155b22774bbf1a0261bfa507fd1c8
5530960 (iannucci@chromium.org)
Clean up OWNERS files
0d98efc (yiwzhang@google.com)
fix the script that updates 3p lib
d284048 (yiwzhang@google.com)
py3: decode bytes to utf-8 string before writing to log stream
01cb0aa (yiwzhang@google.com)
py3: make a few recipe modules work in python3
fcea275 (yiwzhang@google.com)
test: separate luciexe test from run test
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: I07e7199192cb5f714ef4b9090b38ce2b1ccf3cf4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430221
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 reverts commit 7069804621.
Bug: skia:12010
Change-Id: Ifbb17904e0157020481b3f98aaefb98df5150afb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429298
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Previously, the dest color was implicitly the surface that we were
drawing onto. When setting the blender on an SkPaint, this is still the
case. For other uses, e.g. a SkBlendImageFilter, the caller may want to
supply an arbitrary input FP.
Bug: skia:12085, skia:12205
Change-Id: I254be006a0f374711fa64f49e0ba339578d8d83a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430059
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: 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:
eaa87fa1f1
eaa87fa (yyanagisawa@chromium.org)
Roll out new goma client binary VERSION=227
recipe_engine:
b4e57a6c1a
b4e57a6 (gbeaty@chromium.org)
Reduce the severity of logs for recipe_modules non-issues.
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: I2fba0125f65bd3e6b855c51fd911c547e449453f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429957
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>
All JS strings are now single-quoted, so double-quotes don't need
escaping. There are some symbols (in fullsymbols mode) that contain
single quotes, though - so escape those instead.
Change-Id: Ibdcca5634413c6a5e292f81503fbbf89f3d52b0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430040
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Not a critical test, but its data file is out of date.
Change-Id: I41a1a94b2235e5b853e1516af7129f1cc0c0c785
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430217
Reviewed-by: Mike Reed <reed@google.com>
This is not a tessellation shader, and only inherited from
GrPathTessellationShader because it was used by the tessellation path
renderer. Remove its dependence on GrPathTessellationShader.
Bug: skia:10419
Change-Id: Ia97ef68488fae1c90674c5a006a62a3157bb707f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430019
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Disabling multisample while rendering to an MSAA target is a dwindling
feature that comes with a heavy performance cost on some devices, and
many devices don't support it at all. This CL just flips a bit so we
never disable multisample. After a few days or weeks of soak time, we
will come back and yank out all the code that supports disabling
multisample.
Bug: skia:12196
Change-Id: Iae54d25d0e28e24eda6295d7155e5c9fbb398081
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429299
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
We should have always used the default GP here. It makes for better
reuse, and shader that draws raw triangles isn't a "tessellation"
shader anyway.
Bug: skia:10419
Change-Id: Ia2ef2a83f5ed8917005e12b9f9a52c1d9f877575
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429956
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I73922717d4ebd8c759f7fe5c7c8e8da4567a0aa9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430039
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>
Pull a thread, and end up removing logs of old fontmgr code.
Change-Id: I73cebf9c011a99e9d12fd728e8677fcb0700407f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429338
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: I84fe0319a15065f5de85cd4bed20d648b88c2b56
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429897
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Because C++ does not have the '^^' operator, we had previously just
skipped support for this GLSL operator. This implements it as a
function.
Change-Id: I310658d900de4609572aed4750d6fb27f88d0722
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430036
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Bug: chromium:1220246
Change-Id: I0e9db2e403455ccc5d75acc714aa8201db285afc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429678
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
When isinf is not supported, we simply add another instanced attrib that
tells the shader exactly what type of curve it's dealing with.
Bug: chromium:1220246
Change-Id: I3496de674ce8c7df205e3c40559ae89dc29488e1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429676
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Change-Id: I13ae7034cda4291743f433406ee2e8267dd48d3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/416576
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
Introduce private SkLegacyFQ to allow us to continue deserializing
old content with filter-qualities, but still remove the public enum.
Need to finish removing references in clients.
Change-Id: Iacfb602ec497260e53defc4b95e297ed1ef4e69c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429476
Auto-Submit: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
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:
0202156442
0202156 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
Roll CAS Client from 56d8faf61a03 to 175b811c1eeb
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: Id3c9af7172825acd539e5bcda57ce7478a0b4932
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429736
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>
397fc145b8..4d9e1f230f
2021-07-19 cnorthrop@google.com More skips for GLSLTest_ES31.TypesUsedInDifferentBlockStorages
2021-07-17 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from ec932ff42c9b to ac347590d69b (492 revisions)
2021-07-17 timvp@google.com Call getNearestSamples() in Framebuffer::setAttachment()
2021-07-16 cnorthrop@google.com Skip GLSLTest_ES31.TypesUsedInDifferentBlockStorages AMD Linux
2021-07-16 ianelliott@google.com Two fixes to DevSetup.md
2021-07-16 geofflang@chromium.org Remove the explicit context extension.
2021-07-16 syoussefi@chromium.org Vulkan: SPIR-V Gen: Support bool in interface blocks
2021-07-16 jmadill@chromium.org Vulkan: Prefer the local vulkan loader over the system one.
2021-07-16 jmadill@chromium.org Capture/Replay tests: Enable dcheck_always_on.
2021-07-16 lunpujun@google.com Avoid recreating activity when rotating the display.
2021-07-16 jmadill@chromium.org Capture/Replay: Don't try to serialize compressed textures.
2021-07-16 jmadill@chromium.org Capture/Replay Tests: Swap before TearDown.
2021-07-16 gert.wollny@collabora.com Capture/Replay: Capture WaitSemaphore and SignalSemaphore
2021-07-16 gert.wollny@collabora.com Capture/Replay: redesign capturing of arrays passed by pointer
2021-07-16 gert.wollny@collabora.com tests: GL_NUM_BINARY_FORMATS is a ES 3.0 property
2021-07-16 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 8cd71c4b8d72 to ec932ff42c9b (494 revisions)
2021-07-16 gert.wollny@collabora.com Capture/Replay: Capture FenceNV parameters
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 ethannicholas@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: ethannicholas@google.com
Test: Test: MultisampledRenderToTextureTest.FramebufferCompletenessSmallSampleCount
Change-Id: I9807c9bf425e212cb18520cf45ce965025435d0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/429716
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
note: our min picture-version dates from 2020
Change-Id: I5b9d2e8a13afd16fe5b3ae88f9747f0da4382d29
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/428196
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>