drm/i915: Add TGL+ SAGV support
Starting from TGL we need to have a separate wm0 values for SAGV and non-SAGV which affects how calculations are done. v2: Remove long lines v3: Removed COLOR_PLANE enum references v4, v5, v6: Fixed rebase conflict v7: - Removed skl_plane_wm_level accessor from skl_allocate_pipe_ddb(Ville) - Removed sagv_uv_wm0(Ville) - can_sagv->use_sagv_wm(Ville) v8: - Moved tgl_crtc_can_enable_sagv function up(Ville) - Changed comment regarding pipe_wm usage(Ville) - Call intel_can_enable_sagv and tgl_compute_sagv_wm only for Gen12(Ville) - Some sagv debugs removed(Ville) - skl_print_wm_changes improvements(Ville) - Do assignment instead of memcpy in skl_pipe_wm_get_hw_state(Ville) v9: - Removed can_sagv variable(Ville) - Removed spurious line(Ville) - Changed u32 to unsigned int as agreed(Ville) - Assign sagv only for gen12 in skl_pipe_wm_get_hw_state(Ville) Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> [vsyrjala: Remove the dead 'return false' from intel_crtc_can_enable_sagv()] Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200514074853.9508-2-stanislav.lisovskiy@intel.com
这个提交包含在:
@@ -14025,7 +14025,9 @@ static void verify_wm_state(struct intel_crtc *crtc,
|
||||
/* Watermarks */
|
||||
for (level = 0; level <= max_level; level++) {
|
||||
if (skl_wm_level_equals(&hw_plane_wm->wm[level],
|
||||
&sw_plane_wm->wm[level]))
|
||||
&sw_plane_wm->wm[level]) ||
|
||||
(level == 0 && skl_wm_level_equals(&hw_plane_wm->wm[level],
|
||||
&sw_plane_wm->sagv_wm0)))
|
||||
continue;
|
||||
|
||||
drm_err(&dev_priv->drm,
|
||||
@@ -14080,7 +14082,9 @@ static void verify_wm_state(struct intel_crtc *crtc,
|
||||
/* Watermarks */
|
||||
for (level = 0; level <= max_level; level++) {
|
||||
if (skl_wm_level_equals(&hw_plane_wm->wm[level],
|
||||
&sw_plane_wm->wm[level]))
|
||||
&sw_plane_wm->wm[level]) ||
|
||||
(level == 0 && skl_wm_level_equals(&hw_plane_wm->wm[level],
|
||||
&sw_plane_wm->sagv_wm0)))
|
||||
continue;
|
||||
|
||||
drm_err(&dev_priv->drm,
|
||||
|
@@ -688,11 +688,13 @@ struct skl_plane_wm {
|
||||
struct skl_wm_level wm[8];
|
||||
struct skl_wm_level uv_wm[8];
|
||||
struct skl_wm_level trans_wm;
|
||||
struct skl_wm_level sagv_wm0;
|
||||
bool is_planar;
|
||||
};
|
||||
|
||||
struct skl_pipe_wm {
|
||||
struct skl_plane_wm planes[I915_MAX_PLANES];
|
||||
bool use_sagv_wm;
|
||||
};
|
||||
|
||||
enum vlv_wm_level {
|
||||
|
在新工单中引用
屏蔽一个用户