diff --git a/client/deps/piglit/piglit.py b/client/deps/piglit/piglit.py
index 9f4c78f..b842f52 100755
--- a/client/deps/piglit/piglit.py
+++ b/client/deps/piglit/piglit.py
@@ -8,11 +8,11 @@
 from autotest_lib.client.bin import test, utils
 
 # changing this version number will force a delete of piglit/ and remake
-version = 1
+version = 2
 
 # TODO(ihf) piglit only builds on x86, Tegra2 only supports GLES
 def setup(topdir):
-    sysroot = os.environ['SYSROOT']
+    sysroot = os.environ.get("SYSROOT", "")
     logging.debug('INFO: piglit sysroot = %s' % sysroot)
     tarball = 'piglit.tar.gz'
     srcdir = os.path.join(topdir, 'src')
@@ -23,8 +23,8 @@
     if re.search('x86', sysroot.lower()):
         utils.extract_tarball_to_dir(tarball_path, dst_path)
         # patch in files now
-        shutil.copyfile(os.path.join(srcdir, 'CMakeLists.txt'),
-                        os.path.join(dst_path, 'CMakeLists.txt'))
+        utils.system('patch -p0 < ' +
+                     os.path.join(srcdir, 'CMakeLists_GLES.patch'))
         shutil.copyfile(os.path.join(srcdir, 'cros-driver.tests'),
                         os.path.join(dst_path, 'tests/cros-driver.tests'))
         os.chdir(dst_path)
diff --git a/client/deps/piglit/src/CMakeLists_GLES.patch b/client/deps/piglit/src/CMakeLists_GLES.patch
new file mode 100644
index 0000000..ef1f34a
--- /dev/null
+++ b/client/deps/piglit/src/CMakeLists_GLES.patch
@@ -0,0 +1,18 @@
+--- piglit/CMakeLists.txt	2011-08-10 08:25:17.000000000 -0700
++++ piglit/CMakeLists.txt	2011-08-11 21:02:18.434579000 -0700
+@@ -77,11 +77,14 @@ else (APPLE)
+ 	)
+ endif (APPLE)
+ 
++find_library(OPENGL_gles2_LIBRARY NAMES GLESv2)
++
++if(OPENGL_gles2_LIBRARY)
+ FIND_LIBRARY(OPENGL_egl_LIBRARY
+       NAMES EGL
+       PATHS /usr/lib
+ )
+-find_library(OPENGL_gles2_LIBRARY NAMES GLESv2)
++endif(OPENGL_gles2_LIBRARY)
+ 
+ # Put all executables into the bin subdirectory
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${piglit_BINARY_DIR}/bin)
diff --git a/client/deps/piglit/src/README.txt b/client/deps/piglit/src/README.txt
index 3ccd762..7ce94c5 100644
--- a/client/deps/piglit/src/README.txt
+++ b/client/deps/piglit/src/README.txt
@@ -1,5 +1,5 @@
 1) Cherry picked piglit.tar.gz from
-   http://cgit.freedesktop.org/piglit/commit/?id=75ff0d9ec6f0e833bde8dfd8d516445db251fcdc
+   http://cgit.freedesktop.org/piglit/commit/?id=4da714cd47e8a993ce26a572dd05fe8107950d46
 
 2) Added config file cros-driver.test which was derived from 
    piglit.tar.gz:tests/quick-driver.tests
diff --git a/client/deps/piglit/src/cros-driver.tests b/client/deps/piglit/src/cros-driver.tests
index b72465b..8083cf1 100644
--- a/client/deps/piglit/src/cros-driver.tests
+++ b/client/deps/piglit/src/cros-driver.tests
@@ -29,4 +29,6 @@
 # IHF: this test hangs testing
 del profile.tests['general']['longprim']
 del profile.tests['glx']['glx-make-glxdrawable-current']
-del profile.tests['glean']
+#del profile.tests['glean']
+del profile.tests['shaders']['glsl-texcoord-array']
+
diff --git a/client/deps/piglit/src/piglit.tar.gz b/client/deps/piglit/src/piglit.tar.gz
index c9f237f..9cdb4f1 100644
--- a/client/deps/piglit/src/piglit.tar.gz
+++ b/client/deps/piglit/src/piglit.tar.gz
Binary files differ
diff --git a/client/site_tests/graphics_Piglit/graphics_Piglit.py b/client/site_tests/graphics_Piglit/graphics_Piglit.py
index da4e7e0..0badfd4 100644
--- a/client/site_tests/graphics_Piglit/graphics_Piglit.py
+++ b/client/site_tests/graphics_Piglit/graphics_Piglit.py
@@ -12,7 +12,7 @@
 
 # most graphics tests need the auto_login feature of UITest
 class graphics_Piglit(cros_ui_test.UITest):
-    version = 1
+    version = 2
     preserve_srcdir = True
 
     def setup(self):
@@ -21,19 +21,6 @@
     # hard wiring the cros-driver.test config file until we
     # need to parameterize this test for short/extended testing
     def run_once(self):
-        # TODO(IHF) WARs due to pageflip/memory issue, crosbug 15675
-        self.crash_blacklist.append('chromeos-wm')
-        self.crash_blacklist.append('glx-multithread')
-        self.crash_blacklist.append('glx-window-life')
-        self.crash_blacklist.append('supplied_X')
-        # expected crashes inside of piglit need to be listed for UITest
-        self.crash_blacklist.append('attribute0')
-        self.crash_blacklist.append('cashewd')
-        self.crash_blacklist.append('fbo-depth-sample-compare')
-        self.crash_blacklist.append('getuniform-01')
-        self.crash_blacklist.append('glsl-bug-22603')
-        self.crash_blacklist.append('glsl-fs-color-matrix')
-        self.crash_blacklist.append('glsl-fs-discard-02')
         self.crash_blacklist.append('glslparsertest')
         self.crash_blacklist.append('shader_runner')
 
@@ -58,7 +45,7 @@
             logging.info('Calling %s' % cmd)
             utils.run(cmd)
             # count number of pass, fail, warn and skip in the test summary
-            summary_path = os.path.join(results_path, 'summary')
+            summary_path = os.path.join(results_path, 'main')
             f = open(summary_path, 'r')
             summary = f.read()
             f.close()
@@ -66,31 +53,21 @@
             return error.TestError('test runs only on x86 (needs OpenGL)')
 
         # get passed
-        report = re.findall(r'\nresult: pass', summary)
+        report = re.findall(r'"result": "pass",', summary)
         if not report:
             return error.TestFail('Output missing: pass number unknown!')
         passed = len(report)
         # get failed
-        report = re.findall(r'\nresult: fail', summary)
+        report = re.findall(r'"result": "fail",', summary)
         if not report:
             return error.TestFail('Output missing: fail number unknown!')
         failed = len(report)
-        # get warned
-        report = re.findall(r'\nresult: warn', summary)
-        if not report:
-            return error.TestFail('Output missing: warn number unknown!')
-        warned = len(report)
-        # get skipped
-        report = re.findall(r'\nresult: skip', summary)
-        if not report:
-            return error.TestFail('Output missing: skip number unknown!')
-        skipped = len(report)
+        warned = 0
+        skipped = 0
 
         # doesn't seem to send it to the host console
         logging.info('Piglit: %d pass', passed)
         logging.info('Piglit: %d fail', failed)
-        logging.info('Piglit: %d warn', warned)
-        logging.info('Piglit: %d skip', skipped)
 
         # output numbers for plotting by harness
         keyvals = {}
