diff options
-rw-r--r-- | system/hwc3/AlternatingImageStorage.cpp | 22 | ||||
-rw-r--r-- | system/hwc3/AlternatingImageStorage.h | 21 | ||||
-rw-r--r-- | system/hwc3/Display.cpp | 33 |
3 files changed, 39 insertions, 37 deletions
diff --git a/system/hwc3/AlternatingImageStorage.cpp b/system/hwc3/AlternatingImageStorage.cpp index 6ca2b0b1..c4a1d85c 100644 --- a/system/hwc3/AlternatingImageStorage.cpp +++ b/system/hwc3/AlternatingImageStorage.cpp @@ -20,22 +20,22 @@ namespace aidl::android::hardware::graphics::composer3::impl { uint8_t* AlternatingImageStorage::getRotatingScratchBuffer(std::size_t neededSize, std::uint32_t imageIndex) { - std::size_t totalNeededSize = neededSize * kNumScratchBufferPieces; - if (mScratchBuffer.size() < totalNeededSize) { - mScratchBuffer.resize(totalNeededSize); - } + std::size_t totalNeededSize = neededSize * kNumScratchBufferPieces; + if (mScratchBuffer.size() < totalNeededSize) { + mScratchBuffer.resize(totalNeededSize); + } - std::size_t bufferIndex = imageIndex % kNumScratchBufferPieces; - std::size_t bufferOffset = bufferIndex * neededSize; - return &mScratchBuffer[bufferOffset]; + std::size_t bufferIndex = imageIndex % kNumScratchBufferPieces; + std::size_t bufferOffset = bufferIndex * neededSize; + return &mScratchBuffer[bufferOffset]; } uint8_t* AlternatingImageStorage::getSpecialScratchBuffer(size_t neededSize) { - if (mSpecialScratchBuffer.size() < neededSize) { - mSpecialScratchBuffer.resize(neededSize); - } + if (mSpecialScratchBuffer.size() < neededSize) { + mSpecialScratchBuffer.resize(neededSize); + } - return &mSpecialScratchBuffer[0]; + return &mSpecialScratchBuffer[0]; } } // namespace aidl::android::hardware::graphics::composer3::impl diff --git a/system/hwc3/AlternatingImageStorage.h b/system/hwc3/AlternatingImageStorage.h index 31c44675..aa17bc70 100644 --- a/system/hwc3/AlternatingImageStorage.h +++ b/system/hwc3/AlternatingImageStorage.h @@ -18,6 +18,7 @@ #define ANDROID_HWC_ALTERNATINGIMAGESTORAGE_H #include <stdint.h> + #include <vector> #include "Common.h" @@ -29,21 +30,21 @@ namespace aidl::android::hardware::graphics::composer3::impl { // the storage just needs to be 2x the needed image size and the returned buffers // can alternate back and forth. class AlternatingImageStorage { - public: - AlternatingImageStorage() = default; + public: + AlternatingImageStorage() = default; - uint8_t* getRotatingScratchBuffer(std::size_t neededSize, std::uint32_t imageIndex); + uint8_t* getRotatingScratchBuffer(std::size_t neededSize, std::uint32_t imageIndex); - uint8_t* getSpecialScratchBuffer(std::size_t neededSize); + uint8_t* getSpecialScratchBuffer(std::size_t neededSize); - private: - static constexpr const int kNumScratchBufferPieces = 2; + private: + static constexpr const int kNumScratchBufferPieces = 2; - // The main alternating storage. - std::vector<uint8_t> mScratchBuffer; + // The main alternating storage. + std::vector<uint8_t> mScratchBuffer; - // Extra additional storage for one-off operations (scaling). - std::vector<uint8_t> mSpecialScratchBuffer; + // Extra additional storage for one-off operations (scaling). + std::vector<uint8_t> mSpecialScratchBuffer; }; } // namespace aidl::android::hardware::graphics::composer3::impl diff --git a/system/hwc3/Display.cpp b/system/hwc3/Display.cpp index c221c252..fa98015e 100644 --- a/system/hwc3/Display.cpp +++ b/system/hwc3/Display.cpp @@ -244,6 +244,7 @@ HWC3::Error Display::getDisplayCapabilities(std::vector<DisplayCapability>* outC outCapabilities->clear(); outCapabilities->push_back(DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM); + outCapabilities->push_back(DisplayCapability::MULTI_THREADED_PRESENT); return HWC3::Error::None; } @@ -263,27 +264,27 @@ HWC3::Error Display::getDisplayConfigs(std::vector<int32_t>* outConfigIds) { } HWC3::Error Display::getDisplayConfigurations(std::vector<DisplayConfiguration>* outConfigs) { - DEBUG_LOG("%s: display:%" PRId64, __FUNCTION__, mId); + DEBUG_LOG("%s: display:%" PRId64, __FUNCTION__, mId); - std::unique_lock<std::recursive_mutex> lock(mStateMutex); + std::unique_lock<std::recursive_mutex> lock(mStateMutex); - outConfigs->clear(); - outConfigs->reserve(mConfigs.size()); + outConfigs->clear(); + outConfigs->reserve(mConfigs.size()); - for (const auto& [configId, displayConfig] : mConfigs) { - DisplayConfiguration displayConfiguration; - displayConfiguration.configId = configId; - displayConfiguration.width = displayConfig.getWidth(); - displayConfiguration.height = displayConfig.getHeight(); - displayConfiguration.dpi = { static_cast<float>(displayConfig.getDpiX()), - static_cast<float>(displayConfig.getDpiY()) }; - displayConfiguration.vsyncPeriod = displayConfig.getVsyncPeriod(); - displayConfiguration.configGroup = displayConfig.getConfigGroup(); + for (const auto& [configId, displayConfig] : mConfigs) { + DisplayConfiguration displayConfiguration; + displayConfiguration.configId = configId; + displayConfiguration.width = displayConfig.getWidth(); + displayConfiguration.height = displayConfig.getHeight(); + displayConfiguration.dpi = {static_cast<float>(displayConfig.getDpiX()), + static_cast<float>(displayConfig.getDpiY())}; + displayConfiguration.vsyncPeriod = displayConfig.getVsyncPeriod(); + displayConfiguration.configGroup = displayConfig.getConfigGroup(); - outConfigs->emplace_back(displayConfiguration); - } + outConfigs->emplace_back(displayConfiguration); + } - return HWC3::Error::None; + return HWC3::Error::None; } HWC3::Error Display::getDisplayConnectionType(DisplayConnectionType* outType) { |