Use the NDK headers for AHardwareBuffer.
Bug: 6672
Change-Id: I5abd86149e912d91234853109ebd2a6b0ac5eaa2
Reviewed-on: https://skia-review.googlesource.com/20980
Reviewed-by: Stan Iliev <stani@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 6ead044..7595076 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -486,6 +486,11 @@
libs = []
if (is_android) {
sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
+
+ # this lib is required to link against AHardwareBuffer
+ if (defined(ndk_api) && ndk_api >= 26) {
+ libs += [ "android" ]
+ }
} else if (skia_use_egl) {
sources += [ "src/gpu/gl/egl/GrGLCreateNativeInterface_egl.cpp" ]
libs += [ "EGL" ]
diff --git a/include/core/SkImage.h b/include/core/SkImage.h
index ba2cc7e..bdb04ff 100644
--- a/include/core/SkImage.h
+++ b/include/core/SkImage.h
@@ -29,9 +29,7 @@
class GrContextThreadSafeProxy;
class GrTexture;
-#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
struct AHardwareBuffer;
-#endif
/**
* SkImage is an abstraction for drawing a rectagle of pixels, though the
@@ -236,7 +234,7 @@
const SkMatrix*, const SkPaint*, BitDepth,
sk_sp<SkColorSpace>);
-#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26
/**
* Create a new image from the an Android hardware buffer.
* The new image takes a reference on the buffer.
diff --git a/src/gpu/GrAHardwareBufferImageGenerator.cpp b/src/gpu/GrAHardwareBufferImageGenerator.cpp
index 50ef50e..8f6cb88 100644
--- a/src/gpu/GrAHardwareBufferImageGenerator.cpp
+++ b/src/gpu/GrAHardwareBufferImageGenerator.cpp
@@ -6,13 +6,14 @@
*/
#include "SkTypes.h"
-//TODO: This define is temporary and we will compile with NDK after
-//TODO: Skia bug 6672 is resolved.
-#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+
+#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26
#define GL_GLEXT_PROTOTYPES
#define EGL_EGLEXT_PROTOTYPES
#include "GrAHardwareBufferImageGenerator.h"
+#include <android/hardware_buffer.h>
+
#include "GrBackendSurface.h"
#include "GrContext.h"
#include "GrContextPriv.h"
@@ -65,8 +66,7 @@
GrAHardwareBufferImageGenerator::GrAHardwareBufferImageGenerator(const SkImageInfo& info,
AHardwareBuffer* graphicBuffer, SkAlphaType alphaType)
: INHERITED(info)
- , fGraphicBuffer(graphicBuffer)
- , fAlphaType(alphaType) {
+ , fGraphicBuffer(graphicBuffer) {
AHardwareBuffer_acquire(fGraphicBuffer);
}
diff --git a/src/gpu/GrAHardwareBufferImageGenerator.h b/src/gpu/GrAHardwareBufferImageGenerator.h
index 521fc7c..e758138 100644
--- a/src/gpu/GrAHardwareBufferImageGenerator.h
+++ b/src/gpu/GrAHardwareBufferImageGenerator.h
@@ -9,7 +9,7 @@
#include "SkImageGenerator.h"
-#include <android/hardware_buffer.h>
+struct AHardwareBuffer;
/**
* GrAHardwareBufferImageGenerator allows to create an SkImage attached to
@@ -45,7 +45,6 @@
static void deleteImageTexture(void* ctx);
AHardwareBuffer* fGraphicBuffer;
- SkAlphaType fAlphaType;
typedef SkImageGenerator INHERITED;
};
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 4e8b28b..1d6319e 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -12,9 +12,7 @@
#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"
@@ -512,7 +510,7 @@
return SkImage::MakeFromGenerator(std::move(gen));
}
-#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26
sk_sp<SkImage> SkImage::MakeFromAHardwareBuffer(AHardwareBuffer* graphicBuffer, SkAlphaType at,
sk_sp<SkColorSpace> cs) {
auto gen = GrAHardwareBufferImageGenerator::Make(graphicBuffer, at, cs);