diff --git a/client/deps/glbench/src/Makefile b/client/deps/glbench/src/Makefile
index b93ea59..b75b04b 100644
--- a/client/deps/glbench/src/Makefile
+++ b/client/deps/glbench/src/Makefile
@@ -6,8 +6,8 @@
 SOURCES_GL_BENCH = main.cc swaptest.cc yuvtest.cc testbase.cc
 SOURCES_GL_BENCH += readpixeltest.cc
 SOURCES_GL_BENCH += attributefetchtest.cc varyingsandddxytest.cc cleartest.cc
-SOURCES_GL_BENCH += texturetest.cc textureupdatetest.cc textureuploadtest.cc
-SOURCES_GL_BENCH += trianglesetuptest.cc fillratetest.cc
+SOURCES_GL_BENCH += texturetest.cc texturereusetest.cc textureupdatetest.cc
+SOURCES_GL_BENCH += textureuploadtest.cc trianglesetuptest.cc fillratetest.cc
 SOURCES_GL_BENCH += windowmanagercompositingtest.cc
 SOURCES_GL_BENCH += md5.cc png_helper.cc
 
diff --git a/client/deps/glbench/src/all_tests.h b/client/deps/glbench/src/all_tests.h
index 1495d6e..913ae86 100644
--- a/client/deps/glbench/src/all_tests.h
+++ b/client/deps/glbench/src/all_tests.h
@@ -14,6 +14,7 @@
 TestBase* GetAttributeFetchShaderTest();
 TestBase* GetVaryingsAndDdxyShaderTest();
 TestBase* GetWindowManagerCompositingTest(bool scissor);
+TestBase* GetTextureReuseTest();
 TestBase* GetTextureUpdateTest();
 TestBase* GetTextureUploadTest();
 
diff --git a/client/deps/glbench/src/main.cc b/client/deps/glbench/src/main.cc
index e37fce5..cc6a50a 100644
--- a/client/deps/glbench/src/main.cc
+++ b/client/deps/glbench/src/main.cc
@@ -89,6 +89,7 @@
     glbench::GetReadPixelTest(),
     glbench::GetAttributeFetchShaderTest(),
     glbench::GetVaryingsAndDdxyShaderTest(),
+    glbench::GetTextureReuseTest(),
     glbench::GetTextureUpdateTest(),
     glbench::GetTextureUploadTest(),
   };
diff --git a/client/deps/glbench/src/texturereusetest.cc b/client/deps/glbench/src/texturereusetest.cc
new file mode 100644
index 0000000..39bf5fa
--- /dev/null
+++ b/client/deps/glbench/src/texturereusetest.cc
@@ -0,0 +1,62 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This test evaluates the speed of using the same textures to draw repeatedly.
+// It uploads a series of textures initially.  On subsequent iterations, it uses
+// those uploaded textures to draw.
+
+#include "base/logging.h"
+
+#include "texturetest.h"
+#include "main.h"
+
+namespace glbench {
+
+class TextureReuseTest : public TextureTest {
+ public:
+  TextureReuseTest() {}
+  virtual ~TextureReuseTest() {}
+  virtual bool TestFunc(int iter);
+  virtual const char* Name() const { return "texture_reuse"; }
+};
+
+bool TextureReuseTest::TestFunc(int iter) {
+  glGetError();
+
+  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+  glFlush();
+
+  for (int i = 0; i < iter - 1; ++i) {
+    glBindTexture(GL_TEXTURE_2D, textures_[i % kNumberOfTextures]);
+    switch (flavor_) {
+      case TEX_IMAGE:
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, width_, height_,
+                     0, GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                     pixels_[i % kNumberOfTextures].get());
+        break;
+      case TEX_SUBIMAGE:
+        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width_, height_,
+                        GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                        pixels_[i % kNumberOfTextures].get());
+        break;
+    }
+
+    // After having uploaded |kNumberOfTextures| textures, use each of them to
+    // draw once before uploading new textures.
+    if ((i % kNumberOfTextures) == (kNumberOfTextures - 1)) {
+      for (int j = 0; j < kNumberOfTextures; ++j) {
+        glBindTexture(GL_TEXTURE_2D, textures_[j]);
+        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+      }
+    }
+  }
+
+  return true;
+}
+
+TestBase* GetTextureReuseTest() {
+  return new TextureReuseTest;
+}
+
+} // namespace glbench
diff --git a/client/site_tests/graphics_GLBench/graphics_GLBench.py b/client/site_tests/graphics_GLBench/graphics_GLBench.py
index 82d0677..074d500 100644
--- a/client/site_tests/graphics_GLBench/graphics_GLBench.py
+++ b/client/site_tests/graphics_GLBench/graphics_GLBench.py
@@ -54,6 +54,22 @@
                            'mpixels_sec_pixel_read',
                            'mpixels_sec_pixel_read_2',
                            'mpixels_sec_pixel_read_3',
+                           'mtexel_sec_texture_reuse_teximage2d_1024',
+                           'mtexel_sec_texture_reuse_teximage2d_128',
+                           'mtexel_sec_texture_reuse_teximage2d_1536',
+                           'mtexel_sec_texture_reuse_teximage2d_2048',
+                           'mtexel_sec_texture_reuse_teximage2d_256',
+                           'mtexel_sec_texture_reuse_teximage2d_32',
+                           'mtexel_sec_texture_reuse_teximage2d_512',
+                           'mtexel_sec_texture_reuse_teximage2d_768',
+                           'mtexel_sec_texture_reuse_texsubimage2d_1024',
+                           'mtexel_sec_texture_reuse_texsubimage2d_128',
+                           'mtexel_sec_texture_reuse_texsubimage2d_1536',
+                           'mtexel_sec_texture_reuse_texsubimage2d_2048',
+                           'mtexel_sec_texture_reuse_texsubimage2d_256',
+                           'mtexel_sec_texture_reuse_texsubimage2d_32',
+                           'mtexel_sec_texture_reuse_texsubimage2d_512',
+                           'mtexel_sec_texture_reuse_texsubimage2d_768',
                            'mtexel_sec_texture_upload_teximage2d_1024',
                            'mtexel_sec_texture_upload_teximage2d_128',
                            'mtexel_sec_texture_upload_teximage2d_1536',
