Index: src/gpu/GrTextureParamsAdjuster.cpp |
diff --git a/src/gpu/GrTextureParamsAdjuster.cpp b/src/gpu/GrTextureParamsAdjuster.cpp |
index 77743916c5918008402db921864dc1059c9db5ef..b30731acece588c106691d9c4f87d8b592b1059f 100644 |
--- a/src/gpu/GrTextureParamsAdjuster.cpp |
+++ b/src/gpu/GrTextureParamsAdjuster.cpp |
@@ -8,6 +8,7 @@ |
#include "GrTextureParamsAdjuster.h" |
#include "GrCaps.h" |
+#include "GrColorSpaceXform.h" |
#include "GrContext.h" |
#include "GrDrawContext.h" |
#include "GrGpu.h" |
@@ -94,12 +95,12 @@ static GrTexture* copy_on_gpu(GrTexture* inputTexture, const SkIRect* subset, |
// better! |
SkASSERT(copyParams.fFilter != GrTextureParams::kMipMap_FilterMode); |
paint.addColorFragmentProcessor( |
- GrTextureDomainEffect::Make(inputTexture, SkMatrix::I(), domain, |
+ GrTextureDomainEffect::Make(inputTexture, nullptr, SkMatrix::I(), domain, |
GrTextureDomain::kClamp_Mode, |
copyParams.fFilter)); |
} else { |
GrTextureParams params(SkShader::kClamp_TileMode, copyParams.fFilter); |
- paint.addColorTextureProcessor(inputTexture, SkMatrix::I(), params); |
+ paint.addColorTextureProcessor(inputTexture, nullptr, SkMatrix::I(), params); |
} |
paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); |
@@ -350,6 +351,7 @@ static DomainMode determine_domain_mode( |
static sk_sp<GrFragmentProcessor> create_fp_for_domain_and_filter( |
GrTexture* texture, |
+ sk_sp<GrColorSpaceXform> colorSpaceXform, |
const SkMatrix& textureMatrix, |
DomainMode domainMode, |
const SkRect& domain, |
@@ -357,20 +359,23 @@ static sk_sp<GrFragmentProcessor> create_fp_for_domain_and_filter( |
SkASSERT(kTightCopy_DomainMode != domainMode); |
if (filterOrNullForBicubic) { |
if (kDomain_DomainMode == domainMode) { |
- return GrTextureDomainEffect::Make(texture, textureMatrix, domain, |
- GrTextureDomain::kClamp_Mode, |
+ return GrTextureDomainEffect::Make(texture, std::move(colorSpaceXform), textureMatrix, |
+ domain, GrTextureDomain::kClamp_Mode, |
*filterOrNullForBicubic); |
} else { |
GrTextureParams params(SkShader::kClamp_TileMode, *filterOrNullForBicubic); |
- return GrSimpleTextureEffect::Make(texture, textureMatrix, params); |
+ return GrSimpleTextureEffect::Make(texture, std::move(colorSpaceXform), textureMatrix, |
+ params); |
} |
} else { |
if (kDomain_DomainMode == domainMode) { |
- return GrBicubicEffect::Make(texture, textureMatrix, domain); |
+ return GrBicubicEffect::Make(texture, std::move(colorSpaceXform), textureMatrix, |
+ domain); |
} else { |
static const SkShader::TileMode kClampClamp[] = |
{ SkShader::kClamp_TileMode, SkShader::kClamp_TileMode }; |
- return GrBicubicEffect::Make(texture, textureMatrix, kClampClamp); |
+ return GrBicubicEffect::Make(texture, std::move(colorSpaceXform), textureMatrix, |
+ kClampClamp); |
} |
} |
} |
@@ -433,8 +438,11 @@ sk_sp<GrFragmentProcessor> GrTextureAdjuster::createFragmentProcessor( |
SkASSERT(kNoDomain_DomainMode == domainMode || |
(domain.fLeft <= domain.fRight && domain.fTop <= domain.fBottom)); |
textureMatrix.postIDiv(texture->width(), texture->height()); |
- return create_fp_for_domain_and_filter(texture, textureMatrix, domainMode, domain, |
- filterOrNullForBicubic); |
+ SkColorSpace* dstColorSpace = nullptr; // XFORMTODO |
+ sk_sp<GrColorSpaceXform> colorSpaceXform = GrColorSpaceXform::Make(this->getColorSpace(), |
+ dstColorSpace); |
+ return create_fp_for_domain_and_filter(texture, std::move(colorSpaceXform), textureMatrix, |
+ domainMode, domain, filterOrNullForBicubic); |
} |
////////////////////////////////////////////////////////////////////////////// |
@@ -512,7 +520,11 @@ sk_sp<GrFragmentProcessor> GrTextureMaker::createFragmentProcessor( |
SkASSERT(kTightCopy_DomainMode != domainMode); |
SkMatrix normalizedTextureMatrix = textureMatrix; |
normalizedTextureMatrix.postIDiv(texture->width(), texture->height()); |
- return create_fp_for_domain_and_filter(texture, normalizedTextureMatrix, domainMode, domain, |
+ SkColorSpace* dstColorSpace = nullptr; // XFORMTODO |
+ sk_sp<GrColorSpaceXform> colorSpaceXform = GrColorSpaceXform::Make(this->getColorSpace(), |
+ dstColorSpace); |
+ return create_fp_for_domain_and_filter(texture, std::move(colorSpaceXform), |
+ normalizedTextureMatrix, domainMode, domain, |
filterOrNullForBicubic); |
} |