diff options
author | Brian Osman <brianosman@google.com> | 2016-10-03 14:23:50 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-10-03 18:47:42 +0000 |
commit | e2f732f475fbeff9cce2dd4023a183fa2492d2ad (patch) | |
tree | 5f40fe94c52ccc93bdf28694569c0a30e332ba1b /src/gpu | |
parent | 7de57798358127e959df9255b36f30ec9d7db534 (diff) |
Start supplying random color space xforms to FP tests
Added helper to create random GrColorSpaceXforms in unit tests, and
hooked it up for the FPs that currently accept one.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2873
Change-Id: Iaf93e379e405fbf745f5e0fd23b4daf017355966
Reviewed-on: https://skia-review.googlesource.com/2873
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrTestUtils.cpp | 17 | ||||
-rw-r--r-- | src/gpu/effects/GrBicubicEffect.cpp | 3 | ||||
-rw-r--r-- | src/gpu/effects/GrSimpleTextureEffect.cpp | 3 | ||||
-rw-r--r-- | src/gpu/effects/GrTextureDomain.cpp | 3 |
4 files changed, 23 insertions, 3 deletions
diff --git a/src/gpu/GrTestUtils.cpp b/src/gpu/GrTestUtils.cpp index d5cdbab1fb..7f5cc50efe 100644 --- a/src/gpu/GrTestUtils.cpp +++ b/src/gpu/GrTestUtils.cpp @@ -7,6 +7,7 @@ #include "GrTestUtils.h" #include "GrStyle.h" +#include "SkColorSpace.h" #include "SkDashPathPriv.h" #include "SkMatrix.h" #include "SkPath.h" @@ -289,6 +290,22 @@ SkPathEffect::DashType TestDashPathEffect::asADash(DashInfo* info) const { return kDash_DashType; } +sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) { + static sk_sp<GrColorSpaceXform> gXforms[3]; + static bool gOnce; + if (!gOnce) { + gOnce = true; + sk_sp<SkColorSpace> srgb = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); + sk_sp<SkColorSpace> adobe = SkColorSpace::NewNamed(SkColorSpace::kAdobeRGB_Named); + // No gamut change + gXforms[0] = nullptr; + // To larger gamut + gXforms[1] = GrColorSpaceXform::Make(srgb.get(), adobe.get()); + // To smaller gamut + gXforms[2] = GrColorSpaceXform::Make(adobe.get(), srgb.get()); + } + return gXforms[random->nextULessThan(static_cast<uint32_t>(SK_ARRAY_COUNT(gXforms)))]; +} } // namespace GrTest diff --git a/src/gpu/effects/GrBicubicEffect.cpp b/src/gpu/effects/GrBicubicEffect.cpp index 86726c9058..737625ffed 100644 --- a/src/gpu/effects/GrBicubicEffect.cpp +++ b/src/gpu/effects/GrBicubicEffect.cpp @@ -205,7 +205,8 @@ sk_sp<GrFragmentProcessor> GrBicubicEffect::TestCreate(GrProcessorTestData* d) { for (int i = 0; i < 16; i++) { coefficients[i] = d->fRandom->nextSScalar1(); } - return GrBicubicEffect::Make(d->fTextures[texIdx], nullptr, coefficients); + auto colorSpaceXform = GrTest::TestColorXform(d->fRandom); + return GrBicubicEffect::Make(d->fTextures[texIdx], colorSpaceXform, coefficients); } ////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/effects/GrSimpleTextureEffect.cpp b/src/gpu/effects/GrSimpleTextureEffect.cpp index 6eb15e0c31..b05ac834a7 100644 --- a/src/gpu/effects/GrSimpleTextureEffect.cpp +++ b/src/gpu/effects/GrSimpleTextureEffect.cpp @@ -91,5 +91,6 @@ sk_sp<GrFragmentProcessor> GrSimpleTextureEffect::TestCreate(GrProcessorTestData GrCoordSet coordSet = kCoordSets[d->fRandom->nextULessThan(SK_ARRAY_COUNT(kCoordSets))]; const SkMatrix& matrix = GrTest::TestMatrix(d->fRandom); - return GrSimpleTextureEffect::Make(d->fTextures[texIdx], nullptr, matrix, coordSet); + auto colorSpaceXform = GrTest::TestColorXform(d->fRandom); + return GrSimpleTextureEffect::Make(d->fTextures[texIdx], colorSpaceXform, matrix, coordSet); } diff --git a/src/gpu/effects/GrTextureDomain.cpp b/src/gpu/effects/GrTextureDomain.cpp index e06c8de801..e809109835 100644 --- a/src/gpu/effects/GrTextureDomain.cpp +++ b/src/gpu/effects/GrTextureDomain.cpp @@ -295,9 +295,10 @@ sk_sp<GrFragmentProcessor> GrTextureDomainEffect::TestCreate(GrProcessorTestData const SkMatrix& matrix = GrTest::TestMatrix(d->fRandom); bool bilerp = mode != GrTextureDomain::kRepeat_Mode ? d->fRandom->nextBool() : false; GrCoordSet coords = d->fRandom->nextBool() ? kLocal_GrCoordSet : kDevice_GrCoordSet; + auto colorSpaceXform = GrTest::TestColorXform(d->fRandom); return GrTextureDomainEffect::Make( d->fTextures[texIdx], - nullptr, + colorSpaceXform, matrix, domain, mode, |