display: Reconcile display HALs
Make the display HALs compile with/without the Qualcomm BSP
specific features so they can work with pure AOSP.
Change-Id: I1ad7282c4fe1fe7e3309afb530a07735f165ffbe
diff --git a/libgralloc/gpu.cpp b/libgralloc/gpu.cpp
index 291f564..15d7329 100644
--- a/libgralloc/gpu.cpp
+++ b/libgralloc/gpu.cpp
@@ -47,7 +47,9 @@
common.module = const_cast<hw_module_t*>(&module->base.common);
common.close = gralloc_close;
alloc = gralloc_alloc;
+#ifdef QCOM_BSP
allocSize = gralloc_alloc_size;
+#endif
free = gralloc_free;
}
diff --git a/libgralloc/gralloc_priv.h b/libgralloc/gralloc_priv.h
index dc755cb..baf137f 100644
--- a/libgralloc/gralloc_priv.h
+++ b/libgralloc/gralloc_priv.h
@@ -84,8 +84,7 @@
enum {
/* Gralloc perform enums
*/
- GRALLOC_MODULE_PERFORM_CREATE_HANDLE_FROM_BUFFER =
- GRALLOC_MODULE_PERFORM_PRIVATE_START,
+ GRALLOC_MODULE_PERFORM_CREATE_HANDLE_FROM_BUFFER = 1,
};
#define GRALLOC_HEAP_MASK (GRALLOC_USAGE_PRIVATE_UI_CONTIG_HEAP |\
diff --git a/libgralloc/ionalloc.cpp b/libgralloc/ionalloc.cpp
index 8cee7fd..6144f95 100644
--- a/libgralloc/ionalloc.cpp
+++ b/libgralloc/ionalloc.cpp
@@ -40,6 +40,9 @@
using gralloc::IonAlloc;
#define ION_DEVICE "/dev/ion"
+#ifdef QCOM_BSP
+#define NEW_ION_API
+#endif
int IonAlloc::open_device()
{
@@ -66,6 +69,10 @@
{
Locker::Autolock _l(mLock);
int err = 0;
+#ifndef NEW_ION_API
+ int ionSyncFd = FD_INIT;
+ int iFd = FD_INIT;
+#endif
struct ion_handle_data handle_data;
struct ion_fd_data fd_data;
struct ion_allocation_data ionAllocData;
@@ -73,9 +80,12 @@
ionAllocData.len = data.size;
ionAllocData.align = data.align;
+#ifndef NEW_ION_API
+ ionAllocData.flags = data.flags;
+#else
ionAllocData.heap_mask = data.flags & ~ION_SECURE;
ionAllocData.flags = data.uncached ? 0 : ION_FLAG_CACHED;
-
+#endif
// ToDo: replace usage of alloc data structure with
// ionallocdata structure.
if (data.flags & ION_SECURE)
@@ -84,10 +94,32 @@
err = open_device();
if (err)
return err;
+#ifndef NEW_ION_API
+ if(data.uncached) {
+ // Use the sync FD to alloc and map 93
+ // when we need uncached memory 94
+ ionSyncFd = open(ION_DEVICE, O_RDONLY|O_DSYNC);
+ if(ionSyncFd < 0) {
+ ALOGE("%s: Failed to open ion device - %s",
+ __FUNCTION__, strerror(errno));
+ return -errno;
+ }
+ iFd = ionSyncFd;
+ } else {
+ iFd = mIonFd;
+ }
+ if(ioctl(iFd, ION_IOC_ALLOC, &ionAllocData)) {
+#else
if(ioctl(mIonFd, ION_IOC_ALLOC, &ionAllocData)) {
+#endif
err = -errno;
ALOGE("ION_IOC_ALLOC failed with error - %s", strerror(errno));
+#ifndef NEW_ION_API
+ if(ionSyncFd >= 0)
+ close(ionSyncFd);
+ ionSyncFd = FD_INIT;
+#endif
return err;
}
@@ -203,11 +235,15 @@
flush_data.offset = offset;
flush_data.length = size;
+#ifdef NEW_ION_API
struct ion_custom_data d;
d.cmd = ION_IOC_CLEAN_INV_CACHES;
d.arg = (unsigned long int)&flush_data;
if(ioctl(mIonFd, ION_IOC_CUSTOM, &d)) {
+#else
+ if(ioctl(mIonFd, ION_IOC_CLEAN_INV_CACHES, &flush_data)) {
+#endif
err = -errno;
ALOGE("%s: ION_IOC_CLEAN_INV_CACHES failed with error - %s",
diff --git a/libgralloc/mapper.cpp b/libgralloc/mapper.cpp
index b3e371a..af536ad 100644
--- a/libgralloc/mapper.cpp
+++ b/libgralloc/mapper.cpp
@@ -353,6 +353,7 @@
break;
}
+#ifdef QCOM_BSP
case GRALLOC_MODULE_PERFORM_UPDATE_BUFFER_GEOMETRY:
{
int width = va_arg(args, int);
@@ -368,6 +369,7 @@
res = 0;
}
break;
+#endif
default:
break;
}