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

Commit a6bb2bc9 authored by Robert Carr's avatar Robert Carr
Browse files

Buffer(Queue/State)Layer: Consolidate preparePerFrameCompositionState

The only difference is the BLAST implementation fails when there is
no cached buffer. While in general we expect cacheBuffers to be called
by apply() there's no reason to add more code just to fail here.
Noticed this while investigating a bug where cacheBuffers wasn't
called.

Bug: 153561718
Test: Existing tests pass
Change-Id: If1faae68ef11de3f8b37474abeff14c42af3cd57
parent 696b6c83
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -294,6 +294,7 @@ void BufferLayer::preparePerFrameCompositionState() {
    auto* compositionState = editCompositionState();
    auto* compositionState = editCompositionState();
    if (compositionState->sidebandStream.get()) {
    if (compositionState->sidebandStream.get()) {
        compositionState->compositionType = Hwc2::IComposerClient::Composition::SIDEBAND;
        compositionState->compositionType = Hwc2::IComposerClient::Composition::SIDEBAND;
        return;
    } else {
    } else {
        // Normal buffer layers
        // Normal buffer layers
        compositionState->hdrMetadata = mBufferInfo.mHdrMetadata;
        compositionState->hdrMetadata = mBufferInfo.mHdrMetadata;
@@ -301,6 +302,12 @@ void BufferLayer::preparePerFrameCompositionState() {
                ? Hwc2::IComposerClient::Composition::CURSOR
                ? Hwc2::IComposerClient::Composition::CURSOR
                : Hwc2::IComposerClient::Composition::DEVICE;
                : Hwc2::IComposerClient::Composition::DEVICE;
    }
    }

    compositionState->buffer = mBufferInfo.mBuffer;
    compositionState->bufferSlot = (mBufferInfo.mBufferSlot == BufferQueue::INVALID_BUFFER_SLOT)
            ? 0
            : mBufferInfo.mBufferSlot;
    compositionState->acquireFence = mBufferInfo.mFence;
}
}


bool BufferLayer::onPreComposition(nsecs_t refreshStartTime) {
bool BufferLayer::onPreComposition(nsecs_t refreshStartTime) {
+0 −15
Original line number Original line Diff line number Diff line
@@ -365,21 +365,6 @@ status_t BufferQueueLayer::updateFrameNumber(nsecs_t latchTime) {
    return NO_ERROR;
    return NO_ERROR;
}
}


void BufferQueueLayer::preparePerFrameCompositionState() {
    BufferLayer::preparePerFrameCompositionState();

    auto* compositionState = editCompositionState();
    if (compositionState->compositionType == Hwc2::IComposerClient::Composition::SIDEBAND) {
        return;
    }

    compositionState->buffer = mBufferInfo.mBuffer;
    compositionState->bufferSlot = (mBufferInfo.mBufferSlot == BufferQueue::INVALID_BUFFER_SLOT)
            ? 0
            : mBufferInfo.mBufferSlot;
    compositionState->acquireFence = mBufferInfo.mFence;
}

// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// Interface implementation for BufferLayerConsumer::ContentsChangedListener
// Interface implementation for BufferLayerConsumer::ContentsChangedListener
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
+0 −1
Original line number Original line Diff line number Diff line
@@ -82,7 +82,6 @@ private:
    status_t updateActiveBuffer() override;
    status_t updateActiveBuffer() override;
    status_t updateFrameNumber(nsecs_t latchTime) override;
    status_t updateFrameNumber(nsecs_t latchTime) override;


    void preparePerFrameCompositionState() override;
    sp<Layer> createClone() override;
    sp<Layer> createClone() override;


    void onFrameAvailable(const BufferItem& item);
    void onFrameAvailable(const BufferItem& item);
+0 −13
Original line number Original line Diff line number Diff line
@@ -631,19 +631,6 @@ status_t BufferStateLayer::updateFrameNumber(nsecs_t latchTime) {
    return NO_ERROR;
    return NO_ERROR;
}
}


void BufferStateLayer::preparePerFrameCompositionState() {
    BufferLayer::preparePerFrameCompositionState();

    auto* compositionState = editCompositionState();
    if (compositionState->compositionType == Hwc2::IComposerClient::Composition::SIDEBAND) {
        return;
    }

    compositionState->buffer = mBufferInfo.mBuffer;
    compositionState->bufferSlot = mBufferInfo.mBufferSlot;
    compositionState->acquireFence = mBufferInfo.mFence;
}

void BufferStateLayer::HwcSlotGenerator::bufferErased(const client_cache_t& clientCacheId) {
void BufferStateLayer::HwcSlotGenerator::bufferErased(const client_cache_t& clientCacheId) {
    std::lock_guard lock(mMutex);
    std::lock_guard lock(mMutex);
    if (!clientCacheId.isValid()) {
    if (!clientCacheId.isValid()) {
+0 −1
Original line number Original line Diff line number Diff line
@@ -138,7 +138,6 @@ private:
    status_t updateActiveBuffer() override;
    status_t updateActiveBuffer() override;
    status_t updateFrameNumber(nsecs_t latchTime) override;
    status_t updateFrameNumber(nsecs_t latchTime) override;


    void preparePerFrameCompositionState() override;
    sp<Layer> createClone() override;
    sp<Layer> createClone() override;


    // Crop that applies to the buffer
    // Crop that applies to the buffer