diff options
author | 2017-06-02 10:29:21 -0400 | |
---|---|---|
committer | 2017-06-02 14:51:24 +0000 | |
commit | 7e910df7f133e80293117bdd069ed25998d10f8c (patch) | |
tree | 5bfeea96c4904ba67fa551a76def78f17470ad73 /src/image | |
parent | affa6a3da87e9ea85f1d4fe3137b5bccbbc56f92 (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.cpp | 11 |
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)); |