| Index: tests/GLProgramsTest.cpp | 
| diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp | 
| index 56707a04140e34b4744a815179f309189b8d4217..253e4aeccc265ceff7c58582a261c8cbc0f6abdf 100644 | 
| --- a/tests/GLProgramsTest.cpp | 
| +++ b/tests/GLProgramsTest.cpp | 
| @@ -181,68 +181,6 @@ static void set_random_color_coverage_stages(GrGpuGL* gpu, | 
| } | 
| } | 
|  | 
| -// There are only a few cases of random colors which interest us | 
| -enum ColorMode { | 
| -    kAllOnes_ColorMode, | 
| -    kAllZeros_ColorMode, | 
| -    kAlphaOne_ColorMode, | 
| -    kRandom_ColorMode, | 
| -    kLast_ColorMode = kRandom_ColorMode | 
| -}; | 
| - | 
| -static void set_random_color(GrDrawState* ds, SkRandom* random) { | 
| -    ColorMode colorMode = ColorMode(random->nextULessThan(kLast_ColorMode + 1)); | 
| -    GrColor color; | 
| -    switch (colorMode) { | 
| -        case kAllOnes_ColorMode: | 
| -            color = GrColorPackRGBA(0xFF, 0xFF, 0xFF, 0xFF); | 
| -            break; | 
| -        case kAllZeros_ColorMode: | 
| -            color = GrColorPackRGBA(0, 0, 0, 0); | 
| -            break; | 
| -        case kAlphaOne_ColorMode: | 
| -            color = GrColorPackRGBA(random->nextULessThan(256), | 
| -                                    random->nextULessThan(256), | 
| -                                    random->nextULessThan(256), | 
| -                                    0xFF); | 
| -            break; | 
| -        case kRandom_ColorMode: | 
| -            uint8_t alpha = random->nextULessThan(256); | 
| -            color = GrColorPackRGBA(random->nextRangeU(0, alpha), | 
| -                                    random->nextRangeU(0, alpha), | 
| -                                    random->nextRangeU(0, alpha), | 
| -                                    alpha); | 
| -            break; | 
| -    } | 
| -    GrColorIsPMAssert(color); | 
| -    ds->setColor(color); | 
| -} | 
| - | 
| -// There are only a few cases of random coverages which interest us | 
| -enum CoverageMode { | 
| -    kZero_CoverageMode, | 
| -    kFF_CoverageMode, | 
| -    kRandom_CoverageMode, | 
| -    kLast_CoverageMode = kRandom_CoverageMode | 
| -}; | 
| - | 
| -static void set_random_coverage(GrDrawState* ds, SkRandom* random) { | 
| -    CoverageMode coverageMode = CoverageMode(random->nextULessThan(kLast_CoverageMode + 1)); | 
| -    uint8_t coverage; | 
| -    switch (coverageMode) { | 
| -        case kZero_CoverageMode: | 
| -            coverage = 0; | 
| -            break; | 
| -        case kFF_CoverageMode: | 
| -            coverage = 0xFF; | 
| -            break; | 
| -        case kRandom_CoverageMode: | 
| -            coverage = uint8_t(random->nextU()); | 
| -            break; | 
| -    } | 
| -    ds->setCoverage(coverage); | 
| -} | 
| - | 
| static void set_random_hints(GrDrawState* ds, SkRandom* random) { | 
| for (int i = 1; i <= GrDrawState::kLast_Hint; i <<= 1) { | 
| ds->setHint(GrDrawState::Hints(i), random->nextBool()); | 
| @@ -372,8 +310,6 @@ bool GrDrawTarget::programUnitTest(int maxStages) { | 
| usePathRendering, | 
| &random, | 
| dummyTextures); | 
| -        set_random_color(&ds, &random); | 
| -        set_random_coverage(&ds, &random); | 
| set_random_hints(&ds, &random); | 
| set_random_state(&ds, &random); | 
| set_random_blend_func(&ds, &random); | 
| @@ -381,14 +317,19 @@ bool GrDrawTarget::programUnitTest(int maxStages) { | 
|  | 
| GrDeviceCoordTexture dstCopy; | 
|  | 
| -        if (!this->setupDstReadIfNecessary(&ds, &dstCopy, NULL)) { | 
| +        // TODO take color off the PP when its installed | 
| +        GrColor color = ds.hasGeometryProcessor() ? ds.getGeometryProcessor()->getColor() : | 
| +                                                    GrColor_WHITE; | 
| +        uint8_t coverage = ds.hasGeometryProcessor() ? ds.getGeometryProcessor()->getCoverage() : | 
| +                                                       0xff; | 
| +        if (!this->setupDstReadIfNecessary(&ds, color, coverage, &dstCopy, NULL)) { | 
| SkDebugf("Couldn't setup dst read texture"); | 
| return false; | 
| } | 
|  | 
| // create optimized draw state, setup readDst texture if required, and build a descriptor | 
| // and program.  ODS creation can fail, so we have to check | 
| -        GrOptDrawState ods(ds, *gpu->caps(), scissor, &dstCopy, drawType); | 
| +        GrOptDrawState ods(ds, color, coverage, *gpu->caps(), scissor, &dstCopy, drawType); | 
| if (ods.mustSkip()) { | 
| continue; | 
| } | 
|  |