- 26 Mar, 2019 1 commit
-
-
Chris Forbes authored
Bug: b/129149966 Test: dEQP-VK.*instance* Change-Id: I51642d32a8390495f5d9ecd0bb64bca1db33a03d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26689 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 25 Mar, 2019 3 commits
-
-
Ben Clayton authored
Bug: b/129259232 Change-Id: I095618a97edd5d4e8e28b90dd8f329b140aaa248 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27785 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>
-
Alexis Hetu authored
Even if all the coordinates are within the bounds, if filtering is enabled and the coordinates are closer to the edge than the center of the pixel, we have to enable clamping to the edge so that the samples used for filtering don't get invalid/negative factors. Bug b/119620767 b/129258757 Change-Id: I0ba50fff2c2873e4a852e34878883c2e707d9886 Tests: dEQP-VK.api.copy_and_blit.core.blit_image.simple_tests.scaling_whole2.* Tests: dEQP-VK.api.copy_and_blit.dedicated_allocation.blit_image.simple_tests.scaling_whole2.* Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27808Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
SwiftShader Regression Bot authored
Change-Id: Ie7796ec30e26be45a7b4c4233913c2ad94549b6d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27781Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Ben Clayton <bclayton@google.com>
-
- 22 Mar, 2019 16 commits
-
-
Chris Forbes authored
In both the classic and pastel backends, we accidentally had *3* sets of stencil state in the draw data. The generated routines use the array only -- the separate stencilCCW variable is never touched. Change-Id: I7898641bc8dbf387335528da3729e30d28b996aa Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27790Tested-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>
-
Nicolas Capens authored
We now use tests/kokoro/ instead. Bug b/126742833 Change-Id: I50e41a6299238ca91ff92c0947b3060f9a840a5d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27789Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com>
-
Nico Weber authored
As far as I can tell, swiftshader doesn't use LLVM's threading capabilities for anything, and disabling them sidesteps an issue with libc++/win -- so turn them off. Bug: chromium:944811 Change-Id: Idf7eee5aa4693e9d2dcb744638ad9de53f714173 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27849 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nico Weber <thakis@chromium.org> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
Bug b/127472316 Test: dEQP-VK.spirv_assembly.instruction.compute.opatomic.load Test: dEQP-VK.spirv_assembly.instruction.compute.opatomic.store Change-Id: I0379a1a74bc9742a3a9ae4d52b319e0838fd21bf Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27728 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com>
-
Nicolas Capens authored
Array<> emits GEP instructions on every access, which aren't necessary. Note that these temporaries are required because the If/Else blocks both write to them, while the destination intermediate object is an rvalue which can only be initialized once to maintain SSA form. Also EmitAccessChain was moved to match the declaration order. Bug b/128539387 Change-Id: I726fb0fd28b0a19a61e8759679e30bc699f3279d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27788 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
SIMD vector load and store are already atomic on x86 and ARM, and Vulkan only supports atomic operations on "scalar 32-bit integer type". Memory order semantics are handled in a follow-up change. Bug b/127472316 Test: dEQP-VK.spirv_assembly.instruction.compute.opatomic.load Test: dEQP-VK.spirv_assembly.instruction.compute.opatomic.store Change-Id: I4481fe7b7aa792b63f516bd3cb1aab1d773bbcbd Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27649 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com>
-
Alexis Hetu authored
"-Wno-error=header-hygiene" was redundant with "-Wno-header-hygiene". Removed it. Change-Id: I5b75e8d42ef78c230cf064372f99db7950caf262 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27868Tested-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Ben Clayton authored
Change-Id: I9274f2141f14959ba614b57d45a637232baad5c8 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27469Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
Bug: b/129056755 Change-Id: I01518b3cb802c45f2b3cc14e6e2c2f81416b4cd4 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27782Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Nico Weber authored
Bug: chromium:944675 Change-Id: Icfe9d147fc6be936aac5a45f3bb6526022e5e898 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27848 Presubmit-Ready: Nico Weber <thakis@chromium.org> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nico Weber <thakis@chromium.org>
-
Ben Clayton authored
I have no idea why this has suddenly started firing. Bug: b/123933266 Change-Id: If94903e2b549bd628eb912569c1bb803bd576951 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27777 Presubmit-Ready: Ben Clayton <bclayton@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
sw::Intermediate would only clear the contents to zero in debug builds, but would always validate that these were nullptr in release (ASSERT still warns in release). Given the cost nullifying this memory is negligable in comparison to the actual LLVM JIT, always clear. Changed a bunch of ASSERT()s to ASSERT_MSG() where the additional information is useful. Replaced a few remaining calls to assert() with ASSERT() Bug: b/127433389 Change-Id: Ifac89ca061bf7d61ff7d0de1792eeda18fad275c Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27568 Presubmit-Ready: Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <headlessclayton@gmail.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
SwiftShader Regression Bot authored
Change-Id: Ic3dcd942fe0f8d56536633434ce0b8ac6da8d066 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27778Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Ben Clayton authored
While not necessary for swiftshader, this is needed to compare against certain system vulkan drivers. Bug: b/128527271 Change-Id: I64c9e39659d565a0369c2989a324e4c09dbf7c02 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27773 Presubmit-Ready: Ben Clayton <headlessclayton@gmail.com> Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
The system vulkan driver can get sulky if you don't free memory. Bug: b/123749916 Change-Id: I9bf2de63a788200c401b41fa3efdfb36f3c15245 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27772 Presubmit-Ready: Ben Clayton <headlessclayton@gmail.com> Tested-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Ben Clayton authored
It seems an update has started make these C++ extension PCH files show up in version control. Change-Id: I9af5dbf7e74bf8fb7d9ef25e84cce28b7424dda8 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27771 Presubmit-Ready: Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Ben Clayton <headlessclayton@gmail.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
- 21 Mar, 2019 13 commits
-
-
Nicolas Capens authored
Bug b/126742833 Change-Id: Ic07ebc74f342566905690a6059c742c4c2c47acd Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27791Tested-by:
Nicolas Capens <nicolascapens@google.com> Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Chris Forbes authored
This isn't used. We have Ben's shiny new descriptor-based UBO system now instead. Change-Id: If971e6bce3ddfb149d33dc5c42294d7b75c31888 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26609Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
Since we're essentially assigning from one rvalue to another, move() seems to describe the intent better and even matches register-to-register move instructions. Bug b/128539387 Change-Id: I409b3ede9578a100f25ea92e61f7492a38341ca4 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26869 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com>
-
Chris Forbes authored
Bug: b/129069789 Test: dEQP-VK.glsl.derivate.* Change-Id: Iac1b5ed51dae0f6d8937b2162eb0a662d02b34ba Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27729 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Alexis Hetu authored
Basic support for executing secondary command buffers, without support for any inheritance features. Bug b/118619338 Change-Id: Ie3453018a45a722ecfa4f1acd20c95442fbb3d9b Tests: dEQP-VK.memory.pipeline_barrier.host_write_transfer_src.* Tests: dEQP-VK.api.command_buffers.allocate_single_secondary Tests: dEQP-VK.api.command_buffers.allocate_many_secondary Tests: dEQP-VK.api.command_buffers.trim_command_pool_secondary Tests: dEQP-VK.api.command_buffers.record_single_secondary Tests: dEQP-VK.api.command_buffers.record_many_secondary Tests: dEQP-VK.api.command_buffers.submit_twice_secondary Tests: dEQP-VK.api.command_buffers.record_one_time_submit_secondary Tests: dEQP-VK.api.command_buffers.secondary_execute Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27493Tested-by:
Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Chris Forbes authored
- secondaryColor control only made sense in fixed-function - Vulkan provoking vertex is always the first vertex Bug: b/125909515 Test: dEQP-VK.rasterization.flatshading.* Change-Id: I9b6826e093076ee7ca5ef6deaf1b1fbd1c2f39e3 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27509 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Chris Forbes authored
Heavy-handed implementation of implicit or explicit VkSubpassDependency to VK_SUBPASS_EXTERNAL after a subpass. Fixes various test flake. Test: dEQP-VK.glsl.derivate.* Change-Id: I9cb60828e6aff344e28dd7a8e1a867b5c8a11c22 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27708Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Alexis Hetu authored
There are no more dependencies on sw::Surface, it can now be removed. Bug b/126883332 Change-Id: I8d2deaa6eb78ffc1ce7be6614876a3c9a30da341 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27492Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Alexis Hetu authored
vk::Format was expanded to include more format related checks and the sampler object now uses them. Whether or not the Sampler code ends up actually being used is unsure, but the code has been updated to use vk::Image instead of sw::Surface. This should be the last sw::Surface reference in Vulkan code. Bug b/126883332 Change-Id: Ib1b4c3ce87d0fdad5ac7238b7e86211a499871a5 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27490Tested-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>
-
Alexis Hetu authored
Implemented waitEvents as a sync operation, like pipeline barriers, since, as the Vulkan spec states: "vkCmdWaitEvents is used with vkCmdSetEvent to define a memory dependency between two sets of action commands, roughly in the same way as pipeline barriers, but split into two commands such that work between the two may execute unhindered." Only the pEvents parameter is supported and currently doesn't support pMemoryBarrier, pBufferMemoryBarriers or pImageMemoryBarriers. Bug b/118620868 Change-Id: I30ccc65c65dfc7d9a99e25ebb535061c618375cb Tests: dEQP-VK.api.command_buffers.record_simul_use_primary Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27348Tested-by:
Alexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
Previously the pointee type of OpVariable was determined starting from the result ID. It just obtains the 'Object' which has the type collected from the OpVariable instruction itself. So the object lookup can be skipped by using the latter directly again. Bug b/129000021 Change-Id: I882d837c4cc1c7a8d0b19de38dc8ee19e622af33 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27651 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
SwiftShader Regression Bot authored
Change-Id: I250bf1da0e6f1556af67f320b7cafabc4724f34f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27572Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
Chris Forbes authored
- OpDPdx - OpDPdy - OpFwidth - OpDPdxCoarse - OpDPdyCoarse - OpFwidthCoarse - OpDPdxFine - OpDPdyFine - OpFwidthFine We have flexibility in how we implement the OpDPdx, OpDPdy and OpFwidth instructions; they can return either coarse or fine derivatives. I have chosen to make them equivalent to the coarse derivatives since those are slightly cheaper to compute. Added a static assert to ensure we revisit these when considering other vector widths. Bug: b/129002115 Test: dEQP-VK.glsl.derivate.* Change-Id: I75224c1e77c1eefac4f219be5662836daa86a098 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27689Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
- 20 Mar, 2019 5 commits
-
-
Chris Forbes authored
Choice of tests is slightly odd -- but there are a number of tests in this group which *don't* use the derivative instructions (glslang is smart enough to not emit them when the expression is known to be uniform). Bug: b/126330097 Test: dEQP-VK.glsl.derivate.* Test: dEQP-VK.ubo.* Change-Id: I8864149104f2ea9b62c75ceae59da4ff8adebc32 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26548Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
Was wrongly assuming that if ..\deqp exists, the build directory must be deqp\build. Change-Id: I0e071565d9c41940efbcd4453de70f2994ad1be5 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27652Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Chris Forbes authored
I'm about to build some more on top of this; don't want to write it multiple times. Change-Id: I9ca84536f47b886e9f03edcaa6dc5dfe6e34091d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26688Tested-by:
Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Nicolas Capens authored
Intermediate::Scalar was defined as RValue<SIMD::Float>, even though it can hold integers as well. Use abstract Reactor values instead which don't have a statically defined type. This change does not yet avoid bitcasting on access. The EmitLoad() implementation still assumes values come in as float. Bug b/128539387 Change-Id: I18f449ebf68db7ddd81679d6d028911e6c02fc38 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/26868 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Ben Clayton <bclayton@google.com> Reviewed-by:
Chris Forbes <chrisforbes@google.com>
-
SwiftShader Regression Bot authored
Change-Id: Ibfb2c1126253d98d15016b464e79e06f4d1bac8a Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27570Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Ben Clayton <bclayton@google.com>
-
- 19 Mar, 2019 2 commits
-
-
Chris Forbes authored
Previously this was left uninitialized, with exciting results when a shader used it for buffer indexing etc. Bug: b/126871859 Test: dEQP-VK.*push_constant* Test: dEQP-VK.glsl.* Test: dEQP-VK.spirv_assembly.* Change-Id: I57fb9e22cbe57a87072b1039a7d799bedd28ae91 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27628 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Ben Clayton <bclayton@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-
Chris Forbes authored
Bug: b/128690261 Bug: b/128872954 Test: dEQP-VK.*push_constant* Test: dEQP-VK.glsl.* Test: dEQP-VK.spirv_assembly.* Change-Id: I0f8d103288777cd03347b32366ed5c5606e38b8d Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27588 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-