| Index: tests/GLProgramsTest.cpp
|
| ===================================================================
|
| --- tests/GLProgramsTest.cpp (revision 8449)
|
| +++ tests/GLProgramsTest.cpp (working copy)
|
| @@ -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 @@
|
| 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 @@
|
| 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 @@
|
|
|
| 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 @@
|
| 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) {
|
|
|