diff options
Diffstat (limited to 'src/image/SkImage_Gpu.cpp')
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index bf80ac0743..9d2b9490de 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -297,11 +297,14 @@ sk_sp<SkImage> SkImage::MakeFromTexture(GrContext* ctx, const GrBackendTexture& tex, GrSurfaceOrigin origin, SkAlphaType at, sk_sp<SkColorSpace> cs, TextureReleaseProc releaseP, ReleaseContext releaseC) { + if (!ctx) { + return nullptr; + } return new_wrapped_texture_common(ctx, tex, origin, at, std::move(cs), kBorrow_GrWrapOwnership, releaseP, releaseC); } -bool validate_backend_texture(GrContext* ctx, GrBackendTexture* tex, +bool validate_backend_texture(GrContext* ctx, const GrBackendTexture& tex, GrPixelConfig* config, SkColorType ct, SkAlphaType at, sk_sp<SkColorSpace> cs) { // TODO: Create a SkImageColorInfo struct for color, alpha, and color space so we don't need to // create a fake image info here. @@ -310,15 +313,18 @@ bool validate_backend_texture(GrContext* ctx, GrBackendTexture* tex, return false; } - return ctx->caps()->validateBackendTexture(tex, ct); + return ctx->caps()->validateBackendTexture(tex, ct, config); } sk_sp<SkImage> SkImage::MakeFromTexture(GrContext* ctx, const GrBackendTexture& tex, GrSurfaceOrigin origin, SkColorType ct, SkAlphaType at, sk_sp<SkColorSpace> cs, TextureReleaseProc releaseP, ReleaseContext releaseC) { + if (!ctx) { + return nullptr; + } GrBackendTexture texCopy = tex; - if (!validate_backend_texture(ctx, &texCopy, ct, at, cs)) { + if (!validate_backend_texture(ctx, texCopy, &texCopy.fConfig, ct, at, cs)) { return nullptr; } return MakeFromTexture(ctx, texCopy, origin, at, cs, releaseP, releaseC); @@ -336,7 +342,7 @@ sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext* ctx, SkColorType ct, SkAlphaType at, sk_sp<SkColorSpace> cs) { GrBackendTexture texCopy = tex; - if (!validate_backend_texture(ctx, &texCopy, ct, at, cs)) { + if (!validate_backend_texture(ctx, texCopy, &texCopy.fConfig, ct, at, cs)) { return nullptr; } return MakeFromAdoptedTexture(ctx, texCopy, origin, at, cs); |