Revert "Revert "Remove use of deprecated gralloc APIs.""

This reverts commit 926fc9d715878b77d3d90bb81f9a28bff0e029c5.
Bug: 35427231
Test: netflix, youtube, play movies

Change-Id: I08375af6dbfbd22adbadb2cae75594e1ea5aae72
diff --git a/ISV/Android.mk b/ISV/Android.mk
index 07cf4c7..168b532 100644
--- a/ISV/Android.mk
+++ b/ISV/Android.mk
@@ -26,9 +26,11 @@
     libva-android \
     libmrm_omx_adaptor \
     libmedia \
+    libsync \
 
 LOCAL_C_INCLUDES := \
     $(LOCAL_PATH)/include \
+    system/core/libsync/include \
     $(call include-path-for, frameworks-openmax) \
     $(TARGET_OUT_HEADERS)/libmedia_utils_vpp \
     $(TARGET_OUT_HEADERS)/display \
diff --git a/ISV/base/isv_bufmanager.cpp b/ISV/base/isv_bufmanager.cpp
index 3b02ab4..8e5aa2d 100644
--- a/ISV/base/isv_bufmanager.cpp
+++ b/ISV/base/isv_bufmanager.cpp
@@ -22,6 +22,7 @@
 #include "isv_bufmanager.h"
 #ifndef TARGET_VPP_USE_GEN
 #include "hal_public.h"
+#include <sync/sync.h>
 #endif
 
 //#define LOG_NDEBUG 0
@@ -69,12 +70,12 @@
     }
 
     int32_t err = 0;
+#ifdef TARGET_VPP_USE_GEN
     if (!mpGralloc) {
         err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, (hw_module_t const**)&mpGralloc);
         if (0 != err)
             return UNKNOWN_ERROR;
     }
-#ifdef TARGET_VPP_USE_GEN
     ufo_buffer_details_t info;
 
     memset(&info, 0, sizeof(ufo_buffer_details_t));
@@ -88,6 +89,11 @@
     mStride = info.pitch;
     mColorFormat = info.format;
 #else
+    if (!mpGralloc) {
+        err = gralloc_open_img(&mpGralloc);
+        if (0 != err)
+            return UNKNOWN_ERROR;
+    }
     IMG_native_handle_t* grallocHandle = (IMG_native_handle_t*)mGrallocHandle;
     mStride = grallocHandle->aiStride[0];
     mSurfaceHeight = grallocHandle->iHeight;
@@ -126,9 +132,13 @@
     if ((mFlags & ISV_BUFFER_NEED_CLEAR) && mpGralloc) {
         int32_t usage = GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN;
         void *vaddr[GRALLOC_SUB_BUFFER_MAX];
+        const gralloc1_rect_t r = {
+            .width  = (int32_t)mStride,
+            .height = (int32_t)mSurfaceHeight
+        };
+        int err, releaseFence = -1;
 
-        int32_t err = mpGralloc->lock(mpGralloc, (buffer_handle_t)mGrallocHandle, usage, 0, 0, mStride, mSurfaceHeight, &vaddr[0]);
-
+        err = gralloc_lock_async_img(mpGralloc, (buffer_handle_t)mGrallocHandle, usage, &r, &vaddr[0], -1);
         if (0 != err) {
             ALOGE("%s: get graphic buffer ptr failed", __func__);
             return UNKNOWN_ERROR;
@@ -140,7 +150,11 @@
             memcpy(ptr, random_buf, sizeof(random_buf));
             ptr += sizeof(random_buf);
         }
-        mpGralloc->unlock(mpGralloc, (buffer_handle_t)mGrallocHandle);
+        gralloc_unlock_async_img(mpGralloc, (buffer_handle_t)mGrallocHandle, &releaseFence);
+        if (releaseFence >= 0) {
+            sync_wait(releaseFence, -1);
+            close(releaseFence);
+        }
         ALOGD_IF(ISV_BUFFER_MANAGER_DEBUG, "%s: clear isv buffer %p finished, buffer size %d", __func__, this, buffer_size);
         mFlags &= ~ISV_BUFFER_NEED_CLEAR;
     }
diff --git a/ISV/include/isv_bufmanager.h b/ISV/include/isv_bufmanager.h
index 18c3209..7b0bfb0 100644
--- a/ISV/include/isv_bufmanager.h
+++ b/ISV/include/isv_bufmanager.h
@@ -134,7 +134,11 @@
     ISV_BUFFERTYPE mType;
     int32_t mSurface;
     uint32_t mFlags;
+#ifdef TARGET_VPP_USE_GEN
     gralloc_module_t* mpGralloc;
+#else
+    const hw_device_t* mpGralloc;
+#endif
 };
 
 class ISVBufferManager: public RefBase