All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/3] drm/i915/fbc: update the supported FP16 formats
@ 2026-10-27 15:05 Vinod Govindapillai
  2026-10-27 15:05 ` [PATCH v3 2/3] drm/i915/fbc: Apply Wa_14028723391 Vinod Govindapillai
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Vinod Govindapillai @ 2026-10-27 15:05 UTC (permalink / raw)
  To: intel-xe, intel-gfx
  Cc: vinod.govindapillai, ville.syrjala, juha-pekka.heikkila

FBC is supported with FP16 formats with or without alpha. Update
the platform specific format check function to list all the
supported formats as it is. Also add a separate function to check
if the format is float because the pixel normalizer block must be
active to have FBC enabled for FP16 formats.

v2: list the supported formats per platform as it is and introduce
    format_is_float() (Ville)

Bspec: 68904
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 31 +++++++++++++++---------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 5694d20773f8..b84fa350c433 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -1180,14 +1180,15 @@ static bool lnl_fbc_pixel_format_is_valid(const struct intel_plane_state *plane_
 	}
 }
 
-static bool
-xe3p_lpd_fbc_fp16_format_is_valid(const struct intel_plane_state *plane_state)
+static bool format_is_float(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_XRGB16161616F:
 	case DRM_FORMAT_ABGR16161616F:
+	case DRM_FORMAT_XBGR16161616F:
 		return true;
 	default:
 		return false;
@@ -1196,24 +1197,30 @@ xe3p_lpd_fbc_fp16_format_is_valid(const struct intel_plane_state *plane_state)
 
 static bool xe3p_lpd_fbc_pixel_format_is_valid(const struct intel_plane_state *plane_state)
 {
-	if (lnl_fbc_pixel_format_is_valid(plane_state))
-		return true;
+	const struct drm_framebuffer *fb = plane_state->hw.fb;
 
-	if (xe3p_lpd_fbc_fp16_format_is_valid(plane_state))
+	switch (fb->format->format) {
+	case DRM_FORMAT_XRGB8888:
+	case DRM_FORMAT_XBGR8888:
+	case DRM_FORMAT_ARGB8888:
+	case DRM_FORMAT_ABGR8888:
+	case DRM_FORMAT_RGB565:
+	case DRM_FORMAT_ARGB16161616F:
+	case DRM_FORMAT_XRGB16161616F:
+	case DRM_FORMAT_ABGR16161616F:
+	case DRM_FORMAT_XBGR16161616F:
 		return true;
-
-	return false;
+	default:
+		return false;
+	}
 }
 
 bool intel_fbc_need_pixel_normalizer(const struct intel_plane_state *plane_state)
 {
 	struct intel_display *display = to_intel_display(plane_state);
 
-	if (HAS_PIXEL_NORMALIZER(display) &&
-	    xe3p_lpd_fbc_fp16_format_is_valid(plane_state))
-		return true;
-
-	return false;
+	return HAS_PIXEL_NORMALIZER(display) &&
+	       format_is_float(plane_state);
 }
 
 static bool pixel_format_is_valid(const struct intel_plane_state *plane_state)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-10-27 21:52 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-27 15:05 [PATCH v3 1/3] drm/i915/fbc: update the supported FP16 formats Vinod Govindapillai
2026-10-27 15:05 ` [PATCH v3 2/3] drm/i915/fbc: Apply Wa_14028723391 Vinod Govindapillai
2026-10-27 15:13   ` Ville Syrjälä
2026-10-27 15:53     ` Govindapillai, Vinod
2026-10-27 16:06       ` Ville Syrjälä
2026-10-27 15:05 ` [PATCH v3 3/3] drm/i915/fbc: update pixel normalizer condition for FBC FP16 formats Vinod Govindapillai
2026-10-27 16:18 ` ✓ CI.KUnit: success for series starting with [v3,1/3] drm/i915/fbc: update the supported " Patchwork
2026-10-27 16:52 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-27 17:01 ` ✓ i915.CI.BAT: " Patchwork
2026-10-27 20:44 ` ✓ Xe.CI.FULL: " Patchwork
2026-10-27 21:52 ` ✓ i915.CI.Full: " Patchwork

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.