Add eLayerIsDisplayDecoration flag

When this flag is set on a BufferLayer, it should use
Composition.DISPLAY_DECORATION. The intent is that it will be set to
true once on a SurfaceControl for the ScreenDecorations, and it will
remain true, regardless of the currently used PixelFormat. When the
PixelFormat changes (e.g. from A8 to RGBA8888 to accommodate the privacy
dot), the HWC may change how it treats the layer.

Only respect the new flag if the caller has the INTERNAL_SYSTEM_WINDOW
permission.

Bug: 193170859
Test: manual
Change-Id: I1da03a88fb642fa775c192627f20459cae694951
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index aafa5e4..cf04ec8 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1104,7 +1104,8 @@
     }
     if ((mask & layer_state_t::eLayerOpaque) || (mask & layer_state_t::eLayerHidden) ||
         (mask & layer_state_t::eLayerSecure) || (mask & layer_state_t::eLayerSkipScreenshot) ||
-        (mask & layer_state_t::eEnableBackpressure)) {
+        (mask & layer_state_t::eEnableBackpressure) ||
+        (mask & layer_state_t::eLayerIsDisplayDecoration)) {
         s->what |= layer_state_t::eFlagsChanged;
     }
     s->flags &= ~mask;