GPU: Instrument AsyncTexImage2D and TexImage2D for telemetry.

This makes the total_texture_upload and total_texture_upload_time results
from telemetry consistent when run with and without impl-side painting.

TEST=by hand via telemetry (http://dev.chromium.org/developers/telemetry)

Review URL: https://chromiumcodereview.appspot.com/16923010

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206476 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index a8562ad4..8c4bd250 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -7783,16 +7783,22 @@
   }
 
   if (!teximage2d_faster_than_texsubimage2d_ && level_is_same && pixels) {
-    glTexSubImage2D(target, level, 0, 0, width, height, format, type, pixels);
+    {
+      ScopedTextureUploadTimer timer(this);
+      glTexSubImage2D(target, level, 0, 0, width, height, format, type, pixels);
+    }
     texture_manager()->SetLevelCleared(texture_ref, target, level, true);
     tex_image_2d_failed_ = false;
     return;
   }
 
   LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glTexImage2D");
-  glTexImage2D(
-      target, level, internal_format, width, height, border, format, type,
-      pixels);
+  {
+    ScopedTextureUploadTimer timer(this);
+    glTexImage2D(
+        target, level, internal_format, width, height, border, format, type,
+        pixels);
+  }
   GLenum error = LOCAL_PEEK_GL_ERROR("glTexImage2D");
   if (error == GL_NO_ERROR) {
     texture_manager()->SetLevelInfo(