drm_hwcomposer: Stop using HWC2 hooks for source crop
Add source_crop to LayerProperties and set it together with other layer
properties.
Change-Id: I2153037b6df3ad2ecf1008d8bafe09d62ef59116
Signed-off-by: Drew Davenport <ddavenport@google.com>
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index 728361b..fba8222 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -211,6 +211,13 @@
return hwc_rect{rect->left, rect->top, rect->right, rect->bottom};
}
+std::optional<hwc_frect> AidlToFRect(const std::optional<common::FRect>& rect) {
+ if (!rect) {
+ return std::nullopt;
+ }
+ return hwc_frect{rect->left, rect->top, rect->right, rect->bottom};
+}
+
std::optional<float> AidlToAlpha(const std::optional<PlaneAlpha>& alpha) {
if (!alpha) {
return std::nullopt;
@@ -479,11 +486,10 @@
properties.composition_type = AidlToCompositionType(command.composition);
properties.display_frame = AidlToRect(command.displayFrame);
properties.alpha = AidlToAlpha(command.planeAlpha);
+ properties.source_crop = AidlToFRect(command.sourceCrop);
+
layer->SetLayerProperties(properties);
- if (command.sourceCrop) {
- ExecuteSetLayerSourceCrop(display_id, layer_wrapper, *command.sourceCrop);
- }
if (command.transform) {
ExecuteSetLayerTransform(display_id, layer_wrapper, *command.transform);
}
@@ -1184,16 +1190,6 @@
}
}
-void ComposerClient::ExecuteSetLayerSourceCrop(
- int64_t /*display_id*/, HwcLayerWrapper& layer,
- const common::FRect& source_crop) {
- const hwc_frect_t rect{source_crop.left, source_crop.top, source_crop.right,
- source_crop.bottom};
- auto err = Hwc2toHwc3Error(layer.layer->SetLayerSourceCrop(rect));
- if (err != hwc3::Error::kNone) {
- cmd_result_writer_->AddError(err);
- }
-}
void ComposerClient::ExecuteSetLayerTransform(
int64_t /*display_id*/, HwcLayerWrapper& layer,
const ParcelableTransform& transform) {