Index: tests/GLProgramsTest.cpp |
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp |
index 953b5e07cbcc45e05dd07a25871f4bf316a3fcdc..093c613b6f5852b7c094e65ee497b09981f9864c 100644 |
--- a/tests/GLProgramsTest.cpp |
+++ b/tests/GLProgramsTest.cpp |
@@ -129,19 +129,14 @@ static void set_random_xpf(GrContext* context, const GrDrawTargetCaps& caps, GrD |
ds->setXPFactory(xpf.get()); |
} |
-static void set_random_gp(GrContext* context, |
- const GrDrawTargetCaps& caps, |
- GrDrawState* ds, |
- SkRandom* random, |
- GrTexture* dummyTextures[]) { |
- SkAutoTUnref<const GrGeometryProcessor> gp( |
- GrProcessorTestFactory<GrGeometryProcessor>::CreateStage(random, |
- context, |
- caps, |
- dummyTextures)); |
- SkASSERT(gp); |
- |
- ds->setGeometryProcessor(gp); |
+static const GrGeometryProcessor* get_random_gp(GrContext* context, |
+ const GrDrawTargetCaps& caps, |
+ SkRandom* random, |
+ GrTexture* dummyTextures[]) { |
+ return GrProcessorTestFactory<GrGeometryProcessor>::CreateStage(random, |
+ context, |
+ caps, |
+ dummyTextures); |
} |
static void set_random_color_coverage_stages(GrGpuGL* gpu, |
@@ -189,12 +184,6 @@ static void set_random_color_coverage_stages(GrGpuGL* gpu, |
} |
} |
-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()); |
- } |
-} |
- |
static void set_random_state(GrDrawState* ds, SkRandom* random) { |
int state = 0; |
for (int i = 1; i <= GrDrawState::kLast_StateBit; i <<= 1) { |
@@ -293,8 +282,12 @@ bool GrDrawTarget::programUnitTest(int maxStages) { |
// twiddle drawstate knobs randomly |
bool hasGeometryProcessor = !usePathRendering; |
+ const GrGeometryProcessor* gp = NULL; |
+ const GrPathProcessor* pathProc = NULL; |
if (hasGeometryProcessor) { |
- set_random_gp(fContext, gpu->glCaps(), &ds, &random, dummyTextures); |
+ gp = get_random_gp(fContext, gpu->glCaps(), &random, dummyTextures); |
+ } else { |
+ pathProc = GrPathProcessor::Create(GrColor_WHITE); |
} |
set_random_color_coverage_stages(gpu, |
&ds, |
@@ -306,25 +299,25 @@ bool GrDrawTarget::programUnitTest(int maxStages) { |
// creates a random xfer processor factory on the draw state |
set_random_xpf(fContext, gpu->glCaps(), &ds, &random, dummyTextures); |
- set_random_hints(&ds, &random); |
set_random_state(&ds, &random); |
set_random_stencil(&ds, &random); |
GrDeviceCoordTexture dstCopy; |
- // 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)) { |
+ const GrPrimitiveProcessor* primProc; |
+ if (hasGeometryProcessor) { |
+ primProc = gp; |
+ } else { |
+ primProc = pathProc; |
+ } |
+ if (!this->setupDstReadIfNecessary(&ds, primProc, &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, color, coverage, *gpu->caps(), scissor, &dstCopy, drawType); |
+ GrOptDrawState ods(ds, gp, pathProc, *gpu->caps(), scissor, &dstCopy, drawType); |
if (ods.mustSkip()) { |
continue; |
} |