- 09 Apr, 2019 9 commits
-
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.builtin.function.integer.bitfieldinsert.* Change-Id: I47baf70460ca9a2c829b4c83d517a813f315f539 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28529Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.builtin.function.integer.bitfieldextract.* Change-Id: Iebc03e7da46fa2dd2ae8d8d3565ffc9597fec985 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28528Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.builtin.function.integer.bitfieldreverse.* Change-Id: I8c6b73be89c24de371806f6c5d6afbf52f7161c9 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28472Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.builtin.function.integer.bitcount.* Change-Id: I2fa97f54a1ee68767fd13cafa3aeecfd7d068602 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28471Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.matrix.transpose.* Change-Id: I5b793ecda3d30de456b9ec7f65c386975a86b97f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28470Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
Bug: b/126873455 Tests: dEQP-VK.glsl.matrix.outerproduct.* Change-Id: I0189bbec3049d01f02191a6c8a7aee2c5d675af3 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28469Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
It's quite common to want the object and the type. Fix up these cases. Avoids a second Object lookup. Change-Id: Ied1ae0c8d264cfe6c6ff3603d0d096bf9f657b84 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28468 Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
Change-Id: Ibc630c1b37ecaad87f9c015d8fecc38a6d6b6392 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28396 Presubmit-Ready: Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Alexis Hetu authored
Allow vkGetImageMemoryRequirements2 to set data in the VkMemoryDedicatedRequirements pNext structure, the same way vkGetBufferMemoryRequirements2 already does. Bug b/119620767 Change-Id: I4fb6bc29862eb01188ec1d2a05b4f6cc34629d8a Tests: dEQP-VK.memory.mapping.dedicated_alloc.image.* Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28488Tested-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
- 08 Apr, 2019 3 commits
-
-
Ben Clayton authored
Now that we have vk-unittests, it makes sense to prefix unittests by their API name. Fixes a couple of TODOs Change-Id: I57234d6b19c3dd4f130b211a0be4e604613b8cd8 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28399 Presubmit-Ready: Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
SwiftShader Regression Bot authored
Change-Id: I1509e2056f5b06bb956e3968e9d179531cf6eece Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28401Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
... along with a message saying what switch case wasn't handled. Helps identify what needs fixing for the daily Regres reports. Change-Id: I79448135fc84190d6e803e90e7995ae83058f663 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28400Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
- 07 Apr, 2019 1 commit
-
-
SwiftShader Regression Bot authored
Change-Id: Ic0a5efe8c00564198f929f4a6324598b684352e2 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28398Reviewed-by:
Chris Forbes <chrisforbes@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com>
-
- 05 Apr, 2019 13 commits
-
-
Chris Forbes authored
The Android loader looks for the symbol `HMI` which describes the module and provides pointers to the initial entrypoints. Add a minimal implementation of that. Based on docs: https://source.android.com/devices/graphics/implement-vulkan#driver_emun Bug: b/122837488 Change-Id: I367bac2046368bc8a08334cfac2f339ca2c1eb5f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28410Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Chris Forbes authored
- Add initial device-side build configuration for LLVM7 - Made platform headers module available everywhere (host, device+core, device+vendor) - Added missing source files from src/Vulkan/* - Adjusted SPIRV-Tools build to be available to vendor code, and static only (otherwise we end up with a .so for it in the vendor image) Bug: b/122837488 Change-Id: I9be0eaf91c90a6967fe9d3f8350c94c530f61122 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28409Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Greg Hartman <ghartman@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Hernan Liatis authored
Bug: b/122837488 Change-Id: I45fce8c0b6ef9f6a42f1d3745d7a0434dd08832e Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28231Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Chris Forbes authored
On Android we will expose ANDROID_native_buffer instead, and leave the surface and swapchain support to the android loader. Bug: b/122837488 Change-Id: I03f0fd617042f49c19227701bbdcd2ccda883c94 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28408Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Alexis Hetu authored
Added support for these structures in vkCreateImageView: VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO These only add validation without modifying imageView behavior. This should affect a few thousand tests, which now hit the next UNIMPLEMENTED() call, inside the SPIR-V compiler. Bug b/119620767 Change-Id: Icd2f9608d6b9ca1500ada8e51621c8d54ff9cd8d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28429Tested-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Alexis Hetu authored
VK_EXT_sample_locations is not supported in SwiftShader, but all related tests were being marked as unimplemented because vkGetPhysicalDeviceProperties2 didn't handle VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT. Explicitly ignored this case (with a proper verification that VK_EXT_sample_locations is indeed marked as unsupported). Bug b/117974925 Change-Id: I64a8540c0c30599c8a0a56ce322c563918ba2c31 Tests: dEQP-VK.pipeline.multisample.sample_locations_ext.* Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28428Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Alexis Hetu authored
Added support for: VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO in vkCreateRenderPass. These only add extra validations, but don't modify the renderpass' behavior. Bug b/119620965 Change-Id: I0102a4f7fdd9f57de4ef7b0a813ead951dafe0bb Tests: dEQP-VK.renderpass.*_use_input_aspect Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28448Tested-by:
Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Introduce a new Object::Kind - DescriptorSet. This represents a pointer to a vk::DescriptorSet*, which is now dereferenced to access the buffer data in OpAccessChain or OpLoad / OpStore. This shuffling is required to handle descriptor array access as the array index is only known at OpAccessChain time. Tests: *dynamic* Bug: b/126330097 Change-Id: Id754d966d8945f4e4fcf7895ed2210ce4f6ba713 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28391Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Previously Objects of the Variable kind would hold an Object::ID to another pointerBase object, which was combined with a per-lane offset in SpirvRoutine::intermediates. This is almost exactly the same as PhysicalPointer - except the base address was taken from SpirvRoutine::physicalPointers. With descriptor indices, we need a dynamic base pointer (only known at emit time) with per lane offsets. This change transforms the Kind::Variable and Kind::PhysicalPointer kinds into Kind::DivergentPointer and Kind::NonDivergentPointer. This reduces complexity in loads and stores, and better represents the various forms of pointer we care about. Bug: b/126330097 Change-Id: I514af5962b9cad4109197893066eda6f996be107 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28390Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Sean Risser authored
The original dEQP.md covered Windows pretty well, but was confusing to follow on Linux. So I've fleshed out the Linux process to be as complete as the Windows process. Change-Id: I8373e56db7d8d74bf5bcdfc7c7d23b740a11c25a Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28369Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Sean Risser <srisser@google.com>
-
Ben Clayton authored
The logic did not handle desciptor arrays, or the descriptor overflow case. Bug: b/123244275 Tests: *with_template* Change-Id: Idf3f70848136865d1d76dc4f2f41b4c35d9230db Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28388Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
Rename Object::Kind::Value to Object::Kind::Intermediate. Rename SpirvRoutine::Value to SpirvRoutine::Variable. Change-Id: I1dba30687cbf979d80b0deeca7a96e64a88c94db Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28393 Presubmit-Ready: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
SwiftShader Regression Bot authored
Change-Id: I45b04d1043a83a3732aab59a9009bdbbb1ee56ba Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28397Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
- 04 Apr, 2019 5 commits
-
-
Ben Clayton authored
Just a safety belt that we're not doing stupid things. Change-Id: I092b0755d151a559f793e1a9f30b17ef52626d10 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28389 Presubmit-Ready: Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Stephen White authored
From the build directory, run: cmake -DCMAKE_TOOLCHAIN_FILE=../build/android.toolchain.cmake .. Everything compiles and links. unittests, vk-unittests and ReactorUnitTests are known to work. A "rundroid.sh" script is provided to upload and run Android binaries. This CL has contains the first draft of an NDK-based FrameBuffer implementation. It stubs out the gralloc calls in Image (consequence: EGLImage likely won't work). NOTE: a small CMake patch is necessary; hopefully we'll find a way around this or land it in CMake: diff cmake-3.10/Modules/Platform/Android/Determine-Compiler-NDK.cmake.bak cmake-3.10/Modules/Platform/Android/Determine-Compiler-NDK.cmake 231c231 < set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR}) --- > set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${_ANDROID_HOST_DIR}) Bug: b/129942368 Change-Id: I107a2f719256b6477ad105054ca68c676c05ec5c Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27869 Presubmit-Ready: Stephen White <senorblanco@chromium.org> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:Stephen White <senorblanco@chromium.org> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Cody Schuffelen authored
This fixes one deadlock in Android's use of SwiftShader. Now fixed for ASAN/tsan. Bug: b/124530765 Test: atest CtsGraphicsTestCases:android.graphics.cts.BitmapTest#testDrawingHardwareBitmapNotLeaking -- --abi x86 Test: b/124530765#comment53 Signed-off-by:
Cody Schuffelen <schuffelen@google.com> Change-Id: Iacb04c0ac515eca1849d365c20efa84d58b75f72 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28308 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
... so we can use it for the non-indexed case. Bug: b/118386749 Tests: dEQP-VK.draw.basic_draw.* Change-Id: I21f1616db0b6613f8db6bff61f6aa1dfcf67c253 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28356 Presubmit-Ready: Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
SwiftShader Regression Bot authored
Change-Id: Ie0776ebefe7d83eee26b98b9dbc84efa30dd2cad Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28357Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
- 03 Apr, 2019 9 commits
-
-
Ben Clayton authored
Tests: *dynamic* Bug: b/126330097 Change-Id: I7e4f7e3d921acb72878b7728216415ba66f63ec7 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28249Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Alexis Hetu authored
Replaced DrawType by VkPrimitiveTopology and VkIndexType. Bug b/118386749 Change-Id: I6cd9a263b823e32c19ab85df7978cd674a757f1f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/22848Tested-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Chris Forbes authored
Bug: b/124056625 Change-Id: I2e5650f81516da1e8f18775cb4b10ff5cfbb8a80 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28328 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
A lot of the Regres timeouts we are seeing are in LLVM code generation. These appear to happen for shaders with a pathological number of loads and stores - most likely created by glslang. Each of these loads and stores produce a bunch of branches in the LLVM IR (due to lane masking), which then choke LLVM. Tests: dEQP-VK.ssbo.layout.* Change-Id: I0bb654d9001d0d6bdd02244844bed8e73ce8d9d4 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28348 Presubmit-Ready: Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
Bug: b/128527271 Change-Id: I4bf01e7915735d7fd3dc827fd67873fff75a756f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28354 Presubmit-Ready: Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
Nothing reads these, save the SSD R/W cycles! Change-Id: Ic49a40387672a1e5aaedb169d9d46f61daedc430 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28353Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Change-Id: Ia8793c5274985a8474407a42628b054136de8aa9 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28352Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Change-Id: I8aed6a72c4b9a2a575e441b846c581a67f82cf9b Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28351Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Only the parent process was being killed, allowing children to accumulate, eventually bringing down the machine. Change-Id: I84e43265e53fe17058b3e3568919f6fad704f94f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28350Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-