Merge "hwc: Add support for frame rate change on HDMI devices"
diff --git a/libcopybit/copybit.cpp b/libcopybit/copybit.cpp
index 2302d64..421f531 100644
--- a/libcopybit/copybit.cpp
+++ b/libcopybit/copybit.cpp
@@ -126,6 +126,8 @@
static int get_format(int format) {
switch (format) {
case HAL_PIXEL_FORMAT_RGB_565: return MDP_RGB_565;
+ case HAL_PIXEL_FORMAT_RGBA_5551: return MDP_RGBA_5551;
+ case HAL_PIXEL_FORMAT_RGBA_4444: return MDP_RGBA_4444;
case HAL_PIXEL_FORMAT_RGBX_8888: return MDP_RGBX_8888;
case HAL_PIXEL_FORMAT_BGRX_8888: return MDP_BGRX_8888;
case HAL_PIXEL_FORMAT_RGB_888: return MDP_RGB_888;
@@ -440,6 +442,8 @@
// we don't support plane alpha with RGBA formats
case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_BGRA_8888:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444:
ALOGE ("%s : Unsupported Pixel format %d", __FUNCTION__,
src->format);
return -EINVAL;
diff --git a/libcopybit/copybit.h b/libcopybit/copybit.h
index dbb89f0..9a6de9b 100644
--- a/libcopybit/copybit.h
+++ b/libcopybit/copybit.h
@@ -48,6 +48,8 @@
COPYBIT_FORMAT_RGB_888 = HAL_PIXEL_FORMAT_RGB_888,
COPYBIT_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565,
COPYBIT_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888,
+ COPYBIT_FORMAT_RGBA_5551 = HAL_PIXEL_FORMAT_RGBA_5551,
+ COPYBIT_FORMAT_RGBA_4444 = HAL_PIXEL_FORMAT_RGBA_4444,
COPYBIT_FORMAT_YCbCr_422_SP = 0x10,
COPYBIT_FORMAT_YCrCb_420_SP = 0x11,
};
diff --git a/libcopybit/copybit_c2d.cpp b/libcopybit/copybit_c2d.cpp
index 7841bb7..23daa27 100644
--- a/libcopybit/copybit_c2d.cpp
+++ b/libcopybit/copybit_c2d.cpp
@@ -265,6 +265,8 @@
case HAL_PIXEL_FORMAT_RGBA_8888: return C2D_COLOR_FORMAT_8888_ARGB |
C2D_FORMAT_SWAP_RB;
case HAL_PIXEL_FORMAT_BGRA_8888: return C2D_COLOR_FORMAT_8888_ARGB;
+ case HAL_PIXEL_FORMAT_RGBA_5551: return C2D_COLOR_FORMAT_5551_RGBA;
+ case HAL_PIXEL_FORMAT_RGBA_4444: return C2D_COLOR_FORMAT_4444_RGBA;
case HAL_PIXEL_FORMAT_YCbCr_420_SP: return C2D_COLOR_FORMAT_420_NV12;
case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:return C2D_COLOR_FORMAT_420_NV12;
case HAL_PIXEL_FORMAT_YCrCb_420_SP: return C2D_COLOR_FORMAT_420_NV21;
@@ -403,7 +405,9 @@
case HAL_PIXEL_FORMAT_RGBX_8888:
case HAL_PIXEL_FORMAT_RGB_888:
case HAL_PIXEL_FORMAT_RGB_565:
- case HAL_PIXEL_FORMAT_BGRA_8888: {
+ case HAL_PIXEL_FORMAT_BGRA_8888:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444: {
return COPYBIT_SUCCESS;
}
default:
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index c361095..b13166d 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -141,6 +141,8 @@
bpp = 3;
break;
case HAL_PIXEL_FORMAT_RGB_565:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444:
bpp = 2;
break;
default: break;
@@ -400,6 +402,8 @@
size = alignedw * alignedh * 3;
break;
case HAL_PIXEL_FORMAT_RGB_565:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444:
case HAL_PIXEL_FORMAT_RAW_SENSOR:
size = alignedw * alignedh * 2;
break;
diff --git a/libhwcomposer/hwc_dump_layers.cpp b/libhwcomposer/hwc_dump_layers.cpp
index 0a92def..e717c26 100644
--- a/libhwcomposer/hwc_dump_layers.cpp
+++ b/libhwcomposer/hwc_dump_layers.cpp
@@ -331,6 +331,8 @@
tempSkBmpConfig = SkBitmap::kARGB_8888_Config;
break;
case HAL_PIXEL_FORMAT_RGB_565:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444:
tempSkBmpConfig = SkBitmap::kRGB_565_Config;
break;
case HAL_PIXEL_FORMAT_RGB_888:
@@ -394,6 +396,12 @@
case HAL_PIXEL_FORMAT_BGRA_8888:
strlcpy(pixFormatStr, "BGRA_8888", sizeof(pixFormatStr));
break;
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ strlcpy(pixFormatStr, "RGBA_5551", sizeof(pixFormatStr));
+ break;
+ case HAL_PIXEL_FORMAT_RGBA_4444:
+ strlcpy(pixFormatStr, "RGBA_4444", sizeof(pixFormatStr));
+ break;
case HAL_PIXEL_FORMAT_YV12:
strlcpy(pixFormatStr, "YV12", sizeof(pixFormatStr));
break;
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 3eec011..6a74625 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -1151,22 +1151,26 @@
bool isRotatorSupportedFormat(private_handle_t *hnd) {
// Following rotator src formats are supported by mdp driver
// TODO: Add more formats in future, if mdp driver adds support
- switch(hnd->format) {
- case HAL_PIXEL_FORMAT_RGBA_8888:
- case HAL_PIXEL_FORMAT_RGB_565:
- case HAL_PIXEL_FORMAT_RGB_888:
- case HAL_PIXEL_FORMAT_BGRA_8888:
- return true;
- default:
- return false;
+ if(hnd != NULL) {
+ switch(hnd->format) {
+ case HAL_PIXEL_FORMAT_RGBA_8888:
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ case HAL_PIXEL_FORMAT_RGBA_4444:
+ case HAL_PIXEL_FORMAT_RGB_565:
+ case HAL_PIXEL_FORMAT_RGB_888:
+ case HAL_PIXEL_FORMAT_BGRA_8888:
+ return true;
+ default:
+ return false;
+ }
}
return false;
}
bool isRotationDoable(hwc_context_t *ctx, private_handle_t *hnd) {
- // Rotate layers, if it is YUV type or rendered by CPU and not
+ // Rotate layers, if it is not secure display buffer and not
// for the MDP versions below MDP5
- if((isCPURendered(hnd) && isRotatorSupportedFormat(hnd) &&
+ if((!isSecureDisplayBuffer(hnd) && isRotatorSupportedFormat(hnd) &&
!ctx->mMDP.version < qdutils::MDSS_V5)
|| isYuvBuffer(hnd)) {
return true;
diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h
index b3d7047..3f903b1 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -467,10 +467,6 @@
return (hnd && (private_handle_t::PRIV_FLAGS_TILE_RENDERED & hnd->flags));
}
-static inline bool isCPURendered(const private_handle_t* hnd) {
- return (hnd && (private_handle_t::PRIV_FLAGS_CPU_RENDERED & hnd->flags));
-}
-
//Return true if buffer is marked locked
static inline bool isBufferLocked(const private_handle_t* hnd) {
return (hnd && (private_handle_t::PRIV_FLAGS_HWC_LOCK & hnd->flags));
diff --git a/liboverlay/overlayUtils.cpp b/liboverlay/overlayUtils.cpp
index cbd52ae..32b2013 100644
--- a/liboverlay/overlayUtils.cpp
+++ b/liboverlay/overlayUtils.cpp
@@ -93,6 +93,10 @@
return MDP_RGB_888;
case HAL_PIXEL_FORMAT_RGB_565:
return MDP_RGB_565;
+ case HAL_PIXEL_FORMAT_RGBA_5551:
+ return MDP_RGBA_5551;
+ case HAL_PIXEL_FORMAT_RGBA_4444:
+ return MDP_RGBA_4444;
case HAL_PIXEL_FORMAT_BGRA_8888:
return MDP_BGRA_8888;
case HAL_PIXEL_FORMAT_BGRX_8888:
@@ -126,9 +130,6 @@
return MDP_Y_CBCR_H2V2_VENUS;
default:
//Unsupported by MDP
- //---graphics.h--------
- //HAL_PIXEL_FORMAT_RGBA_5551
- //HAL_PIXEL_FORMAT_RGBA_4444
//---gralloc_priv.h-----
//HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO = 0x7FA30C01
//HAL_PIXEL_FORMAT_R_8 = 0x10D
@@ -180,6 +181,10 @@
return HAL_PIXEL_FORMAT_RGB_888;
case MDP_RGB_565:
return HAL_PIXEL_FORMAT_RGB_565;
+ case MDP_RGBA_5551:
+ return HAL_PIXEL_FORMAT_RGBA_5551;
+ case MDP_RGBA_4444:
+ return HAL_PIXEL_FORMAT_RGBA_4444;
case MDP_BGRA_8888:
return HAL_PIXEL_FORMAT_BGRA_8888;
case MDP_Y_CR_CB_GH2V2:
diff --git a/liboverlay/overlayUtils.h b/liboverlay/overlayUtils.h
index 2b8e303..ff6d4ef 100644
--- a/liboverlay/overlayUtils.h
+++ b/liboverlay/overlayUtils.h
@@ -432,6 +432,8 @@
case MDP_BGRA_8888:
case MDP_RGBX_8888:
case MDP_RGB_565:
+ case MDP_RGBA_4444:
+ case MDP_RGBA_5551:
return true;
default:
return false;
@@ -443,6 +445,8 @@
#define STR(f) #f;
static const char* formats[MDP_IMGTYPE_LIMIT + 1] = {0};
formats[MDP_RGB_565] = STR(MDP_RGB_565);
+ formats[MDP_RGBA_5551] = STR(MDP_RGBA_5551);
+ formats[MDP_RGBA_4444] = STR(MDP_RGBA_4444);
formats[MDP_XRGB_8888] = STR(MDP_XRGB_8888);
formats[MDP_Y_CBCR_H2V2] = STR(MDP_Y_CBCR_H2V2);
formats[MDP_Y_CBCR_H2V2_ADRENO] = STR(MDP_Y_CBCR_H2V2_ADRENO);
diff --git a/libqdutils/mdp_version.cpp b/libqdutils/mdp_version.cpp
index 088f82b..e3d3131 100644
--- a/libqdutils/mdp_version.cpp
+++ b/libqdutils/mdp_version.cpp
@@ -57,7 +57,7 @@
#define MDSS_MDP_HW_REV_103 0x10030000 //8084
#endif
#ifndef MDSS_MDP_HW_REV_104
-#define MDSS_MDP_HW_REV_104 0x10040000 //Next version
+#define MDSS_MDP_HW_REV_104 0x10040000 //Unused
#endif
#ifndef MDSS_MDP_HW_REV_105
#define MDSS_MDP_HW_REV_105 0x10050000 //8994
@@ -66,13 +66,16 @@
#define MDSS_MDP_HW_REV_106 0x10060000 //8x16
#endif
#ifndef MDSS_MDP_HW_REV_107
-#define MDSS_MDP_HW_REV_107 0x10070000 //Next version
+#define MDSS_MDP_HW_REV_107 0x10070000 //Unused
#endif
#ifndef MDSS_MDP_HW_REV_108
#define MDSS_MDP_HW_REV_108 0x10080000 //8x39 & 8x36
#endif
#ifndef MDSS_MDP_HW_REV_109
-#define MDSS_MDP_HW_REV_109 0x10090000 //Next version
+#define MDSS_MDP_HW_REV_109 0x10090000 //8994 v2
+#endif
+#ifndef MDSS_MDP_HW_REV_110
+#define MDSS_MDP_HW_REV_110 0x100a0000 //Next version
#endif
#ifndef MDSS_MDP_HW_REV_200
#define MDSS_MDP_HW_REV_200 0x20000000 //8092
@@ -470,8 +473,10 @@
}
bool MDPVersion::is8994() {
- return (mMdpRev >= MDSS_MDP_HW_REV_105 and
- mMdpRev < MDSS_MDP_HW_REV_106);
+ return ((mMdpRev >= MDSS_MDP_HW_REV_105 and
+ mMdpRev < MDSS_MDP_HW_REV_106) or
+ (mMdpRev >= MDSS_MDP_HW_REV_109 and
+ mMdpRev < MDSS_MDP_HW_REV_110));
}
bool MDPVersion::is8x16() {