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

Commit 835f0ad6 authored by Ramakant Singh's avatar Ramakant Singh Committed by Steve Kondik
Browse files

Display: Define new composition type for blit composition

This change defines a new flag 'hasBlitComp' to identify
blit composition. This flag is used to enable the swap rect
feature for blit composition cases.

Change-Id: Ic523e19796a893efbfc3bff300d1f982cba5ddfa
parent 51dbd89a
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -816,6 +816,9 @@ status_t HWComposer::prepare() {
                    // trigger a FLIP
                    if(l.compositionType == HWC_BLIT) {
                        disp.hasFbComp = true;
                     // Setting disp.hasBlitComp to true to identify
                     // blit cases. This is used in features like swaprect.
                        disp.hasBlitComp = true;
                    }
                    if (l.compositionType == HWC_OVERLAY) {
                        disp.hasOvComp = true;
@@ -839,6 +842,12 @@ bool HWComposer::hasGlesComposition(int32_t id) const {
    return mDisplayData[id].hasFbComp;
}

bool HWComposer::hasBlitComposition(int32_t id) const {
    if (!mHwc || uint32_t(id)>31 || !mAllocatedDisplayIDs.hasBit(id))
         return false;
    return mDisplayData[id].hasBlitComp;
}

sp<Fence> HWComposer::getAndResetReleaseFence(int32_t id) {
    if (uint32_t(id)>31 || !mAllocatedDisplayIDs.hasBit(id))
        return Fence::NO_FENCE;
+2 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ public:

    // does this display have layers handled by HWC
    bool hasHwcComposition(int32_t id) const;
    bool hasBlitComposition(int32_t id) const;

    // does this display have layers handled by GLES
    bool hasGlesComposition(int32_t id) const;
@@ -321,6 +322,7 @@ private:
        nsecs_t refresh;
        bool connected;
        bool hasFbComp;
        bool hasBlitComp;
        bool hasOvComp;
        size_t capacity;
        hwc_display_contents_1* list;
+5 −2
Original line number Diff line number Diff line
@@ -3430,8 +3430,11 @@ void SurfaceFlinger::setupSwapRect()
    qdutils::cb_swap_rect::getInstance().setSwapRectFeature_on(false);
#endif
    hwc.setSwapRectOn(false);

    if (mSwapRectEnable && hwc.hasHwcComposition(HWC_DISPLAY_PRIMARY)) {
    /*
     * swap rect is enabled if swaprect property is set
     * and it is blit composition
     */
    if (mSwapRectEnable && hwc.hasBlitComposition(HWC_DISPLAY_PRIMARY)) {
        int  totalDirtyRects = 0;
        Region consolidateVisibleRegion;
        Rect swapDirtyRect(Rect(0,0,0,0));