Add SkImage::MakeFromYUVAPixmaps
Bug: skia:7903
Change-Id: I41ee31ad3657aee372e22ec3e7a0a317e31b2791
Reviewed-on: https://skia-review.googlesource.com/c/171007
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index 8ea25c0..00c2fe1 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -743,6 +743,7 @@
}
GrBackendTexture yuvaTextures[4];
+ SkPixmap yuvaPixmaps[4];
for (int i = 0; i < 4; ++i) {
if (!used[i]) {
@@ -757,9 +758,12 @@
false,
GrMipMapped::kNo,
resultBMs[i].rowBytes());
+ yuvaPixmaps[i] = resultBMs[i].pixmap();
}
- if (counter & 0x1) {
+ int counterMod = counter % 3;
+ switch (counterMod) {
+ case 0:
fImages[opaque][cs][format] = SkImage::MakeFromYUVATexturesCopy(
context,
(SkYUVColorSpace)cs,
@@ -767,7 +771,8 @@
yuvaIndices,
{ fOriginalBMs[opaque].width(), fOriginalBMs[opaque].height() },
kTopLeft_GrSurfaceOrigin);
- } else {
+ break;
+ case 1:
fImages[opaque][cs][format] = SkImage::MakeFromYUVATextures(
context,
(SkYUVColorSpace)cs,
@@ -775,7 +780,19 @@
yuvaIndices,
{ fOriginalBMs[opaque].width(), fOriginalBMs[opaque].height() },
kTopLeft_GrSurfaceOrigin);
+ break;
+ case 2:
+ default:
+ fImages[opaque][cs][format] = SkImage::MakeFromYUVAPixmaps(
+ context,
+ (SkYUVColorSpace)cs,
+ yuvaPixmaps,
+ yuvaIndices,
+ { fOriginalBMs[opaque].width(), fOriginalBMs[opaque].height() },
+ kTopLeft_GrSurfaceOrigin, true);
+ break;
}
+ ++counter;
} else {
fImages[opaque][cs][format] = make_yuv_gen_image(
fOriginalBMs[opaque].info(),
@@ -785,7 +802,6 @@
}
}
}
- ++counter;
}
}