Skip to content

Commit e34b282

Browse files
Adlai-HollerSkia Commit-Bot
authored andcommitted
Migrate MakeFromAdoptedTexture to GrDirectContext
More recontexting for SkImage. Chrome flag in CL 2323135. Flutter migration landed in flutter#19962 Bug: skia:104662 Change-Id: Id725eb130310639457ba90f378ecdb334dd5f3cd Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306182 Auto-Submit: Adlai Holler <adlai@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
1 parent 7b45c2f commit e34b282

File tree

6 files changed

+47
-21
lines changed

6 files changed

+47
-21
lines changed

docs/examples/Image_MakeFromAdoptedTexture.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@
44
// HASH=b034517e39394b7543f06ec885e36d7d
55
REG_FIDDLE(Image_MakeFromAdoptedTexture, 256, 256, false, 5) {
66
void draw(SkCanvas* canvas) {
7-
if (!canvas->getGrContext()) {
7+
GrDirectContext* dContext = GrAsDirectContext(canvas->recordingContext());
8+
// Example does not support DDL.
9+
if (!dContext) {
810
return;
911
}
1012
canvas->scale(.5f, .5f);
1113
canvas->clear(0x7f3f5f7f);
1214
int x = 0, y = 0;
1315
for (auto origin : { kBottomLeft_GrSurfaceOrigin, kTopLeft_GrSurfaceOrigin } ) {
1416
for (auto alpha : { kOpaque_SkAlphaType, kPremul_SkAlphaType, kUnpremul_SkAlphaType } ) {
15-
sk_sp<SkImage> image = SkImage::MakeFromAdoptedTexture(canvas->getGrContext(),
17+
sk_sp<SkImage> image = SkImage::MakeFromAdoptedTexture(dContext,
1618
backEndTexture, origin,
1719
kRGBA_8888_SkColorType, alpha);
1820
canvas->drawImage(image, x, y);

gm/rectangletexture.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,11 @@ class RectangleTexture : public GpuGM {
9494
SkUNREACHABLE;
9595
}
9696

97-
sk_sp<SkImage> createRectangleTextureImg(GrDirectContext* context, GrSurfaceOrigin origin,
97+
sk_sp<SkImage> createRectangleTextureImg(GrDirectContext* dContext, GrSurfaceOrigin origin,
9898
const SkBitmap content) {
9999
SkASSERT(content.colorType() == kRGBA_8888_SkColorType);
100100
auto format = GrBackendFormat::MakeGL(GR_GL_RGBA8, GR_GL_TEXTURE_RECTANGLE);
101-
auto bet = context->createBackendTexture(content.width(), content.height(), format,
101+
auto bet = dContext->createBackendTexture(content.width(), content.height(), format,
102102
GrMipmapped::kNo, GrRenderable::kNo);
103103
if (!bet.isValid()) {
104104
return nullptr;
@@ -116,10 +116,10 @@ class RectangleTexture : public GpuGM {
116116
}
117117
pm = &tempPM;
118118
}
119-
if (!context->updateBackendTexture(bet, pm, 1, nullptr, nullptr)) {
120-
context->deleteBackendTexture(bet);
119+
if (!dContext->updateBackendTexture(bet, pm, 1, nullptr, nullptr)) {
120+
dContext->deleteBackendTexture(bet);
121121
}
122-
return SkImage::MakeFromAdoptedTexture(context, bet, origin, kRGBA_8888_SkColorType);
122+
return SkImage::MakeFromAdoptedTexture(dContext, bet, origin, kRGBA_8888_SkColorType);
123123
}
124124

125125
DrawResult onGpuSetup(GrDirectContext* context, SkString* errorMsg) override {

include/core/SkImage.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,12 +400,21 @@ class SK_API SkImage : public SkRefCnt {
400400
@param colorSpace range of colors; may be nullptr
401401
@return created SkImage, or nullptr
402402
*/
403+
static sk_sp<SkImage> MakeFromAdoptedTexture(GrDirectContext* context,
404+
const GrBackendTexture& backendTexture,
405+
GrSurfaceOrigin surfaceOrigin,
406+
SkColorType colorType,
407+
SkAlphaType alphaType = kPremul_SkAlphaType,
408+
sk_sp<SkColorSpace> colorSpace = nullptr);
409+
410+
#ifdef SK_IMAGE_MAKE_FROM_ADOPTED_TEXTURE_LEGACY_API
403411
static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context,
404412
const GrBackendTexture& backendTexture,
405413
GrSurfaceOrigin surfaceOrigin,
406414
SkColorType colorType,
407415
SkAlphaType alphaType = kPremul_SkAlphaType,
408416
sk_sp<SkColorSpace> colorSpace = nullptr);
417+
#endif
409418

410419
/** Creates an SkImage by flattening the specified YUVA planes into a single, interleaved RGBA
411420
image.

src/image/SkImage.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,22 @@ bool SkImage::MakeBackendTextureFromSkImage(GrContext*,
566566
return false;
567567
}
568568

569-
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext* ctx,
570-
const GrBackendTexture& tex, GrSurfaceOrigin origin,
571-
SkColorType ct, SkAlphaType at,
572-
sk_sp<SkColorSpace> cs) {
569+
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrDirectContext*,
570+
const GrBackendTexture&, GrSurfaceOrigin,
571+
SkColorType, SkAlphaType,
572+
sk_sp<SkColorSpace>) {
573573
return nullptr;
574574
}
575575

576+
#ifdef SK_IMAGE_MAKE_FROM_ADOPTED_TEXTURE_LEGACY_API
577+
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext*,
578+
const GrBackendTexture&, GrSurfaceOrigin,
579+
SkColorType, SkAlphaType,
580+
sk_sp<SkColorSpace>) {
581+
return nullptr;
582+
}
583+
#endif
584+
576585
sk_sp<SkImage> SkImage::MakeFromYUVATexturesCopy(GrRecordingContext*,
577586
SkYUVColorSpace,
578587
const GrBackendTexture[],

src/image/SkImage_Gpu.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,16 +251,16 @@ sk_sp<SkImage> SkImage::MakeFromTexture(GrContext* ctx,
251251
kBorrow_GrWrapOwnership, std::move(releaseHelper));
252252
}
253253

254-
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext* ctx,
254+
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrDirectContext* dContext,
255255
const GrBackendTexture& tex, GrSurfaceOrigin origin,
256256
SkColorType ct, SkAlphaType at,
257257
sk_sp<SkColorSpace> cs) {
258-
if (!ctx || !ctx->priv().resourceProvider()) {
258+
if (!dContext || !dContext->priv().resourceProvider()) {
259259
// We have a DDL context and we don't support adopted textures for them.
260260
return nullptr;
261261
}
262262

263-
const GrCaps* caps = ctx->priv().caps();
263+
const GrCaps* caps = dContext->priv().caps();
264264

265265
GrColorType grColorType = SkColorTypeAndFormatToGrColorType(caps, ct, tex.getBackendFormat());
266266
if (GrColorType::kUnknown == grColorType) {
@@ -271,10 +271,20 @@ sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext* ctx,
271271
return nullptr;
272272
}
273273

274-
return new_wrapped_texture_common(ctx, tex, grColorType, origin, at, std::move(cs),
274+
return new_wrapped_texture_common(dContext, tex, grColorType, origin, at, std::move(cs),
275275
kAdopt_GrWrapOwnership, nullptr);
276276
}
277277

278+
#ifdef SK_IMAGE_MAKE_FROM_ADOPTED_TEXTURE_LEGACY_API
279+
sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext* ctx,
280+
const GrBackendTexture& tex, GrSurfaceOrigin origin,
281+
SkColorType ct, SkAlphaType at,
282+
sk_sp<SkColorSpace> cs) {
283+
return SkImage::MakeFromAdoptedTexture(GrAsDirectContext(ctx), tex, origin, ct,
284+
at, std::move(cs));
285+
}
286+
#endif
287+
278288
sk_sp<SkImage> SkImage::MakeTextureFromCompressed(GrDirectContext* direct, sk_sp<SkData> data,
279289
int width, int height, CompressionType type,
280290
GrMipmapped mipMapped,

tests/DeferredDisplayListTest.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -917,13 +917,9 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(DDLWrapBackendTest, reporter, ctxInfo) {
917917
}
918918

919919
// Wrapped Backend Textures are not supported in DDL
920-
sk_sp<SkImage> image =
921-
SkImage::MakeFromAdoptedTexture(deferredContext, backendTex, kTopLeft_GrSurfaceOrigin,
922-
kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr);
923-
REPORTER_ASSERT(reporter, !image);
924-
925920
TextureReleaseChecker releaseChecker;
926-
image = SkImage::MakeFromTexture(deferredContext, backendTex, kTopLeft_GrSurfaceOrigin,
921+
sk_sp<SkImage> image =
922+
SkImage::MakeFromTexture(deferredContext, backendTex, kTopLeft_GrSurfaceOrigin,
927923
kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr,
928924
TextureReleaseChecker::Release, &releaseChecker);
929925
REPORTER_ASSERT(reporter, !image);

0 commit comments

Comments
 (0)