Skip to content

Commit 88d7e62

Browse files
bsalomonSkia Commit-Bot
authored andcommitted
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 <[email protected]> Commit-Queue: Brian Salomon <[email protected]>
1 parent 1277971 commit 88d7e62

File tree

6 files changed

+32
-7
lines changed

6 files changed

+32
-7
lines changed

tests/GrMipMappedTest.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrWrappedMipMappedTest, reporter, ctxInfo) {
5555
mipMapped,
5656
renderable,
5757
GrProtected::kNo);
58+
if (!mbet) {
59+
ERRORF(reporter, "Could not make texture.");
60+
return;
61+
}
5862

5963
sk_sp<GrTextureProxy> proxy;
6064
sk_sp<SkImage> image;

tests/GrPorterDuffTest.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,10 @@ DEF_GPUTEST(PorterDuffNoDualSourceBlending, reporter, options) {
10011001

10021002
auto mbet = sk_gpu_test::ManagedBackendTexture::MakeWithoutData(
10031003
ctx, 100, 100, kRGBA_8888_SkColorType, GrMipmapped::kNo, GrRenderable::kNo);
1004+
if (!mbet) {
1005+
ERRORF(reporter, "Could not make texture.");
1006+
return;
1007+
}
10041008
GrXferProcessor::DstProxyView fakeDstProxyView;
10051009
{
10061010
sk_sp<GrTextureProxy> proxy = proxyProvider->wrapBackendTexture(

tests/GrSurfaceTest.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadOnlyTexture, reporter, context_info) {
361361
for (auto ioType : {kRead_GrIOType, kRW_GrIOType}) {
362362
auto mbet = sk_gpu_test::ManagedBackendTexture::MakeWithData(
363363
dContext, srcPixmap, GrRenderable::kNo, GrProtected::kNo);
364+
if (!mbet) {
365+
ERRORF(reporter, "Could not make texture.");
366+
return;
367+
}
364368
auto proxy = proxyProvider->wrapBackendTexture(mbet->texture(), kBorrow_GrWrapOwnership,
365369
GrWrapCacheable::kNo, ioType,
366370
mbet->refCountedCallback());

tests/ImageTest.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -489,12 +489,11 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrContext_colorTypeSupportedAsImage, reporter
489489

490490
auto mbet = sk_gpu_test::ManagedBackendTexture::MakeWithoutData(
491491
dContext, kSize, kSize, colorType, GrMipmapped::kNo, GrRenderable::kNo);
492-
if (!mbet) {
493-
ERRORF(reporter, "Could not create texture with color type %d.", colorType);
494-
continue;
492+
sk_sp<SkImage> img;
493+
if (mbet) {
494+
img = SkImage::MakeFromTexture(dContext, mbet->texture(), kTopLeft_GrSurfaceOrigin,
495+
colorType, kOpaque_SkAlphaType, nullptr);
495496
}
496-
auto img = SkImage::MakeFromTexture(dContext, mbet->texture(), kTopLeft_GrSurfaceOrigin,
497-
colorType, kOpaque_SkAlphaType, nullptr);
498497
REPORTER_ASSERT(reporter, can == SkToBool(img),
499498
"colorTypeSupportedAsImage:%d, actual:%d, ct:%d", can, SkToBool(img),
500499
colorType);
@@ -839,6 +838,7 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, reporter, c
839838
GrProtected::kNo);
840839
if (!mbet) {
841840
ERRORF(reporter, "couldn't create backend texture\n");
841+
return;
842842
}
843843

844844
TextureReleaseChecker releaseChecker;

tools/gpu/BackendTextureImageFactory.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ sk_sp<SkImage> MakeBackendTextureImage(GrDirectContext* dContext,
3131
src = &temp;
3232
}
3333
auto mbet = ManagedBackendTexture::MakeWithData(dContext, src, 1, renderable, GrProtected::kNo);
34+
if (!mbet) {
35+
return nullptr;
36+
}
3437
return SkImage::MakeFromTexture(dContext,
3538
mbet->texture(),
3639
origin,
@@ -61,7 +64,9 @@ sk_sp<SkImage> MakeBackendTextureImage(GrDirectContext* dContext,
6164
mipmapped,
6265
renderable,
6366
GrProtected::kNo);
64-
67+
if (!mbet) {
68+
return nullptr;
69+
}
6570
return SkImage::MakeFromTexture(dContext,
6671
mbet->texture(),
6772
origin,

tools/gpu/ManagedBackendTexture.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,24 @@ inline sk_sp<ManagedBackendTexture> ManagedBackendTexture::MakeWithData(GrDirect
9898
mbet->fTexture = dContext->createBackendTexture(std::forward<Args>(args)...,
9999
ReleaseProc,
100100
mbet->releaseContext());
101+
if (!mbet->fTexture.isValid()) {
102+
return nullptr;
103+
}
101104
return mbet;
102105
}
103106

104107
template <typename... Args>
105108
inline sk_sp<ManagedBackendTexture> ManagedBackendTexture::MakeWithoutData(
106109
GrDirectContext* dContext,
107110
Args&&... args) {
111+
GrBackendTexture texture =
112+
dContext->createBackendTexture(std::forward<Args>(args)...);
113+
if (!texture.isValid()) {
114+
return nullptr;
115+
}
108116
sk_sp<ManagedBackendTexture> mbet(new ManagedBackendTexture);
109117
mbet->fDContext = sk_ref_sp(dContext);
110-
mbet->fTexture = dContext->createBackendTexture(std::forward<Args>(args)...);
118+
mbet->fTexture = std::move(texture);
111119
return mbet;
112120
}
113121

0 commit comments

Comments
 (0)