summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Han <modan@google.com>2021-01-28 19:43:19 +0000
committerAnthony Han <modan@google.com>2021-01-29 02:01:11 +0000
commit5d0a08fd60ba9d3b15da81c512195abd755dcd46 (patch)
tree9d92f0908dcaf0af17d68bc0df01868d24b5764e
parenta413770d0d7b1a3f5daae8caf85a37818b639a38 (diff)
downloadgchips-5d0a08fd60ba9d3b15da81c512195abd755dcd46.tar.gz
libGralloc4Wrapper: Add retain and release
These functions are useful for counting references of buffers created by libGralloc4Wrapper. Bug: 168763166 Test: run aion_test multiple times, use dumpsys meminfo to verify there's no ion memory leak Change-Id: I4b192e25c23f5903167f31f13a0fa6c791258c4b
-rw-r--r--gralloc4/src/Android.bp1
-rw-r--r--gralloc4/src/libGralloc4Wrapper/include/gralloc4/gralloc_vendor_interface.h4
-rw-r--r--gralloc4/src/libGralloc4Wrapper/wrapper.cpp20
3 files changed, 25 insertions, 0 deletions
diff --git a/gralloc4/src/Android.bp b/gralloc4/src/Android.bp
index 0b4b64a..4cc6e77 100644
--- a/gralloc4/src/Android.bp
+++ b/gralloc4/src/Android.bp
@@ -41,6 +41,7 @@ cc_library_shared {
"core/format_info.cpp",
"core/mali_gralloc_formats.cpp",
"core/mali_gralloc_bufferallocation.cpp",
+ "core/mali_gralloc_reference.cpp",
"core/mali_gralloc_debug.cpp",
":libgralloc_hidl_common_shared_metadata",
],
diff --git a/gralloc4/src/libGralloc4Wrapper/include/gralloc4/gralloc_vendor_interface.h b/gralloc4/src/libGralloc4Wrapper/include/gralloc4/gralloc_vendor_interface.h
index 6387845..45054c8 100644
--- a/gralloc4/src/libGralloc4Wrapper/include/gralloc4/gralloc_vendor_interface.h
+++ b/gralloc4/src/libGralloc4Wrapper/include/gralloc4/gralloc_vendor_interface.h
@@ -23,6 +23,7 @@
#include <sys/types.h>
#include <cstdint>
#include <system/graphics-base-v1.0.h>
+#include <android/hardware/graphics/mapper/4.0/IMapper.h>
namespace android::hardware::graphics::allocator::priv {
@@ -42,6 +43,9 @@ void setFormat(Descriptor &descriptor, int format);
buffer_handle_t createNativeHandle(const Descriptor &descriptor);
+android::hardware::graphics::mapper::V4_0::Error retain(buffer_handle_t handle);
+android::hardware::graphics::mapper::V4_0::Error release(buffer_handle_t handle);
+
} // namespace android::hardware::graphics::allocator::priv
#endif
diff --git a/gralloc4/src/libGralloc4Wrapper/wrapper.cpp b/gralloc4/src/libGralloc4Wrapper/wrapper.cpp
index c516f21..07374ad 100644
--- a/gralloc4/src/libGralloc4Wrapper/wrapper.cpp
+++ b/gralloc4/src/libGralloc4Wrapper/wrapper.cpp
@@ -5,6 +5,7 @@
#include "core/format_info.h"
#include "core/mali_gralloc_bufferdescriptor.h"
#include "core/mali_gralloc_bufferallocation.h"
+#include "core/mali_gralloc_reference.h"
#include "allocator/mali_gralloc_ion.h"
#include "hidl_common/SharedMetadata.h"
#include "gralloc_priv.h"
@@ -186,4 +187,23 @@ buffer_handle_t createNativeHandle(const Descriptor &descriptor) {
return tmp_buffer;
}
+
+android::hardware::graphics::mapper::V4_0::Error retain(buffer_handle_t handle) {
+ int err = mali_gralloc_reference_retain(handle);
+ if (err == -EINVAL) {
+ return android::hardware::graphics::mapper::V4_0::Error::BAD_BUFFER;
+ } else if (err) {
+ return android::hardware::graphics::mapper::V4_0::Error::NO_RESOURCES;
+ }
+ return android::hardware::graphics::mapper::V4_0::Error::NONE;
+}
+
+android::hardware::graphics::mapper::V4_0::Error release(buffer_handle_t handle) {
+ int err = mali_gralloc_reference_release(handle, true);
+ if (err) {
+ return android::hardware::graphics::mapper::V4_0::Error::BAD_BUFFER;
+ }
+ return android::hardware::graphics::mapper::V4_0::Error::NONE;
+}
+
} // namespace android::hardware::graphics::allocator::priv