Merge "gpu_tonemapper: Free eglImage on termination"
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index ae167ba..583767a 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -275,6 +275,7 @@
case HAL_PIXEL_FORMAT_YCrCb_422_SP:
case HAL_PIXEL_FORMAT_YCbCr_422_I:
case HAL_PIXEL_FORMAT_YCrCb_422_I:
+ case HAL_PIXEL_FORMAT_YCbCr_420_P010:
aligned_w = ALIGN(width, 16);
break;
case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
@@ -631,6 +632,9 @@
case HAL_PIXEL_FORMAT_YCrCb_420_SP:
size = ALIGN((alignedw*alignedh) + (alignedw* alignedh)/2 + 1, 4096);
break;
+ case HAL_PIXEL_FORMAT_YCbCr_420_P010:
+ size = ALIGN((alignedw * alignedh * 2) + (alignedw * alignedh) + 1, 4096);
+ break;
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
case HAL_PIXEL_FORMAT_YCrCb_422_SP:
case HAL_PIXEL_FORMAT_YCbCr_422_I:
diff --git a/libgralloc1/gr_allocator.cpp b/libgralloc1/gr_allocator.cpp
index 32bc4ef..578b2f6 100644
--- a/libgralloc1/gr_allocator.cpp
+++ b/libgralloc1/gr_allocator.cpp
@@ -307,6 +307,9 @@
case HAL_PIXEL_FORMAT_YCrCb_420_SP:
size = ALIGN((alignedw * alignedh) + (alignedw * alignedh) / 2 + 1, SIZE_4K);
break;
+ case HAL_PIXEL_FORMAT_YCbCr_420_P010:
+ size = ALIGN((alignedw * alignedh * 2) + (alignedw * alignedh) + 1, SIZE_4K);
+ break;
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
case HAL_PIXEL_FORMAT_YCrCb_422_SP:
case HAL_PIXEL_FORMAT_YCbCr_422_I:
@@ -862,6 +865,7 @@
case HAL_PIXEL_FORMAT_YCrCb_422_SP:
case HAL_PIXEL_FORMAT_YCbCr_422_I:
case HAL_PIXEL_FORMAT_YCrCb_422_I:
+ case HAL_PIXEL_FORMAT_YCbCr_420_P010:
aligned_w = ALIGN(width, 16);
break;
case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
diff --git a/sdm/include/private/color_params.h b/sdm/include/private/color_params.h
index d2f8094..91499f9 100644
--- a/sdm/include/private/color_params.h
+++ b/sdm/include/private/color_params.h
@@ -51,6 +51,7 @@
kEnableFrameCapture = BITMAP(6),
kDisableFrameCapture = BITMAP(7),
kConfigureDetailedEnhancer = BITMAP(8),
+ kGetDetailedEnhancerData = BITMAP(21),
kNoAction = BITMAP(31),
};
diff --git a/sdm/libs/hwc/hwc_color_manager.cpp b/sdm/libs/hwc/hwc_color_manager.cpp
index bfa827e..471ca49 100644
--- a/sdm/libs/hwc/hwc_color_manager.cpp
+++ b/sdm/libs/hwc/hwc_color_manager.cpp
@@ -417,9 +417,8 @@
return ret;
}
-int HWCColorManager::SetDetailedEnhancer(void *params, HWCDisplay *hwc_display) {
- SCOPE_LOCK(locker_);
- DisplayError err = kErrorNone;
+int HWCColorManager::SetHWDetailedEnhancerConfig(void *params, HWCDisplay *hwc_display) {
+ int err = -1;
DisplayDetailEnhancerData de_data;
PPDETuningCfgData *de_tuning_cfg_data = reinterpret_cast<PPDETuningCfgData*>(params);
@@ -485,7 +484,31 @@
}
de_tuning_cfg_data->cfg_pending = false;
}
+ return err;
+}
+void HWCColorManager::SetColorModeDetailEnhancer(HWCDisplay *hwc_display) {
+ SCOPE_LOCK(locker_);
+ int err = -1;
+ PPPendingParams pending_action;
+ PPDisplayAPIPayload req_payload;
+
+ pending_action.action = kGetDetailedEnhancerData;
+ pending_action.params = NULL;
+
+ if (hwc_display) {
+ err = hwc_display->ColorSVCRequestRoute(req_payload, NULL, &pending_action);
+ if (!err && pending_action.action == kConfigureDetailedEnhancer) {
+ err = SetHWDetailedEnhancerConfig(pending_action.params, hwc_display);
+ }
+ }
+ return;
+}
+
+int HWCColorManager::SetDetailedEnhancer(void *params, HWCDisplay *hwc_display) {
+ SCOPE_LOCK(locker_);
+ int err = -1;
+ err = SetHWDetailedEnhancerConfig(params, hwc_display);
return err;
}
diff --git a/sdm/libs/hwc/hwc_color_manager.h b/sdm/libs/hwc/hwc_color_manager.h
index 792d5ca..0f4247d 100644
--- a/sdm/libs/hwc/hwc_color_manager.h
+++ b/sdm/libs/hwc/hwc_color_manager.h
@@ -120,6 +120,8 @@
bool SolidFillLayersSet(hwc_display_contents_1_t **displays, HWCDisplay *hwc_display);
int SetFrameCapture(void *params, bool enable, HWCDisplay *hwc_display);
int SetDetailedEnhancer(void *params, HWCDisplay *hwc_display);
+ void SetColorModeDetailEnhancer(HWCDisplay *hwc_display);
+ int SetHWDetailedEnhancerConfig(void *params, HWCDisplay *hwc_display);
protected:
int CreateSolidFillLayers(HWCDisplay *hwc_display);
diff --git a/sdm/libs/hwc/hwc_debugger.cpp b/sdm/libs/hwc/hwc_debugger.cpp
index cbcb244..84a77b1 100644
--- a/sdm/libs/hwc/hwc_debugger.cpp
+++ b/sdm/libs/hwc/hwc_debugger.cpp
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2014 - 2016, The Linux Foundation. All rights reserved.
+* Copyright (c) 2014 - 2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -108,16 +108,20 @@
}
}
-void HWCDebugHandler::Error(DebugTag /*tag*/, const char *format, ...) {
- va_list list;
- va_start(list, format);
- __android_log_vprint(ANDROID_LOG_ERROR, LOG_TAG, format, list);
+void HWCDebugHandler::Error(DebugTag tag, const char *format, ...) {
+ if (debug_flags_[tag]) {
+ va_list list;
+ va_start(list, format);
+ __android_log_vprint(ANDROID_LOG_ERROR, LOG_TAG, format, list);
+ }
}
-void HWCDebugHandler::Warning(DebugTag /*tag*/, const char *format, ...) {
- va_list list;
- va_start(list, format);
- __android_log_vprint(ANDROID_LOG_WARN, LOG_TAG, format, list);
+void HWCDebugHandler::Warning(DebugTag tag, const char *format, ...) {
+ if (debug_flags_[tag]) {
+ va_list list;
+ va_start(list, format);
+ __android_log_vprint(ANDROID_LOG_WARN, LOG_TAG, format, list);
+ }
}
void HWCDebugHandler::Info(DebugTag tag, const char *format, ...) {
diff --git a/sdm/libs/hwc/hwc_session.cpp b/sdm/libs/hwc/hwc_session.cpp
index 2d0605a..8f829ea 100644
--- a/sdm/libs/hwc/hwc_session.cpp
+++ b/sdm/libs/hwc/hwc_session.cpp
@@ -373,6 +373,7 @@
int ret = hwc_session->color_mgr_->SolidFillLayersSet(displays, primary_display);
if (ret)
return 0;
+ hwc_session->color_mgr_->SetColorModeDetailEnhancer(primary_display);
}
}
diff --git a/sdm/libs/hwc2/hwc_color_manager.cpp b/sdm/libs/hwc2/hwc_color_manager.cpp
index c76f540..61618cb 100644
--- a/sdm/libs/hwc2/hwc_color_manager.cpp
+++ b/sdm/libs/hwc2/hwc_color_manager.cpp
@@ -273,9 +273,8 @@
return ret;
}
-int HWCColorManager::SetDetailedEnhancer(void *params, HWCDisplay *hwc_display) {
- SCOPE_LOCK(locker_);
- DisplayError err = kErrorNone;
+int HWCColorManager::SetHWDetailedEnhancerConfig(void *params, HWCDisplay *hwc_display) {
+ int err = -1;
DisplayDetailEnhancerData de_data;
PPDETuningCfgData *de_tuning_cfg_data = reinterpret_cast<PPDETuningCfgData*>(params);
@@ -341,7 +340,31 @@
}
de_tuning_cfg_data->cfg_pending = false;
}
+ return err;
+}
+void HWCColorManager::SetColorModeDetailEnhancer(HWCDisplay *hwc_display) {
+ SCOPE_LOCK(locker_);
+ int err = -1;
+ PPPendingParams pending_action;
+ PPDisplayAPIPayload req_payload;
+
+ pending_action.action = kGetDetailedEnhancerData;
+ pending_action.params = NULL;
+
+ if (hwc_display) {
+ err = hwc_display->ColorSVCRequestRoute(req_payload, NULL, &pending_action);
+ if (!err && pending_action.action == kConfigureDetailedEnhancer) {
+ err = SetHWDetailedEnhancerConfig(pending_action.params, hwc_display);
+ }
+ }
+ return;
+}
+
+int HWCColorManager::SetDetailedEnhancer(void *params, HWCDisplay *hwc_display) {
+ SCOPE_LOCK(locker_);
+ int err = -1;
+ err = SetHWDetailedEnhancerConfig(params, hwc_display);
return err;
}
diff --git a/sdm/libs/hwc2/hwc_color_manager.h b/sdm/libs/hwc2/hwc_color_manager.h
index 62b6bce..a407f85 100644
--- a/sdm/libs/hwc2/hwc_color_manager.h
+++ b/sdm/libs/hwc2/hwc_color_manager.h
@@ -117,6 +117,8 @@
int SetSolidFill(const void *params, bool enable, HWCDisplay *hwc_display);
int SetFrameCapture(void *params, bool enable, HWCDisplay *hwc_display);
int SetDetailedEnhancer(void *params, HWCDisplay *hwc_display);
+ void SetColorModeDetailEnhancer(HWCDisplay *hwc_display);
+ int SetHWDetailedEnhancerConfig(void *params, HWCDisplay *hwc_display);
protected:
int CreateSolidFillLayers(HWCDisplay *hwc_display);
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index 8fcc255..79a3a37 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -574,6 +574,10 @@
if (hwc_session->need_invalidate_) {
hwc_session->callbacks_.Refresh(display);
}
+
+ if (hwc_session->color_mgr_) {
+ hwc_session->color_mgr_->SetColorModeDetailEnhancer(hwc_session->hwc_display_[display]);
+ }
}
status = hwc_session->hwc_display_[display]->Validate(out_num_types, out_num_requests);