Attempt to fix GLPrograms test on ANGLE bot.

R=senorblanco@chromium.org
Review URL: https://codereview.appspot.com/7281050

git-svn-id: http://skia.googlecode.com/svn/trunk@7550 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index b93f9c3..830f38d 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -44,7 +44,9 @@
 }
 }
 
-bool GrGpuGL::programUnitTest() {
+bool GrGpuGL::programUnitTest(int maxStages) {
+
+    maxStages = GrMin(maxStages, (int)GrDrawState::kNumStages);
 
     GrTextureDesc dummyDesc;
     dummyDesc.fConfig = kSkia8888_PM_GrPixelConfig;
@@ -152,8 +154,15 @@
     for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
         GrContext* context = factory->get(static_cast<GrContextFactory::GLContextType>(type));
         if (NULL != context) {
-            GrGpuGL* shadersGpu = static_cast<GrGpuGL*>(context->getGpu());
-            REPORTER_ASSERT(reporter, shadersGpu->programUnitTest());
+            GrGpuGL* gpu = static_cast<GrGpuGL*>(context->getGpu());
+            int maxStages = GrDrawState::kNumStages;
+#if SK_ANGLE
+            // Some long shaders run out of temporary registers in the D3D compiler on ANGLE.
+            if (type == GrContextFactory::kANGLE_GLContextType) {
+                maxStages = 3;
+            }
+#endif
+            REPORTER_ASSERT(reporter, gpu->programUnitTest(maxStages));
         }
     }
 }