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

Commit 6879659d authored by John Reck's avatar John Reck
Browse files

Add extended brightness range impl

Bug: 241001465
Test: manual currently, flagged off
Change-Id: I707281b9acaf6ea218f1d9ce888fc7cdbf1cf7c9
parent 6caf98c5
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -187,6 +187,8 @@ status_t layer_state_t::write(Parcel& output) const
    }
    SAFE_PARCEL(output.writeParcelable, trustedPresentationThresholds);
    SAFE_PARCEL(output.writeParcelable, trustedPresentationListener);
    SAFE_PARCEL(output.writeFloat, currentSdrHdrRatio);
    SAFE_PARCEL(output.writeFloat, desiredSdrHdrRatio);
    return NO_ERROR;
}

@@ -321,6 +323,11 @@ status_t layer_state_t::read(const Parcel& input)
    SAFE_PARCEL(input.readParcelable, &trustedPresentationThresholds);
    SAFE_PARCEL(input.readParcelable, &trustedPresentationListener);

    SAFE_PARCEL(input.readFloat, &tmpFloat);
    currentSdrHdrRatio = tmpFloat;
    SAFE_PARCEL(input.readFloat, &tmpFloat);
    desiredSdrHdrRatio = tmpFloat;

    return NO_ERROR;
}

@@ -568,6 +575,11 @@ void layer_state_t::merge(const layer_state_t& other) {
        what |= eDataspaceChanged;
        dataspace = other.dataspace;
    }
    if (other.what & eExtendedRangeBrightnessChanged) {
        what |= eExtendedRangeBrightnessChanged;
        desiredSdrHdrRatio = other.desiredSdrHdrRatio;
        currentSdrHdrRatio = other.currentSdrHdrRatio;
    }
    if (other.what & eHdrMetadataChanged) {
        what |= eHdrMetadataChanged;
        hdrMetadata = other.hdrMetadata;
@@ -714,6 +726,8 @@ uint64_t layer_state_t::diff(const layer_state_t& other) const {
    CHECK_DIFF(diff, eCropChanged, other, crop);
    if (other.what & eBufferChanged) diff |= eBufferChanged;
    CHECK_DIFF(diff, eDataspaceChanged, other, dataspace);
    CHECK_DIFF2(diff, eExtendedRangeBrightnessChanged, other, currentSdrHdrRatio,
                desiredSdrHdrRatio);
    CHECK_DIFF(diff, eHdrMetadataChanged, other, hdrMetadata);
    if (other.what & eSurfaceDamageRegionChanged &&
        (!surfaceDamageRegion.hasSameRects(other.surfaceDamageRegion))) {
+15 −0
Original line number Diff line number Diff line
@@ -1673,6 +1673,21 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setDatas
    return *this;
}

SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setExtendedRangeBrightness(
        const sp<SurfaceControl>& sc, float currentBufferRatio, float desiredRatio) {
    layer_state_t* s = getLayerState(sc);
    if (!s) {
        mStatus = BAD_INDEX;
        return *this;
    }
    s->what |= layer_state_t::eExtendedRangeBrightnessChanged;
    s->currentSdrHdrRatio = currentBufferRatio;
    s->desiredSdrHdrRatio = desiredRatio;

    registerSurfaceControlForCallback(sc);
    return *this;
}

SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setHdrMetadata(
        const sp<SurfaceControl>& sc, const HdrMetadata& hdrMetadata) {
    layer_state_t* s = getLayerState(sc);
+6 −2
Original line number Diff line number Diff line
@@ -209,7 +209,8 @@ struct layer_state_t {
        eAutoRefreshChanged = 0x1000'00000000,
        eStretchChanged = 0x2000'00000000,
        eTrustedOverlayChanged = 0x4000'00000000,
        eDropInputModeChanged = 0x8000'00000000
        eDropInputModeChanged = 0x8000'00000000,
        eExtendedRangeBrightnessChanged = 0x10000'00000000
    };

    layer_state_t();
@@ -240,7 +241,8 @@ struct layer_state_t {
            layer_state_t::eBufferTransformChanged | layer_state_t::eDataspaceChanged |
            layer_state_t::eSidebandStreamChanged | layer_state_t::eSurfaceDamageRegionChanged |
            layer_state_t::eTransformToDisplayInverseChanged |
            layer_state_t::eTransparentRegionChanged;
            layer_state_t::eTransparentRegionChanged |
            layer_state_t::eExtendedRangeBrightnessChanged;

    // Content updates.
    static constexpr uint64_t CONTENT_CHANGES = layer_state_t::BUFFER_CHANGES |
@@ -385,6 +387,8 @@ struct layer_state_t {
    gui::DropInputMode dropInputMode;

    bool dimmingEnabled;
    float currentSdrHdrRatio = 1.f;
    float desiredSdrHdrRatio = 1.f;

    TrustedPresentationThresholds trustedPresentationThresholds;
    TrustedPresentationListener trustedPresentationListener;
+2 −0
Original line number Diff line number Diff line
@@ -559,6 +559,8 @@ public:
        Transaction& setBufferHasBarrier(const sp<SurfaceControl>& sc,
                                         uint64_t barrierFrameNumber);
        Transaction& setDataspace(const sp<SurfaceControl>& sc, ui::Dataspace dataspace);
        Transaction& setExtendedRangeBrightness(const sp<SurfaceControl>& sc,
                                                float currentBufferRatio, float desiredRatio);
        Transaction& setHdrMetadata(const sp<SurfaceControl>& sc, const HdrMetadata& hdrMetadata);
        Transaction& setSurfaceDamageRegion(const sp<SurfaceControl>& sc,
                                            const Region& surfaceDamageRegion);
+3 −0
Original line number Diff line number Diff line
@@ -209,6 +209,9 @@ struct LayerFECompositionState {
    // The dimming flag
    bool dimmingEnabled{true};

    float currentSdrHdrRatio = 1.f;
    float desiredSdrHdrRatio = 1.f;

    virtual ~LayerFECompositionState();

    // Debugging
Loading