* [PATCH 00/12] Optimize vrr.guardband and fix LRR
@ 2025-08-07 11:15 Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
` (13 more replies)
0 siblings, 14 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Instead of setting vrr.guardband to vblank, use optimal guardband that
works for most of the cases. This will help in avoiding need of change
in guardband and fix the LRR feature that needs seamless switching to
a lower refresh rate.
First few patches fix/refactor and extract common functions required for
dsc/scaler prefill time computation. Later patches use these helpers to
compute an optimized guardband.
Also, for seamless_mn where vtotal is same but mode clock is changed to
seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work:
-The timestamps corresponding with next start of vactive still need to be
fixed with the new scheme.
-Re-enabling CMRR
Rev2:
-Address comments from Mitul.
-Extract helpers for dsc/scaler prefill latencies.
-Fix downscaling factor for chroma subsampling.
-Use missing pkg C max latency.
-Fix guardband computation for seamless mn, always use vblank for
higher resolution.
Rev3:
-Drop patches for computing and storing PSR/Panel Replay wake times
latencies and use existing helpers to compute these in intel_alpm.c.
-Drop patch to change the Vmin as it was not required.
Rev4:
-Rebase
-Drop patch for checking bounds for scaler array access.
-Use a new flag for setting vrr timings for seamless drrs.
Ankit 12):
drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
drm/i915/skl_watermark: Pass linetime as argument to latency helpers
drm/i915/skl_scaler: Introduce helper for chroma downscale factor
drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
drm/i915/dp: Add SDP latency computation helper
drm/i915/alpm: Add function to compute max link-wake latency
drm/i915/vrr: Use vrr.sync_start for getting vtotal
drm/i915/display: Add guardband check for feature latencies
drm/i915/skl_watermark: Remove redundant latency checks from vblank
validation
drm/i915/vrr: Use static guardband to support seamless LRR switching
drm/i915/panel: Add helper to get highest fixed mode
drm/i915/vrr: Fix seamless_mn drrs for PTL
drivers/gpu/drm/i915/display/intel_alpm.c | 15 ++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 +
drivers/gpu/drm/i915/display/intel_display.c | 174 +++++++++++++-
drivers/gpu/drm/i915/display/intel_display.h | 8 +
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 49 +++-
drivers/gpu/drm/i915/display/intel_dp.h | 2 +
drivers/gpu/drm/i915/display/intel_panel.c | 13 +
drivers/gpu/drm/i915/display/intel_panel.h | 2 +
drivers/gpu/drm/i915/display/intel_vrr.c | 227 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +-
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +
drivers/gpu/drm/i915/display/skl_watermark.c | 89 +------
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
15 files changed, 491 insertions(+), 103 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 15:26 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
` (12 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
The Bspec:70151, mentions Chroma subsampling is a 2x downscale
operation. This means that the downscale factor is 2 in each direction.
So correct the downscaling factor to 4.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index def5150231a4..df586509a742 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2185,7 +2185,7 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
crtc_state->hw.adjusted_mode.clock);
int num_scaler_users = hweight32(scaler_state->scaler_users);
int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
+ crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2228,7 +2228,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
+ crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
int latency;
latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 16:19 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
` (11 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Refactor dsc_prefill_latency and scaler_prefill_latency to take
linetime as an explicit parameter instead of computing it internally.
This avoids redundant calculations and simplifies scanline conversion
logic in skl_is_vblank_too_short().
This change also facilitates future extraction of these helpers for use
cases where latencies are computed for an optimized guardband, based on the
highest resolution mode, rather than the current mode.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index df586509a742..74ab10a04e83 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2176,13 +2176,11 @@ cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
}
static int
-dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
+dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
- int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal,
- crtc_state->hw.adjusted_mode.clock);
int num_scaler_users = hweight32(scaler_state->scaler_users);
int chroma_downscaling_factor =
crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
@@ -2206,18 +2204,16 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
- return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, dsc_prefill_latency);
+ return dsc_prefill_latency;
}
static int
-scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
+scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
int scaler_prefill_latency = 0;
- int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal,
- crtc_state->hw.adjusted_mode.clock);
if (!num_scaler_users)
return scaler_prefill_latency;
@@ -2238,7 +2234,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
- return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, scaler_prefill_latency);
+ return scaler_prefill_latency;
}
static bool
@@ -2247,11 +2243,13 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
{
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
+ int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
+ adjusted_mode->clock);
return crtc_state->framestart_delay +
intel_usecs_to_scanlines(adjusted_mode, latency) +
- scaler_prefill_latency(crtc_state) +
- dsc_prefill_latency(crtc_state) +
+ DIV_ROUND_UP(scaler_prefill_latency(crtc_state, linetime), linetime) +
+ DIV_ROUND_UP(dsc_prefill_latency(crtc_state, linetime), linetime) +
wm0_lines >
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 16:29 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
` (10 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
For 444 to 420 output format conversion, scaler uses 2x downscaling in
each direction. Introduce skl_scaler_chroma_downscale_factor() to
encapsulate the chroma subsampling adjustment used in scaler/dsc
pre-fill latency calculations.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +++++
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +++
drivers/gpu/drm/i915/display/skl_watermark.c | 7 +++----
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index cd7ebbeb9508..05ccd26b817f 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -968,3 +968,8 @@ void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state)
1);
intel_de_write(display, XELPD_DISPLAY_ERR_FATAL_MASK, 0);
}
+
+int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state)
+{
+ return crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+}
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.h b/drivers/gpu/drm/i915/display/skl_scaler.h
index 12a19016c5f6..257330d4c329 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.h
+++ b/drivers/gpu/drm/i915/display/skl_scaler.h
@@ -45,4 +45,7 @@ skl_scaler_mode_valid(struct intel_display *display,
void adl_scaler_ecc_mask(const struct intel_crtc_state *crtc_state);
void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state);
+
+int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state);
+
#endif
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 74ab10a04e83..97b42bbf5642 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -30,6 +30,7 @@
#include "intel_plane.h"
#include "intel_wm.h"
#include "skl_universal_plane_regs.h"
+#include "skl_scaler.h"
#include "skl_watermark.h"
#include "skl_watermark_regs.h"
@@ -2182,8 +2183,7 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
- int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2223,8 +2223,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
if (num_scaler_users > 1) {
u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
int latency;
latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (2 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-11 6:16 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 05/12] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
` (9 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Currently dsc/scaler prefill latencies are handled during watermark
calculations. With the optimized guardband, we need to compute the
latencies to find the minimum guardband that works for most cases.
Extract the helpers to compute these latencies, so that they can be used
while computing vrr guardband.
While at it, put declarations in reverse xmas tree order for better
redability.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 34 +++++++++++++++
drivers/gpu/drm/i915/display/intel_display.h | 8 ++++
drivers/gpu/drm/i915/display/skl_watermark.c | 46 +++++++++-----------
3 files changed, 63 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c1a3a95c65f0..af4d54672d0d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8328,3 +8328,37 @@ bool intel_scanout_needs_vtd_wa(struct intel_display *display)
return IS_DISPLAY_VER(display, 6, 11) && i915_vtd_active(i915);
}
+
+int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64 vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime)
+{
+ int scaler_prefill_latency;
+
+ scaler_prefill_latency = 4 * linetime;
+ if (num_scaler_users > 1)
+ scaler_prefill_latency += DIV_ROUND_UP_ULL((4 * linetime * hscale * vscale *
+ chroma_downscaling_factor), 1000000);
+
+ scaler_prefill_latency *= cdclk_prefill_adjustment;
+
+ return scaler_prefill_latency;
+}
+
+int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64 *vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime)
+{
+ int dsc_prefill_latency;
+
+ dsc_prefill_latency = DIV_ROUND_UP(15 * linetime * chroma_downscaling_factor, 10);
+
+ for (int i = 0; i < num_scaler_users; i++)
+ dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency * hscale[i] * vscale[i],
+ 1000000);
+ dsc_prefill_latency *= cdclk_prefill_adjustment;
+
+ return dsc_prefill_latency;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 37e2ab301a80..8d094b0a8c6b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -559,5 +559,13 @@ bool assert_port_valid(struct intel_display *display, enum port port);
bool intel_scanout_needs_vtd_wa(struct intel_display *display);
int intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
+int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64 vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime);
+int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64 *vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime);
#endif
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 97b42bbf5642..4474f987de06 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2179,11 +2179,12 @@ cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
static int
dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- const struct intel_crtc_scaler_state *scaler_state =
- &crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2191,18 +2192,16 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
num_scaler_users > crtc->num_scalers)
return dsc_prefill_latency;
- dsc_prefill_latency = DIV_ROUND_UP(15 * linetime * chroma_downscaling_factor, 10);
-
for (int i = 0; i < num_scaler_users; i++) {
- u64 hscale_k, vscale_k;
-
- hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
- vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
- dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency * hscale_k * vscale_k,
- 1000000);
+ hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
+ vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
}
- dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
+ dsc_prefill_latency =
+ intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
return dsc_prefill_latency;
}
@@ -2210,28 +2209,25 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
static int
scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
- const struct intel_crtc_scaler_state *scaler_state =
- &crtc_state->scaler_state;
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k = 1000, vscale_k = 1000;
int scaler_prefill_latency = 0;
if (!num_scaler_users)
return scaler_prefill_latency;
- scaler_prefill_latency = 4 * linetime;
-
if (num_scaler_users > 1) {
- u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
- u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- int latency;
-
- latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
- chroma_downscaling_factor), 1000000);
- scaler_prefill_latency += latency;
+ hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
+ vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
}
- scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
+ scaler_prefill_latency =
+ intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
return scaler_prefill_latency;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 05/12] drm/i915/dp: Add SDP latency computation helper
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (3 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 06/12] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
` (8 subsequent siblings)
13 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Add a helper to compute vblank time needed for transmitting specific
DisplayPort SDPs like PPS, GAMUT_METADATA, and VSC_EXT. Latency is
based on line count per packet type and current line time.
Used to ensure adequate vblank when features like DSC/HDR are enabled.
Bspec: 70151
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 47 +++++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 1 +
2 files changed, 48 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 625036c47bdf..0c2bec1fbe42 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6826,3 +6826,50 @@ void intel_dp_mst_resume(struct intel_display *display)
}
}
}
+
+static
+int intel_dp_get_sdp_latency(u32 type, int linetime_us)
+{
+ int lines;
+
+ switch (type) {
+ case DP_SDP_VSC_EXT_VESA:
+ case DP_SDP_VSC_EXT_CEA:
+ lines = 10;
+ break;
+ case HDMI_PACKET_TYPE_GAMUT_METADATA:
+ lines = 8;
+ break;
+ case DP_SDP_PPS:
+ lines = 6;
+ break;
+ default:
+ lines = 0;
+ break;
+ }
+
+ return lines * linetime_us;
+}
+
+int intel_dp_compute_sdp_latency(struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled)
+{
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int sdp_latency = 0;
+ int linetime_us;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+ if (assume_all_enabled ||
+ crtc_state->infoframes.enable &
+ intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA))
+ sdp_latency = max(sdp_latency,
+ intel_dp_get_sdp_latency(HDMI_PACKET_TYPE_GAMUT_METADATA,
+ linetime_us));
+
+ if (assume_all_enabled || crtc_state->dsc.compression_enable)
+ sdp_latency = max(sdp_latency,
+ intel_dp_get_sdp_latency(DP_SDP_PPS, linetime_us));
+
+ return sdp_latency;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 0657f5681196..994994d68475 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -214,5 +214,6 @@ int intel_dp_compute_min_hblank(struct intel_crtc_state *crtc_state,
int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector);
void intel_dp_dpcd_set_probe(struct intel_dp *intel_dp, bool force_on_external);
+int intel_dp_compute_sdp_latency(struct intel_crtc_state *crtc_state, bool assume_all_enabled);
#endif /* __INTEL_DP_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 06/12] drm/i915/alpm: Add function to compute max link-wake latency
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (4 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 05/12] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal Ankit Nautiyal
` (7 subsequent siblings)
13 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Introduce a helper to compute the max link wake latency when using
Auxless/Aux wake mechanism for PSR/Panel Replay/LOBF features.
This will be used to compute the minimum guardband so that the link wake
latencies are accounted and these features work smoothly for higher
refresh rate panels.
Bspec: 70151, 71477
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_alpm.c | 15 +++++++++++++++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 ++
2 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index dfdde8e4eabe..42b4a0ceb53b 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -628,3 +628,18 @@ bool intel_alpm_get_error(struct intel_dp *intel_dp)
return false;
}
+
+int intel_alpm_compute_max_link_wake_latency(struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled)
+{
+ int psr2_vblank_time = 0;
+ int auxless_wake_time = 0;
+
+ if (assume_all_enabled || crtc_state->has_sel_update)
+ psr2_vblank_time = io_buffer_wake_time(crtc_state);
+
+ if (assume_all_enabled || crtc_state->has_panel_replay)
+ auxless_wake_time = _lnl_compute_aux_less_wake_time(crtc_state->port_clock);
+
+ return max(psr2_vblank_time, auxless_wake_time);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index a861c20b5d79..8f1db54eecf5 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -38,4 +38,6 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state);
void intel_alpm_disable(struct intel_dp *intel_dp);
bool intel_alpm_get_error(struct intel_dp *intel_dp);
+int intel_alpm_compute_max_link_wake_latency(struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled);
#endif
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (5 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 06/12] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 17:01 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
` (6 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Currently, in intel_vrr_get_config() crtc_vtotal is computed from
vrr.vmin vtotal, since the VTOTAL.Vtotal bits are deprecated.
Since vmin is currently set to crtc_vtotal, this gives us the vtotal.
However, as we move to optimized guardband, vmin will be modified to set
to the minimum Vtotal for highest refresh rate supported.
Instead of depending on vmin, compute vtotal from crtc_vsync_start and
vrr.vsync_start. This works since vrr.vsync_start is measured from the
end of vblank, and crtc_vsync_start is measured from start of the
scanline. Together their sum is equal to the crtc_vtotal.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_vrr.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 3eed37f271b0..46a85720411f 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -735,17 +735,6 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state)
TRANS_VRR_VMAX(display, cpu_transcoder)) + 1;
crtc_state->vrr.vmin = intel_de_read(display,
TRANS_VRR_VMIN(display, cpu_transcoder)) + 1;
-
- /*
- * For platforms that always use VRR Timing Generator, the VTOTAL.Vtotal
- * bits are not filled. Since for these platforms TRAN_VMIN is always
- * filled with crtc_vtotal, use TRAN_VRR_VMIN to get the vtotal for
- * adjusted_mode.
- */
- if (intel_vrr_always_use_vrr_tg(display))
- crtc_state->hw.adjusted_mode.crtc_vtotal =
- intel_vrr_vmin_vtotal(crtc_state);
-
if (HAS_AS_SDP(display)) {
trans_vrr_vsync =
intel_de_read(display,
@@ -755,6 +744,16 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state)
crtc_state->vrr.vsync_end =
REG_FIELD_GET(VRR_VSYNC_END_MASK, trans_vrr_vsync);
}
+ /*
+ * For platforms that always use VRR Timing Generator, the VTOTAL.Vtotal
+ * bits are not filled. Since vrr.vsync_start is computed as:
+ * crtc_vtotal - crtc_vsync_start, we can derive vtotal from
+ * vrr.vsync_start and crtc_vsync_start.
+ */
+ if (intel_vrr_always_use_vrr_tg(display))
+ crtc_state->hw.adjusted_mode.crtc_vtotal =
+ crtc_state->hw.adjusted_mode.crtc_vsync_start +
+ crtc_state->vrr.vsync_start;
}
vrr_enable = trans_vrr_ctl & VRR_CTL_VRR_ENABLE;
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (6 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
` (2 more replies)
2025-08-07 11:15 ` [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
` (5 subsequent siblings)
13 siblings, 3 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Add a check during atomic crtc check phase to ensure the programmed VRR
guardband is sufficient to cover latencies introduced by enabled features
such as DSC, PSR/PR, scalers, and DP SDPs.
Currently, the guardband is programmed to match the vblank length, so
existing checks in skl_is_vblank_too_short() are valid. However, upcoming
changes will optimize the guardband independently of vblank, making those
checks incorrect.
Introduce an explicit guardband check to prepare for future updates
that will remove checking against the vblank length and later program an
optimized guardband.
v2: Use new helper for PSR2/Panel Replay latency.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
3 files changed, 140 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index af4d54672d0d..c542a3110051 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct intel_atomic_state *state,
return 0;
}
+static int
+cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ struct intel_atomic_state *state =
+ to_intel_atomic_state(crtc_state->uapi.state);
+ const struct intel_cdclk_state *cdclk_state;
+
+ cdclk_state = intel_atomic_get_cdclk_state(state);
+ if (IS_ERR(cdclk_state)) {
+ drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
+ return 1;
+ }
+
+ return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
+ 2 * intel_cdclk_logical(cdclk_state)));
+}
+
+static int
+dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
+{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+ int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u32 dsc_prefill_latency = 0;
+
+ if (!crtc_state->dsc.compression_enable ||
+ !num_scaler_users ||
+ num_scaler_users > crtc->num_scalers ||
+ num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
+ return dsc_prefill_latency;
+
+ for (int i = 0; i < num_scaler_users; i++) {
+ hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
+ vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
+ }
+
+ dsc_prefill_latency =
+ intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
+
+ return dsc_prefill_latency;
+}
+
+static int
+scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
+{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k = 1000, vscale_k = 1000;
+ int scaler_prefill_latency = 0;
+
+ if (!num_scaler_users)
+ return scaler_prefill_latency;
+
+ if (num_scaler_users > 1) {
+ hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
+ vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
+ }
+
+ scaler_prefill_latency =
+ intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
+
+ return scaler_prefill_latency;
+}
+
+static int intel_crtc_check_guardband(struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int dsc_prefill_time = 0;
+ int scaler_prefill_time;
+ int wm0_prefill_time;
+ int pkgc_max_latency;
+ int psr2_pr_latency;
+ int min_guardband;
+ int guardband_us;
+ int sagv_latency;
+ int linetime_us;
+ int sdp_latency;
+ int pm_delay;
+
+ if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
+ return 0;
+
+ if (!adjusted_mode->crtc_clock)
+ return 0;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+
+ pkgc_max_latency = skl_watermark_max_latency(display, 1);
+ sagv_latency = display->sagv.block_time_us;
+
+ wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
+
+ scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
+
+ if (crtc_state->dsc.compression_enable)
+ dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
+
+ pm_delay = crtc_state->framestart_delay +
+ max(sagv_latency, pkgc_max_latency) +
+ wm0_prefill_time +
+ scaler_prefill_time +
+ dsc_prefill_time;
+
+ psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, false);
+ sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
+
+ guardband_us = max(sdp_latency, psr2_pr_latency);
+ guardband_us = max(guardband_us, pm_delay);
+ min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
+
+ if (crtc_state->vrr.guardband < min_guardband) {
+ drm_dbg_kms(display->drm, "vrr.guardband %d < min guardband %d\n",
+ crtc_state->vrr.guardband, min_guardband);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int intel_crtc_atomic_check(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
@@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
if (ret)
return ret;
+ if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
+ ret = intel_crtc_check_guardband(crtc_state);
+ if (ret)
+ return ret;
+ }
+
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 4474f987de06..5ffa76cb1633 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
}
-static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
+int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
enum plane_id plane_id;
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h b/drivers/gpu/drm/i915/display/skl_watermark.h
index 62790816f030..8706c2010ebe 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.h
+++ b/drivers/gpu/drm/i915/display/skl_watermark.h
@@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct intel_atomic_state *state);
void intel_program_dpkgc_latency(struct intel_atomic_state *state);
bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
+int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
#endif /* __SKL_WATERMARK_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (7 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 17:03 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 10/12] drm/i915/vrr: Use static guardband to support seamless LRR switching Ankit Nautiyal
` (4 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Drop DSC and scaler prefill latency checks from skl_is_vblank_too_short().
These are now covered by the guardband validation added during the atomic
CRTC check phase.
This cleanup prepares for future changes where the guardband will be
optimized independently of vblank length, making vblank-based checks
obsolete.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 78 --------------------
1 file changed, 78 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 5ffa76cb1633..7578e29f0e36 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2158,93 +2158,15 @@ static int icl_build_plane_wm(struct intel_crtc_state *crtc_state,
return 0;
}
-static int
-cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
-{
- struct intel_display *display = to_intel_display(crtc_state);
- struct intel_atomic_state *state =
- to_intel_atomic_state(crtc_state->uapi.state);
- const struct intel_cdclk_state *cdclk_state;
-
- cdclk_state = intel_atomic_get_cdclk_state(state);
- if (IS_ERR(cdclk_state)) {
- drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
- return 1;
- }
-
- return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
- 2 * intel_cdclk_logical(cdclk_state)));
-}
-
-static int
-dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
-{
- const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- int num_scaler_users = hweight32(scaler_state->scaler_users);
- u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
- u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
- u32 dsc_prefill_latency = 0;
-
- if (!crtc_state->dsc.compression_enable ||
- !num_scaler_users ||
- num_scaler_users > crtc->num_scalers)
- return dsc_prefill_latency;
-
- for (int i = 0; i < num_scaler_users; i++) {
- hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
- vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
- }
-
- dsc_prefill_latency =
- intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
- chroma_downscaling_factor,
- cdclk_prefill_adjustment(crtc_state),
- linetime);
-
- return dsc_prefill_latency;
-}
-
-static int
-scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
-{
- const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- int num_scaler_users = hweight32(scaler_state->scaler_users);
- u64 hscale_k = 1000, vscale_k = 1000;
- int scaler_prefill_latency = 0;
-
- if (!num_scaler_users)
- return scaler_prefill_latency;
-
- if (num_scaler_users > 1) {
- hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
- vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- }
-
- scaler_prefill_latency =
- intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
- chroma_downscaling_factor,
- cdclk_prefill_adjustment(crtc_state),
- linetime);
-
- return scaler_prefill_latency;
-}
-
static bool
skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
int wm0_lines, int latency)
{
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
- int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
- adjusted_mode->clock);
return crtc_state->framestart_delay +
intel_usecs_to_scanlines(adjusted_mode, latency) +
- DIV_ROUND_UP(scaler_prefill_latency(crtc_state, linetime), linetime) +
- DIV_ROUND_UP(dsc_prefill_latency(crtc_state, linetime), linetime) +
wm0_lines >
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 10/12] drm/i915/vrr: Use static guardband to support seamless LRR switching
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (8 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode Ankit Nautiyal
` (3 subsequent siblings)
13 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
In the current VRR implementation, vrr.vmin and vrr.guardband are set such
that they do not need to change when switching from fixed refresh rate to
variable refresh rate. Specifically, vrr.guardband is always set to match
the vblank length. This approach works for most cases, but not for LRR,
where the guardband would need to change while the VRR timing generator is
still active.
With the VRR TG always active, live updates to guardband are unsafe and not
recommended. To ensure hardware safety, guardband was moved out of the
!fastset block, meaning any change now requires a full modeset.
This breaks seamless LRR switching, which was previously supported.
Since the problem arises from guardband being matched to the vblank length,
solution is to use a minimal, sufficient static value, instead. So we use a
static guardband defined during mode-set that fits within the smallest
expected vblank and remains unchanged in case of features like LRR where
vtotal changes. To compute this minimum guardband we take into account
latencies/delays due to different features as mentioned in the Bspec.
v2:
-Use helpers for dsc/scaler prefill latencies. (Mitul)
-Account for pkgc latency and take max of pkgc and sagv latencies.
v3: Use new helper for PSR2/Panel Replay latency.
Bspec: 70151
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 2 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 132 ++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +-
3 files changed, 133 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c542a3110051..a80a220ffc0d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4898,7 +4898,6 @@ intel_modeset_pipe_config_late(struct intel_atomic_state *state,
struct drm_connector *connector;
int i;
- intel_vrr_compute_config_late(crtc_state);
for_each_new_connector_in_state(&state->base, connector,
conn_state, i) {
@@ -4910,6 +4909,7 @@ intel_modeset_pipe_config_late(struct intel_atomic_state *state,
!encoder->compute_config_late)
continue;
+ intel_vrr_compute_config_late(crtc_state, conn_state);
ret = encoder->compute_config_late(encoder, crtc_state,
conn_state);
if (ret)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 46a85720411f..170f7bcdb8a8 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -6,12 +6,15 @@
#include <drm/drm_print.h>
+#include "intel_alpm.h"
#include "intel_de.h"
#include "intel_display_regs.h"
#include "intel_display_types.h"
#include "intel_dp.h"
#include "intel_vrr.h"
#include "intel_vrr_regs.h"
+#include "skl_scaler.h"
+#include "skl_watermark.h"
#define FIXED_POINT_PRECISION 100
#define CMRR_PRECISION_TOLERANCE 10
@@ -413,15 +416,140 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
}
}
-void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state)
+static
+int scaler_prefill_latency(struct intel_crtc_state *crtc_state, int linetime_us)
+{
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k, vscale_k;
+ int cdclk_adjustment;
+ int num_scaler_users;
+
+ /*
+ * Assuming:
+ * Both scaler enabled.
+ * scaler 1 downscaling factor as 2 x 2 (Horiz x Vert)
+ * scaler 2 downscaling factor as 2 x 1 (Horiz x Vert)
+ * Cdclk Adjustment : 1
+ */
+ num_scaler_users = 2;
+ hscale_k = 2 * 1000;
+ vscale_k = 2 * 1000;
+ cdclk_adjustment = 1;
+
+ return intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_adjustment,
+ linetime_us);
+}
+
+static
+int dsc_prefill_latency(struct intel_crtc_state *crtc_state, int linetime_us)
+{
+#define MAX_SCALERS 2
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k[MAX_SCALERS], vscale_k[MAX_SCALERS];
+ int cdclk_adjustment;
+ int num_scaler_users;
+
+ /*
+ * Assuming:
+ * Both scaler enabled.
+ * scaler 1 downscaling factor as 2 x 2 (Horiz x Vert)
+ * scaler 2 downscaling factor as 2 x 1 (Horiz x Vert)
+ * Cdclk Adjustment : 1
+ */
+ num_scaler_users = MAX_SCALERS;
+ hscale_k[0] = 2 * 1000;
+ vscale_k[0] = 2 * 1000;
+ hscale_k[1] = 2 * 1000;
+ vscale_k[1] = 1 * 1000;
+
+ cdclk_adjustment = 1;
+
+ return intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_adjustment,
+ linetime_us);
+}
+
+static
+int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
+ struct intel_connector *connector)
+{
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ struct intel_display *display = to_intel_display(crtc_state);
+ int dsc_prefill_time = 0;
+ int psr2_pr_latency = 0;
+ int scaler_prefill_time;
+ int wm0_prefill_time;
+ int pkgc_max_latency;
+ int sagv_latency;
+ int sdp_latency = 0;
+ int guardband_us;
+ int linetime_us;
+ int guardband;
+ int pm_delay;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+
+ pkgc_max_latency = skl_watermark_max_latency(display, 1);
+ sagv_latency = display->sagv.block_time_us;
+
+ /* Assuming max wm0 lines = 4 */
+ wm0_prefill_time = 4 * linetime_us + 20;
+
+ scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
+
+ if (crtc_state->dsc.compression_enable)
+ dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
+
+ pm_delay = crtc_state->framestart_delay +
+ max(sagv_latency, pkgc_max_latency) +
+ wm0_prefill_time +
+ scaler_prefill_time +
+ dsc_prefill_time;
+
+ switch (connector->base.connector_type) {
+ case DRM_MODE_CONNECTOR_eDP:
+ case DRM_MODE_CONNECTOR_DisplayPort:
+ psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, true);
+ sdp_latency = intel_dp_compute_sdp_latency(crtc_state, true);
+ break;
+ default:
+ break;
+ }
+
+ guardband_us = max(sdp_latency, psr2_pr_latency);
+ guardband_us = max(guardband_us, pm_delay);
+
+ guardband = DIV_ROUND_UP(guardband_us, linetime_us);
+
+ /* guardband cannot be more than the Vmax vblank */
+ guardband = min(guardband, crtc_state->vrr.vmax - adjusted_mode->crtc_vblank_start);
+
+ return guardband;
+}
+
+void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state,
+ struct drm_connector_state *conn_state)
{
struct intel_display *display = to_intel_display(crtc_state);
const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ struct intel_connector *connector =
+ to_intel_connector(conn_state->connector);
if (!intel_vrr_possible(crtc_state))
return;
- if (DISPLAY_VER(display) >= 13) {
+ if (intel_vrr_always_use_vrr_tg(display)) {
+ crtc_state->vrr.guardband = intel_vrr_compute_guardband(crtc_state, connector);
+ if (crtc_state->uapi.vrr_enabled) {
+ crtc_state->vrr.vmin = crtc_state->vrr.guardband +
+ adjusted_mode->crtc_vblank_start;
+ crtc_state->vrr.flipline = crtc_state->vrr.vmin;
+ }
+ } else if (DISPLAY_VER(display) >= 13) {
crtc_state->vrr.guardband =
crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start;
} else {
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h
index 38bf9996b883..4b15c2838492 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr.h
@@ -21,7 +21,8 @@ bool intel_vrr_possible(const struct intel_crtc_state *crtc_state);
void intel_vrr_check_modeset(struct intel_atomic_state *state);
void intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
struct drm_connector_state *conn_state);
-void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state);
+void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state,
+ struct drm_connector_state *conn_state);
void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state);
void intel_vrr_enable(const struct intel_crtc_state *crtc_state);
void intel_vrr_send_push(struct intel_dsb *dsb,
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (9 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 10/12] drm/i915/vrr: Use static guardband to support seamless LRR switching Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-11 15:22 ` Jani Nikula
2025-08-07 11:15 ` [PATCH 12/12] drm/i915/vrr: Fix seamless_mn drrs for PTL Ankit Nautiyal
` (2 subsequent siblings)
13 siblings, 1 reply; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
Add intel_panel_highest_fixed_mode() to return the fixed mode with the
highest pixel clock. Unlike intel_panel_highest_mode(), this function
does not fall back to the adjusted mode and returns NULL if no fixed
modes are available.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_panel.c | 13 +++++++++++++
drivers/gpu/drm/i915/display/intel_panel.h | 2 ++
2 files changed, 15 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 2a20aaaaac39..ea4351d11e63 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -158,6 +158,19 @@ intel_panel_highest_mode(struct intel_connector *connector,
return best_mode;
}
+const struct drm_display_mode *
+intel_panel_highest_fixed_mode(struct intel_connector *connector)
+{
+ const struct drm_display_mode *fixed_mode, *highest_mode = NULL;
+
+ list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
+ if (!highest_mode || fixed_mode->clock > highest_mode->clock)
+ highest_mode = fixed_mode;
+ }
+
+ return highest_mode;
+}
+
int intel_panel_get_modes(struct intel_connector *connector)
{
const struct drm_display_mode *fixed_mode;
diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
index 56a6412cf0fb..60f6873cdbaa 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.h
+++ b/drivers/gpu/drm/i915/display/intel_panel.h
@@ -39,6 +39,8 @@ intel_panel_downclock_mode(struct intel_connector *connector,
const struct drm_display_mode *
intel_panel_highest_mode(struct intel_connector *connector,
const struct drm_display_mode *adjusted_mode);
+const struct drm_display_mode *
+intel_panel_highest_fixed_mode(struct intel_connector *connector);
int intel_panel_get_modes(struct intel_connector *connector);
enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
enum drm_mode_status
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 12/12] drm/i915/vrr: Fix seamless_mn drrs for PTL
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (10 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode Ankit Nautiyal
@ 2025-08-07 11:15 ` Ankit Nautiyal
2025-08-07 12:22 ` ✓ i915.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev4) Patchwork
2025-08-07 16:31 ` ✓ i915.CI.Full: " Patchwork
13 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-07 11:15 UTC (permalink / raw)
To: intel-gfx, intel-xe
Cc: ville.syrjala, jani.nikula, mitulkumar.ajitkumar.golani,
Ankit Nautiyal
With VRR timing generator always on, the fixed refresh rate is achieved
by setting vrr.flipline and vrr.vmax as the vtotal for the desired mode.
This creates a problem for seamless_mn drrs feature, where user can
seamlessly set a lower mode on the supporting panels. With VRR timing
generator, the vrr.flipline and vrr.vmax are set to vtotal, but that
corresponds to the higher mode.
To fix this, re-compute the vrr timings when seamless_mn drrs is in
picture. At the same time make sure that the vrr.guardband is set as
per the highest mode for such panels, so that switching between higher
to lower mode, does not change the vrr.guardband.
v2: Add a new member `use_highest_mode` to vrr struct to help set the
vrr timings for highest mode for the seamless_mn drrs case.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
drivers/gpu/drm/i915/display/intel_dp.h | 1 +
drivers/gpu/drm/i915/display/intel_vrr.c | 74 +++++++++++++++++++
4 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 35596f3921e8..3adf79db308a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1317,6 +1317,7 @@ struct intel_crtc_state {
u8 pipeline_full;
u16 flipline, vmin, vmax, guardband;
u32 vsync_end, vsync_start;
+ bool use_highest_mode;
} vrr;
/* Content Match Refresh Rate state */
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 0c2bec1fbe42..809a192c46d0 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1741,7 +1741,7 @@ static int intel_dp_max_bpp(struct intel_dp *intel_dp,
return bpp;
}
-static bool has_seamless_m_n(struct intel_connector *connector)
+bool has_seamless_m_n(struct intel_connector *connector)
{
struct intel_display *display = to_intel_display(connector);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 994994d68475..75470eb7022a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -215,5 +215,6 @@ int intel_dp_compute_min_hblank(struct intel_crtc_state *crtc_state,
int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector);
void intel_dp_dpcd_set_probe(struct intel_dp *intel_dp, bool force_on_external);
int intel_dp_compute_sdp_latency(struct intel_crtc_state *crtc_state, bool assume_all_enabled);
+bool has_seamless_m_n(struct intel_connector *connector);
#endif /* __INTEL_DP_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 170f7bcdb8a8..6c60867cc1a9 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -11,6 +11,7 @@
#include "intel_display_regs.h"
#include "intel_display_types.h"
#include "intel_dp.h"
+#include "intel_panel.h"
#include "intel_vrr.h"
#include "intel_vrr_regs.h"
#include "skl_scaler.h"
@@ -299,6 +300,16 @@ void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state *crtc_state)
if (!intel_vrr_possible(crtc_state))
return;
+ if (crtc_state->vrr.use_highest_mode) {
+ intel_de_write(display, TRANS_VRR_VMIN(display, cpu_transcoder),
+ crtc_state->vrr.vmin - 1);
+ intel_de_write(display, TRANS_VRR_VMAX(display, cpu_transcoder),
+ crtc_state->vrr.vmax - 1);
+ intel_de_write(display, TRANS_VRR_FLIPLINE(display, cpu_transcoder),
+ crtc_state->vrr.flipline - 1);
+ return;
+ }
+
intel_de_write(display, TRANS_VRR_VMIN(display, cpu_transcoder),
intel_vrr_fixed_rr_vmin(crtc_state) - 1);
intel_de_write(display, TRANS_VRR_VMAX(display, cpu_transcoder),
@@ -318,6 +329,49 @@ void intel_vrr_compute_fixed_rr_timings(struct intel_crtc_state *crtc_state)
crtc_state->vrr.flipline = crtc_state->hw.adjusted_mode.crtc_vtotal;
}
+static bool needs_seamless_m_n_timings(struct intel_crtc_state *crtc_state,
+ struct intel_connector *connector)
+{
+ if (!has_seamless_m_n(connector) || crtc_state->joiner_pipes)
+ return false;
+
+ return true;
+}
+
+static
+void intel_vrr_compute_fixed_rr_for_seamless_m_n(struct intel_crtc_state *crtc_state,
+ struct intel_connector *connector)
+{
+ const struct drm_display_mode *highest_mode = intel_panel_highest_fixed_mode(connector);
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int vtotal_new;
+
+ /*
+ * For panels with seamless_m_n drrs, the user can seamlessly switch to
+ * a lower mode, which has a lower clock. This works with legacy timing
+ * generator, but not with the VRR timing generator. To run the
+ * VRR timing generator in fixed refresh rate mode flipline and vmax
+ * need to be set to same value.
+ *
+ * The function intel_vrr_compute_fixed_rr_timings set these to the
+ * VTOTAL. However, for this case we need to set the set the flipline
+ * and vmax to a higher value such that the VRR Timing generator can
+ * work with the desired fixed lower rate.
+ */
+ if (highest_mode && adjusted_mode->crtc_clock < highest_mode->clock) {
+ vtotal_new = adjusted_mode->crtc_vtotal * DIV_ROUND_UP(highest_mode->clock,
+ adjusted_mode->crtc_clock);
+ crtc_state->vrr.flipline = vtotal_new;
+ crtc_state->vrr.vmax = vtotal_new;
+ crtc_state->vrr.vmin = vtotal_new;
+ crtc_state->vrr.use_highest_mode = true;
+
+ return;
+ }
+
+ intel_vrr_compute_fixed_rr_timings(crtc_state);
+}
+
static
int intel_vrr_compute_vmin(struct intel_crtc_state *crtc_state)
{
@@ -396,6 +450,9 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
intel_vrr_compute_vrr_timings(crtc_state);
else if (is_cmrr_frac_required(crtc_state) && is_edp)
intel_vrr_compute_cmrr_timings(crtc_state);
+
+ else if (needs_seamless_m_n_timings(crtc_state, connector))
+ intel_vrr_compute_fixed_rr_for_seamless_m_n(crtc_state, connector);
else
intel_vrr_compute_fixed_rr_timings(crtc_state);
@@ -478,6 +535,7 @@ int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
{
const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
struct intel_display *display = to_intel_display(crtc_state);
+ const struct drm_display_mode *highest_mode;
int dsc_prefill_time = 0;
int psr2_pr_latency = 0;
int scaler_prefill_time;
@@ -490,6 +548,22 @@ int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
int guardband;
int pm_delay;
+ /*
+ * For seamless m_n the clock is changed while other modeline
+ * parameters are same. In that case the linetime_us will change,
+ * causing the guardband to change, and the seamless switch to
+ * lower mode would not take place.
+ * To avoid this, take the highest mode where panel supports
+ * seamless drrs and make guardband equal to the vblank length
+ * for the highest mode.
+ */
+ highest_mode = intel_panel_highest_fixed_mode(connector);
+ if (needs_seamless_m_n_timings(crtc_state, connector) && highest_mode) {
+ guardband = highest_mode->vtotal - highest_mode->vdisplay;
+
+ return guardband;
+ }
+
linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
adjusted_mode->crtc_clock);
--
2.45.2
^ permalink raw reply related [flat|nested] 33+ messages in thread
* ✓ i915.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev4)
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (11 preceding siblings ...)
2025-08-07 11:15 ` [PATCH 12/12] drm/i915/vrr: Fix seamless_mn drrs for PTL Ankit Nautiyal
@ 2025-08-07 12:22 ` Patchwork
2025-08-07 16:31 ` ✓ i915.CI.Full: " Patchwork
13 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2025-08-07 12:22 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 2522 bytes --]
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev4)
URL : https://patchwork.freedesktop.org/series/151245/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_16965 -> Patchwork_151245v4
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/index.html
Participating hosts (45 -> 44)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_151245v4 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live:
- bat-jsl-1: [PASS][1] -> [DMESG-FAIL][2] ([i915#13774]) +1 other test dmesg-fail
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/bat-jsl-1/igt@i915_selftest@live.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/bat-jsl-1/igt@i915_selftest@live.html
* igt@i915_selftest@live@ring_submission:
- bat-dg2-14: [PASS][3] -> [ABORT][4] ([i915#14201]) +1 other test abort
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/bat-dg2-14/igt@i915_selftest@live@ring_submission.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/bat-dg2-14/igt@i915_selftest@live@ring_submission.html
#### Possible fixes ####
* igt@i915_selftest@live@workarounds:
- bat-arls-6: [DMESG-FAIL][5] ([i915#12061]) -> [PASS][6] +1 other test pass
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/bat-arls-6/igt@i915_selftest@live@workarounds.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/bat-arls-6/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#13774]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13774
[i915#14201]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14201
Build changes
-------------
* Linux: CI_DRM_16965 -> Patchwork_151245v4
CI-20190529: 20190529
CI_DRM_16965: e75fad13646be2a02f21a8e9d438b3150108950d @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8488: c4a9bee161f4bb74cbbf81c73b24c416ecf93976 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_151245v4: e75fad13646be2a02f21a8e9d438b3150108950d @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/index.html
[-- Attachment #2: Type: text/html, Size: 3169 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
2025-08-07 11:15 ` [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
@ 2025-08-07 15:26 ` Golani, Mitulkumar Ajitkumar
0 siblings, 0 replies; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-07 15:26 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for
> chroma subsampling
>
> The Bspec:70151, mentions Chroma subsampling is a 2x downscale operation.
> This means that the downscale factor is 2 in each direction.
> So correct the downscaling factor to 4.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/skl_watermark.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index def5150231a4..df586509a742 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2185,7 +2185,7 @@ dsc_prefill_latency(const struct intel_crtc_state
> *crtc_state)
> crtc_state->hw.adjusted_mode.clock);
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> int chroma_downscaling_factor =
> - crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
> + crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
> u32 dsc_prefill_latency = 0;
>
> if (!crtc_state->dsc.compression_enable || @@ -2228,7 +2228,7 @@
> scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
> u64 hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> u64 vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> int chroma_downscaling_factor =
> - crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
> + crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
> int latency;
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
>
> latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k *
> vscale_k *
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers
2025-08-07 11:15 ` [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
@ 2025-08-07 16:19 ` Golani, Mitulkumar Ajitkumar
0 siblings, 0 replies; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-07 16:19 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to
> latency helpers
>
> Refactor dsc_prefill_latency and scaler_prefill_latency to take linetime as an
> explicit parameter instead of computing it internally.
>
> This avoids redundant calculations and simplifies scanline conversion logic in
> skl_is_vblank_too_short().
>
> This change also facilitates future extraction of these helpers for use cases
> where latencies are computed for an optimized guardband, based on the
> highest resolution mode, rather than the current mode.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/skl_watermark.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index df586509a742..74ab10a04e83 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2176,13 +2176,11 @@ cdclk_prefill_adjustment(const struct
> intel_crtc_state *crtc_state) }
>
> static int
> -dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> const struct intel_crtc_scaler_state *scaler_state =
> &crtc_state->scaler_state;
> - int linetime = DIV_ROUND_UP(1000 * crtc_state-
> >hw.adjusted_mode.htotal,
> - crtc_state->hw.adjusted_mode.clock);
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> int chroma_downscaling_factor =
> crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1; @@ -2206,18 +2204,16 @@
> dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
>
> dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
>
> - return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode,
> dsc_prefill_latency);
> + return dsc_prefill_latency;
> }
>
> static int
> -scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime)
> {
> const struct intel_crtc_scaler_state *scaler_state =
> &crtc_state->scaler_state;
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> int scaler_prefill_latency = 0;
> - int linetime = DIV_ROUND_UP(1000 * crtc_state-
> >hw.adjusted_mode.htotal,
> - crtc_state->hw.adjusted_mode.clock);
>
> if (!num_scaler_users)
> return scaler_prefill_latency;
> @@ -2238,7 +2234,7 @@ scaler_prefill_latency(const struct intel_crtc_state
> *crtc_state)
>
> scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
>
> - return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode,
> scaler_prefill_latency);
> + return scaler_prefill_latency;
> }
>
> static bool
> @@ -2247,11 +2243,13 @@ skl_is_vblank_too_short(const struct
> intel_crtc_state *crtc_state, {
> const struct drm_display_mode *adjusted_mode =
> &crtc_state->hw.adjusted_mode;
> + int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
> + adjusted_mode->clock);
>
> return crtc_state->framestart_delay +
> intel_usecs_to_scanlines(adjusted_mode, latency) +
> - scaler_prefill_latency(crtc_state) +
> - dsc_prefill_latency(crtc_state) +
> + DIV_ROUND_UP(scaler_prefill_latency(crtc_state, linetime),
> linetime) +
> + DIV_ROUND_UP(dsc_prefill_latency(crtc_state, linetime),
> linetime) +
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> wm0_lines >
> adjusted_mode->crtc_vtotal - adjusted_mode-
> >crtc_vblank_start; }
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor
2025-08-07 11:15 ` [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
@ 2025-08-07 16:29 ` Golani, Mitulkumar Ajitkumar
0 siblings, 0 replies; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-07 16:29 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma
> downscale factor
>
> For 444 to 420 output format conversion, scaler uses 2x downscaling in each
> direction. Introduce skl_scaler_chroma_downscale_factor() to encapsulate the
> chroma subsampling adjustment used in scaler/dsc pre-fill latency calculations.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/skl_scaler.c | 5 +++++
> drivers/gpu/drm/i915/display/skl_scaler.h | 3 +++
> drivers/gpu/drm/i915/display/skl_watermark.c | 7 +++----
> 3 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c
> b/drivers/gpu/drm/i915/display/skl_scaler.c
> index cd7ebbeb9508..05ccd26b817f 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -968,3 +968,8 @@ void adl_scaler_ecc_unmask(const struct
> intel_crtc_state *crtc_state)
> 1);
> intel_de_write(display, XELPD_DISPLAY_ERR_FATAL_MASK, 0); }
> +
> +int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state
> +*crtc_state) {
> + return crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 :
> +1; }
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.h
> b/drivers/gpu/drm/i915/display/skl_scaler.h
> index 12a19016c5f6..257330d4c329 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.h
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.h
> @@ -45,4 +45,7 @@ skl_scaler_mode_valid(struct intel_display *display, void
> adl_scaler_ecc_mask(const struct intel_crtc_state *crtc_state);
>
> void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state);
> +
> +int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state
> +*crtc_state);
> +
> #endif
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 74ab10a04e83..97b42bbf5642 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -30,6 +30,7 @@
> #include "intel_plane.h"
> #include "intel_wm.h"
> #include "skl_universal_plane_regs.h"
> +#include "skl_scaler.h"
> #include "skl_watermark.h"
> #include "skl_watermark_regs.h"
>
> @@ -2182,8 +2183,7 @@ dsc_prefill_latency(const struct intel_crtc_state
> *crtc_state, int linetime)
> const struct intel_crtc_scaler_state *scaler_state =
> &crtc_state->scaler_state;
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> - int chroma_downscaling_factor =
> - crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
> + int chroma_downscaling_factor =
> +skl_scaler_chroma_downscale_factor(crtc_state);
> u32 dsc_prefill_latency = 0;
>
> if (!crtc_state->dsc.compression_enable || @@ -2223,8 +2223,7 @@
> scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
> if (num_scaler_users > 1) {
> u64 hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> u64 vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> - int chroma_downscaling_factor =
> - crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
> + int chroma_downscaling_factor =
> +skl_scaler_chroma_downscale_factor(crtc_state);
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> int latency;
>
> latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k *
> vscale_k *
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* ✓ i915.CI.Full: success for Optimize vrr.guardband and fix LRR (rev4)
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (12 preceding siblings ...)
2025-08-07 12:22 ` ✓ i915.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev4) Patchwork
@ 2025-08-07 16:31 ` Patchwork
13 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2025-08-07 16:31 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 125745 bytes --]
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev4)
URL : https://patchwork.freedesktop.org/series/151245/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_16965_full -> Patchwork_151245v4_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 13)
------------------------------
Additional (1): shard-dg2-set2
New tests
---------
New tests have been introduced between CI_DRM_16965_full and Patchwork_151245v4_full:
### New IGT tests (3) ###
* igt@kms_cursor_crc@cursor-tearing-position-change@pipe-a-dp-3:
- Statuses : 1 pass(s)
- Exec time: [0.49] s
* igt@kms_cursor_crc@cursor-tearing-position-change@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.56] s
* igt@kms_cursor_crc@cursor-tearing-position-change@pipe-d-dp-3:
- Statuses : 1 pass(s)
- Exec time: [0.40] s
Known issues
------------
Here are the changes found in Patchwork_151245v4_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@device_reset@cold-reset-bound:
- shard-dg2: NOTRUN -> [SKIP][1] ([i915#11078])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@device_reset@cold-reset-bound.html
* igt@gem_ccs@block-multicopy-inplace:
- shard-tglu-1: NOTRUN -> [SKIP][2] ([i915#3555] / [i915#9323])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_ccs@block-multicopy-inplace.html
* igt@gem_ccs@large-ctrl-surf-copy:
- shard-tglu: NOTRUN -> [SKIP][3] ([i915#13008])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@gem_ccs@large-ctrl-surf-copy.html
* igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-lmem0-lmem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][4] ([i915#12392])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-3/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-lmem0-lmem0.html
* igt@gem_close_race@multigpu-basic-threads:
- shard-tglu-1: NOTRUN -> [SKIP][5] ([i915#7697])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_close_race@multigpu-basic-threads.html
* igt@gem_create@create-ext-cpu-access-big:
- shard-tglu-1: NOTRUN -> [SKIP][6] ([i915#6335])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_create@create-ext-cpu-access-big.html
* igt@gem_ctx_persistence@heartbeat-stop:
- shard-dg2: NOTRUN -> [SKIP][7] ([i915#8555])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_ctx_persistence@heartbeat-stop.html
* igt@gem_exec_balancer@bonded-sync:
- shard-dg2: NOTRUN -> [SKIP][8] ([i915#4771])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_exec_balancer@bonded-sync.html
* igt@gem_exec_balancer@bonded-true-hang:
- shard-dg2: NOTRUN -> [SKIP][9] ([i915#4812])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_exec_balancer@bonded-true-hang.html
* igt@gem_exec_balancer@parallel-contexts:
- shard-tglu-1: NOTRUN -> [SKIP][10] ([i915#4525])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_exec_balancer@parallel-contexts.html
* igt@gem_exec_balancer@parallel-keep-in-fence:
- shard-tglu: NOTRUN -> [SKIP][11] ([i915#4525])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@gem_exec_balancer@parallel-keep-in-fence.html
* igt@gem_exec_capture@capture@vecs0-lmem0:
- shard-dg2: NOTRUN -> [FAIL][12] ([i915#11965]) +4 other tests fail
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@gem_exec_capture@capture@vecs0-lmem0.html
* igt@gem_exec_flush@basic-uc-pro-default:
- shard-dg2: NOTRUN -> [SKIP][13] ([i915#3539] / [i915#4852]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@gem_exec_flush@basic-uc-pro-default.html
* igt@gem_exec_flush@basic-uc-set-default:
- shard-dg2: NOTRUN -> [SKIP][14] ([i915#3539]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_exec_flush@basic-uc-set-default.html
* igt@gem_exec_flush@basic-wb-set-default:
- shard-dg2-9: NOTRUN -> [SKIP][15] ([i915#3539] / [i915#4852])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_exec_flush@basic-wb-set-default.html
* igt@gem_exec_reloc@basic-cpu-wc-active:
- shard-dg2-9: NOTRUN -> [SKIP][16] ([i915#3281]) +4 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_exec_reloc@basic-cpu-wc-active.html
* igt@gem_exec_reloc@basic-wc-cpu-active:
- shard-rkl: NOTRUN -> [SKIP][17] ([i915#3281])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_exec_reloc@basic-wc-cpu-active.html
* igt@gem_exec_reloc@basic-write-gtt-active:
- shard-dg2: NOTRUN -> [SKIP][18] ([i915#3281]) +7 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_exec_reloc@basic-write-gtt-active.html
* igt@gem_exec_schedule@preempt-queue-contexts:
- shard-dg2-9: NOTRUN -> [SKIP][19] ([i915#4537] / [i915#4812])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_exec_schedule@preempt-queue-contexts.html
* igt@gem_fence_thrash@bo-write-verify-none:
- shard-dg2-9: NOTRUN -> [SKIP][20] ([i915#4860])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_fence_thrash@bo-write-verify-none.html
* igt@gem_fence_thrash@bo-write-verify-x:
- shard-dg2: NOTRUN -> [SKIP][21] ([i915#4860]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_fence_thrash@bo-write-verify-x.html
* igt@gem_lmem_swapping@parallel-random:
- shard-glk: NOTRUN -> [SKIP][22] ([i915#4613]) +3 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@gem_lmem_swapping@parallel-random.html
* igt@gem_lmem_swapping@parallel-random-verify-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][23] ([i915#4613]) +2 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg2: [PASS][24] -> [TIMEOUT][25] ([i915#5493]) +1 other test timeout
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-3/igt@gem_lmem_swapping@smem-oom@lmem0.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-8/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_lmem_swapping@verify:
- shard-tglu: NOTRUN -> [SKIP][26] ([i915#4613]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@gem_lmem_swapping@verify.html
* igt@gem_mmap_gtt@big-copy:
- shard-dg2-9: NOTRUN -> [SKIP][27] ([i915#4077]) +5 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_mmap_gtt@big-copy.html
* igt@gem_mmap_gtt@cpuset-medium-copy-xy:
- shard-dg2: NOTRUN -> [SKIP][28] ([i915#4077]) +10 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html
* igt@gem_mmap_wc@coherency:
- shard-dg2: NOTRUN -> [SKIP][29] ([i915#4083]) +4 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_mmap_wc@coherency.html
* igt@gem_mmap_wc@fault-concurrent:
- shard-dg2-9: NOTRUN -> [SKIP][30] ([i915#4083]) +4 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_mmap_wc@fault-concurrent.html
* igt@gem_partial_pwrite_pread@reads:
- shard-dg2: NOTRUN -> [SKIP][31] ([i915#3282]) +3 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_partial_pwrite_pread@reads.html
* igt@gem_partial_pwrite_pread@write:
- shard-dg2-9: NOTRUN -> [SKIP][32] ([i915#3282]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_partial_pwrite_pread@write.html
* igt@gem_pread@exhaustion:
- shard-glk: NOTRUN -> [WARN][33] ([i915#2658])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@gem_pread@exhaustion.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk: NOTRUN -> [WARN][34] ([i915#14702] / [i915#2658])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk1/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pwrite_snooped:
- shard-rkl: NOTRUN -> [SKIP][35] ([i915#3282])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@gem_pwrite_snooped.html
* igt@gem_pxp@create-valid-protected-context:
- shard-rkl: [PASS][36] -> [TIMEOUT][37] ([i915#12964])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_pxp@create-valid-protected-context.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-7/igt@gem_pxp@create-valid-protected-context.html
* igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
- shard-dg2: NOTRUN -> [SKIP][38] ([i915#4270]) +2 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
- shard-rkl: [PASS][39] -> [SKIP][40] ([i915#14544] / [i915#4270])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
* igt@gem_pxp@regular-baseline-src-copy-readible:
- shard-dg2-9: NOTRUN -> [SKIP][41] ([i915#4270]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_pxp@regular-baseline-src-copy-readible.html
* igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
- shard-glk: NOTRUN -> [SKIP][42] +245 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html
* igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs:
- shard-dg2-9: NOTRUN -> [SKIP][43] ([i915#5190] / [i915#8428]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs.html
* igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled:
- shard-dg2: NOTRUN -> [SKIP][44] ([i915#5190] / [i915#8428]) +5 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled.html
* igt@gem_tiled_pread_pwrite:
- shard-dg2: NOTRUN -> [SKIP][45] ([i915#4079]) +1 other test skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_tiled_pread_pwrite.html
* igt@gem_userptr_blits@coherency-sync:
- shard-dg2: NOTRUN -> [SKIP][46] ([i915#3297]) +3 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@gem_userptr_blits@coherency-sync.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-tglu-1: NOTRUN -> [SKIP][47] ([i915#3297])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-tglu: NOTRUN -> [SKIP][48] ([i915#3297] / [i915#3323])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@invalid-mmap-offset-unsync:
- shard-tglu: NOTRUN -> [SKIP][49] ([i915#3297]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
- shard-dg2-9: NOTRUN -> [SKIP][50] ([i915#3297]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg2: NOTRUN -> [SKIP][51] ([i915#3297] / [i915#4880])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg2-9: NOTRUN -> [SKIP][52] ([i915#3297] / [i915#4958])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gem_userptr_blits@sd-probe.html
* igt@gem_workarounds@suspend-resume:
- shard-rkl: [PASS][53] -> [INCOMPLETE][54] ([i915#13356])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-4/igt@gem_workarounds@suspend-resume.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@gem_workarounds@suspend-resume.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-glk11: NOTRUN -> [INCOMPLETE][55] ([i915#13356] / [i915#14586]) +1 other test incomplete
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk11/igt@gem_workarounds@suspend-resume-fd.html
* igt@gen9_exec_parse@bb-start-cmd:
- shard-tglu: NOTRUN -> [SKIP][56] ([i915#2527] / [i915#2856])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@gen9_exec_parse@bb-start-cmd.html
- shard-dg2-9: NOTRUN -> [SKIP][57] ([i915#2856]) +2 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@gen9_exec_parse@bb-start-cmd.html
* igt@gen9_exec_parse@bb-start-far:
- shard-dg2: NOTRUN -> [SKIP][58] ([i915#2856]) +3 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@gen9_exec_parse@bb-start-far.html
* igt@gen9_exec_parse@unaligned-jump:
- shard-tglu-1: NOTRUN -> [SKIP][59] ([i915#2527] / [i915#2856]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@gen9_exec_parse@unaligned-jump.html
* igt@gen9_exec_parse@valid-registers:
- shard-rkl: NOTRUN -> [SKIP][60] ([i915#2527])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@gen9_exec_parse@valid-registers.html
* igt@i915_drm_fdinfo@busy@vecs1:
- shard-dg2: NOTRUN -> [SKIP][61] ([i915#14073]) +7 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@i915_drm_fdinfo@busy@vecs1.html
* igt@i915_drm_fdinfo@virtual-busy:
- shard-dg2-9: NOTRUN -> [SKIP][62] ([i915#14118])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@i915_drm_fdinfo@virtual-busy.html
* igt@i915_module_load@resize-bar:
- shard-dg2: NOTRUN -> [DMESG-WARN][63] ([i915#14545])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@i915_module_load@resize-bar.html
* igt@i915_pm_freq_api@freq-reset-multiple:
- shard-tglu: NOTRUN -> [SKIP][64] ([i915#8399])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@i915_pm_freq_api@freq-reset-multiple.html
* igt@i915_pm_freq_mult@media-freq@gt0:
- shard-tglu-1: NOTRUN -> [SKIP][65] ([i915#6590]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@i915_pm_freq_mult@media-freq@gt0.html
* igt@i915_pm_rps@min-max-config-idle:
- shard-dg2: NOTRUN -> [SKIP][66] ([i915#11681] / [i915#6621])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@i915_pm_rps@min-max-config-idle.html
* igt@i915_query@hwconfig_table:
- shard-tglu-1: NOTRUN -> [SKIP][67] ([i915#6245])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@i915_query@hwconfig_table.html
* igt@i915_query@test-query-geometry-subslices:
- shard-tglu: NOTRUN -> [SKIP][68] ([i915#5723])
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@i915_query@test-query-geometry-subslices.html
* igt@i915_suspend@basic-s2idle-without-i915:
- shard-dg2: [PASS][69] -> [ABORT][70] ([i915#8213])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-7/igt@i915_suspend@basic-s2idle-without-i915.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-10/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@i915_suspend@debugfs-reader:
- shard-glk: NOTRUN -> [INCOMPLETE][71] ([i915#4817])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk3/igt@i915_suspend@debugfs-reader.html
* igt@i915_suspend@fence-restore-untiled:
- shard-rkl: [PASS][72] -> [INCOMPLETE][73] ([i915#4817])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-4/igt@i915_suspend@fence-restore-untiled.html
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@i915_suspend@fence-restore-untiled.html
* igt@i915_suspend@forcewake:
- shard-glk10: NOTRUN -> [INCOMPLETE][74] ([i915#4817])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk10/igt@i915_suspend@forcewake.html
* igt@intel_hwmon@hwmon-read:
- shard-tglu-1: NOTRUN -> [SKIP][75] ([i915#7707])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@intel_hwmon@hwmon-read.html
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- shard-dg2: NOTRUN -> [SKIP][76] ([i915#4212]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-1:
- shard-glk: [PASS][77] -> [FAIL][78] ([i915#12518])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-glk5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-1.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk2/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-1.html
* igt@kms_async_flips@async-flip-suspend-resume:
- shard-glk: NOTRUN -> [INCOMPLETE][79] ([i915#12761]) +1 other test incomplete
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@kms_async_flips@async-flip-suspend-resume.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-glk: NOTRUN -> [SKIP][80] ([i915#1769])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-tglu: NOTRUN -> [SKIP][81] ([i915#5286]) +3 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#5286]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-270:
- shard-dg2-9: NOTRUN -> [SKIP][83] +2 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-tglu-1: NOTRUN -> [SKIP][84] ([i915#5286]) +4 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@y-tiled-32bpp-rotate-90:
- shard-dg2-9: NOTRUN -> [SKIP][85] ([i915#4538] / [i915#5190]) +3 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_big_fb@y-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-90:
- shard-dg2: NOTRUN -> [SKIP][86] ([i915#4538] / [i915#5190]) +12 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-addfb:
- shard-dg2: NOTRUN -> [SKIP][87] ([i915#5190])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_big_fb@yf-tiled-addfb.html
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][88] ([i915#6095]) +84 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-18/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][89] ([i915#6095]) +26 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
- shard-dg2: NOTRUN -> [SKIP][90] ([i915#12313]) +2 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-tglu: NOTRUN -> [SKIP][91] ([i915#12313]) +1 other test skip
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][92] ([i915#12805])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-dg2: NOTRUN -> [SKIP][93] ([i915#12805])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2:
- shard-dg2-9: NOTRUN -> [SKIP][94] ([i915#6095]) +4 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [INCOMPLETE][95] ([i915#12796])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][96] ([i915#6095]) +13 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][97] ([i915#10307] / [i915#6095]) +166 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-dg2-9: NOTRUN -> [SKIP][98] ([i915#10307] / [i915#6095]) +14 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][99] ([i915#6095]) +59 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
- shard-dg2-9: NOTRUN -> [SKIP][100] ([i915#12313]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][101] ([i915#14098] / [i915#6095]) +25 other tests skip
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs:
- shard-tglu: NOTRUN -> [SKIP][102] ([i915#6095]) +29 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-dg2-9: NOTRUN -> [SKIP][103] ([i915#13784])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][104] ([i915#13781]) +3 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2.html
* igt@kms_chamelium_color@degamma:
- shard-dg2: NOTRUN -> [SKIP][105] +10 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_edid@dp-mode-timings:
- shard-dg1: NOTRUN -> [SKIP][106] ([i915#11151] / [i915#7828])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-14/igt@kms_chamelium_edid@dp-mode-timings.html
* igt@kms_chamelium_frames@dp-frame-dump:
- shard-rkl: NOTRUN -> [SKIP][107] ([i915#11151] / [i915#7828]) +1 other test skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_chamelium_frames@dp-frame-dump.html
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-dg2: NOTRUN -> [SKIP][108] ([i915#11151] / [i915#7828]) +8 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
* igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
- shard-dg2-9: NOTRUN -> [SKIP][109] ([i915#11151] / [i915#7828]) +3 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html
* igt@kms_chamelium_hpd@dp-hpd-storm:
- shard-tglu-1: NOTRUN -> [SKIP][110] ([i915#11151] / [i915#7828]) +4 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_chamelium_hpd@dp-hpd-storm.html
* igt@kms_chamelium_hpd@vga-hpd-fast:
- shard-tglu: NOTRUN -> [SKIP][111] ([i915#11151] / [i915#7828]) +2 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_chamelium_hpd@vga-hpd-fast.html
* igt@kms_color@ctm-blue-to-red:
- shard-rkl: [PASS][112] -> [SKIP][113] ([i915#12655] / [i915#14544])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_color@ctm-blue-to-red.html
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_color@ctm-blue-to-red.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg2: NOTRUN -> [SKIP][114] ([i915#7118] / [i915#9424])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2: NOTRUN -> [SKIP][115] ([i915#3299]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@legacy:
- shard-tglu-1: NOTRUN -> [SKIP][116] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@srm:
- shard-tglu-1: NOTRUN -> [SKIP][117] ([i915#6944] / [i915#7116] / [i915#7118])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_content_protection@srm.html
* igt@kms_content_protection@uevent@pipe-a-dp-3:
- shard-dg2: NOTRUN -> [FAIL][118] ([i915#1339] / [i915#7173])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-10/igt@kms_content_protection@uevent@pipe-a-dp-3.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-tglu-1: NOTRUN -> [SKIP][119] ([i915#13049]) +3 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-128x42@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [FAIL][120] ([i915#13566]) +1 other test fail
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_cursor_crc@cursor-onscreen-128x42@pipe-a-hdmi-a-2.html
* igt@kms_cursor_crc@cursor-onscreen-256x85:
- shard-tglu: NOTRUN -> [FAIL][121] ([i915#13566]) +1 other test fail
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_cursor_crc@cursor-onscreen-256x85.html
* igt@kms_cursor_crc@cursor-random-128x128@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [DMESG-WARN][122] ([i915#12964]) +7 other tests dmesg-warn
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_cursor_crc@cursor-random-128x128@pipe-a-hdmi-a-1.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: NOTRUN -> [SKIP][123] ([i915#13049]) +1 other test skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-sliding-32x32:
- shard-tglu-1: NOTRUN -> [SKIP][124] ([i915#3555]) +1 other test skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-32x32.html
* igt@kms_cursor_edge_walk@256x256-top-edge:
- shard-rkl: [PASS][125] -> [DMESG-WARN][126] ([i915#12964]) +8 other tests dmesg-warn
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_cursor_edge_walk@256x256-top-edge.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-7/igt@kms_cursor_edge_walk@256x256-top-edge.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-dg2-9: NOTRUN -> [SKIP][127] ([i915#13046] / [i915#5354]) +2 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-tglu: NOTRUN -> [SKIP][128] ([i915#4103])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- shard-rkl: [PASS][129] -> [SKIP][130] ([i915#11190] / [i915#14544]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
- shard-dg2: NOTRUN -> [SKIP][131] ([i915#13046] / [i915#5354]) +2 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-rkl: [PASS][132] -> [FAIL][133] ([i915#2346])
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-dg2: NOTRUN -> [SKIP][134] ([i915#4103] / [i915#4213])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-tglu-1: NOTRUN -> [SKIP][135] ([i915#4103])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-tglu: NOTRUN -> [SKIP][136] ([i915#9723])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_display_modes@extended-mode-basic:
- shard-dg2: NOTRUN -> [SKIP][137] ([i915#13691])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc:
- shard-dg2: [PASS][138] -> [SKIP][139] ([i915#3555])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-tglu-1: NOTRUN -> [SKIP][140] ([i915#13749]) +1 other test skip
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dp_link_training@uhbr-sst:
- shard-dg2: NOTRUN -> [SKIP][141] ([i915#13748])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_dp_link_training@uhbr-sst.html
* igt@kms_dsc@dsc-basic:
- shard-rkl: NOTRUN -> [SKIP][142] ([i915#3555] / [i915#3840])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-dg2: NOTRUN -> [SKIP][143] ([i915#3840] / [i915#9688])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-dg2: NOTRUN -> [SKIP][144] ([i915#3840])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_feature_discovery@chamelium:
- shard-tglu: NOTRUN -> [SKIP][145] ([i915#2065] / [i915#4854])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_feature_discovery@chamelium.html
- shard-dg2-9: NOTRUN -> [SKIP][146] ([i915#4854])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@dp-mst:
- shard-dg2: NOTRUN -> [SKIP][147] ([i915#9337])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_feature_discovery@dp-mst.html
* igt@kms_feature_discovery@psr1:
- shard-dg2: NOTRUN -> [SKIP][148] ([i915#658])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_feature_discovery@psr1.html
* igt@kms_fence_pin_leak:
- shard-dg2-9: NOTRUN -> [SKIP][149] ([i915#4881])
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_fence_pin_leak.html
* igt@kms_flip@2x-absolute-wf_vblank:
- shard-dg2: NOTRUN -> [SKIP][150] ([i915#9934]) +6 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_flip@2x-absolute-wf_vblank.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible:
- shard-rkl: NOTRUN -> [SKIP][151] ([i915#9934])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-dpms-vs-vblank-race:
- shard-dg2-9: NOTRUN -> [SKIP][152] ([i915#9934]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_flip@2x-dpms-vs-vblank-race.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop:
- shard-tglu-1: NOTRUN -> [SKIP][153] ([i915#9934])
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
* igt@kms_flip@2x-flip-vs-suspend-interruptible:
- shard-snb: [PASS][154] -> [TIMEOUT][155] ([i915#14033] / [i915#14350])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
* igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1:
- shard-snb: [PASS][156] -> [TIMEOUT][157] ([i915#14033])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
* igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-tglu-1: NOTRUN -> [SKIP][158] ([i915#3637] / [i915#9934]) +3 other tests skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_flip@2x-modeset-vs-vblank-race.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-tglu: NOTRUN -> [SKIP][159] ([i915#3637] / [i915#9934]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@dpms-off-confusion-interruptible:
- shard-rkl: [PASS][160] -> [SKIP][161] ([i915#14544] / [i915#3637]) +2 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_flip@dpms-off-confusion-interruptible.html
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_flip@dpms-off-confusion-interruptible.html
* igt@kms_flip@flip-vs-fences-interruptible:
- shard-dg2-9: NOTRUN -> [SKIP][162] ([i915#8381]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_flip@flip-vs-fences-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode:
- shard-dg2-9: NOTRUN -> [SKIP][163] ([i915#2672]) +1 other test skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
- shard-dg2-9: NOTRUN -> [SKIP][164] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-dg2: NOTRUN -> [SKIP][165] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
- shard-tglu-1: NOTRUN -> [SKIP][166] ([i915#2672] / [i915#3555]) +2 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-tglu-1: NOTRUN -> [SKIP][167] ([i915#2587] / [i915#2672]) +2 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][168] ([i915#2587] / [i915#2672]) +1 other test skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-tglu: NOTRUN -> [SKIP][169] ([i915#2672] / [i915#3555]) +1 other test skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-dg2: NOTRUN -> [SKIP][170] ([i915#2672] / [i915#3555]) +1 other test skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][171] ([i915#2672]) +3 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][172] ([i915#8708]) +19 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt:
- shard-glk11: NOTRUN -> [SKIP][173] +120 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk11/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
- shard-dg2: NOTRUN -> [SKIP][174] ([i915#5354]) +37 other tests skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move:
- shard-tglu: NOTRUN -> [SKIP][175] +40 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render:
- shard-rkl: NOTRUN -> [SKIP][176] ([i915#1825]) +1 other test skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
- shard-rkl: [PASS][177] -> [SKIP][178] ([i915#14544] / [i915#1849] / [i915#5354]) +11 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render:
- shard-glk10: NOTRUN -> [SKIP][179] +137 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk10/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt:
- shard-dg2-9: NOTRUN -> [SKIP][180] ([i915#8708]) +5 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render:
- shard-tglu-1: NOTRUN -> [SKIP][181] +69 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@pipe-fbc-rte:
- shard-dg2-9: NOTRUN -> [SKIP][182] ([i915#9766])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][183] ([i915#3023])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-cpu:
- shard-dg2-9: NOTRUN -> [SKIP][184] ([i915#5354]) +16 other tests skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
- shard-dg2: NOTRUN -> [SKIP][185] ([i915#3458]) +21 other tests skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@psr-slowdraw:
- shard-dg2-9: NOTRUN -> [SKIP][186] ([i915#3458]) +5 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_frontbuffer_tracking@psr-slowdraw.html
* igt@kms_hdr@bpc-switch:
- shard-tglu: NOTRUN -> [SKIP][187] ([i915#3555] / [i915#8228])
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_hdr@bpc-switch.html
- shard-dg2-9: NOTRUN -> [SKIP][188] ([i915#3555] / [i915#8228])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_hdr@bpc-switch.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-tglu-1: NOTRUN -> [SKIP][189] ([i915#3555] / [i915#8228]) +1 other test skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@static-toggle-dpms:
- shard-dg2: NOTRUN -> [SKIP][190] ([i915#3555] / [i915#8228]) +2 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_hdr@static-toggle-suspend:
- shard-dg2: [PASS][191] -> [SKIP][192] ([i915#3555] / [i915#8228])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-11/igt@kms_hdr@static-toggle-suspend.html
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-8/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-tglu: NOTRUN -> [SKIP][193] ([i915#12394])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_joiner@basic-force-ultra-joiner.html
- shard-dg2-9: NOTRUN -> [SKIP][194] ([i915#10656]) +1 other test skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_joiner@basic-max-non-joiner:
- shard-dg2: NOTRUN -> [SKIP][195] ([i915#13688])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_joiner@basic-max-non-joiner.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-tglu: NOTRUN -> [SKIP][196] ([i915#10656])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- shard-dg2: NOTRUN -> [SKIP][197] ([i915#12388])
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_joiner@invalid-modeset-force-big-joiner.html
- shard-tglu-1: NOTRUN -> [SKIP][198] ([i915#12388]) +1 other test skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_joiner@invalid-modeset-force-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2: NOTRUN -> [SKIP][199] ([i915#4816])
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_panel_fitting@legacy:
- shard-dg2: NOTRUN -> [SKIP][200] ([i915#6301])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_panel_fitting@legacy.html
* igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes:
- shard-rkl: NOTRUN -> [SKIP][201] +4 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes.html
* igt@kms_pipe_crc_basic@read-crc:
- shard-glk10: NOTRUN -> [SKIP][202] ([i915#11190])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk10/igt@kms_pipe_crc_basic@read-crc.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb:
- shard-rkl: [PASS][203] -> [SKIP][204] ([i915#14544] / [i915#7294])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_alpha_blend@alpha-opaque-fb.html
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_alpha_blend@alpha-opaque-fb.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-dg2: NOTRUN -> [SKIP][205] ([i915#13958]) +1 other test skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_plane_multiple@tiling-y:
- shard-rkl: [PASS][206] -> [SKIP][207] ([i915#14544]) +32 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_plane_multiple@tiling-y.html
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers:
- shard-rkl: [PASS][208] -> [SKIP][209] ([i915#14544] / [i915#8152]) +1 other test skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-c:
- shard-rkl: NOTRUN -> [SKIP][210] ([i915#12247])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-c.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b:
- shard-dg1: NOTRUN -> [SKIP][211] ([i915#12247]) +4 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-14/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5:
- shard-rkl: [PASS][212] -> [SKIP][213] ([i915#12247] / [i915#14544] / [i915#6953] / [i915#8152])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-5.html
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a:
- shard-rkl: [PASS][214] -> [SKIP][215] ([i915#12247] / [i915#14544]) +4 other tests skip
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a.html
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25:
- shard-rkl: [PASS][216] -> [SKIP][217] ([i915#14544] / [i915#6953] / [i915#8152])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25:
- shard-rkl: [PASS][218] -> [SKIP][219] ([i915#14544] / [i915#3555] / [i915#6953] / [i915#8152])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_scaling@planes-upscale-factor-0-25.html
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@planes-upscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-b:
- shard-rkl: [PASS][220] -> [SKIP][221] ([i915#12247] / [i915#14544] / [i915#8152]) +4 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-b.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-b.html
* igt@kms_pm_backlight@basic-brightness:
- shard-tglu-1: NOTRUN -> [SKIP][222] ([i915#9812])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_dc@dc5-psr:
- shard-dg2: NOTRUN -> [SKIP][223] ([i915#9685])
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_pm_dc@dc5-psr.html
- shard-tglu-1: NOTRUN -> [SKIP][224] ([i915#9685])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg2: NOTRUN -> [SKIP][225] ([i915#9340])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-dg2: [PASS][226] -> [SKIP][227] ([i915#9519])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp.html
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-11/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg2: NOTRUN -> [SKIP][228] ([i915#9519])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [PASS][229] -> [SKIP][230] ([i915#9519])
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-7/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_prime@basic-crc-hybrid:
- shard-tglu: NOTRUN -> [SKIP][231] ([i915#6524])
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_prime@d3hot:
- shard-dg2-9: NOTRUN -> [SKIP][232] ([i915#6524] / [i915#6805])
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_prime@d3hot.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
- shard-dg1: NOTRUN -> [SKIP][233] ([i915#11520])
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-14/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf:
- shard-glk: NOTRUN -> [SKIP][234] ([i915#11520]) +7 other tests skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
- shard-dg2-9: NOTRUN -> [SKIP][235] ([i915#11520]) +3 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
- shard-glk11: NOTRUN -> [SKIP][236] ([i915#11520]) +4 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk11/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf:
- shard-glk10: NOTRUN -> [SKIP][237] ([i915#11520]) +2 other tests skip
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk10/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
- shard-dg2: NOTRUN -> [SKIP][238] ([i915#11520]) +9 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf:
- shard-rkl: NOTRUN -> [SKIP][239] ([i915#11520])
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
- shard-tglu: NOTRUN -> [SKIP][240] ([i915#11520]) +3 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area:
- shard-tglu-1: NOTRUN -> [SKIP][241] ([i915#11520]) +5 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr2-basic:
- shard-tglu-1: NOTRUN -> [SKIP][242] ([i915#9732]) +16 other tests skip
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_psr@fbc-psr2-basic.html
* igt@kms_psr@fbc-psr2-cursor-render:
- shard-dg2-9: NOTRUN -> [SKIP][243] ([i915#1072] / [i915#9732]) +9 other tests skip
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_psr@fbc-psr2-cursor-render.html
* igt@kms_psr@pr-cursor-render:
- shard-rkl: NOTRUN -> [SKIP][244] ([i915#1072] / [i915#9732]) +1 other test skip
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_psr@pr-cursor-render.html
* igt@kms_psr@psr-cursor-render:
- shard-dg2: NOTRUN -> [SKIP][245] ([i915#1072] / [i915#9732]) +24 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_psr@psr-cursor-render.html
* igt@kms_psr@psr2-sprite-mmap-gtt:
- shard-tglu: NOTRUN -> [SKIP][246] ([i915#9732]) +9 other tests skip
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-7/igt@kms_psr@psr2-sprite-mmap-gtt.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
- shard-dg2-9: NOTRUN -> [SKIP][247] ([i915#5190]) +2 other tests skip
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-dg2: NOTRUN -> [SKIP][248] ([i915#12755] / [i915#5190])
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
- shard-tglu-1: NOTRUN -> [SKIP][249] ([i915#5289]) +1 other test skip
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-dg2: NOTRUN -> [SKIP][250] ([i915#12755]) +2 other tests skip
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@kms_rotation_crc@sprite-rotation-270.html
* igt@kms_scaling_modes@scaling-mode-none:
- shard-dg2-9: NOTRUN -> [SKIP][251] ([i915#3555])
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-9/igt@kms_scaling_modes@scaling-mode-none.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-tglu: NOTRUN -> [SKIP][252] ([i915#3555]) +1 other test skip
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2: NOTRUN -> [SKIP][253] ([i915#8623])
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-tglu: NOTRUN -> [SKIP][254] ([i915#8623])
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1:
- shard-mtlp: [PASS][255] -> [FAIL][256] ([i915#9196]) +1 other test fail
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-mtlp-6/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-2/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
* igt@kms_vblank@ts-continuation-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][257] ([i915#12276]) +1 other test incomplete
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@kms_vblank@ts-continuation-suspend.html
* igt@kms_vrr@flip-basic:
- shard-dg2: NOTRUN -> [SKIP][258] ([i915#3555]) +5 other tests skip
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_vrr@flip-basic.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-tglu-1: NOTRUN -> [SKIP][259] ([i915#9906])
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@kms_writeback@writeback-fb-id-xrgb2101010:
- shard-tglu-1: NOTRUN -> [SKIP][260] ([i915#2437] / [i915#9412])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-glk: NOTRUN -> [SKIP][261] ([i915#2437])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk6/igt@kms_writeback@writeback-pixel-formats.html
* igt@perf@global-sseu-config:
- shard-dg2: NOTRUN -> [SKIP][262] ([i915#7387])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-5/igt@perf@global-sseu-config.html
* igt@perf@mi-rpc:
- shard-dg2: NOTRUN -> [SKIP][263] ([i915#2434])
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@perf@mi-rpc.html
* igt@perf@non-zero-reason@0-rcs0:
- shard-dg2: NOTRUN -> [FAIL][264] ([i915#9100]) +1 other test fail
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@perf@non-zero-reason@0-rcs0.html
* igt@perf@polling@0-rcs0:
- shard-mtlp: [PASS][265] -> [FAIL][266] ([i915#10538]) +1 other test fail
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-mtlp-4/igt@perf@polling@0-rcs0.html
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-6/igt@perf@polling@0-rcs0.html
* igt@perf_pmu@module-unload:
- shard-glk: NOTRUN -> [FAIL][267] ([i915#14433])
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk1/igt@perf_pmu@module-unload.html
* igt@perf_pmu@most-busy-idle-check-all:
- shard-rkl: [PASS][268] -> [FAIL][269] ([i915#4349]) +1 other test fail
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-5/igt@perf_pmu@most-busy-idle-check-all.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-5/igt@perf_pmu@most-busy-idle-check-all.html
* igt@perf_pmu@rc6-all-gts:
- shard-tglu-1: NOTRUN -> [SKIP][270] ([i915#8516])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-1/igt@perf_pmu@rc6-all-gts.html
* igt@perf_pmu@rc6-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][271] ([i915#13356] / [i915#14242])
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk2/igt@perf_pmu@rc6-suspend.html
* igt@perf_pmu@rc6@other-idle-gt0:
- shard-dg2: NOTRUN -> [SKIP][272] ([i915#8516])
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@perf_pmu@rc6@other-idle-gt0.html
* igt@prime_vgem@basic-read:
- shard-rkl: NOTRUN -> [SKIP][273] ([i915#3291] / [i915#3708])
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@prime_vgem@basic-read.html
* igt@prime_vgem@coherency-gtt:
- shard-dg2: NOTRUN -> [SKIP][274] ([i915#3708] / [i915#4077]) +1 other test skip
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@prime_vgem@coherency-gtt.html
* igt@runner@aborted:
- shard-mtlp: NOTRUN -> ([FAIL][275], [FAIL][276]) ([i915#14489])
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-3/igt@runner@aborted.html
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-3/igt@runner@aborted.html
* igt@sriov_basic@enable-vfs-autoprobe-on:
- shard-tglu: NOTRUN -> [FAIL][277] ([i915#12910]) +9 other tests fail
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-tglu-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
* igt@tools_test@sysfs_l3_parity:
- shard-dg2: NOTRUN -> [SKIP][278] ([i915#4818])
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-7/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@gem_caching@writes:
- shard-rkl: [DMESG-WARN][279] ([i915#12917] / [i915#12964]) -> [PASS][280]
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@gem_caching@writes.html
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_caching@writes.html
* igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0:
- shard-dg2: [INCOMPLETE][281] ([i915#12392] / [i915#13356]) -> [PASS][282]
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-7/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-3/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
* igt@gem_eio@unwedge-stress:
- shard-dg1: [FAIL][283] ([i915#5784]) -> [PASS][284]
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg1-16/igt@gem_eio@unwedge-stress.html
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-13/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_schedule@preemptive-hang:
- shard-rkl: [DMESG-WARN][285] ([i915#12964]) -> [PASS][286] +15 other tests pass
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-7/igt@gem_exec_schedule@preemptive-hang.html
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@gem_exec_schedule@preemptive-hang.html
* igt@gem_exec_suspend@basic-s0:
- shard-dg2: [INCOMPLETE][287] ([i915#11441] / [i915#13304]) -> [PASS][288]
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-3/igt@gem_exec_suspend@basic-s0.html
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_exec_suspend@basic-s0.html
* igt@gem_exec_suspend@basic-s0@lmem0:
- shard-dg2: [INCOMPLETE][289] ([i915#11441]) -> [PASS][290]
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-3/igt@gem_exec_suspend@basic-s0@lmem0.html
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@gem_exec_suspend@basic-s0@lmem0.html
* igt@gem_exec_suspend@basic-s3:
- shard-rkl: [INCOMPLETE][291] ([i915#13304]) -> [PASS][292] +1 other test pass
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@gem_exec_suspend@basic-s3.html
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_exec_suspend@basic-s3.html
* igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
- shard-rkl: [SKIP][293] ([i915#4270]) -> [PASS][294]
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-7/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html
* igt@i915_module_load@reload-no-display:
- shard-dg1: [DMESG-WARN][295] ([i915#13029] / [i915#14545]) -> [PASS][296]
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg1-15/igt@i915_module_load@reload-no-display.html
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-17/igt@i915_module_load@reload-no-display.html
* igt@i915_suspend@debugfs-reader:
- shard-dg2: [ABORT][297] ([i915#8213]) -> [PASS][298]
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-10/igt@i915_suspend@debugfs-reader.html
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-2/igt@i915_suspend@debugfs-reader.html
* igt@i915_suspend@fence-restore-tiled2untiled:
- shard-rkl: [INCOMPLETE][299] ([i915#4817]) -> [PASS][300]
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@i915_suspend@fence-restore-tiled2untiled.html
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@i915_suspend@fence-restore-tiled2untiled.html
* igt@i915_suspend@sysfs-reader:
- shard-glk: [INCOMPLETE][301] ([i915#4817]) -> [PASS][302]
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-glk5/igt@i915_suspend@sysfs-reader.html
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk1/igt@i915_suspend@sysfs-reader.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-hdmi-a-1:
- shard-glk: [FAIL][303] ([i915#10991]) -> [PASS][304]
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-glk5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-hdmi-a-1.html
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk2/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-hdmi-a-1.html
* igt@kms_async_flips@async-flip-suspend-resume:
- shard-dg1: [DMESG-WARN][305] ([i915#4423]) -> [PASS][306] +1 other test pass
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg1-12/igt@kms_async_flips@async-flip-suspend-resume.html
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-18/igt@kms_async_flips@async-flip-suspend-resume.html
* igt@kms_color@ctm-signed:
- shard-rkl: [SKIP][307] ([i915#12655] / [i915#14544]) -> [PASS][308]
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_color@ctm-signed.html
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_color@ctm-signed.html
* igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1:
- shard-rkl: [FAIL][309] ([i915#13566]) -> [PASS][310] +1 other test pass
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-2/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1.html
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-4/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1.html
* igt@kms_cursor_edge_walk@64x64-left-edge:
- shard-rkl: [SKIP][311] ([i915#14544]) -> [PASS][312] +16 other tests pass
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_cursor_edge_walk@64x64-left-edge.html
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_cursor_edge_walk@64x64-left-edge.html
* igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1:
- shard-rkl: [FAIL][313] ([i915#10826]) -> [PASS][314] +1 other test pass
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-2/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1.html
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-4/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1.html
* igt@kms_flip@plain-flip-ts-check:
- shard-rkl: [SKIP][315] ([i915#14544] / [i915#3637]) -> [PASS][316]
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_flip@plain-flip-ts-check.html
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_flip@plain-flip-ts-check.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
- shard-rkl: [SKIP][317] ([i915#14544] / [i915#3555]) -> [PASS][318]
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite:
- shard-rkl: [SKIP][319] ([i915#14544] / [i915#1849] / [i915#5354]) -> [PASS][320] +1 other test pass
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: [SKIP][321] ([i915#3555] / [i915#8228]) -> [PASS][322]
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-8/igt@kms_hdr@invalid-metadata-sizes.html
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-11/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_invalid_mode@uint-max-clock:
- shard-rkl: [SKIP][323] ([i915#14544] / [i915#3555] / [i915#8826]) -> [PASS][324]
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_invalid_mode@uint-max-clock.html
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_invalid_mode@uint-max-clock.html
* igt@kms_plane@planar-pixel-format-settings:
- shard-rkl: [SKIP][325] ([i915#14544] / [i915#9581]) -> [PASS][326]
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_plane@planar-pixel-format-settings.html
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_plane@planar-pixel-format-settings.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers:
- shard-rkl: [SKIP][327] ([i915#14544] / [i915#8152]) -> [PASS][328]
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers.html
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-a:
- shard-rkl: [SKIP][329] ([i915#12247] / [i915#14544]) -> [PASS][330]
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-a.html
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-a.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b:
- shard-rkl: [SKIP][331] ([i915#12247] / [i915#14544] / [i915#8152]) -> [PASS][332]
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b.html
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-rkl: [SKIP][333] ([i915#9519]) -> [PASS][334] +1 other test pass
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-7/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-rkl: [SKIP][335] ([i915#12916]) -> [PASS][336]
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-7/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@prime_vgem@basic-fence-flip:
- shard-rkl: [SKIP][337] ([i915#14544] / [i915#3708]) -> [PASS][338]
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@prime_vgem@basic-fence-flip.html
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@prime_vgem@basic-fence-flip.html
#### Warnings ####
* igt@api_intel_bb@blit-reloc-purge-cache:
- shard-rkl: [SKIP][339] ([i915#8411]) -> [SKIP][340] ([i915#14544] / [i915#8411])
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@api_intel_bb@blit-reloc-purge-cache.html
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@api_intel_bb@blit-reloc-purge-cache.html
* igt@device_reset@cold-reset-bound:
- shard-rkl: [SKIP][341] ([i915#11078]) -> [SKIP][342] ([i915#11078] / [i915#14544])
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@device_reset@cold-reset-bound.html
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@device_reset@cold-reset-bound.html
* igt@gem_create@create-ext-cpu-access-sanity-check:
- shard-rkl: [SKIP][343] ([i915#6335]) -> [SKIP][344] ([i915#14544] / [i915#6335])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_create@create-ext-cpu-access-sanity-check.html
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_create@create-ext-cpu-access-sanity-check.html
* igt@gem_create@create-ext-set-pat:
- shard-rkl: [SKIP][345] ([i915#14544] / [i915#8562]) -> [SKIP][346] ([i915#8562])
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@gem_create@create-ext-set-pat.html
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_create@create-ext-set-pat.html
* igt@gem_exec_params@secure-non-master:
- shard-rkl: [SKIP][347] -> [SKIP][348] ([i915#14544]) +8 other tests skip
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@gem_exec_params@secure-non-master.html
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_exec_params@secure-non-master.html
* igt@gem_exec_reloc@basic-wc:
- shard-rkl: [SKIP][349] ([i915#3281]) -> [SKIP][350] ([i915#14544] / [i915#3281]) +6 other tests skip
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_exec_reloc@basic-wc.html
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_exec_reloc@basic-wc.html
* igt@gem_exec_reloc@basic-wc-cpu:
- shard-rkl: [SKIP][351] ([i915#14544] / [i915#3281]) -> [SKIP][352] ([i915#3281]) +1 other test skip
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@gem_exec_reloc@basic-wc-cpu.html
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_exec_reloc@basic-wc-cpu.html
* igt@gem_exec_schedule@in-order@vcs0:
- shard-mtlp: [DMESG-WARN][353] ([i915#13562]) -> [ABORT][354] ([i915#13562])
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-mtlp-5/igt@gem_exec_schedule@in-order@vcs0.html
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-4/igt@gem_exec_schedule@in-order@vcs0.html
* igt@gem_exec_schedule@semaphore-power:
- shard-rkl: [SKIP][355] ([i915#7276]) -> [SKIP][356] ([i915#14544] / [i915#7276])
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@gem_exec_schedule@semaphore-power.html
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_exec_schedule@semaphore-power.html
* igt@gem_lmem_evict@dontneed-evict-race:
- shard-rkl: [SKIP][357] ([i915#14544] / [i915#4613] / [i915#7582]) -> [SKIP][358] ([i915#4613] / [i915#7582])
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@gem_lmem_evict@dontneed-evict-race.html
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_lmem_evict@dontneed-evict-race.html
* igt@gem_lmem_swapping@random-engines:
- shard-rkl: [SKIP][359] ([i915#4613]) -> [SKIP][360] ([i915#14544] / [i915#4613]) +1 other test skip
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_lmem_swapping@random-engines.html
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_lmem_swapping@random-engines.html
* igt@gem_partial_pwrite_pread@writes-after-reads:
- shard-rkl: [SKIP][361] ([i915#14544] / [i915#3282]) -> [SKIP][362] ([i915#3282]) +1 other test skip
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads.html
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@gem_partial_pwrite_pread@writes-after-reads.html
* igt@gem_pxp@hw-rejects-pxp-buffer:
- shard-rkl: [TIMEOUT][363] ([i915#12917] / [i915#12964]) -> [SKIP][364] ([i915#13717])
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-7/igt@gem_pxp@hw-rejects-pxp-buffer.html
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@gem_pxp@hw-rejects-pxp-buffer.html
* igt@gem_pxp@protected-encrypted-src-copy-not-readible:
- shard-rkl: [TIMEOUT][365] ([i915#12917] / [i915#12964]) -> [SKIP][366] ([i915#14544] / [i915#4270])
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
* igt@gem_readwrite@beyond-eob:
- shard-rkl: [SKIP][367] ([i915#3282]) -> [SKIP][368] ([i915#14544] / [i915#3282]) +4 other tests skip
[367]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@gem_readwrite@beyond-eob.html
[368]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gem_readwrite@beyond-eob.html
* igt@gen9_exec_parse@batch-zero-length:
- shard-rkl: [SKIP][369] ([i915#2527]) -> [SKIP][370] ([i915#14544] / [i915#2527])
[369]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@gen9_exec_parse@batch-zero-length.html
[370]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@gen9_exec_parse@batch-zero-length.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-rkl: [SKIP][371] ([i915#14498] / [i915#14544]) -> [SKIP][372] ([i915#14498])
[371]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@i915_pm_rc6_residency@rc6-idle.html
[372]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
- shard-rkl: [SKIP][373] ([i915#5286]) -> [SKIP][374] ([i915#14544]) +2 other tests skip
[373]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html
[374]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
- shard-dg1: [SKIP][375] ([i915#4538] / [i915#5286]) -> [SKIP][376] ([i915#4423] / [i915#4538] / [i915#5286])
[375]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg1-19/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
[376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg1-15/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-rkl: [SKIP][377] ([i915#14544]) -> [SKIP][378] ([i915#5286])
[377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@linear-8bpp-rotate-90:
- shard-rkl: [SKIP][379] ([i915#3638]) -> [SKIP][380] ([i915#14544])
[379]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_big_fb@linear-8bpp-rotate-90.html
[380]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_big_fb@linear-8bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-270:
- shard-rkl: [SKIP][381] ([i915#14544]) -> [SKIP][382] ([i915#3638])
[381]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
[382]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
- shard-rkl: [SKIP][383] ([i915#14544]) -> [SKIP][384] +4 other tests skip
[383]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html
[384]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
- shard-rkl: [SKIP][385] ([i915#14098] / [i915#6095]) -> [SKIP][386] ([i915#14544]) +8 other tests skip
[385]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
[386]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-rkl: [SKIP][387] ([i915#12313]) -> [SKIP][388] ([i915#14544])
[387]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
[388]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: [SKIP][389] ([i915#14098] / [i915#6095]) -> [SKIP][390] ([i915#6095]) +3 other tests skip
[389]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2.html
[390]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
- shard-rkl: [SKIP][391] ([i915#14544]) -> [INCOMPLETE][392] ([i915#12796])
[391]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
[392]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
- shard-rkl: [SKIP][393] ([i915#14544]) -> [SKIP][394] ([i915#12313])
[393]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
[394]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs:
- shard-rkl: [SKIP][395] ([i915#14544]) -> [SKIP][396] ([i915#14098] / [i915#6095]) +2 other tests skip
[395]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html
[396]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html
* igt@kms_cdclk@mode-transition:
- shard-rkl: [SKIP][397] ([i915#3742]) -> [SKIP][398] ([i915#14544] / [i915#3742])
[397]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_cdclk@mode-transition.html
[398]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_cdclk@mode-transition.html
* igt@kms_chamelium_frames@dp-crc-fast:
- shard-rkl: [SKIP][399] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][400] ([i915#11151] / [i915#7828]) +1 other test skip
[399]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_chamelium_frames@dp-crc-fast.html
[400]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_chamelium_frames@dp-crc-fast.html
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-rkl: [SKIP][401] ([i915#11151] / [i915#7828]) -> [SKIP][402] ([i915#11151] / [i915#14544] / [i915#7828]) +4 other tests skip
[401]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
[402]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
* igt@kms_content_protection@atomic-dpms:
- shard-rkl: [SKIP][403] ([i915#7118] / [i915#9424]) -> [SKIP][404] ([i915#14544])
[403]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_content_protection@atomic-dpms.html
[404]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-rkl: [SKIP][405] ([i915#3116]) -> [SKIP][406] ([i915#14544])
[405]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_content_protection@dp-mst-lic-type-1.html
[406]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@lic-type-0:
- shard-rkl: [SKIP][407] ([i915#9424]) -> [SKIP][408] ([i915#14544])
[407]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_content_protection@lic-type-0.html
[408]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@lic-type-1:
- shard-rkl: [SKIP][409] ([i915#14544]) -> [SKIP][410] ([i915#9424])
[409]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_content_protection@lic-type-1.html
[410]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_content_protection@lic-type-1.html
* igt@kms_content_protection@uevent:
- shard-dg2: [SKIP][411] ([i915#7118] / [i915#9424]) -> [FAIL][412] ([i915#1339] / [i915#7173])
[411]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-8/igt@kms_content_protection@uevent.html
[412]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-10/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-128x42:
- shard-rkl: [SKIP][413] ([i915#14544]) -> [FAIL][414] ([i915#13566])
[413]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-128x42.html
[414]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_cursor_crc@cursor-onscreen-128x42.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-rkl: [SKIP][415] ([i915#14544]) -> [SKIP][416] ([i915#13049])
[415]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-512x512.html
[416]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-rkl: [SKIP][417] ([i915#13049]) -> [SKIP][418] ([i915#14544]) +1 other test skip
[417]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_cursor_crc@cursor-random-512x512.html
[418]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-sliding-32x10:
- shard-rkl: [SKIP][419] ([i915#14544]) -> [SKIP][420] ([i915#3555]) +1 other test skip
[419]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-32x10.html
[420]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_cursor_crc@cursor-sliding-32x10.html
* igt@kms_display_modes@extended-mode-basic:
- shard-rkl: [SKIP][421] ([i915#13691]) -> [SKIP][422] ([i915#14544])
[421]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_display_modes@extended-mode-basic.html
[422]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-rkl: [SKIP][423] ([i915#14544]) -> [SKIP][424] ([i915#13748])
[423]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_dp_link_training@uhbr-mst.html
[424]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-with-formats:
- shard-rkl: [SKIP][425] ([i915#3555] / [i915#3840]) -> [SKIP][426] ([i915#14544])
[425]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_dsc@dsc-with-formats.html
[426]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_dsc@dsc-with-formats.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-rkl: [SKIP][427] ([i915#14544]) -> [SKIP][428] ([i915#3555] / [i915#3840])
[427]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_dsc@dsc-with-output-formats.html
[428]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_flip@2x-plain-flip:
- shard-rkl: [SKIP][429] ([i915#9934]) -> [SKIP][430] ([i915#14544] / [i915#9934]) +3 other tests skip
[429]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_flip@2x-plain-flip.html
[430]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_flip@2x-plain-flip.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-rkl: [SKIP][431] ([i915#14544] / [i915#3637]) -> [DMESG-WARN][432] ([i915#12964])
[431]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_flip@flip-vs-expired-vblank.html
[432]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_flip@flip-vs-suspend:
- shard-glk: [INCOMPLETE][433] ([i915#12745] / [i915#4839] / [i915#6113]) -> [INCOMPLETE][434] ([i915#12745] / [i915#4839])
[433]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-glk1/igt@kms_flip@flip-vs-suspend.html
[434]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk5/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend@a-hdmi-a1:
- shard-glk: [INCOMPLETE][435] ([i915#12745] / [i915#6113]) -> [INCOMPLETE][436] ([i915#12745])
[435]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-glk1/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
[436]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-glk5/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling:
- shard-rkl: [SKIP][437] ([i915#14544] / [i915#3555]) -> [DMESG-WARN][438] ([i915#12964])
[437]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html
[438]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-rkl: [SKIP][439] ([i915#2672] / [i915#3555]) -> [SKIP][440] ([i915#14544] / [i915#3555]) +2 other tests skip
[439]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
[440]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt:
- shard-rkl: [SKIP][441] ([i915#3023]) -> [SKIP][442] ([i915#14544] / [i915#1849] / [i915#5354]) +13 other tests skip
[441]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt.html
[442]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu:
- shard-dg2: [SKIP][443] ([i915#10433] / [i915#3458]) -> [SKIP][444] ([i915#3458]) +1 other test skip
[443]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html
[444]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
- shard-rkl: [SKIP][445] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][446] ([i915#3023]) +8 other tests skip
[445]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html
[446]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
- shard-rkl: [SKIP][447] ([i915#1825]) -> [SKIP][448] ([i915#14544] / [i915#1849] / [i915#5354]) +16 other tests skip
[447]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html
[448]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
- shard-dg2: [SKIP][449] ([i915#3458]) -> [SKIP][450] ([i915#10433] / [i915#3458]) +1 other test skip
[449]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
[450]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render:
- shard-rkl: [SKIP][451] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][452] ([i915#1825]) +12 other tests skip
[451]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html
[452]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_hdr@brightness-with-hdr:
- shard-mtlp: [SKIP][453] ([i915#1187] / [i915#12713]) -> [SKIP][454] ([i915#12713])
[453]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-mtlp-1/igt@kms_hdr@brightness-with-hdr.html
[454]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-mtlp-6/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-rkl: [SKIP][455] ([i915#14544]) -> [SKIP][456] ([i915#3555] / [i915#8228])
[455]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_hdr@invalid-metadata-sizes.html
[456]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_hdr@static-toggle:
- shard-rkl: [SKIP][457] ([i915#3555] / [i915#8228]) -> [SKIP][458] ([i915#14544]) +2 other tests skip
[457]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_hdr@static-toggle.html
[458]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_hdr@static-toggle.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-rkl: [SKIP][459] ([i915#12339]) -> [SKIP][460] ([i915#12339] / [i915#14544])
[459]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_joiner@basic-ultra-joiner.html
[460]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_plane_multiple@tiling-yf:
- shard-rkl: [SKIP][461] ([i915#14259]) -> [SKIP][462] ([i915#14544])
[461]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_plane_multiple@tiling-yf.html
[462]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_plane_multiple@tiling-yf.html
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-rkl: [SKIP][463] ([i915#12343] / [i915#14544]) -> [SKIP][464] ([i915#12343])
[463]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_pm_backlight@brightness-with-dpms.html
[464]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_pm_backlight@brightness-with-dpms.html
* igt@kms_pm_dc@dc6-dpms:
- shard-rkl: [FAIL][465] ([i915#9295]) -> [SKIP][466] ([i915#3361])
[465]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_pm_dc@dc6-dpms.html
[466]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-8/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-rkl: [SKIP][467] ([i915#9519]) -> [SKIP][468] ([i915#14544] / [i915#9519]) +1 other test skip
[467]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_pm_rpm@modeset-lpsp-stress.html
[468]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf:
- shard-rkl: [SKIP][469] ([i915#11520]) -> [SKIP][470] ([i915#11520] / [i915#14544]) +5 other tests skip
[469]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html
[470]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf:
- shard-rkl: [SKIP][471] ([i915#11520] / [i915#14544]) -> [SKIP][472] ([i915#11520]) +1 other test skip
[471]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html
[472]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html
* igt@kms_psr@fbc-psr-cursor-plane-move:
- shard-rkl: [SKIP][473] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][474] ([i915#1072] / [i915#9732]) +7 other tests skip
[473]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_psr@fbc-psr-cursor-plane-move.html
[474]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@kms_psr@fbc-psr-cursor-plane-move.html
* igt@kms_psr@fbc-psr2-primary-blt:
- shard-rkl: [SKIP][475] ([i915#1072] / [i915#9732]) -> [SKIP][476] ([i915#1072] / [i915#14544] / [i915#9732]) +10 other tests skip
[475]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_psr@fbc-psr2-primary-blt.html
[476]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_psr@fbc-psr2-primary-blt.html
* igt@kms_setmode@invalid-clone-single-crtc:
- shard-rkl: [SKIP][477] ([i915#3555]) -> [SKIP][478] ([i915#14544] / [i915#3555])
[477]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-8/igt@kms_setmode@invalid-clone-single-crtc.html
[478]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_setmode@invalid-clone-single-crtc.html
* igt@kms_vrr@lobf:
- shard-rkl: [SKIP][479] ([i915#14544]) -> [SKIP][480] ([i915#11920])
[479]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@kms_vrr@lobf.html
[480]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-3/igt@kms_vrr@lobf.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-rkl: [SKIP][481] ([i915#2437] / [i915#9412]) -> [SKIP][482] ([i915#14544] / [i915#2437] / [i915#9412])
[481]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_writeback@writeback-check-output-xrgb2101010.html
[482]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@kms_writeback@writeback-fb-id:
- shard-rkl: [SKIP][483] ([i915#2437]) -> [SKIP][484] ([i915#14544] / [i915#2437])
[483]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@kms_writeback@writeback-fb-id.html
[484]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@kms_writeback@writeback-fb-id.html
* igt@sriov_basic@bind-unbind-vf:
- shard-rkl: [SKIP][485] ([i915#14544] / [i915#9917]) -> [SKIP][486] ([i915#9917])
[485]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-6/igt@sriov_basic@bind-unbind-vf.html
[486]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-2/igt@sriov_basic@bind-unbind-vf.html
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-rkl: [SKIP][487] ([i915#9917]) -> [SKIP][488] ([i915#14544] / [i915#9917])
[487]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16965/shard-rkl-3/igt@sriov_basic@enable-vfs-bind-unbind-each.html
[488]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10826
[i915#10991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10991
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
[i915#11441]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11441
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187
[i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
[i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
[i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
[i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
[i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
[i915#12394]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12394
[i915#12518]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12518
[i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
[i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
[i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
[i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
[i915#12761]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12761
[i915#12796]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12796
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
[i915#12916]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12916
[i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
[i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
[i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008
[i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
[i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13304]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13304
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#1339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1339
[i915#13562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13562
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13688
[i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
[i915#13717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13717
[i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
[i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
[i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
[i915#13784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13784
[i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
[i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033
[i915#14073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14073
[i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
[i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
[i915#14242]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14242
[i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
[i915#14350]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14350
[i915#14433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14433
[i915#14489]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14489
[i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545
[i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
[i915#14702]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14702
[i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
[i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
[i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
[i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
[i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
[i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
[i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7276
[i915#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
[i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
[i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
[i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
[i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8826
[i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
[i915#9581]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9581
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_16965 -> Patchwork_151245v4
CI-20190529: 20190529
CI_DRM_16965: e75fad13646be2a02f21a8e9d438b3150108950d @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8488: c4a9bee161f4bb74cbbf81c73b24c416ecf93976 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_151245v4: e75fad13646be2a02f21a8e9d438b3150108950d @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_151245v4/index.html
[-- Attachment #2: Type: text/html, Size: 165082 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal
2025-08-07 11:15 ` [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal Ankit Nautiyal
@ 2025-08-07 17:01 ` Golani, Mitulkumar Ajitkumar
0 siblings, 0 replies; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-07 17:01 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal
>
> Currently, in intel_vrr_get_config() crtc_vtotal is computed from vrr.vmin vtotal,
> since the VTOTAL.Vtotal bits are deprecated.
> Since vmin is currently set to crtc_vtotal, this gives us the vtotal.
> However, as we move to optimized guardband, vmin will be modified to set to
> the minimum Vtotal for highest refresh rate supported.
>
> Instead of depending on vmin, compute vtotal from crtc_vsync_start and
> vrr.vsync_start. This works since vrr.vsync_start is measured from the end of
> vblank, and crtc_vsync_start is measured from start of the scanline. Together
> their sum is equal to the crtc_vtotal.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_vrr.c | 21 ++++++++++-----------
> 1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c
> b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 3eed37f271b0..46a85720411f 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -735,17 +735,6 @@ void intel_vrr_get_config(struct intel_crtc_state
> *crtc_state)
> TRANS_VRR_VMAX(display,
> cpu_transcoder)) + 1;
> crtc_state->vrr.vmin = intel_de_read(display,
> TRANS_VRR_VMIN(display,
> cpu_transcoder)) + 1;
> -
> - /*
> - * For platforms that always use VRR Timing Generator, the
> VTOTAL.Vtotal
> - * bits are not filled. Since for these platforms TRAN_VMIN is
> always
> - * filled with crtc_vtotal, use TRAN_VRR_VMIN to get the vtotal
> for
> - * adjusted_mode.
> - */
> - if (intel_vrr_always_use_vrr_tg(display))
> - crtc_state->hw.adjusted_mode.crtc_vtotal =
> - intel_vrr_vmin_vtotal(crtc_state);
> -
> if (HAS_AS_SDP(display)) {
> trans_vrr_vsync =
> intel_de_read(display,
> @@ -755,6 +744,16 @@ void intel_vrr_get_config(struct intel_crtc_state
> *crtc_state)
> crtc_state->vrr.vsync_end =
> REG_FIELD_GET(VRR_VSYNC_END_MASK,
> trans_vrr_vsync);
> }
> + /*
> + * For platforms that always use VRR Timing Generator, the
> VTOTAL.Vtotal
> + * bits are not filled. Since vrr.vsync_start is computed as:
> + * crtc_vtotal - crtc_vsync_start, we can derive vtotal from
> + * vrr.vsync_start and crtc_vsync_start.
> + */
> + if (intel_vrr_always_use_vrr_tg(display))
> + crtc_state->hw.adjusted_mode.crtc_vtotal =
> + crtc_state-
> >hw.adjusted_mode.crtc_vsync_start +
> + crtc_state->vrr.vsync_start;
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> }
>
> vrr_enable = trans_vrr_ctl & VRR_CTL_VRR_ENABLE;
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation
2025-08-07 11:15 ` [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
@ 2025-08-07 17:03 ` Golani, Mitulkumar Ajitkumar
0 siblings, 0 replies; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-07 17:03 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency
> checks from vblank validation
>
> Drop DSC and scaler prefill latency checks from skl_is_vblank_too_short().
> These are now covered by the guardband validation added during the atomic
> CRTC check phase.
>
> This cleanup prepares for future changes where the guardband will be
> optimized independently of vblank length, making vblank-based checks
> obsolete.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/skl_watermark.c | 78 --------------------
> 1 file changed, 78 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 5ffa76cb1633..7578e29f0e36 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2158,93 +2158,15 @@ static int icl_build_plane_wm(struct
> intel_crtc_state *crtc_state,
> return 0;
> }
>
> -static int
> -cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) -{
> - struct intel_display *display = to_intel_display(crtc_state);
> - struct intel_atomic_state *state =
> - to_intel_atomic_state(crtc_state->uapi.state);
> - const struct intel_cdclk_state *cdclk_state;
> -
> - cdclk_state = intel_atomic_get_cdclk_state(state);
> - if (IS_ERR(cdclk_state)) {
> - drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
> - return 1;
> - }
> -
> - return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
> - 2 * intel_cdclk_logical(cdclk_state)));
> -}
> -
> -static int
> -dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime) -{
> - const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> - int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> - int num_scaler_users = hweight32(scaler_state->scaler_users);
> - u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
> - u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
> - u32 dsc_prefill_latency = 0;
> -
> - if (!crtc_state->dsc.compression_enable ||
> - !num_scaler_users ||
> - num_scaler_users > crtc->num_scalers)
> - return dsc_prefill_latency;
> -
> - for (int i = 0; i < num_scaler_users; i++) {
> - hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].hscale, 1000) >> 16);
> - vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].vscale, 1000) >> 16);
> - }
> -
> - dsc_prefill_latency =
> - intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> - chroma_downscaling_factor,
> -
> cdclk_prefill_adjustment(crtc_state),
> - linetime);
> -
> - return dsc_prefill_latency;
> -}
> -
> -static int
> -scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime) -{
> - const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> - int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> - int num_scaler_users = hweight32(scaler_state->scaler_users);
> - u64 hscale_k = 1000, vscale_k = 1000;
> - int scaler_prefill_latency = 0;
> -
> - if (!num_scaler_users)
> - return scaler_prefill_latency;
> -
> - if (num_scaler_users > 1) {
> - hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> - vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> - }
> -
> - scaler_prefill_latency =
> - intel_display_scaler_prefill_latency(num_scaler_users,
> hscale_k, vscale_k,
> -
> chroma_downscaling_factor,
> -
> cdclk_prefill_adjustment(crtc_state),
> - linetime);
> -
> - return scaler_prefill_latency;
> -}
> -
> static bool
> skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
> int wm0_lines, int latency)
> {
> const struct drm_display_mode *adjusted_mode =
> &crtc_state->hw.adjusted_mode;
> - int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
> - adjusted_mode->clock);
>
> return crtc_state->framestart_delay +
> intel_usecs_to_scanlines(adjusted_mode, latency) +
> - DIV_ROUND_UP(scaler_prefill_latency(crtc_state, linetime),
> linetime) +
> - DIV_ROUND_UP(dsc_prefill_latency(crtc_state, linetime),
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> linetime) +
> wm0_lines >
> adjusted_mode->crtc_vtotal - adjusted_mode-
> >crtc_vblank_start; }
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
2025-08-07 11:15 ` [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
@ 2025-08-11 6:16 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:09 ` Nautiyal, Ankit K
0 siblings, 1 reply; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-11 6:16 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
> Ankit K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler
> prefill latencies
>
> Currently dsc/scaler prefill latencies are handled during watermark
> calculations. With the optimized guardband, we need to compute the latencies
> to find the minimum guardband that works for most cases.
> Extract the helpers to compute these latencies, so that they can be used while
> computing vrr guardband.
>
> While at it, put declarations in reverse xmas tree order for better redability.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 34 +++++++++++++++
> drivers/gpu/drm/i915/display/intel_display.h | 8 ++++
> drivers/gpu/drm/i915/display/skl_watermark.c | 46 +++++++++-----------
> 3 files changed, 63 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index c1a3a95c65f0..af4d54672d0d 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8328,3 +8328,37 @@ bool intel_scanout_needs_vtd_wa(struct
> intel_display *display)
>
> return IS_DISPLAY_VER(display, 6, 11) && i915_vtd_active(i915); }
> +
> +int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64
> vscale,
> + int chroma_downscaling_factor,
> + int cdclk_prefill_adjustment,
> + int linetime)
> +{
> + int scaler_prefill_latency;
> +
> + scaler_prefill_latency = 4 * linetime;
> + if (num_scaler_users > 1)
> + scaler_prefill_latency += DIV_ROUND_UP_ULL((4 * linetime *
> hscale * vscale *
> +
> chroma_downscaling_factor), 1000000);
> +
> + scaler_prefill_latency *= cdclk_prefill_adjustment;
> +
> + return scaler_prefill_latency;
> +}
> +
> +int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64
> *vscale,
> + int chroma_downscaling_factor,
> + int cdclk_prefill_adjustment,
> + int linetime)
> +{
> + int dsc_prefill_latency;
> +
> + dsc_prefill_latency = DIV_ROUND_UP(15 * linetime *
> +chroma_downscaling_factor, 10);
> +
> + for (int i = 0; i < num_scaler_users; i++)
> + dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency
> * hscale[i] * vscale[i],
> + 1000000);
> + dsc_prefill_latency *= cdclk_prefill_adjustment;
> +
> + return dsc_prefill_latency;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 37e2ab301a80..8d094b0a8c6b 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -559,5 +559,13 @@ bool assert_port_valid(struct intel_display *display,
> enum port port);
>
> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
> +int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64
> vscale,
> + int chroma_downscaling_factor,
> + int cdclk_prefill_adjustment,
> + int linetime);
> +int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64
> *vscale,
> + int chroma_downscaling_factor,
> + int cdclk_prefill_adjustment,
> + int linetime);
>
> #endif
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 97b42bbf5642..4474f987de06 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2179,11 +2179,12 @@ cdclk_prefill_adjustment(const struct
> intel_crtc_state *crtc_state) static int dsc_prefill_latency(const struct
> intel_crtc_state *crtc_state, int linetime) {
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> +skl_scaler_chroma_downscale_factor(crtc_state);
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> - const struct intel_crtc_scaler_state *scaler_state =
> - &crtc_state->scaler_state;
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> - int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
> u32 dsc_prefill_latency = 0;
>
> if (!crtc_state->dsc.compression_enable || @@ -2191,18 +2192,16
> @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
> num_scaler_users > crtc->num_scalers)
> return dsc_prefill_latency;
>
> - dsc_prefill_latency = DIV_ROUND_UP(15 * linetime *
> chroma_downscaling_factor, 10);
> -
> for (int i = 0; i < num_scaler_users; i++) {
> - u64 hscale_k, vscale_k;
> -
> - hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].hscale, 1000) >> 16);
> - vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].vscale, 1000) >> 16);
> - dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency
> * hscale_k * vscale_k,
> - 1000000);
> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].hscale, 1000) >> 16);
> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].vscale,
> +1000) >> 16);
> }
>
> - dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
> + dsc_prefill_latency =
> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> + chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
>
> return dsc_prefill_latency;
> }
> @@ -2210,28 +2209,25 @@ dsc_prefill_latency(const struct intel_crtc_state
> *crtc_state, int linetime) static int scaler_prefill_latency(const struct
> intel_crtc_state *crtc_state, int linetime) {
> - const struct intel_crtc_scaler_state *scaler_state =
> - &crtc_state->scaler_state;
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> +skl_scaler_chroma_downscale_factor(crtc_state);
> int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k = 1000, vscale_k = 1000;
This could be initialized to 0 ?
As further going, you are already assigning to max 1000 when even 1 scaler is being used, also intel_display_scaler_prefill_latency we are again redundantly check for number scaler presence
this could be avoided if initialised to 0 and assigning to max when scaler users presence is found ?
also in
> int scaler_prefill_latency = 0;
>
> if (!num_scaler_users)
> return scaler_prefill_latency;
>
> - scaler_prefill_latency = 4 * linetime;
> -
> if (num_scaler_users > 1) {
> - u64 hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> - u64 vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> - int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> - int latency;
> -
> - latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k *
> vscale_k *
> - chroma_downscaling_factor),
> 1000000);
> - scaler_prefill_latency += latency;
> + hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> + vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale,
> +1000) >> 16);
> }
>
> - scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
> + scaler_prefill_latency =
> + intel_display_scaler_prefill_latency(num_scaler_users,
> hscale_k, vscale_k,
> +
> chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
>
> return scaler_prefill_latency;
> }
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
@ 2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:01 ` Nautiyal, Ankit K
2025-08-11 9:59 ` Golani, Mitulkumar Ajitkumar
2025-08-11 15:14 ` Jani Nikula
2 siblings, 1 reply; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-11 9:11 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal, Ankit
> K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 08/12] drm/i915/display: Add guardband check for feature
> latencies
>
> Add a check during atomic crtc check phase to ensure the programmed VRR
> guardband is sufficient to cover latencies introduced by enabled features such as
> DSC, PSR/PR, scalers, and DP SDPs.
>
> Currently, the guardband is programmed to match the vblank length, so existing
> checks in skl_is_vblank_too_short() are valid. However, upcoming changes will
> optimize the guardband independently of vblank, making those checks incorrect.
>
> Introduce an explicit guardband check to prepare for future updates that will
> remove checking against the vblank length and later program an optimized
> guardband.
>
> v2: Use new helper for PSR2/Panel Replay latency.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
> 3 files changed, 140 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index af4d54672d0d..c542a3110051 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct
> intel_atomic_state *state,
> return 0;
> }
>
> +static int
> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) {
> + struct intel_display *display = to_intel_display(crtc_state);
> + struct intel_atomic_state *state =
> + to_intel_atomic_state(crtc_state->uapi.state);
> + const struct intel_cdclk_state *cdclk_state;
> +
> + cdclk_state = intel_atomic_get_cdclk_state(state);
> + if (IS_ERR(cdclk_state)) {
> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
> + return 1;
> + }
> +
> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
> + 2 * intel_cdclk_logical(cdclk_state)));
> +}
> +
> +static int
> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime) {
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u32 dsc_prefill_latency = 0;
> +
> + if (!crtc_state->dsc.compression_enable ||
> + !num_scaler_users ||
> + num_scaler_users > crtc->num_scalers ||
> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
> + return dsc_prefill_latency;
> +
> + for (int i = 0; i < num_scaler_users; i++) {
> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].hscale, 1000) >> 16);
> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].vscale, 1000) >> 16);
> + }
> +
> + dsc_prefill_latency =
> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> + chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return dsc_prefill_latency;
> +}
> +
> +static int
> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime) {
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k = 1000, vscale_k = 1000;
Should be zero while initialization ? as already we are maxing with scaler user checks
> + int scaler_prefill_latency = 0;
> +
> + if (!num_scaler_users)
> + return scaler_prefill_latency;
> +
> + if (num_scaler_users > 1) {
> + hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> + vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> + }
> +
> + scaler_prefill_latency =
> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> + chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return scaler_prefill_latency;
> +}
> +
> +static int intel_crtc_check_guardband(struct intel_crtc_state
> +*crtc_state) {
> + struct intel_display *display = to_intel_display(crtc_state);
> + const struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode;
> + int dsc_prefill_time = 0;
> + int scaler_prefill_time;
> + int wm0_prefill_time;
> + int pkgc_max_latency;
> + int psr2_pr_latency;
> + int min_guardband;
> + int guardband_us;
> + int sagv_latency;
> + int linetime_us;
> + int sdp_latency;
> + int pm_delay;
> +
> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
> + return 0;
> +
> + if (!adjusted_mode->crtc_clock)
> + return 0;
> +
> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
> + adjusted_mode->crtc_clock);
> +
> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
> + sagv_latency = display->sagv.block_time_us;
> +
> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
> +
> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
> +
> + if (crtc_state->dsc.compression_enable)
> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
> +
> + pm_delay = crtc_state->framestart_delay +
> + max(sagv_latency, pkgc_max_latency) +
> + wm0_prefill_time +
> + scaler_prefill_time +
> + dsc_prefill_time;
> +
> + psr2_pr_latency =
> intel_alpm_compute_max_link_wake_latency(crtc_state, false);
> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
> +
> + guardband_us = max(sdp_latency, psr2_pr_latency);
> + guardband_us = max(guardband_us, pm_delay);
> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
> +
> + if (crtc_state->vrr.guardband < min_guardband) {
> + drm_dbg_kms(display->drm, "vrr.guardband %d < min
> guardband %d\n",
> + crtc_state->vrr.guardband, min_guardband);
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
> struct intel_crtc *crtc)
> {
> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct
> intel_atomic_state *state,
> if (ret)
> return ret;
>
> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
> + ret = intel_crtc_check_guardband(crtc_state);
> + if (ret)
> + return ret;
> + }
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 4474f987de06..5ffa76cb1633 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state
> *crtc_state,
> adjusted_mode->crtc_vtotal - adjusted_mode-
> >crtc_vblank_start; }
>
> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> enum plane_id plane_id;
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h
> b/drivers/gpu/drm/i915/display/skl_watermark.h
> index 62790816f030..8706c2010ebe 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct
> intel_atomic_state *state); void intel_program_dpkgc_latency(struct
> intel_atomic_state *state);
>
> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>
> #endif /* __SKL_WATERMARK_H__ */
>
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* RE: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
@ 2025-08-11 9:59 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:00 ` Nautiyal, Ankit K
2025-08-11 15:14 ` Jani Nikula
2 siblings, 1 reply; 33+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2025-08-11 9:59 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: 07 August 2025 16:46
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal, Ankit
> K <ankit.k.nautiyal@intel.com>
> Subject: [PATCH 08/12] drm/i915/display: Add guardband check for feature
> latencies
>
> Add a check during atomic crtc check phase to ensure the programmed VRR
> guardband is sufficient to cover latencies introduced by enabled features such as
> DSC, PSR/PR, scalers, and DP SDPs.
>
> Currently, the guardband is programmed to match the vblank length, so existing
> checks in skl_is_vblank_too_short() are valid. However, upcoming changes will
> optimize the guardband independently of vblank, making those checks incorrect.
>
> Introduce an explicit guardband check to prepare for future updates that will
> remove checking against the vblank length and later program an optimized
> guardband.
>
> v2: Use new helper for PSR2/Panel Replay latency.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
> 3 files changed, 140 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index af4d54672d0d..c542a3110051 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct
> intel_atomic_state *state,
> return 0;
> }
>
> +static int
> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) {
> + struct intel_display *display = to_intel_display(crtc_state);
> + struct intel_atomic_state *state =
> + to_intel_atomic_state(crtc_state->uapi.state);
> + const struct intel_cdclk_state *cdclk_state;
> +
> + cdclk_state = intel_atomic_get_cdclk_state(state);
> + if (IS_ERR(cdclk_state)) {
> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
> + return 1;
> + }
> +
> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
> + 2 * intel_cdclk_logical(cdclk_state)));
> +}
> +
> +static int
> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime) {
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u32 dsc_prefill_latency = 0;
> +
> + if (!crtc_state->dsc.compression_enable ||
> + !num_scaler_users ||
> + num_scaler_users > crtc->num_scalers ||
> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
> + return dsc_prefill_latency;
> +
> + for (int i = 0; i < num_scaler_users; i++) {
> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].hscale, 1000) >> 16);
> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
> >scalers[i].vscale, 1000) >> 16);
> + }
> +
> + dsc_prefill_latency =
> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> + chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return dsc_prefill_latency;
> +}
> +
> +static int
> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int
> +linetime) {
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
> >scaler_state;
> + int chroma_downscaling_factor =
> skl_scaler_chroma_downscale_factor(crtc_state);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k = 1000, vscale_k = 1000;
> + int scaler_prefill_latency = 0;
> +
> + if (!num_scaler_users)
> + return scaler_prefill_latency;
> +
> + if (num_scaler_users > 1) {
> + hscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].hscale, 1000) >> 16);
> + vscale_k = max(1000, mul_u32_u32(scaler_state-
> >scalers[0].vscale, 1000) >> 16);
> + }
> +
> + scaler_prefill_latency =
> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k,
> vscale_k,
> + chroma_downscaling_factor,
> +
> cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return scaler_prefill_latency;
> +}
> +
> +static int intel_crtc_check_guardband(struct intel_crtc_state
> +*crtc_state) {
> + struct intel_display *display = to_intel_display(crtc_state);
> + const struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode;
> + int dsc_prefill_time = 0;
> + int scaler_prefill_time;
> + int wm0_prefill_time;
> + int pkgc_max_latency;
> + int psr2_pr_latency;
> + int min_guardband;
> + int guardband_us;
> + int sagv_latency;
> + int linetime_us;
> + int sdp_latency;
> + int pm_delay;
> +
> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
> + return 0;
> +
> + if (!adjusted_mode->crtc_clock)
> + return 0;
> +
> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
> + adjusted_mode->crtc_clock);
> +
> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
> + sagv_latency = display->sagv.block_time_us;
> +
> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
Just a suggestion, Similar to other static functions created, this also can be separated out as a separate static function.
> +
> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
> +
> + if (crtc_state->dsc.compression_enable)
> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
This is redundant check, as this is already been checked as part of dsc_prefill_latency function and returned gracefully
> +
> + pm_delay = crtc_state->framestart_delay +
> + max(sagv_latency, pkgc_max_latency) +
> + wm0_prefill_time +
> + scaler_prefill_time +
> + dsc_prefill_time;
> +
> + psr2_pr_latency =
> intel_alpm_compute_max_link_wake_latency(crtc_state, false);
> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
> +
> + guardband_us = max(sdp_latency, psr2_pr_latency);
> + guardband_us = max(guardband_us, pm_delay);
> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
> +
> + if (crtc_state->vrr.guardband < min_guardband) {
> + drm_dbg_kms(display->drm, "vrr.guardband %d < min
> guardband %d\n",
> + crtc_state->vrr.guardband, min_guardband);
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
> struct intel_crtc *crtc)
> {
> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct
> intel_atomic_state *state,
> if (ret)
> return ret;
>
> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
> + ret = intel_crtc_check_guardband(crtc_state);
> + if (ret)
> + return ret;
> + }
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 4474f987de06..5ffa76cb1633 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state
> *crtc_state,
> adjusted_mode->crtc_vtotal - adjusted_mode-
> >crtc_vblank_start; }
>
> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> enum plane_id plane_id;
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h
> b/drivers/gpu/drm/i915/display/skl_watermark.h
> index 62790816f030..8706c2010ebe 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct
> intel_atomic_state *state); void intel_program_dpkgc_latency(struct
> intel_atomic_state *state);
>
> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>
> #endif /* __SKL_WATERMARK_H__ */
>
> --
> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
2025-08-11 9:59 ` Golani, Mitulkumar Ajitkumar
@ 2025-08-11 15:14 ` Jani Nikula
2025-08-18 6:02 ` Nautiyal, Ankit K
2 siblings, 1 reply; 33+ messages in thread
From: Jani Nikula @ 2025-08-11 15:14 UTC (permalink / raw)
To: Ankit Nautiyal, intel-gfx, intel-xe
Cc: ville.syrjala, mitulkumar.ajitkumar.golani, Ankit Nautiyal
On Thu, 07 Aug 2025, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
> Add a check during atomic crtc check phase to ensure the programmed VRR
> guardband is sufficient to cover latencies introduced by enabled features
> such as DSC, PSR/PR, scalers, and DP SDPs.
>
> Currently, the guardband is programmed to match the vblank length, so
> existing checks in skl_is_vblank_too_short() are valid. However, upcoming
> changes will optimize the guardband independently of vblank, making those
> checks incorrect.
>
> Introduce an explicit guardband check to prepare for future updates
> that will remove checking against the vblank length and later program an
> optimized guardband.
>
> v2: Use new helper for PSR2/Panel Replay latency.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
> 3 files changed, 140 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index af4d54672d0d..c542a3110051 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct intel_atomic_state *state,
> return 0;
> }
>
> +static int
> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_display *display = to_intel_display(crtc_state);
> + struct intel_atomic_state *state =
> + to_intel_atomic_state(crtc_state->uapi.state);
> + const struct intel_cdclk_state *cdclk_state;
> +
> + cdclk_state = intel_atomic_get_cdclk_state(state);
> + if (IS_ERR(cdclk_state)) {
> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
> + return 1;
> + }
> +
> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
> + 2 * intel_cdclk_logical(cdclk_state)));
> +}
> +
> +static int
> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
> +{
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
> + int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
> + u32 dsc_prefill_latency = 0;
> +
> + if (!crtc_state->dsc.compression_enable ||
> + !num_scaler_users ||
> + num_scaler_users > crtc->num_scalers ||
> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
> + return dsc_prefill_latency;
> +
> + for (int i = 0; i < num_scaler_users; i++) {
> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
> + }
> +
> + dsc_prefill_latency =
> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
> + chroma_downscaling_factor,
> + cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return dsc_prefill_latency;
> +}
> +
> +static int
> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
> +{
> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
> + int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
> + int num_scaler_users = hweight32(scaler_state->scaler_users);
> + u64 hscale_k = 1000, vscale_k = 1000;
> + int scaler_prefill_latency = 0;
> +
> + if (!num_scaler_users)
> + return scaler_prefill_latency;
> +
> + if (num_scaler_users > 1) {
> + hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
> + vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
> + }
> +
> + scaler_prefill_latency =
> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
> + chroma_downscaling_factor,
> + cdclk_prefill_adjustment(crtc_state),
> + linetime);
> +
> + return scaler_prefill_latency;
> +}
> +
> +static int intel_crtc_check_guardband(struct intel_crtc_state *crtc_state)
Please avoid "check" naming like this. In general, it's a poor verb to
use, because what it does is ambiguous from the name. Is it an
assertion, does it return a value, what does it do?
However, as a special case, if a function gets called form the atomic
check path (which I also think is ill-named, but what can you do), with
the same parameters and conventions, then name it accordingly.
Thus intel_crtc_guardband_atomic_check().
BR,
Jani.
> +{
> + struct intel_display *display = to_intel_display(crtc_state);
> + const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
> + int dsc_prefill_time = 0;
> + int scaler_prefill_time;
> + int wm0_prefill_time;
> + int pkgc_max_latency;
> + int psr2_pr_latency;
> + int min_guardband;
> + int guardband_us;
> + int sagv_latency;
> + int linetime_us;
> + int sdp_latency;
> + int pm_delay;
> +
> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
> + return 0;
> +
> + if (!adjusted_mode->crtc_clock)
> + return 0;
> +
> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
> + adjusted_mode->crtc_clock);
> +
> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
> + sagv_latency = display->sagv.block_time_us;
> +
> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
> +
> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
> +
> + if (crtc_state->dsc.compression_enable)
> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
> +
> + pm_delay = crtc_state->framestart_delay +
> + max(sagv_latency, pkgc_max_latency) +
> + wm0_prefill_time +
> + scaler_prefill_time +
> + dsc_prefill_time;
> +
> + psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, false);
> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
> +
> + guardband_us = max(sdp_latency, psr2_pr_latency);
> + guardband_us = max(guardband_us, pm_delay);
> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
> +
> + if (crtc_state->vrr.guardband < min_guardband) {
> + drm_dbg_kms(display->drm, "vrr.guardband %d < min guardband %d\n",
> + crtc_state->vrr.guardband, min_guardband);
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
> struct intel_crtc *crtc)
> {
> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
> if (ret)
> return ret;
>
> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
> + ret = intel_crtc_check_guardband(crtc_state);
> + if (ret)
> + return ret;
> + }
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 4474f987de06..5ffa76cb1633 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
> adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
> }
>
> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> enum plane_id plane_id;
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h b/drivers/gpu/drm/i915/display/skl_watermark.h
> index 62790816f030..8706c2010ebe 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct intel_atomic_state *state);
> void intel_program_dpkgc_latency(struct intel_atomic_state *state);
>
> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>
> #endif /* __SKL_WATERMARK_H__ */
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode
2025-08-07 11:15 ` [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode Ankit Nautiyal
@ 2025-08-11 15:22 ` Jani Nikula
2025-08-18 6:15 ` Nautiyal, Ankit K
0 siblings, 1 reply; 33+ messages in thread
From: Jani Nikula @ 2025-08-11 15:22 UTC (permalink / raw)
To: Ankit Nautiyal, intel-gfx, intel-xe
Cc: ville.syrjala, mitulkumar.ajitkumar.golani, Ankit Nautiyal
On Thu, 07 Aug 2025, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
> Add intel_panel_highest_fixed_mode() to return the fixed mode with the
> highest pixel clock. Unlike intel_panel_highest_mode(), this function
> does not fall back to the adjusted mode and returns NULL if no fixed
> modes are available.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_panel.c | 13 +++++++++++++
> drivers/gpu/drm/i915/display/intel_panel.h | 2 ++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 2a20aaaaac39..ea4351d11e63 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -158,6 +158,19 @@ intel_panel_highest_mode(struct intel_connector *connector,
> return best_mode;
> }
>
> +const struct drm_display_mode *
> +intel_panel_highest_fixed_mode(struct intel_connector *connector)
> +{
> + const struct drm_display_mode *fixed_mode, *highest_mode = NULL;
> +
> + list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
> + if (!highest_mode || fixed_mode->clock > highest_mode->clock)
> + highest_mode = fixed_mode;
> + }
> +
> + return highest_mode;
> +}
The difference in naming here does not adequately describe the
difference in the functions.
Or you could just make the single user of intel_panel_highest_mode()
fall back to adjusted mode when the return value is NULL, and avoid that
problem altogether.
BR,
Jani.
> +
> int intel_panel_get_modes(struct intel_connector *connector)
> {
> const struct drm_display_mode *fixed_mode;
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
> index 56a6412cf0fb..60f6873cdbaa 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.h
> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
> @@ -39,6 +39,8 @@ intel_panel_downclock_mode(struct intel_connector *connector,
> const struct drm_display_mode *
> intel_panel_highest_mode(struct intel_connector *connector,
> const struct drm_display_mode *adjusted_mode);
> +const struct drm_display_mode *
> +intel_panel_highest_fixed_mode(struct intel_connector *connector);
> int intel_panel_get_modes(struct intel_connector *connector);
> enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
> enum drm_mode_status
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-11 9:59 ` Golani, Mitulkumar Ajitkumar
@ 2025-08-18 6:00 ` Nautiyal, Ankit K
0 siblings, 0 replies; 33+ messages in thread
From: Nautiyal, Ankit K @ 2025-08-18 6:00 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
On 8/11/2025 3:29 PM, Golani, Mitulkumar Ajitkumar wrote:
>
>> -----Original Message-----
>> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
>> Sent: 07 August 2025 16:46
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
>> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal, Ankit
>> K <ankit.k.nautiyal@intel.com>
>> Subject: [PATCH 08/12] drm/i915/display: Add guardband check for feature
>> latencies
>>
>> Add a check during atomic crtc check phase to ensure the programmed VRR
>> guardband is sufficient to cover latencies introduced by enabled features such as
>> DSC, PSR/PR, scalers, and DP SDPs.
>>
>> Currently, the guardband is programmed to match the vblank length, so existing
>> checks in skl_is_vblank_too_short() are valid. However, upcoming changes will
>> optimize the guardband independently of vblank, making those checks incorrect.
>>
>> Introduce an explicit guardband check to prepare for future updates that will
>> remove checking against the vblank length and later program an optimized
>> guardband.
>>
>> v2: Use new helper for PSR2/Panel Replay latency.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
>> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
>> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
>> 3 files changed, 140 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
>> b/drivers/gpu/drm/i915/display/intel_display.c
>> index af4d54672d0d..c542a3110051 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct
>> intel_atomic_state *state,
>> return 0;
>> }
>>
>> +static int
>> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) {
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + struct intel_atomic_state *state =
>> + to_intel_atomic_state(crtc_state->uapi.state);
>> + const struct intel_cdclk_state *cdclk_state;
>> +
>> + cdclk_state = intel_atomic_get_cdclk_state(state);
>> + if (IS_ERR(cdclk_state)) {
>> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
>> + return 1;
>> + }
>> +
>> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
>> + 2 * intel_cdclk_logical(cdclk_state)));
>> +}
>> +
>> +static int
>> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int
>> +linetime) {
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u32 dsc_prefill_latency = 0;
>> +
>> + if (!crtc_state->dsc.compression_enable ||
>> + !num_scaler_users ||
>> + num_scaler_users > crtc->num_scalers ||
>> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
>> + return dsc_prefill_latency;
>> +
>> + for (int i = 0; i < num_scaler_users; i++) {
>> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].hscale, 1000) >> 16);
>> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].vscale, 1000) >> 16);
>> + }
>> +
>> + dsc_prefill_latency =
>> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
>> vscale_k,
>> + chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return dsc_prefill_latency;
>> +}
>> +
>> +static int
>> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int
>> +linetime) {
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k = 1000, vscale_k = 1000;
>> + int scaler_prefill_latency = 0;
>> +
>> + if (!num_scaler_users)
>> + return scaler_prefill_latency;
>> +
>> + if (num_scaler_users > 1) {
>> + hscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].hscale, 1000) >> 16);
>> + vscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].vscale, 1000) >> 16);
>> + }
>> +
>> + scaler_prefill_latency =
>> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k,
>> vscale_k,
>> + chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return scaler_prefill_latency;
>> +}
>> +
>> +static int intel_crtc_check_guardband(struct intel_crtc_state
>> +*crtc_state) {
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + const struct drm_display_mode *adjusted_mode = &crtc_state-
>>> hw.adjusted_mode;
>> + int dsc_prefill_time = 0;
>> + int scaler_prefill_time;
>> + int wm0_prefill_time;
>> + int pkgc_max_latency;
>> + int psr2_pr_latency;
>> + int min_guardband;
>> + int guardband_us;
>> + int sagv_latency;
>> + int linetime_us;
>> + int sdp_latency;
>> + int pm_delay;
>> +
>> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
>> + return 0;
>> +
>> + if (!adjusted_mode->crtc_clock)
>> + return 0;
>> +
>> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
>> + adjusted_mode->crtc_clock);
>> +
>> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
>> + sagv_latency = display->sagv.block_time_us;
>> +
>> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
> Just a suggestion, Similar to other static functions created, this also can be separated out as a separate static function.
Alright can add a new function for this as well.
>
>> +
>> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
>> +
>> + if (crtc_state->dsc.compression_enable)
>> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
> This is redundant check, as this is already been checked as part of dsc_prefill_latency function and returned gracefully
Agreed. Will drop this.
Regards,
Ankit
>> +
>> + pm_delay = crtc_state->framestart_delay +
>> + max(sagv_latency, pkgc_max_latency) +
>> + wm0_prefill_time +
>> + scaler_prefill_time +
>> + dsc_prefill_time;
>> +
>> + psr2_pr_latency =
>> intel_alpm_compute_max_link_wake_latency(crtc_state, false);
>> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
>> +
>> + guardband_us = max(sdp_latency, psr2_pr_latency);
>> + guardband_us = max(guardband_us, pm_delay);
>> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
>> +
>> + if (crtc_state->vrr.guardband < min_guardband) {
>> + drm_dbg_kms(display->drm, "vrr.guardband %d < min
>> guardband %d\n",
>> + crtc_state->vrr.guardband, min_guardband);
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
>> struct intel_crtc *crtc)
>> {
>> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct
>> intel_atomic_state *state,
>> if (ret)
>> return ret;
>>
>> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
>> + ret = intel_crtc_check_guardband(crtc_state);
>> + if (ret)
>> + return ret;
>> + }
>> +
>> return 0;
>> }
>>
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
>> b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 4474f987de06..5ffa76cb1633 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state
>> *crtc_state,
>> adjusted_mode->crtc_vtotal - adjusted_mode-
>>> crtc_vblank_start; }
>> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> {
>> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> enum plane_id plane_id;
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h
>> b/drivers/gpu/drm/i915/display/skl_watermark.h
>> index 62790816f030..8706c2010ebe 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
>> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct
>> intel_atomic_state *state); void intel_program_dpkgc_latency(struct
>> intel_atomic_state *state);
>>
>> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>>
>> #endif /* __SKL_WATERMARK_H__ */
>>
>> --
>> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
@ 2025-08-18 6:01 ` Nautiyal, Ankit K
0 siblings, 0 replies; 33+ messages in thread
From: Nautiyal, Ankit K @ 2025-08-18 6:01 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
On 8/11/2025 2:41 PM, Golani, Mitulkumar Ajitkumar wrote:
>
>> -----Original Message-----
>> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
>> Sent: 07 August 2025 16:46
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
>> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal, Ankit
>> K <ankit.k.nautiyal@intel.com>
>> Subject: [PATCH 08/12] drm/i915/display: Add guardband check for feature
>> latencies
>>
>> Add a check during atomic crtc check phase to ensure the programmed VRR
>> guardband is sufficient to cover latencies introduced by enabled features such as
>> DSC, PSR/PR, scalers, and DP SDPs.
>>
>> Currently, the guardband is programmed to match the vblank length, so existing
>> checks in skl_is_vblank_too_short() are valid. However, upcoming changes will
>> optimize the guardband independently of vblank, making those checks incorrect.
>>
>> Introduce an explicit guardband check to prepare for future updates that will
>> remove checking against the vblank length and later program an optimized
>> guardband.
>>
>> v2: Use new helper for PSR2/Panel Replay latency.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
>> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
>> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
>> 3 files changed, 140 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
>> b/drivers/gpu/drm/i915/display/intel_display.c
>> index af4d54672d0d..c542a3110051 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct
>> intel_atomic_state *state,
>> return 0;
>> }
>>
>> +static int
>> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) {
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + struct intel_atomic_state *state =
>> + to_intel_atomic_state(crtc_state->uapi.state);
>> + const struct intel_cdclk_state *cdclk_state;
>> +
>> + cdclk_state = intel_atomic_get_cdclk_state(state);
>> + if (IS_ERR(cdclk_state)) {
>> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
>> + return 1;
>> + }
>> +
>> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
>> + 2 * intel_cdclk_logical(cdclk_state)));
>> +}
>> +
>> +static int
>> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int
>> +linetime) {
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u32 dsc_prefill_latency = 0;
>> +
>> + if (!crtc_state->dsc.compression_enable ||
>> + !num_scaler_users ||
>> + num_scaler_users > crtc->num_scalers ||
>> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
>> + return dsc_prefill_latency;
>> +
>> + for (int i = 0; i < num_scaler_users; i++) {
>> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].hscale, 1000) >> 16);
>> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].vscale, 1000) >> 16);
>> + }
>> +
>> + dsc_prefill_latency =
>> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
>> vscale_k,
>> + chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return dsc_prefill_latency;
>> +}
>> +
>> +static int
>> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int
>> +linetime) {
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k = 1000, vscale_k = 1000;
> Should be zero while initialization ? as already we are maxing with scaler user checks
Yes we can do that, inline with the comment on the previous patch.
Regards,
Ankit
>
>> + int scaler_prefill_latency = 0;
>> +
>> + if (!num_scaler_users)
>> + return scaler_prefill_latency;
>> +
>> + if (num_scaler_users > 1) {
>> + hscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].hscale, 1000) >> 16);
>> + vscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].vscale, 1000) >> 16);
>> + }
>> +
>> + scaler_prefill_latency =
>> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k,
>> vscale_k,
>> + chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return scaler_prefill_latency;
>> +}
>> +
>> +static int intel_crtc_check_guardband(struct intel_crtc_state
>> +*crtc_state) {
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + const struct drm_display_mode *adjusted_mode = &crtc_state-
>>> hw.adjusted_mode;
>> + int dsc_prefill_time = 0;
>> + int scaler_prefill_time;
>> + int wm0_prefill_time;
>> + int pkgc_max_latency;
>> + int psr2_pr_latency;
>> + int min_guardband;
>> + int guardband_us;
>> + int sagv_latency;
>> + int linetime_us;
>> + int sdp_latency;
>> + int pm_delay;
>> +
>> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
>> + return 0;
>> +
>> + if (!adjusted_mode->crtc_clock)
>> + return 0;
>> +
>> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
>> + adjusted_mode->crtc_clock);
>> +
>> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
>> + sagv_latency = display->sagv.block_time_us;
>> +
>> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
>> +
>> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
>> +
>> + if (crtc_state->dsc.compression_enable)
>> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
>> +
>> + pm_delay = crtc_state->framestart_delay +
>> + max(sagv_latency, pkgc_max_latency) +
>> + wm0_prefill_time +
>> + scaler_prefill_time +
>> + dsc_prefill_time;
>> +
>> + psr2_pr_latency =
>> intel_alpm_compute_max_link_wake_latency(crtc_state, false);
>> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
>> +
>> + guardband_us = max(sdp_latency, psr2_pr_latency);
>> + guardband_us = max(guardband_us, pm_delay);
>> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
>> +
>> + if (crtc_state->vrr.guardband < min_guardband) {
>> + drm_dbg_kms(display->drm, "vrr.guardband %d < min
>> guardband %d\n",
>> + crtc_state->vrr.guardband, min_guardband);
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
>> struct intel_crtc *crtc)
>> {
>> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct
>> intel_atomic_state *state,
>> if (ret)
>> return ret;
>>
>> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
>> + ret = intel_crtc_check_guardband(crtc_state);
>> + if (ret)
>> + return ret;
>> + }
>> +
>> return 0;
>> }
>>
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
>> b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 4474f987de06..5ffa76cb1633 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state
>> *crtc_state,
>> adjusted_mode->crtc_vtotal - adjusted_mode-
>>> crtc_vblank_start; }
>> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> {
>> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> enum plane_id plane_id;
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h
>> b/drivers/gpu/drm/i915/display/skl_watermark.h
>> index 62790816f030..8706c2010ebe 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
>> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct
>> intel_atomic_state *state); void intel_program_dpkgc_latency(struct
>> intel_atomic_state *state);
>>
>> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>>
>> #endif /* __SKL_WATERMARK_H__ */
>>
>> --
>> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies
2025-08-11 15:14 ` Jani Nikula
@ 2025-08-18 6:02 ` Nautiyal, Ankit K
0 siblings, 0 replies; 33+ messages in thread
From: Nautiyal, Ankit K @ 2025-08-18 6:02 UTC (permalink / raw)
To: Jani Nikula, intel-gfx, intel-xe
Cc: ville.syrjala, mitulkumar.ajitkumar.golani
On 8/11/2025 8:44 PM, Jani Nikula wrote:
> On Thu, 07 Aug 2025, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
>> Add a check during atomic crtc check phase to ensure the programmed VRR
>> guardband is sufficient to cover latencies introduced by enabled features
>> such as DSC, PSR/PR, scalers, and DP SDPs.
>>
>> Currently, the guardband is programmed to match the vblank length, so
>> existing checks in skl_is_vblank_too_short() are valid. However, upcoming
>> changes will optimize the guardband independently of vblank, making those
>> checks incorrect.
>>
>> Introduce an explicit guardband check to prepare for future updates
>> that will remove checking against the vblank length and later program an
>> optimized guardband.
>>
>> v2: Use new helper for PSR2/Panel Replay latency.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 138 +++++++++++++++++++
>> drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
>> drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
>> 3 files changed, 140 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> index af4d54672d0d..c542a3110051 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -4227,6 +4227,138 @@ static int hsw_compute_linetime_wm(struct intel_atomic_state *state,
>> return 0;
>> }
>>
>> +static int
>> +cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
>> +{
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + struct intel_atomic_state *state =
>> + to_intel_atomic_state(crtc_state->uapi.state);
>> + const struct intel_cdclk_state *cdclk_state;
>> +
>> + cdclk_state = intel_atomic_get_cdclk_state(state);
>> + if (IS_ERR(cdclk_state)) {
>> + drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
>> + return 1;
>> + }
>> +
>> + return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
>> + 2 * intel_cdclk_logical(cdclk_state)));
>> +}
>> +
>> +static int
>> +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
>> +{
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
>> + int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
>> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u32 dsc_prefill_latency = 0;
>> +
>> + if (!crtc_state->dsc.compression_enable ||
>> + !num_scaler_users ||
>> + num_scaler_users > crtc->num_scalers ||
>> + num_scaler_users > ARRAY_SIZE(scaler_state->scalers))
>> + return dsc_prefill_latency;
>> +
>> + for (int i = 0; i < num_scaler_users; i++) {
>> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
>> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
>> + }
>> +
>> + dsc_prefill_latency =
>> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k, vscale_k,
>> + chroma_downscaling_factor,
>> + cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return dsc_prefill_latency;
>> +}
>> +
>> +static int
>> +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
>> +{
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
>> + int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
>> + int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k = 1000, vscale_k = 1000;
>> + int scaler_prefill_latency = 0;
>> +
>> + if (!num_scaler_users)
>> + return scaler_prefill_latency;
>> +
>> + if (num_scaler_users > 1) {
>> + hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
>> + vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
>> + }
>> +
>> + scaler_prefill_latency =
>> + intel_display_scaler_prefill_latency(num_scaler_users, hscale_k, vscale_k,
>> + chroma_downscaling_factor,
>> + cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>> +
>> + return scaler_prefill_latency;
>> +}
>> +
>> +static int intel_crtc_check_guardband(struct intel_crtc_state *crtc_state)
> Please avoid "check" naming like this. In general, it's a poor verb to
> use, because what it does is ambiguous from the name. Is it an
> assertion, does it return a value, what does it do?
>
> However, as a special case, if a function gets called form the atomic
> check path (which I also think is ill-named, but what can you do), with
> the same parameters and conventions, then name it accordingly.
>
> Thus intel_crtc_guardband_atomic_check().
Got it. Will make the suggested change in next version.
Regards,
Ankit
>
> BR,
> Jani.
>
>
>
>
>> +{
>> + struct intel_display *display = to_intel_display(crtc_state);
>> + const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
>> + int dsc_prefill_time = 0;
>> + int scaler_prefill_time;
>> + int wm0_prefill_time;
>> + int pkgc_max_latency;
>> + int psr2_pr_latency;
>> + int min_guardband;
>> + int guardband_us;
>> + int sagv_latency;
>> + int linetime_us;
>> + int sdp_latency;
>> + int pm_delay;
>> +
>> + if (!crtc_state->vrr.enable && !intel_vrr_always_use_vrr_tg(display))
>> + return 0;
>> +
>> + if (!adjusted_mode->crtc_clock)
>> + return 0;
>> +
>> + linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
>> + adjusted_mode->crtc_clock);
>> +
>> + pkgc_max_latency = skl_watermark_max_latency(display, 1);
>> + sagv_latency = display->sagv.block_time_us;
>> +
>> + wm0_prefill_time = skl_max_wm0_lines(crtc_state) * linetime_us + 20;
>> +
>> + scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
>> +
>> + if (crtc_state->dsc.compression_enable)
>> + dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
>> +
>> + pm_delay = crtc_state->framestart_delay +
>> + max(sagv_latency, pkgc_max_latency) +
>> + wm0_prefill_time +
>> + scaler_prefill_time +
>> + dsc_prefill_time;
>> +
>> + psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, false);
>> + sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
>> +
>> + guardband_us = max(sdp_latency, psr2_pr_latency);
>> + guardband_us = max(guardband_us, pm_delay);
>> + min_guardband = DIV_ROUND_UP(guardband_us, linetime_us);
>> +
>> + if (crtc_state->vrr.guardband < min_guardband) {
>> + drm_dbg_kms(display->drm, "vrr.guardband %d < min guardband %d\n",
>> + crtc_state->vrr.guardband, min_guardband);
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static int intel_crtc_atomic_check(struct intel_atomic_state *state,
>> struct intel_crtc *crtc)
>> {
>> @@ -4289,6 +4421,12 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
>> if (ret)
>> return ret;
>>
>> + if (HAS_VRR(display) && intel_vrr_possible(crtc_state)) {
>> + ret = intel_crtc_check_guardband(crtc_state);
>> + if (ret)
>> + return ret;
>> + }
>> +
>> return 0;
>> }
>>
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 4474f987de06..5ffa76cb1633 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -2249,7 +2249,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
>> adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
>> }
>>
>> -static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
>> {
>> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> enum plane_id plane_id;
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h b/drivers/gpu/drm/i915/display/skl_watermark.h
>> index 62790816f030..8706c2010ebe 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.h
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.h
>> @@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct intel_atomic_state *state);
>> void intel_program_dpkgc_latency(struct intel_atomic_state *state);
>>
>> bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
>> +int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
>>
>> #endif /* __SKL_WATERMARK_H__ */
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
2025-08-11 6:16 ` Golani, Mitulkumar Ajitkumar
@ 2025-08-18 6:09 ` Nautiyal, Ankit K
0 siblings, 0 replies; 33+ messages in thread
From: Nautiyal, Ankit K @ 2025-08-18 6:09 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com
On 8/11/2025 11:46 AM, Golani, Mitulkumar Ajitkumar wrote:
>
>> -----Original Message-----
>> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
>> Sent: 07 August 2025 16:46
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; Golani,
>> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>; Nautiyal,
>> Ankit K <ankit.k.nautiyal@intel.com>
>> Subject: [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler
>> prefill latencies
>>
>> Currently dsc/scaler prefill latencies are handled during watermark
>> calculations. With the optimized guardband, we need to compute the latencies
>> to find the minimum guardband that works for most cases.
>> Extract the helpers to compute these latencies, so that they can be used while
>> computing vrr guardband.
>>
>> While at it, put declarations in reverse xmas tree order for better redability.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 34 +++++++++++++++
>> drivers/gpu/drm/i915/display/intel_display.h | 8 ++++
>> drivers/gpu/drm/i915/display/skl_watermark.c | 46 +++++++++-----------
>> 3 files changed, 63 insertions(+), 25 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
>> b/drivers/gpu/drm/i915/display/intel_display.c
>> index c1a3a95c65f0..af4d54672d0d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -8328,3 +8328,37 @@ bool intel_scanout_needs_vtd_wa(struct
>> intel_display *display)
>>
>> return IS_DISPLAY_VER(display, 6, 11) && i915_vtd_active(i915); }
>> +
>> +int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64
>> vscale,
>> + int chroma_downscaling_factor,
>> + int cdclk_prefill_adjustment,
>> + int linetime)
>> +{
>> + int scaler_prefill_latency;
>> +
>> + scaler_prefill_latency = 4 * linetime;
>> + if (num_scaler_users > 1)
>> + scaler_prefill_latency += DIV_ROUND_UP_ULL((4 * linetime *
>> hscale * vscale *
>> +
>> chroma_downscaling_factor), 1000000);
>> +
>> + scaler_prefill_latency *= cdclk_prefill_adjustment;
>> +
>> + return scaler_prefill_latency;
>> +}
>> +
>> +int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64
>> *vscale,
>> + int chroma_downscaling_factor,
>> + int cdclk_prefill_adjustment,
>> + int linetime)
>> +{
>> + int dsc_prefill_latency;
>> +
>> + dsc_prefill_latency = DIV_ROUND_UP(15 * linetime *
>> +chroma_downscaling_factor, 10);
>> +
>> + for (int i = 0; i < num_scaler_users; i++)
>> + dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency
>> * hscale[i] * vscale[i],
>> + 1000000);
>> + dsc_prefill_latency *= cdclk_prefill_adjustment;
>> +
>> + return dsc_prefill_latency;
>> +}
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
>> b/drivers/gpu/drm/i915/display/intel_display.h
>> index 37e2ab301a80..8d094b0a8c6b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display.h
>> @@ -559,5 +559,13 @@ bool assert_port_valid(struct intel_display *display,
>> enum port port);
>>
>> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
>> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
>> +int intel_display_scaler_prefill_latency(int num_scaler_users, u64 hscale, u64
>> vscale,
>> + int chroma_downscaling_factor,
>> + int cdclk_prefill_adjustment,
>> + int linetime);
>> +int intel_display_dsc_prefill_latency(int num_scaler_users, u64 *hscale, u64
>> *vscale,
>> + int chroma_downscaling_factor,
>> + int cdclk_prefill_adjustment,
>> + int linetime);
>>
>> #endif
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
>> b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 97b42bbf5642..4474f987de06 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -2179,11 +2179,12 @@ cdclk_prefill_adjustment(const struct
>> intel_crtc_state *crtc_state) static int dsc_prefill_latency(const struct
>> intel_crtc_state *crtc_state, int linetime) {
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> +skl_scaler_chroma_downscale_factor(crtc_state);
>> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> - const struct intel_crtc_scaler_state *scaler_state =
>> - &crtc_state->scaler_state;
>> int num_scaler_users = hweight32(scaler_state->scaler_users);
>> - int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> + u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> + u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
>> u32 dsc_prefill_latency = 0;
>>
>> if (!crtc_state->dsc.compression_enable || @@ -2191,18 +2192,16
>> @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
>> num_scaler_users > crtc->num_scalers)
>> return dsc_prefill_latency;
>>
>> - dsc_prefill_latency = DIV_ROUND_UP(15 * linetime *
>> chroma_downscaling_factor, 10);
>> -
>> for (int i = 0; i < num_scaler_users; i++) {
>> - u64 hscale_k, vscale_k;
>> -
>> - hscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].hscale, 1000) >> 16);
>> - vscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].vscale, 1000) >> 16);
>> - dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency
>> * hscale_k * vscale_k,
>> - 1000000);
>> + hscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].hscale, 1000) >> 16);
>> + vscale_k[i] = max(1000, mul_u32_u32(scaler_state-
>>> scalers[i].vscale,
>> +1000) >> 16);
>> }
>>
>> - dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
>> + dsc_prefill_latency =
>> + intel_display_dsc_prefill_latency(num_scaler_users, hscale_k,
>> vscale_k,
>> + chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>>
>> return dsc_prefill_latency;
>> }
>> @@ -2210,28 +2209,25 @@ dsc_prefill_latency(const struct intel_crtc_state
>> *crtc_state, int linetime) static int scaler_prefill_latency(const struct
>> intel_crtc_state *crtc_state, int linetime) {
>> - const struct intel_crtc_scaler_state *scaler_state =
>> - &crtc_state->scaler_state;
>> + const struct intel_crtc_scaler_state *scaler_state = &crtc_state-
>>> scaler_state;
>> + int chroma_downscaling_factor =
>> +skl_scaler_chroma_downscale_factor(crtc_state);
>> int num_scaler_users = hweight32(scaler_state->scaler_users);
>> + u64 hscale_k = 1000, vscale_k = 1000;
> This could be initialized to 0 ?
>
> As further going, you are already assigning to max 1000 when even 1 scaler is being used, also intel_display_scaler_prefill_latency we are again redundantly check for number scaler presence
>
> this could be avoided if initialised to 0 and assigning to max when scaler users presence is found ?
Makes sense. Will change this in the next version.
Regards,
Ankit
>
> also in
>> int scaler_prefill_latency = 0;
>>
>> if (!num_scaler_users)
>> return scaler_prefill_latency;
>>
>> - scaler_prefill_latency = 4 * linetime;
>> -
>> if (num_scaler_users > 1) {
>> - u64 hscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].hscale, 1000) >> 16);
>> - u64 vscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].vscale, 1000) >> 16);
>> - int chroma_downscaling_factor =
>> skl_scaler_chroma_downscale_factor(crtc_state);
>> - int latency;
>> -
>> - latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k *
>> vscale_k *
>> - chroma_downscaling_factor),
>> 1000000);
>> - scaler_prefill_latency += latency;
>> + hscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].hscale, 1000) >> 16);
>> + vscale_k = max(1000, mul_u32_u32(scaler_state-
>>> scalers[0].vscale,
>> +1000) >> 16);
>> }
>>
>> - scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
>> + scaler_prefill_latency =
>> + intel_display_scaler_prefill_latency(num_scaler_users,
>> hscale_k, vscale_k,
>> +
>> chroma_downscaling_factor,
>> +
>> cdclk_prefill_adjustment(crtc_state),
>> + linetime);
>>
>> return scaler_prefill_latency;
>> }
>> --
>> 2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode
2025-08-11 15:22 ` Jani Nikula
@ 2025-08-18 6:15 ` Nautiyal, Ankit K
0 siblings, 0 replies; 33+ messages in thread
From: Nautiyal, Ankit K @ 2025-08-18 6:15 UTC (permalink / raw)
To: Jani Nikula, intel-gfx, intel-xe
Cc: ville.syrjala, mitulkumar.ajitkumar.golani
On 8/11/2025 8:52 PM, Jani Nikula wrote:
> On Thu, 07 Aug 2025, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
>> Add intel_panel_highest_fixed_mode() to return the fixed mode with the
>> highest pixel clock. Unlike intel_panel_highest_mode(), this function
>> does not fall back to the adjusted mode and returns NULL if no fixed
>> modes are available.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_panel.c | 13 +++++++++++++
>> drivers/gpu/drm/i915/display/intel_panel.h | 2 ++
>> 2 files changed, 15 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
>> index 2a20aaaaac39..ea4351d11e63 100644
>> --- a/drivers/gpu/drm/i915/display/intel_panel.c
>> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
>> @@ -158,6 +158,19 @@ intel_panel_highest_mode(struct intel_connector *connector,
>> return best_mode;
>> }
>>
>> +const struct drm_display_mode *
>> +intel_panel_highest_fixed_mode(struct intel_connector *connector)
>> +{
>> + const struct drm_display_mode *fixed_mode, *highest_mode = NULL;
>> +
>> + list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
>> + if (!highest_mode || fixed_mode->clock > highest_mode->clock)
>> + highest_mode = fixed_mode;
>> + }
>> +
>> + return highest_mode;
>> +}
> The difference in naming here does not adequately describe the
> difference in the functions.
>
> Or you could just make the single user of intel_panel_highest_mode()
> fall back to adjusted mode when the return value is NULL, and avoid that
> problem altogether.
Agreed. I can refactor the existing function and fix the caller to check
for NULL.
Also there is a fix me in the caller where we are using mode->clock
instead of mode->crtc_clock which can be fixed with the above refactor.
With the refactor if highest fixed mode is found, mode->clock can be
used, otherwise adjusted_mode->crtc_clock can be used.
Regards,
Ankit
>
> BR,
> Jani.
>
>> +
>> int intel_panel_get_modes(struct intel_connector *connector)
>> {
>> const struct drm_display_mode *fixed_mode;
>> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
>> index 56a6412cf0fb..60f6873cdbaa 100644
>> --- a/drivers/gpu/drm/i915/display/intel_panel.h
>> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
>> @@ -39,6 +39,8 @@ intel_panel_downclock_mode(struct intel_connector *connector,
>> const struct drm_display_mode *
>> intel_panel_highest_mode(struct intel_connector *connector,
>> const struct drm_display_mode *adjusted_mode);
>> +const struct drm_display_mode *
>> +intel_panel_highest_fixed_mode(struct intel_connector *connector);
>> int intel_panel_get_modes(struct intel_connector *connector);
>> enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
>> enum drm_mode_status
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 00/12] Optimize vrr.guardband and fix LRR
@ 2025-08-18 7:31 Ankit Nautiyal
0 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-18 7:31 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Instead of setting vrr.guardband to vblank, use optimal guardband that
works for most of the cases. This will help in avoiding need of change
in guardband and fix the LRR feature that needs seamless switching to
a lower refresh rate.
First few patches fix/refactor and extract common functions required for
dsc/scaler prefill time computation. Later patches use these helpers to
compute an optimized guardband.
Also, for seamless_mn where vtotal is same but mode clock is changed to
seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work:
-The timestamps corresponding with next start of vactive still need to be
fixed with the new scheme.
-Re-enabling CMRR
Rev2:
-Address comments from Mitul.
-Extract helpers for dsc/scaler prefill latencies.
-Fix downscaling factor for chroma subsampling.
-Use missing pkg C max latency.
-Fix guardband computation for seamless mn, always use vblank for
higher resolution.
Rev3:
-Drop patches for computing and storing PSR/Panel Replay wake times
latencies and use existing helpers to compute these in intel_alpm.c.
-Drop patch to change the Vmin as it was not required.
Rev4:
-Rebase
-Drop patch for checking bounds for scaler array access.
-Use a new flag for setting vrr timings for seamless drrs.
Rev5:
-Address comments from Mitul, Jani:
-Refactor few helpers for computing latencies.
-Rename the helper to check the guardband to intel_crtc_guardband_atomic_check()
-Refactor the helper intel_panel_highest_mode().
Ankit Nautiyal (12):
drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
drm/i915/skl_watermark: Pass linetime as argument to latency helpers
drm/i915/skl_scaler: Introduce helper for chroma downscale factor
drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
drm/i915/dp: Add SDP latency computation helper
drm/i915/alpm: Add function to compute max link-wake latency
drm/i915/vrr: Use vrr.sync_start for getting vtotal
drm/i915/display: Add guardband check for feature latencies
drm/i915/skl_watermark: Remove redundant latency checks from vblank
validation
drm/i915/vrr: Use static guardband to support seamless LRR switching
drm/i915/panel: Refactor helper to get highest fixed mode
drm/i915/vrr: Fix seamless_mn drrs for PTL
drivers/gpu/drm/i915/display/intel_alpm.c | 15 ++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 +
drivers/gpu/drm/i915/display/intel_display.c | 178 +++++++++++++-
drivers/gpu/drm/i915/display/intel_display.h | 8 +
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 63 ++++-
drivers/gpu/drm/i915/display/intel_dp.h | 2 +
drivers/gpu/drm/i915/display/intel_panel.c | 11 +-
drivers/gpu/drm/i915/display/intel_panel.h | 3 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 227 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +-
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +
drivers/gpu/drm/i915/display/skl_watermark.c | 89 +------
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
15 files changed, 495 insertions(+), 116 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 00/12] Optimize vrr.guardband and fix LRR
@ 2025-08-20 8:04 Ankit Nautiyal
0 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-20 8:04 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Instead of setting vrr.guardband to vblank, use optimal guardband that
works for most of the cases. This will help in avoiding need of change
in guardband and fix the LRR feature that needs seamless switching to
a lower refresh rate.
First few patches fix/refactor and extract common functions required for
dsc/scaler prefill time computation. Later patches use these helpers to
compute an optimized guardband.
Also, for seamless_mn where vtotal is same but mode clock is changed to
seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work:
-The timestamps corresponding with next start of vactive still need to be
fixed with the new scheme.
-Re-enabling CMRR
Rev2:
-Address comments from Mitul.
-Extract helpers for dsc/scaler prefill latencies.
-Fix downscaling factor for chroma subsampling.
-Use missing pkg C max latency.
-Fix guardband computation for seamless mn, always use vblank for
higher resolution.
Rev3:
-Drop patches for computing and storing PSR/Panel Replay wake times
latencies and use existing helpers to compute these in intel_alpm.c.
-Drop patch to change the Vmin as it was not required.
Rev4:
-Rebase
-Drop patch for checking bounds for scaler array access.
-Use a new flag for setting vrr timings for seamless drrs.
Rev5:
-Address comments from Mitul, Jani:
-Refactor few helpers for computing latencies.
-Rename the helper to check the guardband to intel_crtc_guardband_atomic_check()
-Refactor the helper intel_panel_highest_mode().
Rev6:
-Rebase
-Address review comments from Mitul.
-Improve documentation for and other minor fixes in Patch#12
Ankit Nautiyal (12):
drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
drm/i915/skl_watermark: Pass linetime as argument to latency helpers
drm/i915/skl_scaler: Introduce helper for chroma downscale factor
drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
drm/i915/dp: Add SDP latency computation helper
drm/i915/alpm: Add function to compute max link-wake latency
drm/i915/vrr: Use vrr.sync_start for getting vtotal
drm/i915/display: Add guardband check for feature latencies
drm/i915/skl_watermark: Remove redundant latency checks from vblank
validation
drm/i915/vrr: Use static guardband to support seamless LRR switching
drm/i915/panel: Refactor helper to get highest fixed mode
drm/i915/vrr: Fix seamless_mn drrs for PTL
drivers/gpu/drm/i915/display/intel_alpm.c | 15 ++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 +
drivers/gpu/drm/i915/display/intel_display.c | 178 ++++++++++++-
drivers/gpu/drm/i915/display/intel_display.h | 8 +
.../drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_dp.c | 63 ++++-
drivers/gpu/drm/i915/display/intel_dp.h | 2 +
drivers/gpu/drm/i915/display/intel_panel.c | 11 +-
drivers/gpu/drm/i915/display/intel_panel.h | 3 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 243 ++++++++++++++++--
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +-
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +
drivers/gpu/drm/i915/display/skl_watermark.c | 89 +------
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
15 files changed, 508 insertions(+), 120 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 00/12] Optimize vrr.guardband and fix LRR
@ 2025-08-25 12:35 Ankit Nautiyal
0 siblings, 0 replies; 33+ messages in thread
From: Ankit Nautiyal @ 2025-08-25 12:35 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Instead of setting vrr.guardband to vblank, use optimal guardband that
works for most of the cases. This will help in avoiding need of change
in guardband and fix the LRR feature that needs seamless switching to
a lower refresh rate.
First few patches fix/refactor and extract common functions required for
dsc/scaler prefill time computation. Later patches use these helpers to
compute an optimized guardband.
Also, for seamless_mn where vtotal is same but mode clock is changed to
seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work:
-The timestamps corresponding with next start of vactive still need to be
fixed with the new scheme.
-Re-enabling CMRR
Rev2:
-Address comments from Mitul.
-Extract helpers for dsc/scaler prefill latencies.
-Fix downscaling factor for chroma subsampling.
-Use missing pkg C max latency.
-Fix guardband computation for seamless mn, always use vblank for
higher resolution.
Rev3:
-Drop patches for computing and storing PSR/Panel Replay wake times
latencies and use existing helpers to compute these in intel_alpm.c.
-Drop patch to change the Vmin as it was not required.
Rev4:
-Rebase
-Drop patch for checking bounds for scaler array access.
-Use a new flag for setting vrr timings for seamless drrs.
Rev5:
-Address comments from Mitul, Jani:
-Refactor few helpers for computing latencies.
-Rename the helper to check the guardband to intel_crtc_guardband_atomic_check()
-Refactor the helper intel_panel_highest_mode().
Rev6:
-Rebase
-Address review comments from Mitul.
-Improve documentation for and other minor fixes in Patch#12
Rev7:
-Address comments from Jani.
-Move the latency helpers from intel_display.c to intel_vrr.c and rename
the helpers appropriately.
-Drop redundant check for HAS_VRR with intel_vrr_possible().
Ankit Nautiyal (12):
drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
drm/i915/skl_watermark: Pass linetime as argument to latency helpers
drm/i915/skl_scaler: Introduce helper for chroma downscale factor
drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
drm/i915/dp: Add SDP latency computation helper
drm/i915/alpm: Add function to compute max link-wake latency
drm/i915/vrr: Use vrr.sync_start for getting vtotal
drm/i915/display: Add guardband check for feature latencies
drm/i915/skl_watermark: Remove redundant latency checks from vblank
validation
drm/i915/vrr: Use static guardband to support seamless LRR switching
drm/i915/panel: Refactor helper to get highest fixed mode
drm/i915/vrr: Fix seamless_mn drrs for PTL
drivers/gpu/drm/i915/display/intel_alpm.c | 15 +
drivers/gpu/drm/i915/display/intel_alpm.h | 2 +
drivers/gpu/drm/i915/display/intel_display.c | 144 ++++++++-
.../drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_dp.c | 63 +++-
drivers/gpu/drm/i915/display/intel_dp.h | 2 +
drivers/gpu/drm/i915/display/intel_panel.c | 11 +-
drivers/gpu/drm/i915/display/intel_panel.h | 3 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 276 ++++++++++++++++--
drivers/gpu/drm/i915/display/intel_vrr.h | 11 +-
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +
drivers/gpu/drm/i915/display/skl_watermark.c | 89 +-----
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
14 files changed, 507 insertions(+), 120 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2025-08-25 12:49 UTC | newest]
Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-07 11:15 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 01/12] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
2025-08-07 15:26 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
2025-08-07 16:19 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 03/12] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
2025-08-07 16:29 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 04/12] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
2025-08-11 6:16 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:09 ` Nautiyal, Ankit K
2025-08-07 11:15 ` [PATCH 05/12] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 06/12] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal Ankit Nautiyal
2025-08-07 17:01 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 08/12] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
2025-08-11 9:11 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:01 ` Nautiyal, Ankit K
2025-08-11 9:59 ` Golani, Mitulkumar Ajitkumar
2025-08-18 6:00 ` Nautiyal, Ankit K
2025-08-11 15:14 ` Jani Nikula
2025-08-18 6:02 ` Nautiyal, Ankit K
2025-08-07 11:15 ` [PATCH 09/12] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
2025-08-07 17:03 ` Golani, Mitulkumar Ajitkumar
2025-08-07 11:15 ` [PATCH 10/12] drm/i915/vrr: Use static guardband to support seamless LRR switching Ankit Nautiyal
2025-08-07 11:15 ` [PATCH 11/12] drm/i915/panel: Add helper to get highest fixed mode Ankit Nautiyal
2025-08-11 15:22 ` Jani Nikula
2025-08-18 6:15 ` Nautiyal, Ankit K
2025-08-07 11:15 ` [PATCH 12/12] drm/i915/vrr: Fix seamless_mn drrs for PTL Ankit Nautiyal
2025-08-07 12:22 ` ✓ i915.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev4) Patchwork
2025-08-07 16:31 ` ✓ i915.CI.Full: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2025-08-18 7:31 [PATCH 00/12] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-08-20 8:04 Ankit Nautiyal
2025-08-25 12:35 Ankit Nautiyal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).