aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/GLProgramsTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/GLProgramsTest.cpp')
-rw-r--r--tests/GLProgramsTest.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index 13cf85c81d..512f89ecf2 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -23,6 +23,7 @@
void GrGLProgramDesc::setRandom(SkMWCRandom* random,
const GrGpuGL* gpu,
+ const GrTexture* dstTexture,
const GrEffectStage stages[GrDrawState::kNumStages]) {
fAttribBindings = 0;
fEmitsPointSize = random->nextBool();
@@ -52,6 +53,7 @@ void GrGLProgramDesc::setRandom(SkMWCRandom* random,
fAttribBindings |= GrDrawState::kLocalCoords_AttribBindingsBit;
}
+ bool dstRead = false;
for (int s = 0; s < GrDrawState::kNumStages; ++s) {
if (NULL != stages[s].getEffect()) {
const GrBackendEffectFactory& factory = (*stages[s].getEffect())->getFactory();
@@ -59,9 +61,16 @@ void GrGLProgramDesc::setRandom(SkMWCRandom* random,
GrDrawState::kLocalCoords_AttribBindingsBit);
GrDrawEffect drawEffect(stages[s], explicitLocalCoords);
fEffectKeys[s] = factory.glEffectKey(drawEffect, gpu->glCaps());
+ if ((*stages[s].getEffect())->willReadDst()) {
+ dstRead = true;
+ }
}
}
+ if (dstRead) {
+ this->fDstRead = GrGLShaderBuilder::KeyForDstRead(dstTexture, gpu->glCaps());
+ }
+
int attributeIndex = 0;
fPositionAttributeIndex = attributeIndex;
++attributeIndex;
@@ -111,10 +120,10 @@ bool GrGpuGL::programUnitTest(int maxStages) {
int currAttribIndex = GrDrawState::kAttribIndexCount;
int attribIndices[2];
+ GrTexture* dummyTextures[] = {dummyTexture1.get(), dummyTexture2.get()};
for (int s = 0; s < maxStages; ++s) {
// enable the stage?
if (random.nextBool()) {
- GrTexture* dummyTextures[] = {dummyTexture1.get(), dummyTexture2.get()};
SkAutoTUnref<const GrEffectRef> effect(GrEffectTestFactory::CreateStage(
&random,
this->getContext(),
@@ -135,7 +144,8 @@ bool GrGpuGL::programUnitTest(int maxStages) {
stages[s].setEffect(effect.get(), attribIndices[0], attribIndices[1]);
}
}
- pdesc.setRandom(&random, this, stages);
+ const GrTexture* dstTexture = random.nextBool() ? dummyTextures[0] : dummyTextures[1];
+ pdesc.setRandom(&random, this, dstTexture, stages);
const GrEffectStage* stagePtrs[GrDrawState::kNumStages];
for (int s = 0; s < GrDrawState::kNumStages; ++s) {