From: Jani Nikula <jani.nikula@linux.intel.com>
To: Gustavo Sousa <gustavo.sousa@intel.com>,
intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org
Cc: "Ankit Nautiyal" <ankit.k.nautiyal@intel.com>,
"Dnyaneshwar Bhadane" <dnyaneshwar.bhadane@intel.com>,
"Gustavo Sousa" <gustavo.sousa@intel.com>,
"Jouni Högander" <jouni.hogander@intel.com>,
"Juha-pekka Heikkila" <juha-pekka.heikkila@intel.com>,
"Luca Coelho" <luciano.coelho@intel.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Matt Atwood" <matthew.s.atwood@intel.com>,
"Matt Roper" <matthew.d.roper@intel.com>,
"Ravi Kumar Vodapalli" <ravi.kumar.vodapalli@intel.com>,
"Sai Teja Pottumuttu" <sai.teja.pottumuttu@intel.com>,
"Shekhar Chauhan" <shekhar.chauhan@intel.com>,
"Vinod Govindapillai" <vinod.govindapillai@intel.com>
Subject: Re: [PATCH 25/32] drm/i915/xe3p_lpd: Add FBC support for FP16 formats
Date: Wed, 15 Oct 2025 18:13:56 +0300 [thread overview]
Message-ID: <e2cf2c3f5e53d39dc60fa997a5c5942a774a031e@intel.com> (raw)
In-Reply-To: <20251015-xe3p_lpd-basic-enabling-v1-25-d2d1e26520aa@intel.com>
On Wed, 15 Oct 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> From: Vinod Govindapillai <vinod.govindapillai@intel.com>
>
> Add supported FP16 formats for FBC. FBC can be enabled with FP16 formats
> only when plane pixel normalizer block is enabled.
>
> Bspec: 6881, 69863, 68904
> Cc: Shekhar Chauhan <shekhar.chauhan@intel.com>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 37 ++++++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_fbc.h | 1 +
> 2 files changed, 38 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 75c78bef54f2..715a9acabe89 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -64,6 +64,7 @@
> #include "intel_fbc.h"
> #include "intel_fbc_regs.h"
> #include "intel_frontbuffer.h"
> +#include "skl_universal_plane_regs.h"
>
> #define for_each_fbc_id(__display, __fbc_id) \
> for ((__fbc_id) = INTEL_FBC_A; (__fbc_id) < I915_MAX_FBCS; (__fbc_id)++) \
> @@ -154,6 +155,8 @@ static unsigned int intel_fbc_cfb_cpp(const struct intel_plane_state *plane_stat
> case DRM_FORMAT_XBGR16161616:
> case DRM_FORMAT_ARGB16161616:
> case DRM_FORMAT_ABGR16161616:
> + case DRM_FORMAT_ARGB16161616F:
> + case DRM_FORMAT_ABGR16161616F:
> return 8;
> default:
> return 4;
> @@ -696,6 +699,30 @@ static void skl_fbc_program_cfb_stride(struct intel_fbc *fbc)
> CHICKEN_FBC_STRIDE_MASK, val);
> }
>
> +static bool
> +xe3p_lpd_fbc_is_fp16_format(const struct intel_plane_state *plane_state)
> +{
> + const struct drm_framebuffer *fb = plane_state->hw.fb;
> +
> + switch (fb->format->format) {
> + case DRM_FORMAT_ARGB16161616F:
> + case DRM_FORMAT_ABGR16161616F:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> +bool
> +intel_fbc_is_fp16_format_supported(const struct intel_plane_state *plane_state)
> +{
> + struct intel_display *display = to_intel_display(plane_state);
> +
> + if (DISPLAY_VER(display) >= 35)
> + return xe3p_lpd_fbc_is_fp16_format(plane_state);
> +
> + return false;
> +}
> static u32 ivb_dpfc_ctl(struct intel_fbc *fbc)
> {
> struct intel_display *display = fbc->display;
> @@ -811,6 +838,8 @@ static void intel_fbc_nuke(struct intel_fbc *fbc)
> static void intel_fbc_activate(struct intel_fbc *fbc)
> {
> struct intel_display *display = fbc->display;
> + struct intel_plane *plane = fbc->state.plane;
> + struct intel_plane_state *plane_state = to_intel_plane_state(plane->base.state);
>
> lockdep_assert_held(&fbc->lock);
>
> @@ -823,6 +852,11 @@ static void intel_fbc_activate(struct intel_fbc *fbc)
> */
> drm_WARN_ON(display->drm, fbc->active && HAS_FBC_DIRTY_RECT(display));
>
> + drm_WARN_ON(display->drm,
> + DISPLAY_VER(display) >= 35 &&
> + xe3p_lpd_fbc_is_fp16_format(plane_state) &&
> + (plane_state->pixel_normalizer & PLANE_PIXEL_NORMALIZE_ENABLE) == 0);
With the software state being logical, this part here wouldn't have to
do *register* level decoding on the software state. Now the physical and
logical states are conflated.
> +
> intel_fbc_hw_activate(fbc);
> intel_fbc_nuke(fbc);
>
> @@ -1140,6 +1174,9 @@ static bool xe3p_lpd_fbc_pixel_format_is_valid(const struct intel_plane_state *p
> {
> const struct drm_framebuffer *fb = plane_state->hw.fb;
>
> + if (xe3p_lpd_fbc_is_fp16_format(plane_state))
> + return true;
> +
> switch (fb->format->format) {
> case DRM_FORMAT_XRGB8888:
> case DRM_FORMAT_XBGR8888:
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.h b/drivers/gpu/drm/i915/display/intel_fbc.h
> index 0e715cb6b4e6..e14dc359ecf5 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.h
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.h
> @@ -52,5 +52,6 @@ void intel_fbc_prepare_dirty_rect(struct intel_atomic_state *state,
> struct intel_crtc *crtc);
> void intel_fbc_dirty_rect_update_noarm(struct intel_dsb *dsb,
> struct intel_plane *plane);
> +bool intel_fbc_is_fp16_format_supported(const struct intel_plane_state *plane_state);
>
> #endif /* __INTEL_FBC_H__ */
--
Jani Nikula, Intel
next prev parent reply other threads:[~2025-10-15 15:14 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-15 3:15 [PATCH 00/32] drm/i915/display: Add initial support for Xe3p_LPD Gustavo Sousa
2025-10-15 3:15 ` [PATCH 01/32] drm/xe/nvl: Define NVL-S platform Gustavo Sousa
2025-10-15 8:07 ` Shekhar Chauhan
2025-10-15 8:09 ` Shekhar Chauhan
2025-10-15 17:43 ` Lucas De Marchi
2025-10-15 3:15 ` [PATCH 02/32] drm/i915/xe3p_lpd: Add Xe3p_LPD display IP features Gustavo Sousa
2025-10-15 8:11 ` Shekhar Chauhan
2025-10-15 3:15 ` [PATCH 03/32] drm/i915/xe3p_lpd: Drop north display reset option programming Gustavo Sousa
2025-10-15 15:56 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 04/32] drm/i915/display: Use braces for if-ladder in intel_bw_init_hw() Gustavo Sousa
2025-10-15 17:40 ` Matt Roper
2025-10-15 3:15 ` [PATCH 05/32] drm/i915/dram: Add field ecc_impacting_de Gustavo Sousa
2025-10-15 14:46 ` Jani Nikula
2025-10-15 15:54 ` Matt Atwood
2025-10-15 16:13 ` Gustavo Sousa
2025-10-15 16:20 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 06/32] drm/i915/xe3p_lpd: Update bandwidth parameters Gustavo Sousa
2025-10-15 17:48 ` Matt Roper
2025-10-15 18:12 ` Gustavo Sousa
2025-10-15 19:12 ` Matt Roper
2025-10-15 19:51 ` Gustavo Sousa
2025-10-15 3:15 ` [PATCH 07/32] drm/i915/xe3p_lpd: Expand bifield masks dbuf blocks fields Gustavo Sousa
2025-10-15 17:55 ` Matt Roper
2025-10-15 3:15 ` [PATCH 08/32] drm/i915/xe3p_lpd: Support UINT16 formats Gustavo Sousa
2025-10-15 20:23 ` Matt Atwood
2025-10-15 20:55 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 09/32] drm/i915/xe3p_lpd: Extend FBC support to " Gustavo Sousa
2025-10-15 3:15 ` [PATCH 10/32] drm/i915/xe3p_lpd: Horizontal flip support for linear surfaces Gustavo Sousa
2025-10-15 17:58 ` Matt Roper
2025-10-15 3:15 ` [PATCH 11/32] drm/i915/xe3p_lpd: Wait for AUX channel power status Gustavo Sousa
2025-10-15 3:15 ` [PATCH 12/32] drm/i915/xe3p_lpd: Underrun debuggability and error codes/hints Gustavo Sousa
2025-10-15 14:56 ` Jani Nikula
2025-10-15 15:01 ` Ville Syrjälä
2025-10-15 3:15 ` [PATCH 13/32] drm/i915/xe3p_lpd: Remove gamma,csc bottom color checks Gustavo Sousa
2025-10-17 6:02 ` Borah, Chaitanya Kumar
2025-10-15 3:15 ` [PATCH 14/32] drm/i915/xe3p_lpd: Adapt to updates on MBUS_CTL/DBUF_CTL registers Gustavo Sousa
2025-10-15 14:58 ` Jani Nikula
2025-10-16 20:33 ` Gustavo Sousa
2025-10-15 3:15 ` [PATCH 15/32] drm/i915/xe3p_lpd: Always apply level-0 watermark adjustment Gustavo Sousa
2025-10-16 20:53 ` Matt Atwood
2025-10-16 21:03 ` Ville Syrjälä
2025-10-17 18:38 ` Gustavo Sousa
2025-10-15 3:15 ` [PATCH 16/32] drm/i915/xe3p_lpd: Add CDCLK table Gustavo Sousa
2025-10-15 17:39 ` Matt Roper
2025-10-15 17:43 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 17/32] drm/i915/xe3p_lpd: Load DMC firmware Gustavo Sousa
2025-10-15 16:22 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 18/32] drm/i915/xe3p_lpd: Drop support for interlace mode Gustavo Sousa
2025-10-15 4:21 ` Kandpal, Suraj
2025-10-15 3:15 ` [PATCH 19/32] drm/i915/xe3p_lpd: PSR SU minimum lines is 4 Gustavo Sousa
2025-10-15 15:00 ` Jani Nikula
2025-10-15 16:18 ` Gustavo Sousa
2025-10-15 3:15 ` [PATCH 20/32] drm/i915/xe3p_lpd: Enable system caching for FBC Gustavo Sousa
2025-10-15 3:15 ` [PATCH 21/32] drm/i915/xe3p_lpd: Extend Wa_16025573575 Gustavo Sousa
2025-10-15 8:13 ` Shekhar Chauhan
2025-10-15 3:15 ` [PATCH 22/32] drm/i915/xe3p_lpd: Don't allow odd ypan or ysize with semiplanar format Gustavo Sousa
2025-10-16 20:50 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 23/32] drm/i915/xe3p_lpd: Reload DMC MMIO for pipes C and D Gustavo Sousa
2025-10-15 17:47 ` Matt Atwood
2025-10-15 3:15 ` [PATCH 24/32] drm/i915/xe3p_lpd: Introduce pixel normalizer config support Gustavo Sousa
2025-10-15 15:11 ` Jani Nikula
2025-10-20 9:35 ` Govindapillai, Vinod
2025-10-15 3:15 ` [PATCH 25/32] drm/i915/xe3p_lpd: Add FBC support for FP16 formats Gustavo Sousa
2025-10-15 15:13 ` Jani Nikula [this message]
2025-10-15 3:15 ` [PATCH 26/32] drm/i915/xe3p_lpd: Enable pixel normalizer for fp16 formats for FBC Gustavo Sousa
2025-10-15 15:15 ` Jani Nikula
2025-10-15 3:15 ` [PATCH 27/32] drm/i915/vbt: Add fields dedicated_external and dyn_port_over_tc Gustavo Sousa
2025-10-15 15:24 ` Jani Nikula
2025-10-17 19:52 ` Gustavo Sousa
2025-10-20 7:45 ` Jani Nikula
2025-10-20 12:43 ` Gustavo Sousa
2025-10-15 15:29 ` Jani Nikula
2025-10-17 20:20 ` Gustavo Sousa
2025-10-21 8:32 ` Jani Nikula
2025-10-15 3:15 ` [PATCH 28/32] drm/i915/power: Use intel_encoder_is_tc() Gustavo Sousa
2025-10-15 4:20 ` Kandpal, Suraj
2025-10-15 3:15 ` [PATCH 29/32] drm/i915/display: Handle dedicated external ports in intel_encoder_is_tc() Gustavo Sousa
2025-10-15 15:33 ` Jani Nikula
2025-10-15 16:25 ` Gustavo Sousa
2025-10-21 8:36 ` Jani Nikula
2025-10-15 3:15 ` [PATCH 30/32] drm/i915/wm: don't use method1 in Xe3p_LPD onwards Gustavo Sousa
2025-10-15 8:02 ` Shekhar Chauhan
2025-10-21 20:19 ` Gustavo Sousa
2025-10-15 3:15 ` [PATCH 31/32] drm/i915/xe3p_lpd: Extend Type-C flow for static DDI allocation Gustavo Sousa
2025-10-15 3:15 ` [PATCH 32/32] drm/i915/nvls: Add NVL-S display support Gustavo Sousa
2025-10-15 3:29 ` ✗ CI.checkpatch: warning for drm/i915/display: Add initial support for Xe3p_LPD Patchwork
2025-10-15 3:30 ` ✓ CI.KUnit: success " Patchwork
2025-10-15 3:45 ` ✗ CI.checksparse: warning " Patchwork
2025-10-15 4:15 ` ✓ Xe.CI.BAT: success " Patchwork
2025-10-15 4:30 ` ✓ i915.CI.BAT: " Patchwork
2025-10-15 11:00 ` ✓ i915.CI.Full: " Patchwork
2025-10-15 13:44 ` ✗ Xe.CI.Full: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e2cf2c3f5e53d39dc60fa997a5c5942a774a031e@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=dnyaneshwar.bhadane@intel.com \
--cc=gustavo.sousa@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jouni.hogander@intel.com \
--cc=juha-pekka.heikkila@intel.com \
--cc=lucas.demarchi@intel.com \
--cc=luciano.coelho@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=matthew.s.atwood@intel.com \
--cc=ravi.kumar.vodapalli@intel.com \
--cc=sai.teja.pottumuttu@intel.com \
--cc=shekhar.chauhan@intel.com \
--cc=vinod.govindapillai@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.