Index: src/core/SkBitmapProcShader.cpp |
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp |
index e140f0feb04bc89f53549718f31fa69999351f9f..b3d1a1ecaf0545b0c7b4936701b7a5e7faa22113 100644 |
--- a/src/core/SkBitmapProcShader.cpp |
+++ b/src/core/SkBitmapProcShader.cpp |
@@ -229,10 +229,11 @@ SkShader::Context* SkBitmapProcShader::MakeContext(const SkShader& shader, |
// Decide if we can/want to use the new linear pipeline |
bool useLinearPipeline = choose_linear_pipeline(rec, provider.info()); |
+ SkSourceGammaTreatment treatment = SkMipMap::DeduceTreatment(rec); |
if (useLinearPipeline) { |
void* infoStorage = (char*)storage + sizeof(LinearPipelineContext); |
- SkBitmapProcInfo* info = new (infoStorage) SkBitmapProcInfo(provider, tmx, tmy); |
+ SkBitmapProcInfo* info = new (infoStorage) SkBitmapProcInfo(provider, tmx, tmy, treatment); |
if (!info->init(totalInverse, *rec.fPaint)) { |
info->~SkBitmapProcInfo(); |
return nullptr; |
@@ -241,7 +242,8 @@ SkShader::Context* SkBitmapProcShader::MakeContext(const SkShader& shader, |
return new (storage) LinearPipelineContext(shader, rec, info); |
} else { |
void* stateStorage = (char*)storage + sizeof(BitmapProcShaderContext); |
- SkBitmapProcState* state = new (stateStorage) SkBitmapProcState(provider, tmx, tmy); |
+ SkBitmapProcState* state = new (stateStorage) SkBitmapProcState(provider, tmx, tmy, |
+ treatment); |
if (!state->setup(totalInverse, *rec.fPaint)) { |
state->~SkBitmapProcState(); |
return nullptr; |