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/Android.mk b/Android.mk
index 1e8cdda..b62e45b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,10 @@
-ifeq ($(call is-vendor-board-platform,QCOM),true)
-
display-hals := libgralloc libgenlock libcopybit liblight
display-hals += libhwcomposer liboverlay libqdutils libexternal libqservice
-
-include $(call all-named-subdir-makefiles,$(display-hals))
+ifeq ($(call is-vendor-board-platform,QCOM),true)
+ include $(call all-named-subdir-makefiles,$(display-hals))
+else
+ifneq ($(filter msm8960,$(TARGET_BOARD_PLATFORM)),)
+ #This is for mako since it doesn't have the QCOM make functions
+ include $(call all-named-subdir-makefiles,$(display-hals))
+endif
endif
diff --git a/common.mk b/common.mk
index ebfc8ec..78b48dd 100644
--- a/common.mk
+++ b/common.mk
@@ -32,8 +32,9 @@
common_deps :=
kernel_includes :=
-#Kernel includes. Not being executed on JB+
+# Executed only on QCOM BSPs
ifeq ($(call is-vendor-board-platform,QCOM),true)
+ common_flags += -DQCOM_BSP
common_deps += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
kernel_includes += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
endif
diff --git a/libexternal/external.cpp b/libexternal/external.cpp
index b721195..ddcdd18 100644
--- a/libexternal/external.cpp
+++ b/libexternal/external.cpp
@@ -446,7 +446,7 @@
int mode = atoi(property_value);
// We dont support interlaced modes
if(isValidMode(mode) && !isInterlacedMode(mode)) {
- ALOGD_IF("%s: setting the HDMI mode = %d", __FUNCTION__, mode);
+ ALOGD_IF(DEBUG, "%s: setting the HDMI mode = %d", __FUNCTION__, mode);
return mode;
}
return -1;
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;
}
diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp
index e764c69..8ce9f0d 100644
--- a/libhwcomposer/hwc_copybit.cpp
+++ b/libhwcomposer/hwc_copybit.cpp
@@ -24,6 +24,11 @@
#include "hwc_copybit.h"
#include "comptype.h"
+//XXX: Remove HWC_BLIT
+#ifndef QCOM_BSP
+#define HWC_BLIT 4
+#endif
+
namespace qhwc {
struct range {
diff --git a/libhwcomposer/hwc_mdpcomp.cpp b/libhwcomposer/hwc_mdpcomp.cpp
index 760b134..5314943 100644
--- a/libhwcomposer/hwc_mdpcomp.cpp
+++ b/libhwcomposer/hwc_mdpcomp.cpp
@@ -379,7 +379,7 @@
overlay::Overlay& ov = *ctx->mOverlay;
int availablePipes = ov.availablePipes(dpy);
- if(numAppLayers < 1 || numAppLayers > (uint32_t)availablePipes) {
+ if(numAppLayers < 1 || numAppLayers > availablePipes) {
ALOGD_IF(isDebug(), "%s: Unsupported number of layers",__FUNCTION__);
return false;
}