Make ManagedBackendTexture fail on invalid GrBackendTexture

Makes it more sensible.

A bunch of call sites we're already written to expect this. Update
some others.

Change-Id: I77c28045ebf01e6aa9d92d2ebc37287604ec10c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332544
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/tools/gpu/BackendTextureImageFactory.cpp b/tools/gpu/BackendTextureImageFactory.cpp
index e2950af..700f64f5 100644
--- a/tools/gpu/BackendTextureImageFactory.cpp
+++ b/tools/gpu/BackendTextureImageFactory.cpp
@@ -31,6 +31,9 @@
         src = &temp;
     }
     auto mbet = ManagedBackendTexture::MakeWithData(dContext, src, 1, renderable, GrProtected::kNo);
+    if (!mbet) {
+        return nullptr;
+    }
     return SkImage::MakeFromTexture(dContext,
                                     mbet->texture(),
                                     origin,
@@ -61,7 +64,9 @@
                                                     mipmapped,
                                                     renderable,
                                                     GrProtected::kNo);
-
+    if (!mbet) {
+        return nullptr;
+    }
     return SkImage::MakeFromTexture(dContext,
                                     mbet->texture(),
                                     origin,
diff --git a/tools/gpu/ManagedBackendTexture.h b/tools/gpu/ManagedBackendTexture.h
index 7c65d54..602db34 100644
--- a/tools/gpu/ManagedBackendTexture.h
+++ b/tools/gpu/ManagedBackendTexture.h
@@ -98,6 +98,9 @@
     mbet->fTexture = dContext->createBackendTexture(std::forward<Args>(args)...,
                                                     ReleaseProc,
                                                     mbet->releaseContext());
+    if (!mbet->fTexture.isValid()) {
+        return nullptr;
+    }
     return mbet;
 }
 
@@ -105,9 +108,14 @@
 inline sk_sp<ManagedBackendTexture> ManagedBackendTexture::MakeWithoutData(
         GrDirectContext* dContext,
         Args&&... args) {
+    GrBackendTexture texture =
+            dContext->createBackendTexture(std::forward<Args>(args)...);
+    if (!texture.isValid()) {
+        return nullptr;
+    }
     sk_sp<ManagedBackendTexture> mbet(new ManagedBackendTexture);
     mbet->fDContext = sk_ref_sp(dContext);
-    mbet->fTexture = dContext->createBackendTexture(std::forward<Args>(args)...);
+    mbet->fTexture = std::move(texture);
     return mbet;
 }