Snap for 6549063 from 7288081543522bc03893d1e47cca5950f607d9c4 to rvc-release

Change-Id: Id6521dd58ba1158dd067756dd4d602a2e432382d
diff --git a/src/Common/GrallocAndroid.cpp b/src/Common/GrallocAndroid.cpp
index 08c2ece..963085c 100644
--- a/src/Common/GrallocAndroid.cpp
+++ b/src/Common/GrallocAndroid.cpp
@@ -90,7 +90,7 @@
 	if (m_gralloc4_mapper != nullptr)
 	{
 		native_handle_t* native_handle = const_cast<native_handle_t*>(handle);
-		return m_gralloc4_mapper->freeBuffer(native_handle).isOk();
+		return m_gralloc4_mapper->freeBuffer(native_handle).isOk() ? 0 : 1;
 	}
 #endif
 
diff --git a/src/System/GrallocAndroid.cpp b/src/System/GrallocAndroid.cpp
index 08c2ece..963085c 100644
--- a/src/System/GrallocAndroid.cpp
+++ b/src/System/GrallocAndroid.cpp
@@ -90,7 +90,7 @@
 	if (m_gralloc4_mapper != nullptr)
 	{
 		native_handle_t* native_handle = const_cast<native_handle_t*>(handle);
-		return m_gralloc4_mapper->freeBuffer(native_handle).isOk();
+		return m_gralloc4_mapper->freeBuffer(native_handle).isOk() ? 0 : 1;
 	}
 #endif
 
diff --git a/src/Vulkan/VkImage.cpp b/src/Vulkan/VkImage.cpp
index 7c2872a..1b287b6 100644
--- a/src/Vulkan/VkImage.cpp
+++ b/src/Vulkan/VkImage.cpp
@@ -190,7 +190,17 @@
 	void *nativeBuffer = nullptr;
 	VkExtent3D extent = getMipLevelExtent(VK_IMAGE_ASPECT_COLOR_BIT, 0);
 
-	if(GrallocModule::getInstance()->lock(backingMemory.nativeHandle, GRALLOC_USAGE_SW_WRITE_OFTEN, 0, 0, extent.width, extent.height, &nativeBuffer) != 0)
+	buffer_handle_t importedBufferHandle = nullptr;
+	if(GrallocModule::getInstance()->import(backingMemory.nativeHandle, &importedBufferHandle) != 0)
+	{
+		return VK_ERROR_OUT_OF_DATE_KHR;
+	}
+	if(!importedBufferHandle)
+	{
+		return VK_ERROR_OUT_OF_DATE_KHR;
+	}
+
+	if(GrallocModule::getInstance()->lock(importedBufferHandle, GRALLOC_USAGE_SW_WRITE_OFTEN, 0, 0, extent.width, extent.height, &nativeBuffer) != 0)
 	{
 		return VK_ERROR_OUT_OF_DATE_KHR;
 	}
@@ -211,7 +221,12 @@
 		memcpy(dstBuffer + (i * bufferRowBytes), srcBuffer + (i * imageRowBytes), imageRowBytes);
 	}
 
-	if(GrallocModule::getInstance()->unlock(backingMemory.nativeHandle) != 0)
+	if(GrallocModule::getInstance()->unlock(importedBufferHandle) != 0)
+	{
+		return VK_ERROR_OUT_OF_DATE_KHR;
+	}
+
+	if (GrallocModule::getInstance()->release(importedBufferHandle) != 0)
 	{
 		return VK_ERROR_OUT_OF_DATE_KHR;
 	}