disp: msm: sde: add sys cache usage for static image
Store full or partial static image in system cache (L3 cache) for video mode primary display. Added additional commit to crtc commit thread to transition to read cache state. The change also updates llcc APIs to support generic functionality. Change-Id: I6b2a45da946d7e0e0b326da9d214be3f01a9420e Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
此提交包含在:
@@ -70,6 +70,24 @@ enum sde_crtc_idle_pc_state {
|
||||
IDLE_PC_DISABLE,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum sde_crtc_cache_state: states of disp system cache
|
||||
* CACHE_STATE_DISABLED: sys cache has been disabled
|
||||
* CACHE_STATE_ENABLED: sys cache has been enabled
|
||||
* CACHE_STATE_NORMAL: sys cache is normal state
|
||||
* CACHE_STATE_PRE_CACHE: frame cache is being prepared
|
||||
* CACHE_STATE_FRAME_WRITE: sys cache is being written to
|
||||
* CACHE_STATE_FRAME_READ: sys cache is being read
|
||||
*/
|
||||
enum sde_crtc_cache_state {
|
||||
CACHE_STATE_DISABLED,
|
||||
CACHE_STATE_ENABLED,
|
||||
CACHE_STATE_NORMAL,
|
||||
CACHE_STATE_PRE_CACHE,
|
||||
CACHE_STATE_FRAME_WRITE,
|
||||
CACHE_STATE_FRAME_READ
|
||||
};
|
||||
|
||||
/**
|
||||
* @connectors : Currently associated drm connectors for retire event
|
||||
* @num_connectors: Number of associated drm connectors for retire event
|
||||
@@ -257,6 +275,8 @@ struct sde_crtc_misr_info {
|
||||
* @needs_hw_reset : Initiate a hw ctl reset
|
||||
* @src_bpp : source bpp used to calculate compression ratio
|
||||
* @target_bpp : target bpp used to calculate compression ratio
|
||||
* @static_cache_read_work: delayed worker to transition cache state to read
|
||||
* @cache_state : Current static image cache state
|
||||
*/
|
||||
struct sde_crtc {
|
||||
struct drm_crtc base;
|
||||
@@ -342,6 +362,9 @@ struct sde_crtc {
|
||||
|
||||
int src_bpp;
|
||||
int target_bpp;
|
||||
|
||||
struct kthread_delayed_work static_cache_read_work;
|
||||
enum sde_crtc_cache_state cache_state;
|
||||
};
|
||||
|
||||
#define to_sde_crtc(x) container_of(x, struct sde_crtc, base)
|
||||
@@ -848,4 +871,19 @@ static inline void sde_crtc_set_bpp(struct sde_crtc *sde_crtc, int src_bpp,
|
||||
sde_crtc->target_bpp = target_bpp;
|
||||
}
|
||||
|
||||
/**
|
||||
* sde_crtc_static_img_control - transition static img cache state
|
||||
* @crtc: Pointer to drm crtc structure
|
||||
* @state: cache state to transition to
|
||||
* @is_vidmode: if encoder is video mode
|
||||
*/
|
||||
void sde_crtc_static_img_control(struct drm_crtc *crtc,
|
||||
enum sde_crtc_cache_state state, bool is_vidmode);
|
||||
|
||||
/**
|
||||
* sde_crtc_static_cache_read_kickoff - kickoff cache read work
|
||||
* @crtc: Pointer to drm crtc structure
|
||||
*/
|
||||
void sde_crtc_static_cache_read_kickoff(struct drm_crtc *crtc);
|
||||
|
||||
#endif /* _SDE_CRTC_H_ */
|
||||
|
新增問題並參考
封鎖使用者