Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/fbc: disable FBC if PSR2 selective fetch is enabled

It is not recommended to have both FBC dirty rect and PSR2
selective fetch be enabled at the same time. Mark FBC as not
possible, if PSR2 selective fetch is enabled.

v2: fix the condition to disable FBC if PSR2 enabled (Jani)

v3: use HAS_FBC_DIRTY_RECT()

v4: Update to patch description

Bspec: 68881
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250228093802.27091-9-vinod.govindapillai@intel.com

authored by

Vinod Govindapillai and committed by
Mika Kahola
e2364a56 194ecad0

+7 -2
+7 -2
drivers/gpu/drm/i915/display/intel_fbc.c
··· 1415 1415 * Display 12+ is not supporting FBC with PSR2. 1416 1416 * Recommendation is to keep this combination disabled 1417 1417 * Bspec: 50422 HSD: 14010260002 1418 + * 1419 + * In Xe3, PSR2 selective fetch and FBC dirty rect feature cannot 1420 + * coexist. So if PSR2 selective fetch is supported then mark that 1421 + * FBC is not supported. 1422 + * TODO: Need a logic to decide between PSR2 and FBC Dirty rect 1418 1423 */ 1419 - if (IS_DISPLAY_VER(display, 12, 14) && crtc_state->has_sel_update && 1420 - !crtc_state->has_panel_replay) { 1424 + if ((IS_DISPLAY_VER(display, 12, 14) || HAS_FBC_DIRTY_RECT(display)) && 1425 + crtc_state->has_sel_update && !crtc_state->has_panel_replay) { 1421 1426 plane_state->no_fbc_reason = "PSR2 enabled"; 1422 1427 return 0; 1423 1428 }