Transform transparentRegion into output space
Although "outputSpaceBlockingRegionHint" claims to be in the output
space, unlike "outputSpaceVisibleRegion", we never transformed it to the
output space. This meant that HWC did not know how to apply it properly
when the device was rotated. Fix this.
Add outputSpaceBlockingRegionHint to the dumpsys.
Fixes: 224484888
Test: libcompositionengine_test
Change-Id: I1378c96f4d5af57fb7d9835182427017064e89e5
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp
index aef55d4..4e67a63 100644
--- a/services/surfaceflinger/CompositionEngine/src/Output.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
@@ -684,8 +684,10 @@
visibleNonShadowRegion.intersect(outputState.layerStackSpace.getContent()));
outputLayerState.shadowRegion = shadowRegion;
outputLayerState.outputSpaceBlockingRegionHint =
- layerFEState->compositionType == Composition::DISPLAY_DECORATION ? transparentRegion
- : Region();
+ layerFEState->compositionType == Composition::DISPLAY_DECORATION
+ ? outputState.transform.transform(
+ transparentRegion.intersect(outputState.layerStackSpace.getContent()))
+ : Region();
}
void Output::setReleasedLayers(const compositionengine::CompositionRefreshArgs&) {