mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
drm/i915/xe2lpd: Treat cursor plane as regular plane for DDB allocation
We now start calculating relative plane data rate for cursor plane as well, as instructed by BSpec and also treat cursor plane same way as other planes, when doing allocation, i.e not using fixed allocation for cursor anymore. Bspec: 68907 Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230919192128.2045154-7-lucas.demarchi@intel.com
This commit is contained in:
parent
65578d0d10
commit
cfeff354f7
|
|
@ -214,9 +214,6 @@ intel_plane_relative_data_rate(const struct intel_crtc_state *crtc_state,
|
|||
int width, height;
|
||||
unsigned int rel_data_rate;
|
||||
|
||||
if (plane->id == PLANE_CURSOR)
|
||||
return 0;
|
||||
|
||||
if (!plane_state->uapi.visible)
|
||||
return 0;
|
||||
|
||||
|
|
@ -244,6 +241,9 @@ intel_plane_relative_data_rate(const struct intel_crtc_state *crtc_state,
|
|||
|
||||
rel_data_rate = width * height * fb->format->cpp[color_plane];
|
||||
|
||||
if (plane->id == PLANE_CURSOR)
|
||||
return rel_data_rate;
|
||||
|
||||
return intel_adjusted_rate(&plane_state->uapi.src,
|
||||
&plane_state->uapi.dst,
|
||||
rel_data_rate);
|
||||
|
|
|
|||
|
|
@ -1367,7 +1367,7 @@ skl_total_relative_data_rate(const struct intel_crtc_state *crtc_state)
|
|||
u64 data_rate = 0;
|
||||
|
||||
for_each_plane_id_on_crtc(crtc, plane_id) {
|
||||
if (plane_id == PLANE_CURSOR)
|
||||
if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20)
|
||||
continue;
|
||||
|
||||
data_rate += crtc_state->rel_data_rate[plane_id];
|
||||
|
|
@ -1514,10 +1514,12 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state *state,
|
|||
return 0;
|
||||
|
||||
/* Allocate fixed number of blocks for cursor. */
|
||||
cursor_size = skl_cursor_allocation(crtc_state, num_active);
|
||||
iter.size -= cursor_size;
|
||||
skl_ddb_entry_init(&crtc_state->wm.skl.plane_ddb[PLANE_CURSOR],
|
||||
alloc->end - cursor_size, alloc->end);
|
||||
if (DISPLAY_VER(i915) < 20) {
|
||||
cursor_size = skl_cursor_allocation(crtc_state, num_active);
|
||||
iter.size -= cursor_size;
|
||||
skl_ddb_entry_init(&crtc_state->wm.skl.plane_ddb[PLANE_CURSOR],
|
||||
alloc->end - cursor_size, alloc->end);
|
||||
}
|
||||
|
||||
iter.data_rate = skl_total_relative_data_rate(crtc_state);
|
||||
|
||||
|
|
@ -1531,7 +1533,7 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state *state,
|
|||
const struct skl_plane_wm *wm =
|
||||
&crtc_state->wm.skl.optimal.planes[plane_id];
|
||||
|
||||
if (plane_id == PLANE_CURSOR) {
|
||||
if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20) {
|
||||
const struct skl_ddb_entry *ddb =
|
||||
&crtc_state->wm.skl.plane_ddb[plane_id];
|
||||
|
||||
|
|
@ -1579,7 +1581,7 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state *state,
|
|||
const struct skl_plane_wm *wm =
|
||||
&crtc_state->wm.skl.optimal.planes[plane_id];
|
||||
|
||||
if (plane_id == PLANE_CURSOR)
|
||||
if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20)
|
||||
continue;
|
||||
|
||||
if (DISPLAY_VER(i915) < 11 &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user