Update from https://crrev.com/316786

List of manually-modified files:
gpu/command_buffer/service/in_process_command_buffer.cc
examples/sample_app/BUILD.gn
examples/sample_app/spinning_cube.cc
mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
mojo/cc/context_provider_mojo.cc
mojo/cc/context_provider_mojo.h
mojo/common/trace_controller_impl.cc
mojo/gles2/command_buffer_client_impl.cc
mojo/gles2/command_buffer_client_impl.h
services/gles2/gpu_impl.cc
shell/android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java
sky/engine/core/dom/Node.cpp
sky/shell/apk/src/org/domokit/sky/shell/SkyShellApplication.java
ui/events/latency_info.cc
ui/gfx/transform.cc
ui/gfx/transform.h
ui/gfx/transform_util.cc
ui/gfx/transform_util.h

Review URL: https://codereview.chromium.org/935333002
diff --git a/ui/gfx/transform.cc b/ui/gfx/transform.cc
index 7fe5174..c13ae1d 100644
--- a/ui/gfx/transform.cc
+++ b/ui/gfx/transform.cc
@@ -40,6 +40,12 @@
   return std::abs(x - SkDoubleToMScalar(1.0)) <= tolerance;
 }
 
+static float Round(float f) {
+  if (f == 0.f)
+    return f;
+  return (f > 0.f) ? std::floor(f + 0.5f) : std::ceil(f - 0.5f);
+}
+
 }  // namespace
 
 Transform::Transform(SkMScalar col1row1,
@@ -493,6 +499,12 @@
   return true;
 }
 
+void Transform::RoundTranslationComponents() {
+  matrix_.set(0, 3, Round(matrix_.get(0, 3)));
+  matrix_.set(1, 3, Round(matrix_.get(1, 3)));
+}
+
+
 void Transform::TransformPointInternal(const SkMatrix44& xform,
                                        Point3F* point) const {
   if (xform.isIdentity())