diff options
author | dianlujitao <dianlujitao@lineageos.org> | 2022-02-17 23:11:55 +0800 |
---|---|---|
committer | LuK1337 <priv.luk@gmail.com> | 2022-04-26 09:56:26 +0200 |
commit | 4eeaa00b09ce1bef370e34acc804b27b83ef324b (patch) | |
tree | 6037553938c5740fa234c0303ee93be21c0da10e /composer/hwc_layers.cpp | |
parent | 7dcdd7ab288d6673200a8f8ffaea03ed48c32cc7 (diff) | |
parent | 1a45165b9a1dcc07c60a9513deab09d6da717288 (diff) |
Merge tag 'LA.UM.9.12.r1-13500.01-SMxx50.QSSI12.0' of http://source.codeaurora.org/quic/la/platform/hardware/qcom/display into HEAD
"LA.UM.9.12.r1-13500.01-SMxx50.QSSI12.0"
Change-Id: I4b968c6fade57ec530799753bf7c55e2fd27951c
Diffstat (limited to 'composer/hwc_layers.cpp')
-rw-r--r-- | composer/hwc_layers.cpp | 96 |
1 files changed, 95 insertions, 1 deletions
diff --git a/composer/hwc_layers.cpp b/composer/hwc_layers.cpp index 053e368b..7b74c447 100644 --- a/composer/hwc_layers.cpp +++ b/composer/hwc_layers.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2021, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright 2015 The Android Open Source Project @@ -205,6 +205,99 @@ bool GetSDMColorSpace(const int32_t &dataspace, ColorMetaData *color_metadata) { return valid; } +DisplayError ColorMetadataToDataspace(ColorMetaData color_metadata, Dataspace *dataspace) { + Dataspace primaries, transfer, range = Dataspace::UNKNOWN; + + switch (color_metadata.colorPrimaries) { + case ColorPrimaries_BT709_5: + primaries = Dataspace::STANDARD_BT709; + break; + case ColorPrimaries_BT470_6M: + primaries = Dataspace::STANDARD_BT470M; + break; + case ColorPrimaries_BT601_6_625: + primaries = Dataspace::STANDARD_BT601_625; + break; + case ColorPrimaries_BT601_6_525: + primaries = Dataspace::STANDARD_BT601_525; + break; + case ColorPrimaries_GenericFilm: + primaries = Dataspace::STANDARD_FILM; + break; + case ColorPrimaries_BT2020: + primaries = Dataspace::STANDARD_BT2020; + break; + case ColorPrimaries_AdobeRGB: + primaries = Dataspace::STANDARD_ADOBE_RGB; + break; + case ColorPrimaries_DCIP3: + primaries = Dataspace::STANDARD_DCI_P3; + break; + default: + return kErrorNotSupported; + /* + ColorPrimaries_SMPTE_240M; + ColorPrimaries_SMPTE_ST428; + ColorPrimaries_EBU3213; + */ + } + + switch (color_metadata.transfer) { + case Transfer_sRGB: + transfer = Dataspace::TRANSFER_SRGB; + break; + case Transfer_Gamma2_2: + transfer = Dataspace::TRANSFER_GAMMA2_2; + break; + case Transfer_Gamma2_8: + transfer = Dataspace::TRANSFER_GAMMA2_8; + break; + case Transfer_SMPTE_170M: + transfer = Dataspace::TRANSFER_SMPTE_170M; + break; + case Transfer_Linear: + transfer = Dataspace::TRANSFER_LINEAR; + break; + case Transfer_SMPTE_ST2084: + transfer = Dataspace::TRANSFER_ST2084; + break; + case Transfer_HLG: + transfer = Dataspace::TRANSFER_HLG; + break; + default: + return kErrorNotSupported; + /* + Transfer_SMPTE_240M + Transfer_Log + Transfer_Log_Sqrt + Transfer_XvYCC + Transfer_BT1361 + Transfer_sYCC + Transfer_BT2020_2_1 + Transfer_BT2020_2_2 + Transfer_SMPTE_ST2084 + Transfer_ST_428 + */ + } + + switch (color_metadata.range) { + case Range_Full: + range = Dataspace::RANGE_FULL; + break; + case Range_Limited: + range = Dataspace::RANGE_LIMITED; + break; + case Range_Extended: + range = Dataspace::RANGE_EXTENDED; + break; + default: + return kErrorNotSupported; + } + + *dataspace = (Dataspace)((uint32_t)primaries | (uint32_t)transfer | (uint32_t)range); + return kErrorNone; +} + // Layer operations HWCLayer::HWCLayer(hwc2_display_t display_id, HWCBufferAllocator *buf_allocator) : id_(next_id_++), display_id_(display_id), buffer_allocator_(buf_allocator) { @@ -768,6 +861,7 @@ LayerBufferFormat HWCLayer::GetSDMFormat(const int32_t &source, const int flags) format = kFormatBGR565; break; case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: format = kFormatYCbCr420SemiPlanarVenus; break; |