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;
}