diff options
author | Greg Daniel <egdaniel@google.com> | 2018-02-21 13:02:32 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-21 18:22:47 +0000 |
commit | 0a7aa14bf36cbb444b84902a37591d7a9c84fbd0 (patch) | |
tree | aa2769ad071df6f5250a00be9a67ef0c6baf4d44 /src | |
parent | 32f72e25bd802d15ce43a3dd7ef4a3fcfd646727 (diff) |
Add checks for failed SkImageInfo2GrPixelConfig calls
Bug: skia:7645
Change-Id: I32b9326fb43490ef6a7a99527243b68d89184ae1
Reviewed-on: https://skia-review.googlesource.com/109083
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/effects/SkTableColorFilter.cpp | 4 | ||||
-rw-r--r-- | src/gpu/GrProxyProvider.cpp | 4 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 3 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp index 124e98f8ae..46bfba99ca 100644 --- a/src/effects/SkTableColorFilter.cpp +++ b/src/effects/SkTableColorFilter.cpp @@ -448,6 +448,10 @@ std::unique_ptr<GrFragmentProcessor> ColorTableEffect::Make(GrContext* context, desc.fContext = context; desc.fConfig = SkImageInfo2GrPixelConfig(bitmap.info(), *context->caps()); + if (kUnknown_GrPixelConfig == desc.fConfig) { + return nullptr; + } + GrTextureStripAtlas* atlas = GrTextureStripAtlas::GetAtlas(desc); int row = atlas->lockRow(bitmap); sk_sp<GrTextureProxy> proxy; diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp index 724bda5a9c..0027f2a84a 100644 --- a/src/gpu/GrProxyProvider.cpp +++ b/src/gpu/GrProxyProvider.cpp @@ -214,6 +214,10 @@ sk_sp<GrTextureProxy> GrProxyProvider::createTextureProxy(sk_sp<SkImage> srcImag GrPixelConfig config = SkImageInfo2GrPixelConfig(as_IB(srcImage)->onImageInfo(), *this->caps()); + if (kUnknown_GrPixelConfig == config) { + return nullptr; + } + if (SkToBool(flags & kRenderTarget_GrSurfaceFlag)) { sampleCnt = this->caps()->getRenderTargetSampleCount(sampleCnt, config); if (!sampleCnt) { diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 9a01394691..bc5a34b132 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -159,6 +159,9 @@ sk_sp<GrRenderTargetContext> SkGpuDevice::MakeRenderTargetContext( } GrPixelConfig config = SkImageInfo2GrPixelConfig(origInfo, *context->caps()); + if (kUnknown_GrPixelConfig == config) { + return nullptr; + } // This method is used to create SkGpuDevice's for SkSurface_Gpus. In this case // they need to be exact. return context->makeDeferredRenderTargetContext( |