Merge remote-tracking branch 'aosp/upstream-main' into uprev am: 3b2a47f6a5 am: 77fb6751f5
Original change: undetermined
Change-Id: Iae40f454d5a1defce9a74d28cd912186ecedb69b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Makefile b/Makefile
index fc12423..aa8062b 100644
--- a/Makefile
+++ b/Makefile
@@ -59,7 +59,7 @@
@echo "\n\e[32m --- SUCCESS ---\n"
ci_cleanup: ## Cleanup after 'make ci'
- $(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -f .ci/Makefile clean "
+ $(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -f .ci/Makefile clean"
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/build"
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/install"
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/out_src"
@@ -69,14 +69,11 @@
$(if $(filter $(shell adb shell getprop ro.bionic.arch),arm64),,$(error arm64 only is supported at the moment))
adb root && adb remount vendor
mkdir -p .out/arm64
- $(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -C ~/aospless all"
+ $(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -C ~/aospless install"
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "cp -r ~/aospless/install/* ~/drm_hwcomposer/.out/arm64"
- adb push .out/arm64/vendor/lib64/hw/hwcomposer.drm.so /vendor/lib64/hw/hwcomposer.drm.so
+ adb push .out/arm64/vendor/bin/hw/android.hardware.composer.hwc3-service.drm /vendor/bin/hw/android.hardware.composer.hwc3-service.drm
adb shell stop
- adb shell stop vendor.hwcomposer-2-1 && adb shell start vendor.hwcomposer-2-1 || true
- adb shell stop vendor.hwcomposer-2-2 && adb shell start vendor.hwcomposer-2-2 || true
- adb shell stop vendor.hwcomposer-2-3 && adb shell start vendor.hwcomposer-2-3 || true
- adb shell stop vendor.hwcomposer-2-4 && adb shell start vendor.hwcomposer-2-4 || true
+ adb shell stop vendor.hwcomposer-3 && adb shell start vendor.hwcomposer-3 || true
bash -c '[[ "$$HWCLOG" -eq "1" ]] && adb logcat -c || true'
adb shell start
bash -c '[[ "$$HWCLOG" -eq "1" ]] && adb logcat | grep -i hwc || true'
diff --git a/hwc2_device/HwcDisplay.cpp b/hwc2_device/HwcDisplay.cpp
index 43564d4..0503f39 100644
--- a/hwc2_device/HwcDisplay.cpp
+++ b/hwc2_device/HwcDisplay.cpp
@@ -193,7 +193,7 @@
const HwcDisplayConfig *current_config = GetCurrentConfig();
const uint32_t width = new_config->mode.GetRawMode().hdisplay;
- const uint32_t height = new_config->mode.GetRawMode().hdisplay;
+ const uint32_t height = new_config->mode.GetRawMode().vdisplay;
std::optional<LayerData> modeset_layer_data;
// If a client layer has already been provided, and its size matches the
@@ -231,6 +231,7 @@
ALOGV("Blocking config succeeded.");
configs_.active_config_id = config;
+ staged_mode_config_id_.reset();
return ConfigError::kNone;
}
diff --git a/hwc2_device/HwcDisplayConfigs.cpp b/hwc2_device/HwcDisplayConfigs.cpp
index 3645356..fa1d2a9 100644
--- a/hwc2_device/HwcDisplayConfigs.cpp
+++ b/hwc2_device/HwcDisplayConfigs.cpp
@@ -23,6 +23,7 @@
#include "drm/DrmConnector.h"
#include "utils/log.h"
+#include "utils/properties.h"
constexpr uint32_t kHeadlessModeDisplayWidthMm = 163;
constexpr uint32_t kHeadlessModeDisplayHeightMm = 122;
@@ -113,17 +114,20 @@
auto first_config_id = last_config_id;
uint32_t last_group_id = 1;
+ const bool use_config_groups = Properties::UseConfigGroups();
/* Group modes */
for (const auto &mode : connector.GetModes()) {
/* Find group for the new mode or create new group */
uint32_t group_found = 0;
- for (auto &hwc_config : hwc_configs) {
- if (mode.GetRawMode().hdisplay ==
- hwc_config.second.mode.GetRawMode().hdisplay &&
- mode.GetRawMode().vdisplay ==
- hwc_config.second.mode.GetRawMode().vdisplay) {
- group_found = hwc_config.second.group_id;
+ if (use_config_groups) {
+ for (auto &hwc_config : hwc_configs) {
+ if (mode.GetRawMode().hdisplay ==
+ hwc_config.second.mode.GetRawMode().hdisplay &&
+ mode.GetRawMode().vdisplay ==
+ hwc_config.second.mode.GetRawMode().vdisplay) {
+ group_found = hwc_config.second.group_id;
+ }
}
}
if (group_found == 0) {
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index b33537b..b8128f0 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -155,7 +155,9 @@
// DisplayCommand and return.
case Composition::DISPLAY_DECORATION:
case Composition::SIDEBAND:
+#if __ANDROID_API__ >= 34
case Composition::REFRESH_RATE_INDICATOR:
+#endif
return false;
}
}
@@ -189,7 +191,9 @@
// Unsupported composition types.
case Composition::DISPLAY_DECORATION:
case Composition::SIDEBAND:
+#if __ANDROID_API__ >= 34
case Composition::REFRESH_RATE_INDICATOR:
+#endif
ALOGE("Unsupported composition type: %s",
toString(composition->composition).c_str());
return std::nullopt;
@@ -1246,6 +1250,8 @@
return ToBinderStatus(hwc3::Error::kUnsupported);
}
+#if __ANDROID_API__ >= 34
+
ndk::ScopedAStatus ComposerClient::getOverlaySupport(
OverlayProperties* /*out_overlay_properties*/) {
return ToBinderStatus(hwc3::Error::kUnsupported);
@@ -1267,6 +1273,8 @@
return ToBinderStatus(hwc3::Error::kUnsupported);
}
+#endif
+
#if __ANDROID_API__ >= 35
ndk::ScopedAStatus ComposerClient::getDisplayConfigurations(
diff --git a/hwc3/ComposerClient.h b/hwc3/ComposerClient.h
index 3d7c09c..2595203 100644
--- a/hwc3/ComposerClient.h
+++ b/hwc3/ComposerClient.h
@@ -132,6 +132,9 @@
ndk::ScopedAStatus setVsyncEnabled(int64_t display, bool enabled) override;
ndk::ScopedAStatus setIdleTimerEnabled(int64_t display,
int32_t timeout) override;
+
+#if __ANDROID_API__ >= 34
+
ndk::ScopedAStatus getOverlaySupport(
OverlayProperties* out_overlay_properties) override;
ndk::ScopedAStatus getHdrConversionCapabilities(
@@ -142,6 +145,8 @@
ndk::ScopedAStatus setRefreshRateChangedCallbackDebugEnabled(
int64_t display, bool enabled) override;
+#endif
+
#if __ANDROID_API__ >= 35
ndk::ScopedAStatus getDisplayConfigurations(
diff --git a/hwc3/service.cpp b/hwc3/service.cpp
index d91ce9e..b545a67 100644
--- a/hwc3/service.cpp
+++ b/hwc3/service.cpp
@@ -46,9 +46,14 @@
const std::string instance = std::string() + Composer::descriptor +
"/default";
ALOGI("HWC3 service name %s", instance.c_str());
+#if __ANDROID_API__ >= 34
auto status = AServiceManager_addServiceWithFlags(
composer->asBinder().get(), instance.c_str(),
AServiceManager_AddServiceFlag::ADD_SERVICE_ALLOW_ISOLATED);
+#else
+ auto status = AServiceManager_addService(composer->asBinder().get(),
+ instance.c_str());
+#endif
if (status != STATUS_OK) {
ALOGE("Failed to register service. Error %d", (int)status);
return -EINVAL;
diff --git a/utils/properties.cpp b/utils/properties.cpp
index 4547e74..a855c94 100644
--- a/utils/properties.cpp
+++ b/utils/properties.cpp
@@ -25,3 +25,7 @@
return (property_get_bool("ro.vendor.hwc.drm.present_fence_not_reliable",
0) != 0);
}
+
+auto Properties::UseConfigGroups() -> bool {
+ return (property_get_bool("ro.vendor.hwc.drm.use_config_groups", 1) != 0);
+}
diff --git a/utils/properties.h b/utils/properties.h
index f5816cb..15c2fb2 100644
--- a/utils/properties.h
+++ b/utils/properties.h
@@ -77,4 +77,5 @@
class Properties {
public:
static auto IsPresentFenceNotReliable() -> bool;
+ static auto UseConfigGroups() -> bool;
};