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

Commit b6c8f0db authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "FrameBufferSurface: initialize ConsumerBase in onFirstRef()." into main

parents 4e9ba57b 5edbca5f
Loading
Loading
Loading
Loading
+12 −5
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa
                                       const ui::Size& size, const ui::Size& maxSize)
                                       const ui::Size& size, const ui::Size& maxSize)
      : ConsumerBase(producer, consumer),
      : ConsumerBase(producer, consumer),
        mDisplayId(displayId),
        mDisplayId(displayId),
        mLimitedSize(limitSize(size)),
        mMaxSize(maxSize),
        mMaxSize(maxSize),
        mCurrentBufferSlot(-1),
        mCurrentBufferSlot(-1),
        mCurrentBuffer(),
        mCurrentBuffer(),
@@ -65,19 +66,25 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa
        mPreviousBuffer() {
        mPreviousBuffer() {
    ALOGV("Creating for display %s", to_string(displayId).c_str());
    ALOGV("Creating for display %s", to_string(displayId).c_str());


    for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) {
        mHwcBufferIds[i] = UINT64_MAX;
    }
}

void FramebufferSurface::initializeConsumer() {
    mName = "FramebufferSurface";
    mName = "FramebufferSurface";
    mConsumer->setConsumerName(mName);
    mConsumer->setConsumerName(mName);
    mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB |
    mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB |
                                       GRALLOC_USAGE_HW_RENDER |
                                       GRALLOC_USAGE_HW_RENDER |
                                       GRALLOC_USAGE_HW_COMPOSER);
                                       GRALLOC_USAGE_HW_COMPOSER);
    const auto limitedSize = limitSize(size);
    mConsumer->setDefaultBufferSize(mLimitedSize.width, mLimitedSize.height);
    mConsumer->setDefaultBufferSize(limitedSize.width, limitedSize.height);
    mConsumer->setMaxAcquiredBufferCount(
    mConsumer->setMaxAcquiredBufferCount(
            SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1);
            SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1);

    for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) {
        mHwcBufferIds[i] = UINT64_MAX;
}
}

void FramebufferSurface::onFirstRef() {
    ConsumerBase::onFirstRef();
    initializeConsumer();
}
}


void FramebufferSurface::resizeBuffers(const ui::Size& newSize) {
void FramebufferSurface::resizeBuffers(const ui::Size& newSize) {
+6 −0
Original line number Original line Diff line number Diff line
@@ -54,9 +54,13 @@ public:


    virtual const sp<Fence>& getClientTargetAcquireFence() const override;
    virtual const sp<Fence>& getClientTargetAcquireFence() const override;


    void onFirstRef() override;

private:
private:
    friend class FramebufferSurfaceTest;
    friend class FramebufferSurfaceTest;


    void initializeConsumer();

    // Limits the width and height by the maximum width specified.
    // Limits the width and height by the maximum width specified.
    ui::Size limitSize(const ui::Size&);
    ui::Size limitSize(const ui::Size&);


@@ -71,6 +75,8 @@ private:


    const PhysicalDisplayId mDisplayId;
    const PhysicalDisplayId mDisplayId;


    const ui::Size mLimitedSize;

    // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of
    // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of
    // the device.
    // the device.
    const ui::Size mMaxSize;
    const ui::Size mMaxSize;