Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b165f8ce authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix Surface HDR meta reset" am: 96611b93 am: 008e733c am: 7065b189

parents 437e7e59 7065b189
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1108,8 +1108,11 @@ void Surface::applyGrallocMetadataLocked(
    ATRACE_CALL();
    auto& mapper = GraphicBufferMapper::get();
    mapper.setDataspace(buffer->handle, static_cast<ui::Dataspace>(queueBufferInput.dataSpace));
    if (mHdrMetadataIsSet & HdrMetadata::SMPTE2086)
        mapper.setSmpte2086(buffer->handle, queueBufferInput.getHdrMetadata().getSmpte2086());
    if (mHdrMetadataIsSet & HdrMetadata::CTA861_3)
        mapper.setCta861_3(buffer->handle, queueBufferInput.getHdrMetadata().getCta8613());
    if (mHdrMetadataIsSet & HdrMetadata::HDR10PLUS)
        mapper.setSmpte2094_40(buffer->handle, queueBufferInput.getHdrMetadata().getHdr10Plus());
}

@@ -2252,6 +2255,7 @@ int Surface::setBuffersDataSpace(Dataspace dataSpace)
int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metadata) {
    ALOGV("Surface::setBuffersSmpte2086Metadata");
    Mutex::Autolock lock(mMutex);
    mHdrMetadataIsSet |= HdrMetadata::SMPTE2086;
    if (metadata) {
        mHdrMetadata.smpte2086 = *metadata;
        mHdrMetadata.validTypes |= HdrMetadata::SMPTE2086;
@@ -2264,6 +2268,7 @@ int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metad
int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata) {
    ALOGV("Surface::setBuffersCta8613Metadata");
    Mutex::Autolock lock(mMutex);
    mHdrMetadataIsSet |= HdrMetadata::CTA861_3;
    if (metadata) {
        mHdrMetadata.cta8613 = *metadata;
        mHdrMetadata.validTypes |= HdrMetadata::CTA861_3;
@@ -2276,6 +2281,7 @@ int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata
int Surface::setBuffersHdr10PlusMetadata(const size_t size, const uint8_t* metadata) {
    ALOGV("Surface::setBuffersBlobMetadata");
    Mutex::Autolock lock(mMutex);
    mHdrMetadataIsSet |= HdrMetadata::HDR10PLUS;
    if (size > 0) {
        mHdrMetadata.hdr10plus.assign(metadata, metadata + size);
        mHdrMetadata.validTypes |= HdrMetadata::HDR10PLUS;
+5 −0
Original line number Diff line number Diff line
@@ -486,6 +486,11 @@ protected:
    // queue operation.  There is no HDR metadata by default.
    HdrMetadata mHdrMetadata;

    // mHdrMetadataIsSet is a bitfield to track which HDR metadata has been set.
    // Prevent Surface from resetting HDR metadata that was set on a bufer when
    // HDR metadata is not set on this Surface.
    uint32_t mHdrMetadataIsSet{0};

    // mCrop is the crop rectangle that will be used for the next buffer
    // that gets queued. It is set by calling setCrop.
    Rect mCrop;