diff --git a/src/Android.bp b/src/Android.bp
index 621b4d0..2c124a8 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -46,6 +46,7 @@
             cflags: [
                 "-DHAVE_GRALLOC1",
                 "-DHAVE_GRALLOC3",
+                "-DHAVE_GRALLOC4",
             ],
             relative_install_path: "egl",
             header_libs: [
@@ -54,6 +55,7 @@
             ],
             shared_libs: [
                 "android.hardware.graphics.mapper@3.0",
+                "android.hardware.graphics.mapper@4.0",
                 "libnativewindow",
                 "libhardware",
                 "libhidlbase",
@@ -546,6 +548,7 @@
         "-D__STDC_FORMAT_MACROS",
         "-DHAVE_GRALLOC1",
         "-DHAVE_GRALLOC3",
+        "-DHAVE_GRALLOC4",
         "-DNO_SANITIZE_FUNCTION=",
         // FIXME: Use <android/api-level.h> instead?
         "-DANDROID_PLATFORM_SDK_VERSION=10000",
@@ -584,6 +587,7 @@
             ],
             shared_libs: [
                 "android.hardware.graphics.mapper@3.0",
+                "android.hardware.graphics.mapper@4.0",
                 "libnativewindow",
                 "libhardware",
                 "libhidlbase",
diff --git a/src/Common/GrallocAndroid.cpp b/src/Common/GrallocAndroid.cpp
index 6a12b2b..ffdf52e 100644
--- a/src/Common/GrallocAndroid.cpp
+++ b/src/Common/GrallocAndroid.cpp
@@ -23,6 +23,11 @@
 using V3Mapper = android::hardware::graphics::mapper::V3_0::IMapper;
 using android::hardware::hidl_handle;
 #endif
+#ifdef HAVE_GRALLOC4
+using V4Error = android::hardware::graphics::mapper::V4_0::Error;
+using V4Mapper = android::hardware::graphics::mapper::V4_0::IMapper;
+using android::hardware::hidl_handle;
+#endif
 
 GrallocModule *GrallocModule::getInstance()
 {
@@ -32,6 +37,14 @@
 
 GrallocModule::GrallocModule()
 {
+#ifdef HAVE_GRALLOC4
+	m_gralloc4_mapper = V4Mapper::getService();
+	if(m_gralloc4_mapper != nullptr)
+	{
+		return;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	m_gralloc3_mapper = V3Mapper::getService();
 	if(m_gralloc3_mapper != nullptr)
@@ -64,6 +77,22 @@
 
 int GrallocModule::import(buffer_handle_t handle, buffer_handle_t *imported_handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		V4Error error;
+		auto ret = m_gralloc4_mapper->importBuffer(handle,
+		                                           [&](const auto &tmp_err, const auto &tmp_buf) {
+			                                           error = tmp_err;
+			                                           if(error == V4Error::NONE)
+			                                           {
+				                                           *imported_handle = static_cast<buffer_handle_t>(tmp_buf);
+			                                           }
+		                                           });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -86,6 +115,14 @@
 
 int GrallocModule::release(buffer_handle_t handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+		return m_gralloc4_mapper->freeBuffer(native_handle).isOk() ? 0 : 1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -99,6 +136,32 @@
 
 int GrallocModule::lock(buffer_handle_t handle, int usage, int left, int top, int width, int height, void **vaddr)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+
+		V4Mapper::Rect rect;
+		rect.left = left;
+		rect.top = top;
+		rect.width = width;
+		rect.height = height;
+
+		hidl_handle empty_fence_handle;
+
+		V4Error error;
+		auto ret = m_gralloc4_mapper->lock(native_handle, usage, rect, empty_fence_handle,
+		                                   [&](const auto &tmp_err, const auto &tmp_vaddr) {
+			                                   error = tmp_err;
+			                                   if(tmp_err == V4Error::NONE)
+			                                   {
+				                                   *vaddr = tmp_vaddr;
+			                                   }
+		                                   });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -155,6 +218,20 @@
 
 int GrallocModule::unlock(buffer_handle_t handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+
+		V4Error error;
+		auto ret = m_gralloc4_mapper->unlock(native_handle,
+		                                     [&](const auto &tmp_err, const auto &) {
+			                                     error = tmp_err;
+		                                     });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
diff --git a/src/Common/GrallocAndroid.hpp b/src/Common/GrallocAndroid.hpp
index 265608c..058eaf1 100644
--- a/src/Common/GrallocAndroid.hpp
+++ b/src/Common/GrallocAndroid.hpp
@@ -17,10 +17,15 @@
 
 #include <hardware/gralloc.h>
 #include <hardware/gralloc1.h>
+
 #ifdef HAVE_GRALLOC3
 #	include <android/hardware/graphics/mapper/3.0/IMapper.h>
 #	include <utils/StrongPointer.h>
 #endif
+#ifdef HAVE_GRALLOC4
+#	include <android/hardware/graphics/mapper/4.0/IMapper.h>
+#	include <utils/StrongPointer.h>
+#endif
 
 #include <unistd.h>  // for close()
 
@@ -47,6 +52,9 @@
 #ifdef HAVE_GRALLOC3
 	android::sp<android::hardware::graphics::mapper::V3_0::IMapper> m_gralloc3_mapper;
 #endif
+#ifdef HAVE_GRALLOC4
+	android::sp<android::hardware::graphics::mapper::V4_0::IMapper> m_gralloc4_mapper;
+#endif
 };
 
 #endif  // GRALLOC_ANDROID
diff --git a/src/System/GrallocAndroid.cpp b/src/System/GrallocAndroid.cpp
index 6a12b2b..ffdf52e 100644
--- a/src/System/GrallocAndroid.cpp
+++ b/src/System/GrallocAndroid.cpp
@@ -23,6 +23,11 @@
 using V3Mapper = android::hardware::graphics::mapper::V3_0::IMapper;
 using android::hardware::hidl_handle;
 #endif
+#ifdef HAVE_GRALLOC4
+using V4Error = android::hardware::graphics::mapper::V4_0::Error;
+using V4Mapper = android::hardware::graphics::mapper::V4_0::IMapper;
+using android::hardware::hidl_handle;
+#endif
 
 GrallocModule *GrallocModule::getInstance()
 {
@@ -32,6 +37,14 @@
 
 GrallocModule::GrallocModule()
 {
+#ifdef HAVE_GRALLOC4
+	m_gralloc4_mapper = V4Mapper::getService();
+	if(m_gralloc4_mapper != nullptr)
+	{
+		return;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	m_gralloc3_mapper = V3Mapper::getService();
 	if(m_gralloc3_mapper != nullptr)
@@ -64,6 +77,22 @@
 
 int GrallocModule::import(buffer_handle_t handle, buffer_handle_t *imported_handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		V4Error error;
+		auto ret = m_gralloc4_mapper->importBuffer(handle,
+		                                           [&](const auto &tmp_err, const auto &tmp_buf) {
+			                                           error = tmp_err;
+			                                           if(error == V4Error::NONE)
+			                                           {
+				                                           *imported_handle = static_cast<buffer_handle_t>(tmp_buf);
+			                                           }
+		                                           });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -86,6 +115,14 @@
 
 int GrallocModule::release(buffer_handle_t handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+		return m_gralloc4_mapper->freeBuffer(native_handle).isOk() ? 0 : 1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -99,6 +136,32 @@
 
 int GrallocModule::lock(buffer_handle_t handle, int usage, int left, int top, int width, int height, void **vaddr)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+
+		V4Mapper::Rect rect;
+		rect.left = left;
+		rect.top = top;
+		rect.width = width;
+		rect.height = height;
+
+		hidl_handle empty_fence_handle;
+
+		V4Error error;
+		auto ret = m_gralloc4_mapper->lock(native_handle, usage, rect, empty_fence_handle,
+		                                   [&](const auto &tmp_err, const auto &tmp_vaddr) {
+			                                   error = tmp_err;
+			                                   if(tmp_err == V4Error::NONE)
+			                                   {
+				                                   *vaddr = tmp_vaddr;
+			                                   }
+		                                   });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
@@ -155,6 +218,20 @@
 
 int GrallocModule::unlock(buffer_handle_t handle)
 {
+#ifdef HAVE_GRALLOC4
+	if(m_gralloc4_mapper != nullptr)
+	{
+		native_handle_t *native_handle = const_cast<native_handle_t *>(handle);
+
+		V4Error error;
+		auto ret = m_gralloc4_mapper->unlock(native_handle,
+		                                     [&](const auto &tmp_err, const auto &) {
+			                                     error = tmp_err;
+		                                     });
+		return ret.isOk() && error == V4Error::NONE ? 0 : -1;
+	}
+#endif
+
 #ifdef HAVE_GRALLOC3
 	if(m_gralloc3_mapper != nullptr)
 	{
diff --git a/src/System/GrallocAndroid.hpp b/src/System/GrallocAndroid.hpp
index 265608c..058eaf1 100644
--- a/src/System/GrallocAndroid.hpp
+++ b/src/System/GrallocAndroid.hpp
@@ -17,10 +17,15 @@
 
 #include <hardware/gralloc.h>
 #include <hardware/gralloc1.h>
+
 #ifdef HAVE_GRALLOC3
 #	include <android/hardware/graphics/mapper/3.0/IMapper.h>
 #	include <utils/StrongPointer.h>
 #endif
+#ifdef HAVE_GRALLOC4
+#	include <android/hardware/graphics/mapper/4.0/IMapper.h>
+#	include <utils/StrongPointer.h>
+#endif
 
 #include <unistd.h>  // for close()
 
@@ -47,6 +52,9 @@
 #ifdef HAVE_GRALLOC3
 	android::sp<android::hardware::graphics::mapper::V3_0::IMapper> m_gralloc3_mapper;
 #endif
+#ifdef HAVE_GRALLOC4
+	android::sp<android::hardware::graphics::mapper::V4_0::IMapper> m_gralloc4_mapper;
+#endif
 };
 
 #endif  // GRALLOC_ANDROID
