display: Add binder API to set color mode
Add binder API to set color mode which will do blend
space checking. This is only used for debugging.
Change-Id: Iab06930c105e8180e42ebe091ba0e05bbee2052d
diff --git a/libqservice/IQService.h b/libqservice/IQService.h
index 569c4ea..e19eccc 100644
--- a/libqservice/IQService.h
+++ b/libqservice/IQService.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2010 The Android Open Source Project
- * Copyright (C) 2012-2014, 2016-2018 The Linux Foundation. All rights reserved.
+ * Copyright (C) 2012-2014, 2016-2019 The Linux Foundation. All rights reserved.
*
* Not a Contribution, Apache license notifications and license are
* retained for attribution purposes only.
@@ -84,6 +84,7 @@
SET_DSI_CLK = 42, // Set DSI Clk.
GET_DSI_CLK = 43, // Get DSI Clk.
GET_SUPPORTED_DSI_CLK = 44, // Get supported DSI Clk.
+ SET_COLOR_MODE_FROM_CLIENT = 45, // Overrides the QDCM mode using the given mode ID
COMMAND_LIST_END = 400,
};
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index 562903b..d727323 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -1545,6 +1545,14 @@
status = GetSupportedDsiClk(input_parcel, output_parcel);
break;
+ case qService::IQService::SET_COLOR_MODE_FROM_CLIENT:
+ if (!input_parcel) {
+ DLOGE("QService command = %d: input_parcel needed.", command);
+ break;
+ }
+ status = SetColorModeFromClient(input_parcel);
+ break;
+
default:
DLOGW("QService command = %d is not supported.", command);
break;
@@ -1817,6 +1825,27 @@
return 0;
}
+android::status_t HWCSession::SetColorModeFromClient(const android::Parcel *input_parcel) {
+ int display = input_parcel->readInt32();
+ auto mode = input_parcel->readInt32();
+ auto device = static_cast<hwc2_device_t *>(this);
+
+ int disp_idx = GetDisplayIndex(display);
+ if (disp_idx == -1) {
+ DLOGE("Invalid display = %d", display);
+ return -EINVAL;
+ }
+
+ auto err = CallDisplayFunction(device, static_cast<hwc2_display_t>(disp_idx),
+ &HWCDisplay::SetColorModeFromClientApi, mode);
+ if (err != HWC2_ERROR_NONE)
+ return -EINVAL;
+
+ Refresh(static_cast<hwc2_display_t>(disp_idx));
+
+ return 0;
+}
+
android::status_t HWCSession::RefreshScreen(const android::Parcel *input_parcel) {
int display = input_parcel->readInt32();
diff --git a/sdm/libs/hwc2/hwc_session.h b/sdm/libs/hwc2/hwc_session.h
index 5dd803d..d66f59b 100644
--- a/sdm/libs/hwc2/hwc_session.h
+++ b/sdm/libs/hwc2/hwc_session.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright 2015 The Android Open Source Project
@@ -359,6 +359,7 @@
android::status_t SetColorModeWithRenderIntentOverride(const android::Parcel *input_parcel);
android::status_t SetColorModeById(const android::Parcel *input_parcel);
+ android::status_t SetColorModeFromClient(const android::Parcel *input_parcel);
android::status_t getComposerStatus();
android::status_t SetQSyncMode(const android::Parcel *input_parcel);
android::status_t SetIdlePC(const android::Parcel *input_parcel);