summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--native/android/surface_control.cpp80
1 files changed, 8 insertions, 72 deletions
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 93a54445a033..693a027bd0e2 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -44,70 +44,14 @@ using Transaction = SurfaceComposerClient::Transaction;
LOG_ALWAYS_FATAL_IF(!static_cast<const Rect&>(name).isValid(), \
"invalid arg passed as " #name " argument");
-static bool getWideColorSupport(const sp<SurfaceControl>& surfaceControl) {
- sp<SurfaceComposerClient> client = surfaceControl->getClient();
-
- const sp<IBinder> display = client->getInternalDisplayToken();
- if (display == nullptr) {
- ALOGE("unable to get wide color support for disconnected internal display");
- return false;
- }
-
- bool isWideColorDisplay = false;
- status_t err = client->isWideColorDisplay(display, &isWideColorDisplay);
- if (err) {
- ALOGE("unable to get wide color support");
- return false;
- }
- return isWideColorDisplay;
-}
-
-static bool getHdrSupport(const sp<SurfaceControl>& surfaceControl) {
- sp<SurfaceComposerClient> client = surfaceControl->getClient();
-
- const sp<IBinder> display = client->getInternalDisplayToken();
- if (display == nullptr) {
- ALOGE("unable to get hdr capabilities for disconnected internal display");
- return false;
- }
-
- ui::DynamicDisplayInfo info;
- if (status_t err = client->getDynamicDisplayInfo(display, &info); err != NO_ERROR) {
- ALOGE("unable to get hdr capabilities");
- return err;
- }
-
- return !info.hdrCapabilities.getSupportedHdrTypes().empty();
-}
-
-static bool isDataSpaceValid(const sp<SurfaceControl>& surfaceControl, ADataSpace dataSpace) {
- static_assert(static_cast<int>(ADATASPACE_UNKNOWN) == static_cast<int>(HAL_DATASPACE_UNKNOWN));
- static_assert(static_cast<int>(ADATASPACE_SCRGB_LINEAR) == static_cast<int>(HAL_DATASPACE_V0_SCRGB_LINEAR));
- static_assert(static_cast<int>(ADATASPACE_SRGB) == static_cast<int>(HAL_DATASPACE_V0_SRGB));
- static_assert(static_cast<int>(ADATASPACE_SCRGB) == static_cast<int>(HAL_DATASPACE_V0_SCRGB));
- static_assert(static_cast<int>(ADATASPACE_DISPLAY_P3) == static_cast<int>(HAL_DATASPACE_DISPLAY_P3));
- static_assert(static_cast<int>(ADATASPACE_BT2020_PQ) == static_cast<int>(HAL_DATASPACE_BT2020_PQ));
-
- switch (static_cast<android_dataspace_t>(dataSpace)) {
- case HAL_DATASPACE_UNKNOWN:
- case HAL_DATASPACE_V0_SRGB:
- return true;
- // These data space need wide gamut support.
- case HAL_DATASPACE_V0_SCRGB_LINEAR:
- case HAL_DATASPACE_V0_SCRGB:
- case HAL_DATASPACE_DISPLAY_P3:
- return getWideColorSupport(surfaceControl);
- // These data space need HDR support.
- case HAL_DATASPACE_BT2020_PQ:
- if (!getHdrSupport(surfaceControl)) {
- ALOGE("Invalid dataspace - device does not support hdr");
- return false;
- }
- return true;
- default:
- return false;
- }
-}
+static_assert(static_cast<int>(ADATASPACE_UNKNOWN) == static_cast<int>(HAL_DATASPACE_UNKNOWN));
+static_assert(static_cast<int>(ADATASPACE_SCRGB_LINEAR) ==
+ static_cast<int>(HAL_DATASPACE_V0_SCRGB_LINEAR));
+static_assert(static_cast<int>(ADATASPACE_SRGB) == static_cast<int>(HAL_DATASPACE_V0_SRGB));
+static_assert(static_cast<int>(ADATASPACE_SCRGB) == static_cast<int>(HAL_DATASPACE_V0_SCRGB));
+static_assert(static_cast<int>(ADATASPACE_DISPLAY_P3) ==
+ static_cast<int>(HAL_DATASPACE_DISPLAY_P3));
+static_assert(static_cast<int>(ADATASPACE_BT2020_PQ) == static_cast<int>(HAL_DATASPACE_BT2020_PQ));
Transaction* ASurfaceTransaction_to_Transaction(ASurfaceTransaction* aSurfaceTransaction) {
return reinterpret_cast<Transaction*>(aSurfaceTransaction);
@@ -580,10 +524,6 @@ void ASurfaceTransaction_setBufferDataSpace(ASurfaceTransaction* aSurfaceTransac
CHECK_NOT_NULL(aSurfaceControl);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
- if (!isDataSpaceValid(surfaceControl, aDataSpace)) {
- ALOGE("Failed to set buffer dataspace - invalid dataspace");
- return;
- }
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
transaction->setDataspace(surfaceControl, static_cast<ui::Dataspace>(aDataSpace));
}
@@ -650,10 +590,6 @@ void ASurfaceTransaction_setColor(ASurfaceTransaction* aSurfaceTransaction,
CHECK_NOT_NULL(aSurfaceControl);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
- if (!isDataSpaceValid(surfaceControl, dataspace)) {
- ALOGE("Failed to set buffer dataspace - invalid dataspace");
- return;
- }
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
half3 color;