sdm/hwc/gralloc: Move fb_id lifecycle to DAL

--Move fb_id creation/deletion from gralloc to DAL and make it per
cycle
--Make Gralloc/HWC/SDM structures independent of libdrmutils
and fb_id / gemhandles
--Pass BufferAllocator pointer to Display* and HWDevice*
--Add new GetBufferLayout API to BufferAllocator that can be called
by DAL before creating fb_id

Change-Id: I102f432cccee912ad4bcce622764938fa3d36ed3
CRs-fixed: 1114808
diff --git a/libgralloc/Android.mk b/libgralloc/Android.mk
index b911999..76be57d 100644
--- a/libgralloc/Android.mk
+++ b/libgralloc/Android.mk
@@ -30,7 +30,7 @@
 LOCAL_HEADER_LIBRARIES        := display_headers
 LOCAL_SHARED_LIBRARIES        := $(common_libs) libmemalloc libqdMetaData libqdutils
 ifneq ($(TARGET_IS_HEADLESS), true)
-LOCAL_SHARED_LIBRARIES        += libGLESv1_CM libdrmutils
+LOCAL_SHARED_LIBRARIES        += libGLESv1_CM
 endif
 LOCAL_CFLAGS                  := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion
 LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) $(kernel_deps)
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index 38e2050..1779312 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -27,9 +27,6 @@
  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifdef COMPILE_DRM
-#include <drm/drm_fourcc.h>
-#endif
 #include <cutils/log.h>
 #include <fcntl.h>
 #include <dlfcn.h>
@@ -76,18 +73,6 @@
 #define ION_SC_PREVIEW_FLAGS ION_SECURE
 #endif
 
-#ifdef COMPILE_DRM
-#ifndef DRM_FORMAT_MOD_QCOM_COMPRESSED
-#define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
-#endif
-#ifndef DRM_FORMAT_MOD_QCOM_DX
-#define DRM_FORMAT_MOD_QCOM_DX fourcc_mod_code(QCOM, 0x2)
-#endif
-#ifndef DRM_FORMAT_MOD_QCOM_TIGHT
-#define DRM_FORMAT_MOD_QCOM_TIGHT fourcc_mod_code(QCOM, 0x4)
-#endif
-#endif
-
 #ifndef COLOR_FMT_P010_UBWC
 #define COLOR_FMT_P010_UBWC 9
 #endif
@@ -1140,9 +1125,8 @@
     return err;
 }
 
-#ifdef COMPILE_DRM
-int getPlaneStrideOffset(private_handle_t *hnd, uint32_t *stride,
-        uint32_t *offset, uint32_t *num_planes) {
+int getBufferLayout(private_handle_t *hnd, uint32_t stride[4],
+        uint32_t offset[4], uint32_t *num_planes) {
     if (!hnd || !stride || !offset || !num_planes) {
         return -EINVAL;
     }
@@ -1231,110 +1215,3 @@
 
     return 0;
 }
-
-void getDRMFormat(int hal_format, int flags, uint32_t *drm_format,
-        uint64_t *drm_format_modifier) {
-
-    if (flags & private_handle_t::PRIV_FLAGS_UBWC_ALIGNED) {
-        *drm_format_modifier = DRM_FORMAT_MOD_QCOM_COMPRESSED;
-    }
-
-    switch (hal_format) {
-        case HAL_PIXEL_FORMAT_RGBA_8888:
-            *drm_format = DRM_FORMAT_ABGR8888;
-            break;
-        case HAL_PIXEL_FORMAT_RGBA_5551:
-            *drm_format = DRM_FORMAT_ABGR1555;
-            break;
-        case HAL_PIXEL_FORMAT_RGBA_4444:
-            *drm_format = DRM_FORMAT_ABGR4444;
-            break;
-        case HAL_PIXEL_FORMAT_BGRA_8888:
-            *drm_format = DRM_FORMAT_ARGB8888;
-            break;
-        case HAL_PIXEL_FORMAT_RGBX_8888:
-            *drm_format = DRM_FORMAT_XBGR8888;
-            break;
-        case HAL_PIXEL_FORMAT_BGRX_8888:
-            *drm_format = DRM_FORMAT_XRGB8888;
-            break;
-        case HAL_PIXEL_FORMAT_RGB_888:
-            *drm_format = DRM_FORMAT_BGR888;
-            break;
-        case HAL_PIXEL_FORMAT_RGB_565:
-            *drm_format = DRM_FORMAT_BGR565;
-            break;
-        case HAL_PIXEL_FORMAT_BGR_565:
-            *drm_format = DRM_FORMAT_RGB565;
-            break;
-        case HAL_PIXEL_FORMAT_RGBA_1010102:
-            *drm_format = DRM_FORMAT_ABGR2101010;
-            break;
-        case HAL_PIXEL_FORMAT_ARGB_2101010:
-            *drm_format = DRM_FORMAT_BGRA1010102;
-            break;
-        case HAL_PIXEL_FORMAT_RGBX_1010102:
-            *drm_format = DRM_FORMAT_XBGR2101010;
-            break;
-        case HAL_PIXEL_FORMAT_XRGB_2101010:
-            *drm_format = DRM_FORMAT_BGRX1010102;
-            break;
-        case HAL_PIXEL_FORMAT_BGRA_1010102:
-            *drm_format = DRM_FORMAT_ARGB2101010;
-            break;
-        case HAL_PIXEL_FORMAT_ABGR_2101010:
-            *drm_format = DRM_FORMAT_RGBA1010102;
-            break;
-        case HAL_PIXEL_FORMAT_BGRX_1010102:
-            *drm_format = DRM_FORMAT_XRGB2101010;
-            break;
-        case HAL_PIXEL_FORMAT_XBGR_2101010:
-            *drm_format = DRM_FORMAT_RGBX1010102;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_SP:
-            *drm_format = DRM_FORMAT_NV12;
-            break;
-        case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:
-        case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
-            *drm_format = DRM_FORMAT_NV12;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC:
-            *drm_format = DRM_FORMAT_NV12;
-            *drm_format_modifier = DRM_FORMAT_MOD_QCOM_COMPRESSED;
-            break;
-        case HAL_PIXEL_FORMAT_YCrCb_420_SP:
-            *drm_format = DRM_FORMAT_NV21;
-            break;
-        case HAL_PIXEL_FORMAT_YCrCb_420_SP_VENUS:
-            *drm_format = DRM_FORMAT_NV21;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_P010:
-            *drm_format = DRM_FORMAT_NV12;
-            *drm_format_modifier = DRM_FORMAT_MOD_QCOM_DX;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_P010_UBWC:
-            *drm_format = DRM_FORMAT_NV12;
-            *drm_format_modifier = DRM_FORMAT_MOD_QCOM_COMPRESSED |
-               DRM_FORMAT_MOD_QCOM_DX;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_TP10_UBWC:
-            *drm_format = DRM_FORMAT_NV12;
-            *drm_format_modifier = DRM_FORMAT_MOD_QCOM_COMPRESSED |
-               DRM_FORMAT_MOD_QCOM_DX | DRM_FORMAT_MOD_QCOM_TIGHT;
-            break;
-        case HAL_PIXEL_FORMAT_YCbCr_422_SP:
-            *drm_format = DRM_FORMAT_NV16;
-            break;
-        case HAL_PIXEL_FORMAT_YCrCb_422_SP:
-            *drm_format = DRM_FORMAT_NV61;
-            break;
-        case HAL_PIXEL_FORMAT_YV12:
-            *drm_format = DRM_FORMAT_YVU420;
-            break;
-        default:
-            ALOGW("%s: Unsupported format %s", __FUNCTION__,
-                    qdutils::GetHALPixelFormatString(hal_format));
-    }
-}
-#endif
-
diff --git a/libgralloc/gpu.cpp b/libgralloc/gpu.cpp
index 641712c..c57ff90 100644
--- a/libgralloc/gpu.cpp
+++ b/libgralloc/gpu.cpp
@@ -21,12 +21,7 @@
 #include <cutils/properties.h>
 #include <sys/mman.h>
 #include <linux/msm_ion.h>
-#ifdef COMPILE_DRM
-#include <drm_master.h>
-#endif
 #include <qdMetaData.h>
-#include <qd_utils.h>
-
 #include <algorithm>
 
 #include "gr.h"
@@ -34,10 +29,6 @@
 #include "memalloc.h"
 #include "alloc_controller.h"
 
-#ifdef COMPILE_DRM
-using namespace drm_utils;
-#endif
-
 using namespace gralloc;
 
 gpu_context_t::gpu_context_t(const private_module_t* module,
@@ -178,43 +169,6 @@
         hnd->gpuaddr = 0;
         ColorSpace_t colorSpace = ITU_R_601;
         setMetaData(hnd, UPDATE_COLOR_SPACE, (void*) &colorSpace);
-
-#ifdef COMPILE_DRM
-        if (qdutils::getDriverType() == qdutils::DriverType::DRM &&
-                usage & GRALLOC_USAGE_HW_COMPOSER) {
-            DRMBuffer buf = {};
-            int ret = getPlaneStrideOffset(hnd, buf.stride, buf.offset,
-                    &buf.num_planes);
-            if (ret < 0) {
-                ALOGE("%s failed", __FUNCTION__);
-                return ret;
-            }
-
-            buf.fd = hnd->fd;
-            buf.width = hnd->width;
-            buf.height = hnd->height;
-            getDRMFormat(hnd->format, flags, &buf.drm_format,
-                    &buf.drm_format_modifier);
-
-            DRMMaster *master = nullptr;
-            ret = DRMMaster::GetInstance(&master);
-            if (ret < 0) {
-                ALOGE("%s Failed to acquire DRMMaster instance", __FUNCTION__);
-                return ret;
-            }
-
-            ret = master->CreateFbId(buf, &hnd->gem_handle, &hnd->fb_id);
-            if (ret < 0) {
-                ALOGE("%s: CreateFbId failed. width %d, height %d, " \
-                        "format: %s, stride %u, error %d", __FUNCTION__,
-                        buf.width, buf.height,
-                        qdutils::GetHALPixelFormatString(hnd->format),
-                        buf.stride[0], errno);
-                return ret;
-            }
-        }
-#endif
-
         *pHandle = hnd;
     }
 
@@ -415,22 +369,6 @@
             return err;
     }
 
-#ifdef COMPILE_DRM
-    if (hnd->fb_id) {
-        DRMMaster *master = nullptr;
-        int ret = DRMMaster::GetInstance(&master);
-        if (ret < 0) {
-            ALOGE("%s Failed to acquire DRMMaster instance", __FUNCTION__);
-            return ret;
-        }
-        ret = master->RemoveFbId(hnd->gem_handle, hnd->fb_id);
-        if (ret < 0) {
-            ALOGE("%s: Removing fb_id %d failed with error %d", __FUNCTION__,
-                    hnd->fb_id, errno);
-        }
-    }
-#endif
-
     delete hnd;
     return 0;
 }
diff --git a/libgralloc/gr.h b/libgralloc/gr.h
index edeca3f..dad4a38 100644
--- a/libgralloc/gr.h
+++ b/libgralloc/gr.h
@@ -71,13 +71,9 @@
 // Function to check if the format is an RGB format
 bool isUncompressedRgbFormat(int format);
 
-#ifdef COMPILE_DRM
-int getPlaneStrideOffset(private_handle_t *hnd, uint32_t *stride,
-        uint32_t *offset, uint32_t *num_planes);
-
-void getDRMFormat(int hal_format, int flags, uint32_t *drm_format,
-        uint64_t *drm_format_modifier);
-#endif
+// Returns number of planes, stride and offset of each plane for a given w,h,f
+int getBufferLayout(private_handle_t *hnd, uint32_t stride[4],
+        uint32_t offset[4], uint32_t *num_planes);
 /*****************************************************************************/
 
 class Locker {
diff --git a/libgralloc/gralloc_priv.h b/libgralloc/gralloc_priv.h
index 82fdcdb..0f1f97a 100644
--- a/libgralloc/gralloc_priv.h
+++ b/libgralloc/gralloc_priv.h
@@ -249,8 +249,6 @@
         uint64_t base_metadata __attribute__((aligned(8)));
         int unaligned_width;   // holds width client asked to allocate
         int unaligned_height;  // holds height client asked to allocate
-        unsigned int gem_handle;
-        unsigned int fb_id;
 
 #ifdef __cplusplus
         static const int sNumFds = 2;
@@ -267,7 +265,7 @@
             base(0), offset_metadata(0), gpuaddr(0),
             format(format), width(width), height(height),
             base_metadata(0), unaligned_width(width),
-            unaligned_height(height), gem_handle(0), fb_id(0)
+            unaligned_height(height)
         {
             version = (int) sizeof(native_handle);
             numInts = sNumInts();