Loading services/surfaceflinger/DisplayHardware/HWC2.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <ui/Fence.h> #include <ui/FloatRect.h> #include <ui/GraphicBuffer.h> #include <ui/Region.h> #include <android/configuration.h> Loading Loading @@ -826,6 +825,11 @@ Error Layer::setCursorPosition(int32_t x, int32_t y) Error Layer::setBuffer(uint32_t slot, const sp<GraphicBuffer>& buffer, const sp<Fence>& acquireFence) { if (buffer == nullptr && mBufferSlot == slot) { return Error::None; } mBufferSlot = slot; int32_t fenceFd = acquireFence->dup(); auto intError = mComposer.setLayerBuffer(mDisplayId, mId, slot, buffer, fenceFd); Loading @@ -834,6 +838,12 @@ Error Layer::setBuffer(uint32_t slot, const sp<GraphicBuffer>& buffer, Error Layer::setSurfaceDamage(const Region& damage) { if (damage.isRect() && mDamageRegion.isRect() && (damage.getBounds() == mDamageRegion.getBounds())) { return Error::None; } mDamageRegion = damage; // We encode default full-screen damage as INVALID_RECT upstream, but as 0 // rects for HWC Hwc2::Error intError = Hwc2::Error::NONE; Loading Loading @@ -988,6 +998,12 @@ Error Layer::setTransform(Transform transform) Error Layer::setVisibleRegion(const Region& region) { if (region.isRect() && mVisibleRegion.isRect() && (region.getBounds() == mVisibleRegion.getBounds())) { return Error::None; } mVisibleRegion = region; size_t rectCount = 0; auto rectArray = region.getArray(&rectCount); Loading services/surfaceflinger/DisplayHardware/HWC2.h +7 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <math/mat4.h> #include <ui/GraphicTypes.h> #include <ui/HdrCapabilities.h> #include <ui/Region.h> #include <utils/Log.h> #include <utils/StrongPointer.h> #include <utils/Timers.h> Loading @@ -42,8 +43,6 @@ namespace android { class Fence; class FloatRect; class GraphicBuffer; class Rect; class Region; namespace Hwc2 { class Composer; } Loading Loading @@ -438,9 +437,15 @@ private: hwc2_display_t mDisplayId; hwc2_layer_t mId; // Cached HWC2 data, to ensure the same commands aren't sent to the HWC // multiple times. android::Region mVisibleRegion = android::Region::INVALID_REGION; android::Region mDamageRegion = android::Region::INVALID_REGION; android::ui::Dataspace mDataSpace = android::ui::Dataspace::UNKNOWN; android::HdrMetadata mHdrMetadata; android::mat4 mColorMatrix; uint32_t mBufferSlot; }; } // namespace impl Loading Loading
services/surfaceflinger/DisplayHardware/HWC2.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <ui/Fence.h> #include <ui/FloatRect.h> #include <ui/GraphicBuffer.h> #include <ui/Region.h> #include <android/configuration.h> Loading Loading @@ -826,6 +825,11 @@ Error Layer::setCursorPosition(int32_t x, int32_t y) Error Layer::setBuffer(uint32_t slot, const sp<GraphicBuffer>& buffer, const sp<Fence>& acquireFence) { if (buffer == nullptr && mBufferSlot == slot) { return Error::None; } mBufferSlot = slot; int32_t fenceFd = acquireFence->dup(); auto intError = mComposer.setLayerBuffer(mDisplayId, mId, slot, buffer, fenceFd); Loading @@ -834,6 +838,12 @@ Error Layer::setBuffer(uint32_t slot, const sp<GraphicBuffer>& buffer, Error Layer::setSurfaceDamage(const Region& damage) { if (damage.isRect() && mDamageRegion.isRect() && (damage.getBounds() == mDamageRegion.getBounds())) { return Error::None; } mDamageRegion = damage; // We encode default full-screen damage as INVALID_RECT upstream, but as 0 // rects for HWC Hwc2::Error intError = Hwc2::Error::NONE; Loading Loading @@ -988,6 +998,12 @@ Error Layer::setTransform(Transform transform) Error Layer::setVisibleRegion(const Region& region) { if (region.isRect() && mVisibleRegion.isRect() && (region.getBounds() == mVisibleRegion.getBounds())) { return Error::None; } mVisibleRegion = region; size_t rectCount = 0; auto rectArray = region.getArray(&rectCount); Loading
services/surfaceflinger/DisplayHardware/HWC2.h +7 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <math/mat4.h> #include <ui/GraphicTypes.h> #include <ui/HdrCapabilities.h> #include <ui/Region.h> #include <utils/Log.h> #include <utils/StrongPointer.h> #include <utils/Timers.h> Loading @@ -42,8 +43,6 @@ namespace android { class Fence; class FloatRect; class GraphicBuffer; class Rect; class Region; namespace Hwc2 { class Composer; } Loading Loading @@ -438,9 +437,15 @@ private: hwc2_display_t mDisplayId; hwc2_layer_t mId; // Cached HWC2 data, to ensure the same commands aren't sent to the HWC // multiple times. android::Region mVisibleRegion = android::Region::INVALID_REGION; android::Region mDamageRegion = android::Region::INVALID_REGION; android::ui::Dataspace mDataSpace = android::ui::Dataspace::UNKNOWN; android::HdrMetadata mHdrMetadata; android::mat4 mColorMatrix; uint32_t mBufferSlot; }; } // namespace impl Loading