Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 6a8b82a9e23797bd471f918e98267e9c10fa1b79..9a38c4a0fbe337f3367c5a23e7aec330898dcc6f 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -1145,6 +1145,9 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap, |
return; |
} |
+ SkColorSpace* dstColorSpace = nullptr; // XFORMTODO |
+ sk_sp<GrColorSpaceXform> colorSpaceXform = GrColorSpaceXform::Make(bitmap.colorSpace(), |
+ dstColorSpace); |
SkRect dstRect = {0, 0, srcRect.width(), srcRect.height() }; |
SkRect paintRect; |
SkScalar wInv = SkScalarInvert(SkIntToScalar(texture->width())); |
@@ -1189,17 +1192,19 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap, |
} |
textureDomain.setLTRB(left, top, right, bottom); |
if (bicubic) { |
- fp = GrBicubicEffect::Make(texture, texMatrix, textureDomain); |
+ fp = GrBicubicEffect::Make(texture, std::move(colorSpaceXform), texMatrix, |
+ textureDomain); |
} else { |
- fp = GrTextureDomainEffect::Make(texture, texMatrix, textureDomain, |
- GrTextureDomain::kClamp_Mode, params.filterMode()); |
+ fp = GrTextureDomainEffect::Make(texture, std::move(colorSpaceXform), texMatrix, |
+ textureDomain, GrTextureDomain::kClamp_Mode, |
+ params.filterMode()); |
} |
} else if (bicubic) { |
SkASSERT(GrTextureParams::kNone_FilterMode == params.filterMode()); |
SkShader::TileMode tileModes[2] = { params.getTileModeX(), params.getTileModeY() }; |
- fp = GrBicubicEffect::Make(texture, texMatrix, tileModes); |
+ fp = GrBicubicEffect::Make(texture, std::move(colorSpaceXform), texMatrix, tileModes); |
} else { |
- fp = GrSimpleTextureEffect::Make(texture, texMatrix, params); |
+ fp = GrSimpleTextureEffect::Make(texture, std::move(colorSpaceXform), texMatrix, params); |
} |
GrPaint grPaint; |
@@ -1286,7 +1291,8 @@ void SkGpuDevice::drawSpecial(const SkDraw& draw, |
bool alphaOnly = kAlpha_8_GrPixelConfig == texture->config(); |
GrPaint grPaint; |
- sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(texture.get(), SkMatrix::I())); |
+ sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(texture.get(), nullptr, |
+ SkMatrix::I())); |
if (alphaOnly) { |
fp = GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(fp)); |
} else { |
@@ -1420,7 +1426,8 @@ void SkGpuDevice::drawDevice(const SkDraw& draw, SkBaseDevice* device, |
SkASSERT(!paint.getImageFilter()); |
GrPaint grPaint; |
- sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(devTex.get(), SkMatrix::I())); |
+ sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(devTex.get(), nullptr, |
+ SkMatrix::I())); |
if (GrPixelConfigIsAlphaOnly(devTex->config())) { |
// Can this happen? |
fp = GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(fp)); |