Index: src/core/SkBitmapProcShader.cpp |
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp |
index a372b5199041d9c608d608ecac302ae8f24aced6..50d3898a3ca957b70c9abdb2b0fe404a6ae9640f 100644 |
--- a/src/core/SkBitmapProcShader.cpp |
+++ b/src/core/SkBitmapProcShader.cpp |
@@ -226,10 +226,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()); |
+ SkMipMap::SrcGammaMode mode = SkMipMap::DeduceMode(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, mode); |
if (!info->init(totalInverse, *rec.fPaint)) { |
info->~SkBitmapProcInfo(); |
return nullptr; |
@@ -238,7 +239,7 @@ 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, mode); |
if (!state->setup(totalInverse, *rec.fPaint)) { |
state->~SkBitmapProcState(); |
return nullptr; |