Index: src/gpu/GrContext.cpp |
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp |
index 4cb90c658e1b3346d9220812a202332d7970a6f2..6bb3ea6a2c977efe990c7cf605bfbb099723791e 100644 |
--- a/src/gpu/GrContext.cpp |
+++ b/src/gpu/GrContext.cpp |
@@ -357,7 +357,10 @@ bool GrContext::writeSurfacePixels(GrSurface* surface, |
} |
SkMatrix matrix; |
matrix.setTranslate(SkIntToScalar(left), SkIntToScalar(top)); |
- sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(renderTarget))); |
+ // TODO: Need to decide the semantics of this function for color spaces. Do we support |
+ // conversion from a passed-in color space? For now, specifying nullptr means that this |
+ // path will do no conversion, so it will match the behavior of the non-draw path. |
+ sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(renderTarget), nullptr)); |
if (!drawContext) { |
return false; |
} |
@@ -444,10 +447,14 @@ bool GrContext::readSurfacePixels(GrSurface* src, |
tempDrawInfo.fTempSurfaceFit= SkBackingFit::kApprox; |
} |
} |
+ // TODO: Need to decide the semantics of this function for color spaces. Do we support |
+ // conversion to a passed-in color space? For now, specifying nullptr means that this |
+ // path will do no conversion, so it will match the behavior of the non-draw path. |
sk_sp<GrDrawContext> tempDC = this->newDrawContext(tempDrawInfo.fTempSurfaceFit, |
tempDrawInfo.fTempSurfaceDesc.fWidth, |
tempDrawInfo.fTempSurfaceDesc.fHeight, |
tempDrawInfo.fTempSurfaceDesc.fConfig, |
+ nullptr, |
tempDrawInfo.fTempSurfaceDesc.fSampleCnt, |
tempDrawInfo.fTempSurfaceDesc.fOrigin); |
if (tempDC) { |
@@ -534,7 +541,8 @@ bool GrContext::applyGamma(GrRenderTarget* dst, GrTexture* src, SkScalar gamma){ |
SkSurfaceProps props(SkSurfaceProps::kGammaCorrect_Flag, |
SkSurfaceProps::kLegacyFontHost_InitType); |
- sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(dst), &props)); |
+ // TODO: Supply color space? |
+ sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(dst), nullptr, &props)); |
if (!drawContext) { |
return false; |
} |
@@ -596,7 +604,7 @@ bool GrContext::copySurface(GrSurface* dst, GrSurface* src, const SkIRect& srcRe |
src->flushWrites(); |
return fGpu->copySurface(dst, src, clippedSrcRect, clippedDstPoint); |
} |
- sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(dst->asRenderTarget()))); |
+ sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(dst->asRenderTarget()), nullptr)); |
if (!drawContext) { |
return false; |
} |
@@ -636,14 +644,16 @@ int GrContext::getRecommendedSampleCount(GrPixelConfig config, |
sk_sp<GrDrawContext> GrContext::drawContext(sk_sp<GrRenderTarget> rt, |
+ sk_sp<SkColorSpace> colorSpace, |
const SkSurfaceProps* surfaceProps) { |
ASSERT_SINGLE_OWNER |
- return fDrawingManager->drawContext(std::move(rt), surfaceProps); |
+ return fDrawingManager->drawContext(std::move(rt), std::move(colorSpace), surfaceProps); |
} |
sk_sp<GrDrawContext> GrContext::newDrawContext(SkBackingFit fit, |
int width, int height, |
GrPixelConfig config, |
+ sk_sp<SkColorSpace> colorSpace, |
int sampleCnt, |
GrSurfaceOrigin origin, |
const SkSurfaceProps* surfaceProps, |
@@ -667,7 +677,7 @@ sk_sp<GrDrawContext> GrContext::newDrawContext(SkBackingFit fit, |
} |
sk_sp<GrDrawContext> drawContext(this->drawContext(sk_ref_sp(tex->asRenderTarget()), |
- surfaceProps)); |
+ std::move(colorSpace), surfaceProps)); |
if (!drawContext) { |
return nullptr; |
} |