Merge "Remove isDataspaceValid" into sc-dev am: 00b9b1190b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15265827 Change-Id: Id53fa67deb91473517dcb08cf43086b6935247a9
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user