Fix GrCoverageSetOpXP unit test on mixed samples
authorcdalton <cdalton@nvidia.com>
Thu, 12 Nov 2015 20:11:04 +0000 (12:11 -0800)
committerCommit bot <commit-bot@chromium.org>
Thu, 12 Nov 2015 20:11:04 +0000 (12:11 -0800)
Updates GrCoverageSetOpXPFactory::TestCreate to not invert coverage
with mixed samples, which is an unsupported configuration.

TBR=bsalomon@google.com

BUG=skia:4556

Review URL: https://codereview.chromium.org/1442763002

include/gpu/GrProcessorUnitTest.h
src/gpu/effects/GrCoverageSetOpXP.cpp
tests/GLProgramsTest.cpp

index 8f4e84e..bb16d69 100644 (file)
@@ -15,6 +15,7 @@
 class SkMatrix;
 class GrCaps;
 class GrContext;
+class GrRenderTarget;
 struct GrProcessorTestData;
 
 namespace GrProcessorUnitTest {
@@ -42,16 +43,19 @@ struct GrProcessorTestData {
     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];
 };
 
index 5c876d5..126a639 100644 (file)
@@ -247,7 +247,7 @@ GR_DEFINE_XP_FACTORY_TEST(GrCoverageSetOpXPFactory);
 
 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);
 }
 
index d1798fc..9e339ba 100644 (file)
@@ -352,7 +352,7 @@ bool GrDrawingManager::ProgramUnitTest(GrContext* context,
         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);
@@ -377,7 +377,7 @@ bool GrDrawingManager::ProgramUnitTest(GrContext* context,
         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);