diff options
Diffstat (limited to 'native/android')
-rw-r--r-- | native/android/surface_control.cpp | 80 |
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; |