aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/hwc3/AlternatingImageStorage.cpp22
-rw-r--r--system/hwc3/AlternatingImageStorage.h21
-rw-r--r--system/hwc3/Display.cpp33
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) {