display: upgrade Smomo interface to 2.0
Add new APIs for Smomo interface 2.0. Change-Id: I640e4813cdb3828cf5c7c5bcfaf20a14e70015d0
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
9dde99c687
commit
b09df6ddfd
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2019, 2021, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
* Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
#define __SMOMO_INTERFACE_H__
|
#define __SMOMO_INTERFACE_H__
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <ui/Fence.h>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -43,7 +44,7 @@ namespace smomo {
|
|||||||
#define CREATE_SMOMO_INTERFACE_NAME "CreateSmomoInterface"
|
#define CREATE_SMOMO_INTERFACE_NAME "CreateSmomoInterface"
|
||||||
#define DESTROY_SMOMO_INTERFACE_NAME "DestroySmomoInterface"
|
#define DESTROY_SMOMO_INTERFACE_NAME "DestroySmomoInterface"
|
||||||
|
|
||||||
#define SMOMO_REVISION_MAJOR (1)
|
#define SMOMO_REVISION_MAJOR (2)
|
||||||
#define SMOMO_REVISION_MINOR (0)
|
#define SMOMO_REVISION_MINOR (0)
|
||||||
#define SMOMO_VERSION_TAG ((uint16_t) ((SMOMO_REVISION_MAJOR << 8) \
|
#define SMOMO_VERSION_TAG ((uint16_t) ((SMOMO_REVISION_MAJOR << 8) \
|
||||||
| SMOMO_REVISION_MINOR))
|
| SMOMO_REVISION_MINOR))
|
||||||
@@ -68,8 +69,9 @@ struct SmomoBufferStats {
|
|||||||
int32_t id; // layer ID
|
int32_t id; // layer ID
|
||||||
int32_t queued_frames; // queued frame count of this layer
|
int32_t queued_frames; // queued frame count of this layer
|
||||||
bool auto_timestamp; // whether timestamp was generated automatically
|
bool auto_timestamp; // whether timestamp was generated automatically
|
||||||
nsecs_t timestamp; // layer buffer's timestamp
|
nsecs_t timestamp; // layer buffer's desired present timestamp
|
||||||
nsecs_t dequeue_latency; // last dequeue duration
|
nsecs_t dequeue_latency; // last dequeue duration
|
||||||
|
int64_t key; // buffer identity
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! @brief SmoMo interface implemented by SmoMo library.
|
/*! @brief SmoMo interface implemented by SmoMo library.
|
||||||
@@ -82,6 +84,8 @@ class SmomoIntf {
|
|||||||
public:
|
public:
|
||||||
virtual ~SmomoIntf() = default;
|
virtual ~SmomoIntf() = default;
|
||||||
|
|
||||||
|
// 1.0 interface
|
||||||
|
|
||||||
/*! @brief Update SmoMo internal state.
|
/*! @brief Update SmoMo internal state.
|
||||||
|
|
||||||
@details This function is called once per each composition so that required layer info are feed
|
@details This function is called once per each composition so that required layer info are feed
|
||||||
@@ -155,6 +159,74 @@ class SmomoIntf {
|
|||||||
@return \link int \endlink
|
@return \link int \endlink
|
||||||
*/
|
*/
|
||||||
virtual int GetFrameRate() = 0;
|
virtual int GetFrameRate() = 0;
|
||||||
|
|
||||||
|
// 2.0 interface
|
||||||
|
|
||||||
|
/*! @brief Set layer buffer's present timestamp.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to indicate buffer has been presented.
|
||||||
|
|
||||||
|
@param[in] layer_id layer id
|
||||||
|
@param[in] timestamp buffer's desired present timestamp
|
||||||
|
|
||||||
|
@return \link void \endlink
|
||||||
|
*/
|
||||||
|
virtual void SetPresentTime(const int32_t layer_id, const nsecs_t timestamp) = 0;
|
||||||
|
|
||||||
|
/*! @brief vsync listener.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to notify Vsync events.
|
||||||
|
|
||||||
|
@param[in] timestamp vsync timestamp
|
||||||
|
|
||||||
|
@return \link void \endlink
|
||||||
|
*/
|
||||||
|
virtual void OnVsync(const nsecs_t timestamp) = 0;
|
||||||
|
|
||||||
|
/*! @brief Is this layer buffer early to present.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to check whether this layer buffer is
|
||||||
|
not ready to present.
|
||||||
|
|
||||||
|
@param[in] layer_id layer id
|
||||||
|
@param[in] desired_present_time desired present time
|
||||||
|
|
||||||
|
@return \link bool \endlink
|
||||||
|
*/
|
||||||
|
virtual bool FrameIsEarly(const int32_t layer_id, const nsecs_t desired_present_time) = 0;
|
||||||
|
|
||||||
|
/*! @brief Is this layer buffer late to present.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to check whether this layer buffer is
|
||||||
|
late to present.
|
||||||
|
|
||||||
|
@param[in] layer_id layer id
|
||||||
|
@param[in] next_vsync_time When next VSYNC arrives
|
||||||
|
|
||||||
|
@return \link bool \endlink
|
||||||
|
*/
|
||||||
|
virtual bool FrameIsLate(const int32_t layer_id, const nsecs_t next_vsync_time) = 0;
|
||||||
|
|
||||||
|
/*! @brief Sync to display hardware.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to align with display hardware.
|
||||||
|
|
||||||
|
@param[in] fence present fence
|
||||||
|
@param[out] timestamp present fence timestamp
|
||||||
|
|
||||||
|
@return \link bool \endlink
|
||||||
|
*/
|
||||||
|
virtual bool SyncToDisplay(const android::sp<android::Fence>& fence,
|
||||||
|
nsecs_t *timestamp) = 0;
|
||||||
|
|
||||||
|
/*! @brief Low latency mode enaled or not.
|
||||||
|
|
||||||
|
@details This function is called by SmoMo clients used to check whether it's
|
||||||
|
in low latency mode.
|
||||||
|
|
||||||
|
@return \link bool \endlink
|
||||||
|
*/
|
||||||
|
virtual bool LowLatencyMode() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef bool (*CreateSmomoInterface)(uint16_t version, SmomoIntf **interface);
|
typedef bool (*CreateSmomoInterface)(uint16_t version, SmomoIntf **interface);
|
||||||
|
|||||||
Reference in New Issue
Block a user