hwc/overlay: Add Color layer support in MDP Composition.
1. Color layer has a destination rectangle, RGBA color and plane
alpha. There is no gralloc buffer. Layer flag "HWC_COLOR_FILL"
denotes a Color layer.
2. There is no color member in HWC layer, so RGBA color value
is passed via the "tranform" member from framework to HAL.
Change-Id: I8769fd3f5febcaf952a1456de0a4262679c9a0e4
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp
index b095e9e..6aaf236 100644
--- a/liboverlay/overlay.cpp
+++ b/liboverlay/overlay.cpp
@@ -177,6 +177,13 @@
mPipeBook[index].mPipe->setCrop(d);
}
+void Overlay::setColor(const uint32_t color,
+ utils::eDest dest) {
+ int index = (int)dest;
+ validate(index);
+ mPipeBook[index].mPipe->setColor(color);
+}
+
void Overlay::setPosition(const utils::Dim& d,
utils::eDest dest) {
int index = (int)dest;
diff --git a/liboverlay/overlay.h b/liboverlay/overlay.h
index c16f6e6..295e123 100644
--- a/liboverlay/overlay.h
+++ b/liboverlay/overlay.h
@@ -76,6 +76,7 @@
void setSource(const utils::PipeArgs args, utils::eDest dest);
void setCrop(const utils::Dim& d, utils::eDest dest);
+ void setColor(const uint32_t color, utils::eDest dest);
void setTransform(const int orientation, utils::eDest dest);
void setPosition(const utils::Dim& dim, utils::eDest dest);
void setVisualParams(const MetaData_t& data, utils::eDest dest);
diff --git a/liboverlay/overlayCtrlData.h b/liboverlay/overlayCtrlData.h
index c3a7aa3..d34fd2d 100644
--- a/liboverlay/overlayCtrlData.h
+++ b/liboverlay/overlayCtrlData.h
@@ -61,6 +61,8 @@
void setSource(const utils::PipeArgs& args);
/* set crop info and pass it down to mdp */
void setCrop(const utils::Dim& d);
+ /* set color for mdp pipe */
+ void setColor(const uint32_t color);
/* set orientation */
void setTransform(const utils::eTransform& p);
/* set mdp position using dim */
@@ -174,6 +176,11 @@
mMdp.setCrop(d);
}
+inline void Ctrl::setColor(const uint32_t color)
+{
+ mMdp.setColor(color);
+}
+
inline bool Ctrl::setVisualParams(const MetaData_t &metadata)
{
if (!mMdp.setVisualParams(metadata)) {
diff --git a/liboverlay/overlayMdp.cpp b/liboverlay/overlayMdp.cpp
index 674e62d..5da8b55 100644
--- a/liboverlay/overlayMdp.cpp
+++ b/liboverlay/overlayMdp.cpp
@@ -108,6 +108,10 @@
setSrcRectDim(d);
}
+void MdpCtrl::setColor(const uint32_t color) {
+ mOVInfo.bg_color = color;
+}
+
void MdpCtrl::setPosition(const overlay::utils::Dim& d) {
setDstRectDim(d);
}
diff --git a/liboverlay/overlayMdp.h b/liboverlay/overlayMdp.h
index 5bfec6b..4a648ef 100644
--- a/liboverlay/overlayMdp.h
+++ b/liboverlay/overlayMdp.h
@@ -57,6 +57,8 @@
* Dim - ROI dimensions.
*/
void setCrop(const utils::Dim& d);
+ /* set color for mdp pipe */
+ void setColor(const uint32_t color);
void setTransform(const utils::eTransform& orient);
/* given a dim and w/h, set overlay dim */
void setPosition(const utils::Dim& dim);
diff --git a/liboverlay/pipes/overlayGenPipe.cpp b/liboverlay/pipes/overlayGenPipe.cpp
index 35f686c..2bf2369 100644
--- a/liboverlay/pipes/overlayGenPipe.cpp
+++ b/liboverlay/pipes/overlayGenPipe.cpp
@@ -93,6 +93,10 @@
mCtrlData.ctrl.setCrop(d);
}
+void GenericPipe::setColor(const uint32_t color) {
+ mCtrlData.ctrl.setColor(color);
+}
+
void GenericPipe::setTransform(const utils::eTransform& orient) {
mCtrlData.ctrl.setTransform(orient);
}
diff --git a/liboverlay/pipes/overlayGenPipe.h b/liboverlay/pipes/overlayGenPipe.h
index 2472f4e..9b09da4 100644
--- a/liboverlay/pipes/overlayGenPipe.h
+++ b/liboverlay/pipes/overlayGenPipe.h
@@ -48,6 +48,8 @@
void setSource(const utils::PipeArgs& args);
/* set crop a.k.a the region of interest */
void setCrop(const utils::Dim& d);
+ /* set color for mdp pipe */
+ void setColor(const uint32_t color);
/* set orientation*/
void setTransform(const utils::eTransform& param);
/* set mdp posision using dim */