Merge "Revert "display: Video Encoding not working""
diff --git a/libhwcomposer/hwc_ad.cpp b/libhwcomposer/hwc_ad.cpp
index c2ea4ee..104ffce 100644
--- a/libhwcomposer/hwc_ad.cpp
+++ b/libhwcomposer/hwc_ad.cpp
@@ -192,6 +192,14 @@
overlay::Writeback *wb = overlay::Writeback::getInstance();
+ //Set Security flag on writeback
+ if(isSecureBuffer(hnd)) {
+ if(!wb->setSecure(isSecureBuffer(hnd))) {
+ ALOGE("Failure in setting WB secure flag for ad");
+ return false;
+ }
+ }
+
if(!wb->configureDpyInfo(hnd->width, hnd->height)) {
ALOGE("%s: config display failed", __func__);
mDoable = false;
@@ -209,7 +217,7 @@
size = getBufferSizeAndDimensions(hnd->width, hnd->height,
format, tmpW, tmpH);
- if(!wb->configureMemory(size, isSecureBuffer(hnd))) {
+ if(!wb->configureMemory(size)) {
ALOGE("%s: config memory failed", __func__);
mDoable = false;
return false;
diff --git a/liboverlay/overlayWriteback.cpp b/liboverlay/overlayWriteback.cpp
index 50aa337..fdead74 100644
--- a/liboverlay/overlayWriteback.cpp
+++ b/liboverlay/overlayWriteback.cpp
@@ -75,7 +75,7 @@
}
//=========== class Writeback =================================================
-Writeback::Writeback() : mXres(0), mYres(0), mOpFmt(-1) {
+Writeback::Writeback() : mXres(0), mYres(0), mOpFmt(-1), mSecure(false) {
int fbNum = Overlay::getFbForDpy(Overlay::DPY_WRITEBACK);
if(!utils::openDev(mFd, fbNum, Res::fbPath, O_RDWR)) {
ALOGE("%s failed to init %s", __func__, Res::fbPath);
@@ -136,8 +136,8 @@
return true;
}
-bool Writeback::configureMemory(uint32_t size, bool isSecure) {
- if(!mWbMem.manageMem(size, isSecure)) {
+bool Writeback::configureMemory(uint32_t size) {
+ if(!mWbMem.manageMem(size, mSecure)) {
ALOGE("%s failed, memory failure", __func__);
return false;
}
@@ -215,6 +215,22 @@
return mOpFmt;
}
+bool Writeback::setSecure(bool isSecure) {
+ if(isSecure != mSecure) {
+ // Call IOCTL to set WB interface as secure
+ struct msmfb_metadata metadata;
+ memset(&metadata, 0 , sizeof(metadata));
+ metadata.op = metadata_op_wb_secure;
+ metadata.data.secure_en = isSecure;
+ if (ioctl(mFd.getFD(), MSMFB_METADATA_SET, &metadata) < 0) {
+ ALOGE("Error setting MDP WB secure");
+ return false;
+ }
+ mSecure = isSecure;
+ }
+ return true;
+}
+
//static
Writeback *Writeback::getInstance() {
diff --git a/liboverlay/overlayWriteback.h b/liboverlay/overlayWriteback.h
index 9785b64..ebd319f 100644
--- a/liboverlay/overlayWriteback.h
+++ b/liboverlay/overlayWriteback.h
@@ -62,7 +62,7 @@
public:
~Writeback();
bool configureDpyInfo(int xres, int yres);
- bool configureMemory(uint32_t size, bool isSecure);
+ bool configureMemory(uint32_t size);
/* Blocking write. (queue, commit, dequeue)
* This class will do writeback memory management.
* This class will call display-commit on writeback mixer.
@@ -87,6 +87,7 @@
int getFbFd() const { return mFd.getFD(); }
int getOutputFormat();
bool setOutputFormat(int mdpFormat);
+ bool setSecure(bool isSecure);
static Writeback* getInstance();
static void configBegin() { sUsed = false; }
@@ -108,6 +109,7 @@
int mXres;
int mYres;
int mOpFmt;
+ bool mSecure;
static bool sUsed;
static Writeback *sWb;