aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
authorGravatar Stan Iliev <stani@google.com>2017-06-02 10:29:21 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-02 14:51:24 +0000
commit7e910df7f133e80293117bdd069ed25998d10f8c (patch)
tree5bfeea96c4904ba67fa551a76def78f17470ad73 /src/image
parentaffa6a3da87e9ea85f1d4fe3137b5bccbbc56f92 (diff)
Implement an SkImage backed by a Android hardware buffer
Create a new SkImage public API to make an image from an Android hardware buffer. Implementation is using a SkImageGenerator derived class GrAndroidBufferImageGenerator. A new EGLImage texture is created, which is then wrapped with GrTextureProxy. Bug: skia: Change-Id: I610a4c5a58198686ce7c03e9a0adad3f9d2342e0 Reviewed-on: https://skia-review.googlesource.com/17789 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Stan Iliev <stani@google.com>
Diffstat (limited to 'src/image')
-rw-r--r--src/image/SkImage_Gpu.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index efdd2d7468..b1eac9736c 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -12,6 +12,9 @@
#include "SkAutoPixmapStorage.h"
#include "GrBackendSurface.h"
#include "GrBackendTextureImageGenerator.h"
+#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+#include "GrAHardwareBufferImageGenerator.h"
+#endif
#include "GrBitmapTextureMaker.h"
#include "GrCaps.h"
#include "GrContext.h"
@@ -502,6 +505,14 @@ sk_sp<SkImage> SkImage::MakeCrossContextFromEncoded(GrContext* context, sk_sp<Sk
return SkImage::MakeFromGenerator(std::move(gen));
}
+#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+sk_sp<SkImage> SkImage::MakeFromAHardwareBuffer(AHardwareBuffer* graphicBuffer, SkAlphaType at,
+ sk_sp<SkColorSpace> cs) {
+ auto gen = GrAHardwareBufferImageGenerator::Make(graphicBuffer, at, cs);
+ return SkImage::MakeFromGenerator(std::move(gen));
+}
+#endif
+
sk_sp<SkImage> SkImage::makeNonTextureImage() const {
if (!this->isTextureBacked()) {
return sk_ref_sp(const_cast<SkImage*>(this));