Display and wfd synchronization during teardown
* Provide a binder interface call for wfd module
to inform display about the start/stop/pause/resume
of wfd session.
* This is needed for wfd-hdmi synchronization in
case of v4l2 wfd solution. If hdmi is plugged
in during v4l2 wfd session, display-hal waits in
uevent thread for wfd teardown notification from
wfd module, before going ahead with configuring
external display.
* For VDS WFD solution, display-hal waits in uevent
thread for wfd-teardown to be signalled from
the composition thread.
Change-Id: I9514cb5bc7ff81de0b5dd4cdf66d8286a64ba094
diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h
index ed68988..726311b 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -39,6 +39,8 @@
#define MAX_NUM_APP_LAYERS 32
#define MIN_DISPLAY_XRES 200
#define MIN_DISPLAY_YRES 200
+#define HWC_WFDDISPSYNC_LOG 0
+#define STR(f) #f;
//Fwrd decls
struct hwc_context_t;
@@ -154,6 +156,15 @@
HWC_FORMAT_RB_SWAP = 0x00000040,
};
+/* External Display states */
+enum {
+ EXTERNAL_OFFLINE = 0,
+ EXTERNAL_ONLINE,
+ EXTERNAL_PAUSE,
+ EXTERNAL_RESUME,
+ EXTERNAL_MAXSTATES
+};
+
class LayerRotMap {
public:
LayerRotMap() { reset(); }
@@ -280,6 +291,9 @@
// BufferMirrirMode(Sidesync)
int getMirrorModeOrientation(hwc_context_t *ctx);
+/* Get External State names */
+const char* getExternalDisplayState(uint32_t external_state);
+
// Handles wfd Pause and resume events
void handle_pause(hwc_context_t *ctx, int dpy);
void handle_resume(hwc_context_t *ctx, int dpy);
@@ -516,14 +530,21 @@
//Used for SideSync feature
//which overrides the mExtOrientation
bool mBufferMirrorMode;
+ // Used to synchronize between WFD and Display modules
+ mutable Locker mWfdSyncLock;
+
qhwc::LayerRotMap *mLayerRotMap[HWC_NUM_DISPLAY_TYPES];
// Panel reset flag will be set if BTA check fails
bool mPanelResetStatus;
// number of active Displays
int numActiveDisplays;
- // Downscale feature switch, set via system the property
+ // Downscale feature switch, set via system property
// sys.hwc.mdp_downscale_enabled
bool mMDPDownscaleEnabled;
+ // Is WFD enabled through VDS solution ?
+ // This can be set via system property
+ // persist.hwc.enable_vds
+ bool mVDSEnabled;
struct gpu_hint_info mGPUHintInfo;
};