diff options
-rw-r--r-- | src/core/SkImageFilter.cpp | 6 | ||||
-rw-r--r-- | src/effects/SkAlphaThresholdFilter.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkArithmeticImageFilter.cpp | 6 | ||||
-rw-r--r-- | src/effects/SkDisplacementMapEffect.cpp | 4 | ||||
-rw-r--r-- | src/effects/SkMagnifierImageFilter.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkXfermodeImageFilter.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrColorSpaceXform.cpp | 53 | ||||
-rw-r--r-- | src/gpu/GrColorSpaceXform.h | 13 | ||||
-rw-r--r-- | src/gpu/GrTestUtils.cpp | 7 | ||||
-rw-r--r-- | src/gpu/GrTextureAdjuster.cpp | 3 | ||||
-rw-r--r-- | src/gpu/GrTextureMaker.cpp | 3 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 7 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice_drawTexture.cpp | 3 | ||||
-rw-r--r-- | src/shaders/SkColorShader.cpp | 4 | ||||
-rw-r--r-- | src/shaders/SkImageShader.cpp | 2 | ||||
-rw-r--r-- | src/shaders/gradients/SkGradientShaderPriv.h | 1 |
16 files changed, 40 insertions, 84 deletions
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index 9996c5f47b..f6d2c63547 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -316,11 +316,7 @@ sk_sp<SkSpecialImage> SkImageFilter::ImageToColorSpace(SkSpecialImage* src, // object. If that produces something, then both are tagged, and the source is in a different // gamut than the dest. There is some overhead to making the xform, but those are cached, and // if we get one back, that means we're about to use it during the conversion anyway. - // - // TODO: Fix this check, to handle wider support of transfer functions, config mismatch, etc. - // For now, continue to just check if gamut is different, which may not be sufficient. - auto colorSpaceXform = GrColorSpaceXform::MakeGamutXform(src->getColorSpace(), - outProps.colorSpace()); + auto colorSpaceXform = GrColorSpaceXform::Make(src->getColorSpace(), outProps.colorSpace()); if (!colorSpaceXform) { // No xform needed, just return the original image diff --git a/src/effects/SkAlphaThresholdFilter.cpp b/src/effects/SkAlphaThresholdFilter.cpp index 5bd2571842..9dc8ae4b02 100644 --- a/src/effects/SkAlphaThresholdFilter.cpp +++ b/src/effects/SkAlphaThresholdFilter.cpp @@ -174,10 +174,9 @@ sk_sp<SkSpecialImage> SkAlphaThresholdFilterImpl::onFilterImage(SkSpecialImage* } const OutputProperties& outProps = ctx.outputProperties(); - GrPixelConfig inputConfig = inputProxy->config(); auto textureFP = GrSimpleTextureEffect::Make(std::move(inputProxy), SkMatrix::I()); textureFP = GrColorSpaceXformEffect::Make(std::move(textureFP), input->getColorSpace(), - inputConfig, outProps.colorSpace()); + outProps.colorSpace()); if (!textureFP) { return nullptr; } diff --git a/src/effects/SkArithmeticImageFilter.cpp b/src/effects/SkArithmeticImageFilter.cpp index 1a16465d9d..3fc065536b 100644 --- a/src/effects/SkArithmeticImageFilter.cpp +++ b/src/effects/SkArithmeticImageFilter.cpp @@ -311,13 +311,12 @@ sk_sp<SkSpecialImage> ArithmeticImageFilterImpl::filterImageGPU( if (backgroundProxy) { SkMatrix backgroundMatrix = SkMatrix::MakeTrans(-SkIntToScalar(backgroundOffset.fX), -SkIntToScalar(backgroundOffset.fY)); - GrPixelConfig bgConfig = backgroundProxy->config(); bgFP = GrTextureDomainEffect::Make( std::move(backgroundProxy), backgroundMatrix, GrTextureDomain::MakeTexelDomain(background->subset()), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); bgFP = GrColorSpaceXformEffect::Make(std::move(bgFP), background->getColorSpace(), - bgConfig, outputProperties.colorSpace()); + outputProperties.colorSpace()); } else { bgFP = GrConstColorProcessor::Make(GrColor4f::TransparentBlack(), GrConstColorProcessor::InputMode::kIgnore); @@ -326,13 +325,12 @@ sk_sp<SkSpecialImage> ArithmeticImageFilterImpl::filterImageGPU( if (foregroundProxy) { SkMatrix foregroundMatrix = SkMatrix::MakeTrans(-SkIntToScalar(foregroundOffset.fX), -SkIntToScalar(foregroundOffset.fY)); - GrPixelConfig fgConfig = foregroundProxy->config(); auto foregroundFP = GrTextureDomainEffect::Make( std::move(foregroundProxy), foregroundMatrix, GrTextureDomain::MakeTexelDomain(foreground->subset()), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); foregroundFP = GrColorSpaceXformEffect::Make(std::move(foregroundFP), - foreground->getColorSpace(), fgConfig, + foreground->getColorSpace(), outputProperties.colorSpace()); paint.addColorFragmentProcessor(std::move(foregroundFP)); diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp index 9ac46f1713..8983fcacbd 100644 --- a/src/effects/SkDisplacementMapEffect.cpp +++ b/src/effects/SkDisplacementMapEffect.cpp @@ -293,7 +293,6 @@ sk_sp<SkSpecialImage> SkDisplacementMapEffect::onFilterImage(SkSpecialImage* sou SkIntToScalar(colorOffset.fY - displOffset.fY)); SkColorSpace* colorSpace = ctx.outputProperties().colorSpace(); - GrPixelConfig colorConfig = colorProxy->config(); std::unique_ptr<GrFragmentProcessor> fp = GrDisplacementMapEffect::Make(fXChannelSelector, fYChannelSelector, @@ -302,8 +301,7 @@ sk_sp<SkSpecialImage> SkDisplacementMapEffect::onFilterImage(SkSpecialImage* sou offsetMatrix, std::move(colorProxy), SkISize::Make(color->width(), color->height())); - fp = GrColorSpaceXformEffect::Make(std::move(fp), color->getColorSpace(), colorConfig, - colorSpace); + fp = GrColorSpaceXformEffect::Make(std::move(fp), color->getColorSpace(), colorSpace); GrPaint paint; paint.addColorFragmentProcessor(std::move(fp)); diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp index 7df30cee72..40624ab05a 100644 --- a/src/effects/SkMagnifierImageFilter.cpp +++ b/src/effects/SkMagnifierImageFilter.cpp @@ -108,7 +108,6 @@ sk_sp<SkSpecialImage> SkMagnifierImageFilter::onFilterImage(SkSpecialImage* sour offset->fY = bounds.top(); bounds.offset(-inputOffset); - GrPixelConfig inputConfig = inputProxy->config(); auto fp = GrMagnifierEffect::Make(std::move(inputProxy), bounds, fSrcRect, @@ -117,7 +116,7 @@ sk_sp<SkSpecialImage> SkMagnifierImageFilter::onFilterImage(SkSpecialImage* sour bounds.width() * invInset, bounds.height() * invInset); fp = GrColorSpaceXformEffect::Make(std::move(fp), input->getColorSpace(), - inputConfig, ctx.outputProperties().colorSpace()); + ctx.outputProperties().colorSpace()); if (!fp) { return nullptr; } diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp index d32488d5f6..7393ab9485 100644 --- a/src/effects/SkXfermodeImageFilter.cpp +++ b/src/effects/SkXfermodeImageFilter.cpp @@ -281,13 +281,12 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter_Base::filterImageGPU( if (backgroundProxy) { SkMatrix bgMatrix = SkMatrix::MakeTrans(-SkIntToScalar(backgroundOffset.fX), -SkIntToScalar(backgroundOffset.fY)); - GrPixelConfig bgConfig = backgroundProxy->config(); bgFP = GrTextureDomainEffect::Make(std::move(backgroundProxy), bgMatrix, GrTextureDomain::MakeTexelDomain(background->subset()), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); bgFP = GrColorSpaceXformEffect::Make(std::move(bgFP), background->getColorSpace(), - bgConfig, outputProperties.colorSpace()); + outputProperties.colorSpace()); } else { bgFP = GrConstColorProcessor::Make(GrColor4f::TransparentBlack(), GrConstColorProcessor::InputMode::kIgnore); @@ -296,13 +295,12 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter_Base::filterImageGPU( if (foregroundProxy) { SkMatrix fgMatrix = SkMatrix::MakeTrans(-SkIntToScalar(foregroundOffset.fX), -SkIntToScalar(foregroundOffset.fY)); - GrPixelConfig fgConfig = foregroundProxy->config(); auto foregroundFP = GrTextureDomainEffect::Make( std::move(foregroundProxy), fgMatrix, GrTextureDomain::MakeTexelDomain(foreground->subset()), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); foregroundFP = GrColorSpaceXformEffect::Make(std::move(foregroundFP), - foreground->getColorSpace(), fgConfig, + foreground->getColorSpace(), outputProperties.colorSpace()); paint.addColorFragmentProcessor(std::move(foregroundFP)); diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp index 84c6bdba0e..1256023c00 100644 --- a/src/gpu/GrColorSpaceXform.cpp +++ b/src/gpu/GrColorSpaceXform.cpp @@ -62,8 +62,7 @@ GrColorSpaceXform::GrColorSpaceXform(const SkColorSpaceTransferFn& srcTransferFn static SkSpinlock gColorSpaceXformCacheSpinlock; -sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, GrPixelConfig srcConfig, - SkColorSpace* dst) { +sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, SkColorSpace* dst) { if (!dst) { // No transformation is performed in legacy mode return nullptr; @@ -71,47 +70,22 @@ sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, GrPixelConfi // Treat null sources as sRGB if (!src) { - if (GrPixelConfigIsFloatingPoint(srcConfig)) { - src = SkColorSpace::MakeSRGBLinear().get(); - } else { - src = SkColorSpace::MakeSRGB().get(); - } + src = SkColorSpace::MakeSRGB().get(); } uint32_t flags = 0; SkColorSpaceTransferFn srcTransferFn; - // kUnknown_GrPixelConfig is a sentinel that means we don't care about transfer functions, - // just the gamut xform. - if (kUnknown_GrPixelConfig != srcConfig) { - // Determine if src transfer function is needed, based on src config and color space - if (GrPixelConfigIsSRGB(srcConfig)) { - // Source texture is sRGB, will be converted to linear when we sample - if (src->gammaCloseToSRGB()) { - // Hardware linearize does the right thing - } else if (src->gammaIsLinear()) { - // Oops, need to undo the (extra) linearize - flags |= kApplyInverseSRGB_Flag; - } else if (src->isNumericalTransferFn(&srcTransferFn)) { - // Need to undo the (extra) linearize, then apply the correct transfer function - flags |= (kApplyInverseSRGB_Flag | kApplyTransferFn_Flag); - } else { - // We don't (yet) support more complex transfer functions - return nullptr; - } - } else { - // Source texture is some non-sRGB format, we consider it linearly encoded - if (src->gammaIsLinear()) { - // Linear sampling does the right thing - } else if (src->isNumericalTransferFn(&srcTransferFn)) { - // Need to manually apply some transfer function (including sRGB) - flags |= kApplyTransferFn_Flag; - } else { - // We don't (yet) support more complex transfer functions - return nullptr; - } - } + if (src->gammaIsLinear()) { + // Linear sampling does the right thing + } else if (src->isNumericalTransferFn(&srcTransferFn)) { + // Need to manually apply some transfer function + flags |= kApplyTransferFn_Flag; + } else { + // We don't (yet) support more complex transfer functions + return nullptr; } + if (src == dst && (0 == flags)) { // Quick equality check - no conversion (or transfer function) needed in this case return nullptr; @@ -290,13 +264,12 @@ GrFragmentProcessor::OptimizationFlags GrColorSpaceXformEffect::OptFlags( std::unique_ptr<GrFragmentProcessor> GrColorSpaceXformEffect::Make( std::unique_ptr<GrFragmentProcessor> child, - SkColorSpace* src, GrPixelConfig srcConfig, - SkColorSpace* dst) { + SkColorSpace* src, SkColorSpace* dst) { if (!child) { return nullptr; } - auto colorXform = GrColorSpaceXform::Make(src, srcConfig, dst); + auto colorXform = GrColorSpaceXform::Make(src, dst); if (colorXform) { return std::unique_ptr<GrFragmentProcessor>( new GrColorSpaceXformEffect(std::move(child), std::move(colorXform))); diff --git a/src/gpu/GrColorSpaceXform.h b/src/gpu/GrColorSpaceXform.h index b3e0587eca..b925fb2b87 100644 --- a/src/gpu/GrColorSpaceXform.h +++ b/src/gpu/GrColorSpaceXform.h @@ -21,10 +21,14 @@ class GrColorSpaceXform : public SkRefCnt { public: GrColorSpaceXform(const SkColorSpaceTransferFn&, const SkMatrix44&, uint32_t); - static sk_sp<GrColorSpaceXform> Make(SkColorSpace* src, GrPixelConfig srcConfig, - SkColorSpace* dst); + static sk_sp<GrColorSpaceXform> Make(SkColorSpace* src, SkColorSpace* dst); static sk_sp<GrColorSpaceXform> MakeGamutXform(SkColorSpace* src, SkColorSpace* dst) { - auto result = Make(src, kUnknown_GrPixelConfig, dst); + sk_sp<SkColorSpace> linearSrc = sk_ref_sp(src); + if (!linearSrc) { + linearSrc = SkColorSpace::MakeSRGBLinear(); + } + linearSrc = linearSrc->makeLinearGamma(); + auto result = Make(linearSrc.get(), dst); SkASSERT(!result || 0 == (result->fFlags & ~kApplyGamutXform_Flag)); return result; } @@ -76,8 +80,7 @@ public: * the color space of the output from src to dst. */ static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> child, - SkColorSpace* src, GrPixelConfig srcConfig, - SkColorSpace* dst); + SkColorSpace* src, SkColorSpace* dst); const char* name() const override { return "ColorSpaceXform"; } std::unique_ptr<GrFragmentProcessor> clone() const override; diff --git a/src/gpu/GrTestUtils.cpp b/src/gpu/GrTestUtils.cpp index 2aff35dad2..e29e8f596c 100644 --- a/src/gpu/GrTestUtils.cpp +++ b/src/gpu/GrTestUtils.cpp @@ -317,6 +317,7 @@ sk_sp<SkColorSpace> TestColorSpace(SkRandom* random) { } sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) { + // TODO: Add many more kinds of xforms here static sk_sp<GrColorSpaceXform> gXforms[3]; static bool gOnce; if (!gOnce) { @@ -325,10 +326,8 @@ sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) { sk_sp<SkColorSpace> spin = SkColorSpace::MakeSRGB()->makeColorSpin(); // No gamut change gXforms[0] = nullptr; - // To different gamut (with automatic transfer function) - gXforms[1] = GrColorSpaceXform::Make(srgb.get(), kSRGBA_8888_GrPixelConfig, spin.get()); - // To different gamut (with manual transfer function) - gXforms[2] = GrColorSpaceXform::Make(spin.get(), kRGBA_8888_GrPixelConfig, srgb.get()); + gXforms[1] = GrColorSpaceXform::Make(srgb.get(), spin.get()); + gXforms[2] = GrColorSpaceXform::Make(spin.get(), srgb.get()); } return gXforms[random->nextULessThan(static_cast<uint32_t>(SK_ARRAY_COUNT(gXforms)))]; } diff --git a/src/gpu/GrTextureAdjuster.cpp b/src/gpu/GrTextureAdjuster.cpp index 05b1cf4241..4b21bac9d0 100644 --- a/src/gpu/GrTextureAdjuster.cpp +++ b/src/gpu/GrTextureAdjuster.cpp @@ -162,8 +162,7 @@ std::unique_ptr<GrFragmentProcessor> GrTextureAdjuster::createFragmentProcessor( } SkASSERT(kNoDomain_DomainMode == domainMode || (domain.fLeft <= domain.fRight && domain.fTop <= domain.fBottom)); - GrPixelConfig config = proxy->config(); auto fp = CreateFragmentProcessorForDomainAndFilter(std::move(proxy), textureMatrix, domainMode, domain, filterOrNullForBicubic); - return GrColorSpaceXformEffect::Make(std::move(fp), fColorSpace, config, dstColorSpace); + return GrColorSpaceXformEffect::Make(std::move(fp), fColorSpace, dstColorSpace); } diff --git a/src/gpu/GrTextureMaker.cpp b/src/gpu/GrTextureMaker.cpp index a8295129ef..47eeeaaeb6 100644 --- a/src/gpu/GrTextureMaker.cpp +++ b/src/gpu/GrTextureMaker.cpp @@ -154,10 +154,9 @@ std::unique_ptr<GrFragmentProcessor> GrTextureMaker::createFragmentProcessor( DetermineDomainMode(constraintRect, filterConstraint, coordsLimitedToConstraintRect, proxy.get(), fmForDetermineDomain, &domain); SkASSERT(kTightCopy_DomainMode != domainMode); - GrPixelConfig config = proxy->config(); auto fp = CreateFragmentProcessorForDomainAndFilter(std::move(proxy), adjustedMatrix, domainMode, domain, filterOrNullForBicubic); - return GrColorSpaceXformEffect::Make(std::move(fp), texColorSpace.get(), config, dstColorSpace); + return GrColorSpaceXformEffect::Make(std::move(fp), texColorSpace.get(), dstColorSpace); } sk_sp<GrTextureProxy> GrTextureMaker::generateTextureProxyForParams(const CopyParams& copyParams, diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index ee8026c463..ca3d559e36 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -991,7 +991,6 @@ void SkGpuDevice::drawBitmapTile(const SkBitmap& bitmap, // Construct a GrPaint by setting the bitmap texture as the first effect and then configuring // the rest from the SkPaint. std::unique_ptr<GrFragmentProcessor> fp; - GrPixelConfig config = proxy->config(); if (needsTextureDomain && (SkCanvas::kStrict_SrcRectConstraint == constraint)) { // Use a constrained texture domain to avoid color bleeding @@ -1022,7 +1021,7 @@ void SkGpuDevice::drawBitmapTile(const SkBitmap& bitmap, fp = GrSimpleTextureEffect::Make(std::move(proxy), texMatrix, samplerState); } - fp = GrColorSpaceXformEffect::Make(std::move(fp), bitmap.colorSpace(), config, + fp = GrColorSpaceXformEffect::Make(std::move(fp), bitmap.colorSpace(), fRenderTargetContext->colorSpaceInfo().colorSpace()); GrPaint grPaint; if (!SkPaintToGrPaintWithTexture(this->context(), fRenderTargetContext->colorSpaceInfo(), paint, @@ -1092,7 +1091,7 @@ void SkGpuDevice::drawSpecial(SkSpecialImage* special1, int left, int top, const tmpUnfiltered.setImageFilter(nullptr); auto fp = GrSimpleTextureEffect::Make(std::move(proxy), SkMatrix::I()); - fp = GrColorSpaceXformEffect::Make(std::move(fp), result->getColorSpace(), config, + fp = GrColorSpaceXformEffect::Make(std::move(fp), result->getColorSpace(), fRenderTargetContext->colorSpaceInfo().colorSpace()); if (GrPixelConfigIsAlphaOnly(config)) { fp = GrFragmentProcessor::MakeInputPremulAndMulByOutput(std::move(fp)); @@ -1416,7 +1415,7 @@ void SkGpuDevice::drawProducerLattice(GrTextureProducer* producer, if (!proxy) { return; } - auto csxf = GrColorSpaceXform::Make(proxyColorSpace.get(), proxy->config(), dstColorSpace); + auto csxf = GrColorSpaceXform::Make(proxyColorSpace.get(), dstColorSpace); fRenderTargetContext->drawImageLattice(this->clip(), std::move(grPaint), this->ctm(), std::move(proxy), std::move(csxf), filter, diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp index 96472814c5..af397cd431 100644 --- a/src/gpu/SkGpuDevice_drawTexture.cpp +++ b/src/gpu/SkGpuDevice_drawTexture.cpp @@ -111,8 +111,7 @@ static void draw_texture(const SkPaint& paint, const SkMatrix& ctm, const SkRect SkAssertResult(srcRect.intersect(SkRect::MakeIWH(proxy->width(), proxy->height()))); srcToDst.mapRect(&dstRect, srcRect); } - auto csxf = GrColorSpaceXform::Make(colorSpace, proxy->config(), - rtc->colorSpaceInfo().colorSpace()); + auto csxf = GrColorSpaceXform::Make(colorSpace, rtc->colorSpaceInfo().colorSpace()); GrSamplerState::Filter filter; switch (paint.getFilterQuality()) { case kNone_SkFilterQuality: diff --git a/src/shaders/SkColorShader.cpp b/src/shaders/SkColorShader.cpp index c3f86b9cfb..482c731d00 100644 --- a/src/shaders/SkColorShader.cpp +++ b/src/shaders/SkColorShader.cpp @@ -198,9 +198,7 @@ SkShader::GradientType SkColor4Shader::asAGradient(GradientInfo* info) const { std::unique_ptr<GrFragmentProcessor> SkColor4Shader::asFragmentProcessor( const GrFPArgs& args) const { - // Construct an xform assuming float inputs. The color space can have a transfer function on - // it, which will be applied below. - auto colorSpaceXform = GrColorSpaceXform::Make(fColorSpace.get(), kRGBA_float_GrPixelConfig, + auto colorSpaceXform = GrColorSpaceXform::Make(fColorSpace.get(), args.fDstColorSpaceInfo->colorSpace()); GrColor4f color = GrColor4f::FromSkColor4f(fColor4); if (colorSpaceXform) { diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp index b80f6b9bfd..97bd6cb04e 100644 --- a/src/shaders/SkImageShader.cpp +++ b/src/shaders/SkImageShader.cpp @@ -239,7 +239,7 @@ std::unique_ptr<GrFragmentProcessor> SkImageShader::asFragmentProcessor( } else { inner = GrSimpleTextureEffect::Make(std::move(proxy), lmInverse, samplerState); } - inner = GrColorSpaceXformEffect::Make(std::move(inner), texColorSpace.get(), config, + inner = GrColorSpaceXformEffect::Make(std::move(inner), texColorSpace.get(), args.fDstColorSpaceInfo->colorSpace()); if (isAlphaOnly) { return inner; diff --git a/src/shaders/gradients/SkGradientShaderPriv.h b/src/shaders/gradients/SkGradientShaderPriv.h index e50f1a69e4..9a565a8d4a 100644 --- a/src/shaders/gradients/SkGradientShaderPriv.h +++ b/src/shaders/gradients/SkGradientShaderPriv.h @@ -273,7 +273,6 @@ protected: // this FP may include that transformation. fp = GrColorSpaceXformEffect::Make(std::move(gradientFP), args.fShader->fColorSpace.get(), - kRGBA_float_GrPixelConfig, args.fDstColorSpace); } else { fp = std::move(gradientFP); |