diff options
author | Chia-I Wu <olv@google.com> | 2017-06-22 19:59:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-06-22 19:59:36 +0000 |
commit | f8ca9a0875685003defb13f1a342bb8bd37cf4e0 (patch) | |
tree | e92f25db27279e9372a286d953df51209c47eaaf | |
parent | be597daebd63feeb786855f8af6c96a706eb283c (diff) | |
parent | 0c6ce4608fc022608537162dd919e7f729b9cb77 (diff) | |
download | native-f8ca9a0875685003defb13f1a342bb8bd37cf4e0.tar.gz |
Merge "surfaceflinger: discard stale commands" into oc-dev
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWC2.cpp | 6 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWC2.h | 6 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.cpp | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp index 95689d9c6f..c48a28f694 100644 --- a/services/surfaceflinger/DisplayHardware/HWC2.cpp +++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp @@ -717,6 +717,12 @@ Error Display::presentOrValidate(uint32_t* outNumTypes, uint32_t* outNumRequests } return error; } + +void Display::discardCommands() +{ + mDevice.mComposer->resetCommands(); +} + // For use by Device int32_t Display::getAttribute(hwc2_config_t configId, Attribute attribute) diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h index 4d9155c249..7463e3b76f 100644 --- a/services/surfaceflinger/DisplayHardware/HWC2.h +++ b/services/surfaceflinger/DisplayHardware/HWC2.h @@ -259,6 +259,12 @@ public: uint32_t* outNumRequests, android::sp<android::Fence>* outPresentFence, uint32_t* state); + // Most methods in this class write a command to a command buffer. The + // command buffer is implicitly submitted in validate, present, and + // presentOrValidate. This method provides a way to discard the commands, + // which can be used to discard stale commands. + void discardCommands(); + // Other Display methods Device& getDevice() const { return mDevice; } diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index 3f953eaa8b..ac2dde29d4 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -621,6 +621,7 @@ status_t HWComposer::presentAndGetReleaseFences(int32_t displayId) { auto& hwcDisplay = displayData.hwcDisplay; if (displayData.validateWasSkipped) { + hwcDisplay->discardCommands(); auto error = displayData.presentError; if (error != HWC2::Error::None) { ALOGE("skipValidate: failed for display %d: %s (%d)", |