Chromium Code Reviews| 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) { |