class SkMatrix;
class GrCaps;
class GrContext;
+class GrRenderTarget;
struct GrProcessorTestData;
namespace GrProcessorUnitTest {
GrProcessorTestData(SkRandom* random,
GrContext* context,
const GrCaps* caps,
+ const GrRenderTarget* rt,
GrTexture* textures[2])
: fRandom(random)
, fContext(context)
- , fCaps(caps) {
+ , fCaps(caps)
+ , fRenderTarget(rt) {
fTextures[0] = textures[0];
fTextures[1] = textures[1];
}
SkRandom* fRandom;
GrContext* fContext;
const GrCaps* fCaps;
+ const GrRenderTarget* fRenderTarget;
GrTexture* fTextures[2];
};
const GrXPFactory* GrCoverageSetOpXPFactory::TestCreate(GrProcessorTestData* d) {
SkRegion::Op regionOp = SkRegion::Op(d->fRandom->nextULessThan(SkRegion::kLastOp + 1));
- bool invertCoverage = d->fRandom->nextBool();
+ bool invertCoverage = !d->fRenderTarget->hasMixedSamples() && d->fRandom->nextBool();
return GrCoverageSetOpXPFactory::Create(regionOp, invertCoverage);
}
SkAutoTUnref<GrDrawBatch> batch(GrRandomDrawBatch(&random, context));
SkASSERT(batch);
- GrProcessorTestData ptd(&random, context, context->caps(), dummyTextures);
+ GrProcessorTestData ptd(&random, context, context->caps(), rt, dummyTextures);
set_random_color_coverage_stages(&pipelineBuilder, &ptd, maxStages);
set_random_xpf(&pipelineBuilder, &ptd);
set_random_state(&pipelineBuilder, &random);
for (int j = 0; j < 10; ++j) {
SkAutoTUnref<GrDrawBatch> batch(GrRandomDrawBatch(&random, context));
SkASSERT(batch);
- GrProcessorTestData ptd(&random, context, context->caps(), dummyTextures);
+ GrProcessorTestData ptd(&random, context, context->caps(), rt, dummyTextures);
GrPipelineBuilder builder;
builder.setXPFactory(GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref();
builder.setRenderTarget(rt);