aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/GLProgramsTest.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index 13d0d2ee5b..12107f4356 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,