Index: src/gpu/GrDrawingManager.cpp |
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp |
index f4d00dcd3eb27d2ef13c38bd18962df9e3e34569..b750aece13fb3413e6756ad2925197fc87d4c4ac 100644 |
--- a/src/gpu/GrDrawingManager.cpp |
+++ b/src/gpu/GrDrawingManager.cpp |
@@ -184,6 +184,18 @@ GrPathRenderer* GrDrawingManager::getPathRenderer(const GrPathRenderer::CanDrawP |
return pr; |
} |
+static bool checkConfigAndColorSpace(GrPixelConfig config, SkColorSpace* colorSpace) { |
Brian Osman
2016/08/23 19:54:46
I'm sad that I have this code in three places, now
|
+ switch (config) { |
+ case kRGBA_half_GrPixelConfig: |
+ return colorSpace && SkColorSpace::kLinear_GammaNamed == colorSpace->gammaNamed(); |
+ case kSRGBA_8888_GrPixelConfig: |
+ case kSBGRA_8888_GrPixelConfig: |
+ return colorSpace && colorSpace->gammaCloseToSRGB(); |
+ default: |
+ return !colorSpace; |
+ } |
+} |
+ |
sk_sp<GrDrawContext> GrDrawingManager::makeDrawContext(sk_sp<GrRenderTarget> rt, |
sk_sp<SkColorSpace> colorSpace, |
const SkSurfaceProps* surfaceProps) { |
@@ -191,6 +203,9 @@ sk_sp<GrDrawContext> GrDrawingManager::makeDrawContext(sk_sp<GrRenderTarget> rt, |
return nullptr; |
} |
+ if (!checkConfigAndColorSpace(rt->config(), colorSpace.get())) { |
+ return nullptr; |
+ } |
bool useDIF = false; |
if (surfaceProps) { |