1 /* SPDX-License-Identifier: MIT */
3 * Copyright © 2019 Intel Corporation
6 #ifndef __INTEL_FBC_H__
7 #define __INTEL_FBC_H__
9 #include <linux/types.h>
11 #include "intel_frontbuffer.h"
13 struct drm_i915_private
;
14 struct intel_atomic_state
;
16 struct intel_crtc_state
;
17 struct intel_plane_state
;
19 void intel_fbc_choose_crtc(struct drm_i915_private
*dev_priv
,
20 struct intel_atomic_state
*state
);
21 bool intel_fbc_is_active(struct drm_i915_private
*dev_priv
);
22 bool intel_fbc_pre_update(struct intel_crtc
*crtc
,
23 const struct intel_crtc_state
*crtc_state
,
24 const struct intel_plane_state
*plane_state
);
25 void intel_fbc_post_update(struct intel_crtc
*crtc
);
26 void intel_fbc_init(struct drm_i915_private
*dev_priv
);
27 void intel_fbc_enable(struct intel_crtc
*crtc
,
28 const struct intel_crtc_state
*crtc_state
,
29 const struct intel_plane_state
*plane_state
);
30 void intel_fbc_disable(struct intel_crtc
*crtc
);
31 void intel_fbc_global_disable(struct drm_i915_private
*dev_priv
);
32 void intel_fbc_invalidate(struct drm_i915_private
*dev_priv
,
33 unsigned int frontbuffer_bits
,
34 enum fb_op_origin origin
);
35 void intel_fbc_flush(struct drm_i915_private
*dev_priv
,
36 unsigned int frontbuffer_bits
, enum fb_op_origin origin
);
37 void intel_fbc_cleanup_cfb(struct drm_i915_private
*dev_priv
);
38 void intel_fbc_handle_fifo_underrun_irq(struct drm_i915_private
*dev_priv
);
39 int intel_fbc_reset_underrun(struct drm_i915_private
*dev_priv
);
41 #endif /* __INTEL_FBC_H__ */