Index: tests/GLProgramsTest.cpp |
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp |
index 13d0d2ee5be91f8e45fc077a24ef476c46e87cd3..12107f435615371231f85524f54a7827fe9de2aa 100644 |
--- a/tests/GLProgramsTest.cpp |
+++ b/tests/GLProgramsTest.cpp |
@@ -158,6 +158,7 @@ bool GrGpuGL::programUnitTest(int maxStages) { |
GrGLProgramDesc pdesc; |
int currAttribIndex = 1; // we need to always leave room for position |
+ int currTextureCoordSet = 0; |
int attribIndices[2]; |
GrTexture* dummyTextures[] = {dummyTexture1.get(), dummyTexture2.get()}; |
@@ -167,7 +168,9 @@ bool GrGpuGL::programUnitTest(int maxStages) { |
SkAutoSTMalloc<8, const GrEffectStage*> stages(numStages); |
- for (int s = 0; s < numStages; ++s) { |
+ bool useFixedFunctionTexturing = this->shouldUseFixedFunctionTexturing(); |
+ |
+ for (int s = 0; s < numStages;) { |
SkAutoTUnref<const GrEffectRef> effect(GrEffectTestFactory::CreateStage( |
&random, |
this->getContext(), |
@@ -178,15 +181,29 @@ bool GrGpuGL::programUnitTest(int maxStages) { |
// If adding this effect would exceed the max attrib count then generate a |
// new random effect. |
if (currAttribIndex + numAttribs > GrDrawState::kMaxVertexAttribCnt) { |
- --s; |
continue; |
} |
+ |
+ |
+ // If adding this effect would exceed the max texture coord set count then generate a |
+ // new random effect. |
+ if (useFixedFunctionTexturing && !(*effect)->hasVertexCode()) { |
+ int numTransforms = (*effect)->numTransforms(); |
+ if (currTextureCoordSet + numTransforms > this->glCaps().maxFixedFunctionTextureCoords()) { |
+ continue; |
+ } |
+ currTextureCoordSet += numTransforms; |
+ } |
+ |
+ useFixedFunctionTexturing = useFixedFunctionTexturing && !(*effect)->hasVertexCode(); |
+ |
for (int i = 0; i < numAttribs; ++i) { |
attribIndices[i] = currAttribIndex++; |
} |
GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, |
(effect.get(), attribIndices[0], attribIndices[1])); |
stages[s] = stage; |
+ ++s; |
} |
const GrTexture* dstTexture = random.nextBool() ? dummyTextures[0] : dummyTextures[1]; |
pdesc.setRandom(&random, |