Merge "config: enable WCG SF properties for sm8150"
diff --git a/gralloc/Android.mk b/gralloc/Android.mk
index 6603f43..9ad44e5 100644
--- a/gralloc/Android.mk
+++ b/gralloc/Android.mk
@@ -71,7 +71,8 @@
vendor.qti.hardware.display.mapper@2.0 \
vendor.qti.hardware.display.mapperextensions@1.0 \
android.hardware.graphics.mapper@2.0 \
- android.hardware.graphics.mapper@2.1
+ android.hardware.graphics.mapper@2.1 \
+ vendor.qti.hardware.display.mapperextensions@1.1
LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
LOCAL_SRC_FILES := QtiMapper.cpp QtiMapperExtensions.cpp
diff --git a/gralloc/QtiMapper.h b/gralloc/QtiMapper.h
index eca74f0..7302e5e 100644
--- a/gralloc/QtiMapper.h
+++ b/gralloc/QtiMapper.h
@@ -59,8 +59,8 @@
using ::android::hidl::base::V1_0::IBase;
using gralloc::BufferManager;
using ::vendor::qti::hardware::display::mapper::V2_0::IQtiMapper;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::IQtiMapperExtensions;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::implementation::QtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::implementation::QtiMapperExtensions;
using IMapper_2_1 = android::hardware::graphics::mapper::V2_1::IMapper;
using BufferDescriptorInfo_2_0 =
@@ -92,7 +92,7 @@
createDescriptor_2_1_cb _hidl_cb) override;
Return<void> getMapperExtensions(getMapperExtensions_cb hidl_cb);
- sp<mapperextensions::V1_0::IQtiMapperExtensions> extensions_ = nullptr;
+ sp<mapperextensions::V1_1::IQtiMapperExtensions> extensions_ = nullptr;
private:
BufferManager *buf_mgr_ = nullptr;
diff --git a/gralloc/QtiMapperExtensions.cpp b/gralloc/QtiMapperExtensions.cpp
index afe3efa..56b747b 100644
--- a/gralloc/QtiMapperExtensions.cpp
+++ b/gralloc/QtiMapperExtensions.cpp
@@ -40,7 +40,7 @@
namespace hardware {
namespace display {
namespace mapperextensions {
-namespace V1_0 {
+namespace V1_1 {
namespace implementation {
using gralloc::BufferInfo;
@@ -351,8 +351,23 @@
return Void();
}
+Return<Error> QtiMapperExtensions::getSurfaceMetadata_V1(void *buffer, void *metadata) {
+ auto err = Error::BAD_BUFFER;
+ auto hnd = static_cast<private_handle_t *>(buffer);
+ if (metadata != nullptr && buffer != nullptr && private_handle_t::validate(hnd) == 0) {
+ if (getMetaData(hnd, GET_GRAPHICS_METADATA, metadata) == 0) {
+ err = Error::NONE;
+ } else {
+ err = Error::UNSUPPORTED;
+ }
+ } else {
+ ALOGE("%s: buffer pointer: %p, metadata pointer: %p ", __FUNCTION__, buffer, metadata);
+ }
+ return err;
+}
+
} // namespace implementation
-} // namespace V1_0
+} // namespace V1_1
} // namespace mapperextensions
} // namespace display
} // namespace hardware
diff --git a/gralloc/QtiMapperExtensions.h b/gralloc/QtiMapperExtensions.h
index e266e66..b333312 100644
--- a/gralloc/QtiMapperExtensions.h
+++ b/gralloc/QtiMapperExtensions.h
@@ -32,7 +32,7 @@
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
-#include <vendor/qti/hardware/display/mapperextensions/1.0/IQtiMapperExtensions.h>
+#include <vendor/qti/hardware/display/mapperextensions/1.1/IQtiMapperExtensions.h>
#include "gr_buf_mgr.h"
namespace vendor {
@@ -40,7 +40,7 @@
namespace hardware {
namespace display {
namespace mapperextensions {
-namespace V1_0 {
+namespace V1_1 {
namespace implementation {
using ::android::sp;
@@ -56,7 +56,10 @@
using ::android::hidl::base::V1_0::DebugInfo;
using ::android::hidl::base::V1_0::IBase;
using gralloc::BufferManager;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::Error;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::PlaneLayout;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::YCbCrLayout;
class QtiMapperExtensions : public IQtiMapperExtensions {
public:
@@ -88,10 +91,11 @@
Return<void> getSurfaceMetadata(void *buffer, getSurfaceMetadata_cb _hidl_cb) override;
Return<void> getFormatLayout(int32_t format, uint64_t usage, int32_t flags, int32_t width,
int32_t height, getFormatLayout_cb hidl_cb) override;
+ Return<Error> getSurfaceMetadata_V1(void *buffer, void *metadata) override;
};
} // namespace implementation
-} // namespace V1_0
+} // namespace V1_1
} // namespace mapperextensions
} // namespace display
} // namespace hardware
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 0fbf32f..82df91b 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -462,6 +462,7 @@
DisplayError error = kErrorNone;
HWCDebugHandler::Get()->GetProperty(ENABLE_NULL_DISPLAY_PROP, &null_display_mode_);
+ HWCDebugHandler::Get()->GetProperty(ENABLE_ASYNC_POWERMODE, &async_power_mode_);
if (null_display_mode_) {
DisplayNull *disp_null = new DisplayNull();
@@ -946,6 +947,11 @@
// Update release fence.
release_fence_ = release_fence;
current_power_mode_ = mode;
+
+ // Close the release fences in synchronous power updates
+ if (!async_power_mode_) {
+ PostPowerMode();
+ }
return HWC2::Error::None;
}
diff --git a/sdm/libs/hwc2/hwc_display.h b/sdm/libs/hwc2/hwc_display.h
index 80dd963..75dbee1 100644
--- a/sdm/libs/hwc2/hwc_display.h
+++ b/sdm/libs/hwc2/hwc_display.h
@@ -448,6 +448,7 @@
int release_fence_ = -1;
bool pending_config_ = false;
hwc2_config_t pending_config_index_ = 0;
+ int async_power_mode_ = 0;
};
inline int HWCDisplay::Perform(uint32_t operation, ...) {