Index: src/core/SkLinearBitmapPipeline.cpp |
diff --git a/src/core/SkLinearBitmapPipeline.cpp b/src/core/SkLinearBitmapPipeline.cpp |
index 4f6985b594046ed9a8a535fe9026c56d2670dc33..3a8606238d722016fce8f66e7270ccd4f97420d6 100644 |
--- a/src/core/SkLinearBitmapPipeline.cpp |
+++ b/src/core/SkLinearBitmapPipeline.cpp |
@@ -567,22 +567,22 @@ private: |
using Blender = SkLinearBitmapPipeline::BlendProcessorInterface; |
-template <SkColorType colorType, template <SkColorType, SkColorProfileType, typename> class Sampler> |
+template <SkColorType colorType, template <SkColorType, SkGammaType, typename> class Sampler> |
static void choose_specific_sampler( |
Blender* next, |
const SkPixmap& srcPixmap, |
SkLinearBitmapPipeline::SampleStage* sampleStage) |
{ |
- if (srcPixmap.info().profileType() == kSRGB_SkColorProfileType) { |
- using S = Sampler<colorType, kSRGB_SkColorProfileType, Blender>; |
+ if (srcPixmap.info().gammaCloseToSRGB()) { |
+ using S = Sampler<colorType, kSRGB_SkGammaType, Blender>; |
sampleStage->initStage<S>(next, srcPixmap); |
} else { |
- using S = Sampler<colorType, kLinear_SkColorProfileType, Blender>; |
+ using S = Sampler<colorType, kLinear_SkGammaType, Blender>; |
sampleStage->initStage<S>(next, srcPixmap); |
} |
} |
-template<template <SkColorType, SkColorProfileType, typename> class Sampler> |
+template<template <SkColorType, SkGammaType, typename> class Sampler> |
static SkLinearBitmapPipeline::SampleProcessorInterface* choose_pixel_sampler_base( |
Blender* next, |
const SkPixmap& srcPixmap, |
@@ -592,7 +592,7 @@ static SkLinearBitmapPipeline::SampleProcessorInterface* choose_pixel_sampler_ba |
const SkImageInfo& imageInfo = srcPixmap.info(); |
switch (imageInfo.colorType()) { |
case kAlpha_8_SkColorType: { |
- using S = Sampler<kAlpha_8_SkColorType, kLinear_SkColorProfileType, Blender>; |
+ using S = Sampler<kAlpha_8_SkColorType, kLinear_SkGammaType, Blender>; |
sampleStage->initStage<S>(next, srcPixmap, A8TintColor); |
} |
break; |
@@ -615,7 +615,7 @@ static SkLinearBitmapPipeline::SampleProcessorInterface* choose_pixel_sampler_ba |
choose_specific_sampler<kGray_8_SkColorType, Sampler>(next, srcPixmap, sampleStage); |
break; |
case kRGBA_F16_SkColorType: { |
- using S = Sampler<kRGBA_F16_SkColorType, kLinear_SkColorProfileType, Blender>; |
+ using S = Sampler<kRGBA_F16_SkColorType, kLinear_SkGammaType, Blender>; |
sampleStage->initStage<S>(next, srcPixmap); |
} |
break; |
@@ -772,8 +772,9 @@ bool SkLinearBitmapPipeline::ClonePipelineForBlitting( |
if (srcPixmap.info().colorType() != kRGBA_8888_SkColorType |
|| dstInfo.colorType() != kRGBA_8888_SkColorType) { return false; } |
- if (srcPixmap.info().profileType() != kSRGB_SkColorProfileType |
- || dstInfo.profileType() != kSRGB_SkColorProfileType) { return false; } |
+ if (!srcPixmap.info().gammaCloseToSRGB() || !dstInfo.gammaCloseToSRGB()) { |
+ return false; |
+ } |
if (xferMode != SkXfermode::kSrc_Mode && xferMode != SkXfermode::kSrcOver_Mode) { |
return false; |