hwc/overlay: Set crop rectangle for MDSS Rotator.
Since MDSS rotator will crop, the crop rectangle for overlay
will always start from (0,0).
CRs-Fixed: 476494
Change-Id: I1ccece8eab7d1a97ccec561a4d0df4558b5e33c4
diff --git a/liboverlay/overlayMdpRot.cpp b/liboverlay/overlayMdpRot.cpp
index 81a3f44..ce2ef5b 100755
--- a/liboverlay/overlayMdpRot.cpp
+++ b/liboverlay/overlayMdpRot.cpp
@@ -94,6 +94,10 @@
mRotImgInfo.dst.height = whf.h;
}
+void MdpRot::setCrop(const utils::Dim& crop) {
+ // NO-OP for non-mdss rotator due to possible h/w limitations
+}
+
void MdpRot::setFlags(const utils::eMdpFlags& flags) {
mRotImgInfo.secure = 0;
if(flags & utils::OV_MDP_SECURE_OVERLAY_SESSION)
diff --git a/liboverlay/overlayMdssRot.cpp b/liboverlay/overlayMdssRot.cpp
index 58790fc..1fabdca 100644
--- a/liboverlay/overlayMdssRot.cpp
+++ b/liboverlay/overlayMdssRot.cpp
@@ -74,15 +74,21 @@
utils::Whf whf(awhf);
mRotInfo.src.format = whf.format;
-
mRotInfo.src.width = whf.w;
mRotInfo.src.height = whf.h;
+}
- mRotInfo.src_rect.w = whf.w;
- mRotInfo.src_rect.h = whf.h;
+void MdssRot::setCrop(const utils::Dim& crop) {
- mRotInfo.dst_rect.w = whf.w;
- mRotInfo.dst_rect.h = whf.h;
+ mRotInfo.src_rect.x = crop.x;
+ mRotInfo.src_rect.y = crop.y;
+ mRotInfo.src_rect.w = crop.w;
+ mRotInfo.src_rect.h = crop.h;
+
+ mRotInfo.dst_rect.x = 0;
+ mRotInfo.dst_rect.y = 0;
+ mRotInfo.dst_rect.w = crop.w;
+ mRotInfo.dst_rect.h = crop.h;
}
void MdssRot::setDownscale(int ds) {}
diff --git a/liboverlay/overlayRotator.h b/liboverlay/overlayRotator.h
index 36fe581..c02dfba 100644
--- a/liboverlay/overlayRotator.h
+++ b/liboverlay/overlayRotator.h
@@ -44,6 +44,7 @@
enum { TYPE_MDP, TYPE_MDSS };
virtual ~Rotator();
virtual void setSource(const utils::Whf& wfh) = 0;
+ virtual void setCrop(const utils::Dim& crop) = 0;
virtual void setFlags(const utils::eMdpFlags& flags) = 0;
virtual void setTransform(const utils::eTransform& rot) = 0;
virtual bool commit() = 0;
@@ -109,6 +110,7 @@
public:
virtual ~MdpRot();
virtual void setSource(const utils::Whf& wfh);
+ virtual void setCrop(const utils::Dim& crop);
virtual void setFlags(const utils::eMdpFlags& flags);
virtual void setTransform(const utils::eTransform& rot);
virtual bool commit();
@@ -167,6 +169,7 @@
public:
virtual ~MdssRot();
virtual void setSource(const utils::Whf& wfh);
+ virtual void setCrop(const utils::Dim& crop);
virtual void setFlags(const utils::eMdpFlags& flags);
virtual void setTransform(const utils::eTransform& rot);
virtual bool commit();