From: "Reddy Guddati, Santhosh" <santhosh.reddy.guddati@intel.com>
To: Vinod Govindapillai <vinod.govindapillai@intel.com>,
<igt-dev@lists.freedesktop.org>
Cc: <swati2.sharma@intel.com>, <jani.nikula@intel.com>
Subject: Re: [PATCH i-g-t v3 04/11] tests/intel/kms_frontbuffer_tracking: consolidate fbc tests skip checks
Date: Thu, 30 Apr 2026 10:05:23 +0530 [thread overview]
Message-ID: <c8b97fc0-de77-47bb-85a4-984576bfd558@intel.com> (raw)
In-Reply-To: <20260416092559.88735-5-vinod.govindapillai@intel.com>
Hi Vinod,
On 16-04-2026 14:55, Vinod Govindapillai wrote:
> While looking for "no fbc reasons" and decide whether to skip any specific
> fbc related test, read the debugfs fbc status only once and look for any
> skip reasons. Move this as a library function so that other FBC specific
> tests could use the same library and all the skips reasons can be
> maintained in a single place.
>
> Suggested-by: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
> lib/i915/intel_fbc.c | 37 +++++++++++++++
> lib/i915/intel_fbc.h | 1 +
> tests/intel/kms_frontbuffer_tracking.c | 63 ++++----------------------
> 3 files changed, 47 insertions(+), 54 deletions(-)
>
> diff --git a/lib/i915/intel_fbc.c b/lib/i915/intel_fbc.c
> index 47f0e2fc1..e2fbe3680 100644
> --- a/lib/i915/intel_fbc.c
> +++ b/lib/i915/intel_fbc.c
> @@ -63,6 +63,43 @@ void intel_fbc_get_fbc_status(igt_crtc_t *crtc, char *fbc_status, int buf_size)
> buf_size);
> }
>
> +/**
> + * intel_fbc_found_skip_reason
> + * @device: fd of the device
> + * @crtc_index: crtc index
> + *
> + * Read the debugfs entry for current fbc status of a crtc and check for any reasons
> + * why FBC cannot be enabled. This helps in skipping FBC test cases where FBC cannot
> + * be enabled. These no fbc reasons are defined by the driver.
> + *
> + * Returns:
> + * True if there is a reason that FBC cannot be enabled otherwise false.
> + */
> +bool intel_fbc_found_skip_reason(int device, int crtc_index)
> +{
> + const char *const no_fbc_reasons[] = {
> + "FBC disabled: not enough stolen memory",
> + "FBC disabled: stride not supported",
> + "FBC disabled: plane size too big",
> + "FBC disabled: surface size too big",
> + "FBC disabled: PSR1 enabled (Wa_14016291713)"
> + };
> + bool found_reason = false;
> + char fbc_status[FBC_STATUS_BUF_LEN];
> + int i;
> +
> + intel_fbc_get_fbc_status_crtc_index(device, crtc_index, fbc_status,
> + sizeof(fbc_status));
> +
> + if (strstr(fbc_status, "FBC Enabled\n"))
This should be "FBC enabled" as debugfs reports it as "enabled".
> + return false;
> +
> + for (i = 0; !found_reason && i < ARRAY_SIZE(no_fbc_reasons); i++)
> + found_reason = strstr(fbc_status, no_fbc_reasons[i]);
> +
> + return found_reason;
> +}
> +
> /**
> * intel_fbc_supported:
> * @crtc: CRTC
> diff --git a/lib/i915/intel_fbc.h b/lib/i915/intel_fbc.h
> index f8a506f23..e4b9e5529 100644
> --- a/lib/i915/intel_fbc.h
> +++ b/lib/i915/intel_fbc.h
> @@ -20,5 +20,6 @@ bool intel_fbc_supported_for_psr_mode(igt_display_t *display, enum psr_mode mode
> void intel_fbc_get_fbc_status_crtc_index(int device, int crtc_index,
> char *fbc_status, int buf_size);
> void intel_fbc_get_fbc_status(igt_crtc_t *crtc, char *fbc_status, int buf_size);
> +bool intel_fbc_found_skip_reason(int device, int crtc_index);
>
> #endif
> diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> index 5bdfbd105..4fa185e76 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -1652,51 +1652,6 @@ static bool fbc_wait_for_compression(void)
> return igt_wait(fbc_is_compressing(), 2000, 1);
> }
>
> -static bool fbc_not_enough_stolen(void)
> -{
> - char fbc_status[128];
> -
> - intel_fbc_get_fbc_status(prim_mode_params.crtc, fbc_status, sizeof(fbc_status));
> -
> - return strstr(fbc_status, "FBC disabled: not enough stolen memory\n");
> -}
> -
> -static bool fbc_stride_not_supported(void)
> -{
> - char fbc_status[128];
> -
> - intel_fbc_get_fbc_status(prim_mode_params.crtc, fbc_status, sizeof(fbc_status));
> -
> - return strstr(fbc_status, "FBC disabled: stride not supported\n");
> -}
> -
> -static bool fbc_plane_size_too_big(void)
> -{
> - char fbc_status[128];
> -
> - intel_fbc_get_fbc_status(prim_mode_params.crtc, fbc_status, sizeof(fbc_status));
> -
> - return strstr(fbc_status, "FBC disabled: plane size too big\n");
> -}
> -
> -static bool fbc_surface_size_too_big(void)
> -{
> - char fbc_status[128];
> -
> - intel_fbc_get_fbc_status(prim_mode_params.crtc, fbc_status, sizeof(fbc_status));
> -
> - return strstr(fbc_status, "FBC disabled: surface size too big\n");
> -}
> -
> -static bool fbc_psr_not_possible(void)
> -{
> - char fbc_status[128];
> -
> - intel_fbc_get_fbc_status(prim_mode_params.crtc, fbc_status, sizeof(fbc_status));
> -
> - return strstr(fbc_status, "FBC disabled: PSR1 enabled (Wa_14016291713)");
> -}
> -
> static bool fbc_enable_per_plane(int plane_index, igt_crtc_t *crtc)
> {
> char fbc_status[PATH_MAX];
> @@ -2345,6 +2300,8 @@ static void do_crc_assertions(int flags)
>
> static void do_status_assertions(int flags)
> {
> + igt_crtc_t *crtc = prim_mode_params.crtc;
> +
> if (!opt.check_status) {
> /* Make sure we settle before continuing. */
> sleep(1);
> @@ -2362,27 +2319,25 @@ static void do_status_assertions(int flags)
> igt_assert_f(false, "DRRS LOW\n");
> }
> } else if (flags & ASSERT_DRRS_INACTIVE) {
> - if (!intel_is_drrs_inactive(prim_mode_params.crtc)) {
> + if (!intel_is_drrs_inactive(crtc)) {
> drrs_print_status();
> igt_assert_f(false, "DRRS INACTIVE\n");
> }
> }
>
> if (flags & ASSERT_FBC_ENABLED) {
> - igt_require(!fbc_not_enough_stolen());
> - igt_require(!fbc_stride_not_supported());
> - igt_require(!fbc_plane_size_too_big());
> - igt_require(!fbc_surface_size_too_big());
> - igt_require(!fbc_psr_not_possible());
> - if (!intel_fbc_wait_until_enabled(prim_mode_params.crtc)) {
> - igt_assert_f(intel_fbc_is_enabled(prim_mode_params.crtc, IGT_LOG_WARN),
> + igt_require(!intel_fbc_found_skip_reason(crtc->display->drm_fd,
> + crtc->crtc_index));
> +
> + if (!intel_fbc_wait_until_enabled(crtc)) {
> + igt_assert_f(intel_fbc_is_enabled(crtc, IGT_LOG_WARN),
> "FBC disabled\n");
> }
>
> if (opt.fbc_check_compression)
> igt_assert(fbc_wait_for_compression());
> } else if (flags & ASSERT_FBC_DISABLED) {
> - igt_assert(!intel_fbc_wait_until_enabled(prim_mode_params.crtc));
> + igt_assert(!intel_fbc_wait_until_enabled(crtc));
> }
>
> if (flags & ASSERT_PSR_ENABLED) {
next prev parent reply other threads:[~2026-04-30 4:35 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-16 9:25 [PATCH i-g-t v3 00/11] updates to fbc tests Vinod Govindapillai
2026-04-16 9:25 ` [PATCH i-g-t v3 01/11] lib/i915/fbc: extract intel_fbc_get_fbc_status() Vinod Govindapillai
2026-04-30 2:56 ` Reddy Guddati, Santhosh
2026-04-16 9:25 ` [PATCH i-g-t v3 02/11] tests/intel/kms_frontbuffer_tracking: use intel_fbc_get_fbc_status() Vinod Govindapillai
2026-04-30 3:18 ` Reddy Guddati, Santhosh
2026-04-16 9:25 ` [PATCH i-g-t v3 03/11] tests/intel/kms_frontbuffer_tracking: update the outdated fbc status reasons Vinod Govindapillai
2026-04-30 3:37 ` Reddy Guddati, Santhosh
2026-04-30 7:05 ` Govindapillai, Vinod
2026-04-30 8:30 ` Jani Nikula
2026-04-16 9:25 ` [PATCH i-g-t v3 04/11] tests/intel/kms_frontbuffer_tracking: consolidate fbc tests skip checks Vinod Govindapillai
2026-04-30 4:35 ` Reddy Guddati, Santhosh [this message]
2026-04-30 7:12 ` Govindapillai, Vinod
2026-04-16 9:25 ` [PATCH i-g-t v3 05/11] tests/intel/kms_frontbuffer_tracking: use a bigger buffer for fbc status Vinod Govindapillai
2026-04-30 3:45 ` Reddy Guddati, Santhosh
2026-04-16 9:25 ` [PATCH i-g-t v3 06/11] tests/intel/kms_fbcon_fbt: " Vinod Govindapillai
2026-04-30 3:46 ` Reddy Guddati, Santhosh
2026-04-16 9:25 ` [PATCH i-g-t v3 07/11] tests/intel/kms_fbcon_fbt: update the outdated fbc skip reasons Vinod Govindapillai
2026-04-30 3:56 ` Reddy Guddati, Santhosh
2026-04-30 7:11 ` Govindapillai, Vinod
2026-04-16 9:25 ` [PATCH i-g-t v3 08/11] tests/intel/kms_fbcon_fbt: refactor the code to get the right fbc status Vinod Govindapillai
2026-04-16 9:25 ` [PATCH i-g-t v3 09/11] tests/intel/kms_fbcon_fbt: find and store the crtc index Vinod Govindapillai
2026-04-16 9:25 ` [PATCH i-g-t v3 10/11] tests/intel/kms_fbcon_fbt: find the correct fbc status of a pipe Vinod Govindapillai
2026-04-16 9:25 ` [PATCH i-g-t v3 11/11] tests/intel/kms_fbcon_fbt: use common routine to skip tests on fbc status Vinod Govindapillai
2026-04-30 4:06 ` Reddy Guddati, Santhosh
2026-04-16 16:24 ` ✓ i915.CI.BAT: success for updates to fbc tests (rev3) Patchwork
2026-04-16 16:24 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-16 18:08 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-04-17 4:43 ` ✗ i915.CI.Full: " 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=c8b97fc0-de77-47bb-85a4-984576bfd558@intel.com \
--to=santhosh.reddy.guddati@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=swati2.sharma@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox