SF: LayerSnapshotBuilder updates
- Adds support for framerate, gamemode, transformhint & input
- Fixes z-order traversal bug where a layer was visited twice.
- Compat fix, a layer cannot be root once its parented
Test: presubmit
Bug: 238781169
Change-Id: Ic33aa09b2c41fadd4872ca481b41f86400629fc8
diff --git a/services/surfaceflinger/FrontEnd/LayerSnapshot.h b/services/surfaceflinger/FrontEnd/LayerSnapshot.h
index d14bd3a..4512ade 100644
--- a/services/surfaceflinger/FrontEnd/LayerSnapshot.h
+++ b/services/surfaceflinger/FrontEnd/LayerSnapshot.h
@@ -20,6 +20,7 @@
#include <renderengine/LayerSettings.h>
#include "LayerHierarchy.h"
#include "RequestedLayerState.h"
+#include "Scheduler/LayerInfo.h"
#include "android-base/stringprintf.h"
namespace android::surfaceflinger::frontend {
@@ -39,6 +40,10 @@
}
};
+struct ChildState {
+ bool hasValidFrameRate = false;
+};
+
// LayerSnapshot stores Layer state used by CompositionEngine and RenderEngine. Composition
// Engine uses a pointer to LayerSnapshot (as LayerFECompositionState*) and the LayerSettings
// passed to Render Engine are created using properties stored on this struct.
@@ -59,6 +64,7 @@
bool layerOpaqueFlagSet;
RoundedCornerState roundedCorner;
FloatRect transformedBounds;
+ Rect transformedBoundsWithoutTransparentRegion;
renderengine::ShadowSettings shadowSettings;
bool premultipliedAlpha;
bool isHdrY410;
@@ -75,6 +81,10 @@
ui::Transform localTransform;
gui::DropInputMode dropInputMode;
bool isTrustedOverlay;
+ gui::GameMode gameMode;
+ scheduler::LayerInfo::FrameRate frameRate;
+ ui::Transform::RotationFlags fixedTransformHint;
+ ChildState childState;
static bool isOpaqueFormat(PixelFormat format);
static bool isTransformValid(const ui::Transform& t);
@@ -91,6 +101,7 @@
bool isHiddenByPolicy() const;
std::string getDebugString() const;
std::string getIsVisibleReason() const;
+ bool hasInputInfo() const;
};
} // namespace android::surfaceflinger::frontend