* [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes'
@ 2025-12-10 9:38 Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args Ville Syrjala
` (12 more replies)
0 siblings, 13 replies; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Start moving towards using igt_pipe_t (or rather igt_crtc_t as it
will be known afterwards) instead of pipes. Pipes are really an
Intel hardware concept and even there things tend to fall apart when
we introduce stuff like pipe joining. So the plan is to use the
more abstract crtc concept as much as possible, only dealing with
pipes when we absolutely have to.
Mostly just refactoring, done with cocci and sed. A few manual
things here and there.
I wanted to include some s/pipe/crtc/ variable renaming here
as well, but I hit some pathological coccinelle performace issue
around igt_kms.c which I'll need to mitigate or else it takes
forever to apply the semantic patch.
Ville Syrjälä (10):
tests/intel/kms_dp_linktrain_fallback: Reduce side effects in
igt_output_set_pipe() args
lib/kms: Introduce igt_display_n_crtcs()
lib/kms: Use igt_display_n_crtcs() everywhere
lib/kms: Introduce igt_crtc_for_pipe()
lib/kms: Use igt_crtc_for_pipe() everywhere
lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK
lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*()
lib/kms: Introduce igt_output_set_crtc()
lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc()
lib/kms: Rename igt_pipe_t to igt_crtc_t
benchmarks/kms_fb_stress.c | 3 +-
lib/igt_kms.c | 204 +++++++++---------
lib/igt_kms.h | 70 +++---
tests/amdgpu/amd_abm.c | 10 +-
tests/amdgpu/amd_assr.c | 9 +-
tests/amdgpu/amd_bypass.c | 7 +-
tests/amdgpu/amd_color.c | 7 +-
tests/amdgpu/amd_dp_dsc.c | 20 +-
tests/amdgpu/amd_freesync_video_mode.c | 5 +-
tests/amdgpu/amd_hotplug.c | 10 +-
tests/amdgpu/amd_ilr.c | 12 +-
tests/amdgpu/amd_link_settings.c | 9 +-
tests/amdgpu/amd_mall.c | 7 +-
tests/amdgpu/amd_max_bpc.c | 7 +-
tests/amdgpu/amd_mem_leak.c | 7 +-
tests/amdgpu/amd_mode_switch.c | 9 +-
tests/amdgpu/amd_multidisplay_modeset.c | 15 +-
tests/amdgpu/amd_odm.c | 10 +-
tests/amdgpu/amd_plane.c | 24 ++-
tests/amdgpu/amd_psr.c | 27 ++-
tests/amdgpu/amd_replay.c | 7 +-
tests/amdgpu/amd_subvp.c | 11 +-
tests/chamelium/kms_chamelium_color.c | 28 +--
tests/chamelium/kms_chamelium_edid.c | 5 +-
tests/chamelium/kms_chamelium_helper.c | 11 +-
tests/chamelium/kms_chamelium_hpd.c | 8 +-
.../kms_chamelium_sharpness_filter.c | 16 +-
tests/drm_read.c | 3 +-
tests/intel/gem_eio.c | 7 +-
tests/intel/gem_exec_reloc.c | 3 +-
tests/intel/gem_pxp.c | 11 +-
tests/intel/kms_big_fb.c | 17 +-
tests/intel/kms_busy.c | 26 +--
tests/intel/kms_ccs.c | 3 +-
tests/intel/kms_cdclk.c | 19 +-
tests/intel/kms_dirtyfb.c | 8 +-
tests/intel/kms_dp_linktrain_fallback.c | 7 +-
tests/intel/kms_draw_crc.c | 3 +-
tests/intel/kms_dsc.c | 5 +-
tests/intel/kms_fb_coherency.c | 8 +-
tests/intel/kms_fbc_dirty_rect.c | 5 +-
tests/intel/kms_fence_pin_leak.c | 7 +-
tests/intel/kms_flip_scaled_crc.c | 14 +-
tests/intel/kms_flip_tiling.c | 5 +-
tests/intel/kms_frontbuffer_tracking.c | 40 ++--
tests/intel/kms_joiner.c | 20 +-
tests/intel/kms_joiner_helper.c | 8 +-
tests/intel/kms_mmap_write_crc.c | 8 +-
tests/intel/kms_pipe_b_c_ivb.c | 6 +-
tests/intel/kms_pipe_stress.c | 12 +-
tests/intel/kms_pm_backlight.c | 7 +-
tests/intel/kms_pm_dc.c | 10 +-
tests/intel/kms_pm_lpsp.c | 7 +-
tests/intel/kms_pm_rpm.c | 3 +-
tests/intel/kms_psr.c | 5 +-
tests/intel/kms_psr2_sf.c | 11 +-
tests/intel/kms_psr2_su.c | 8 +-
tests/intel/kms_psr_stress_test.c | 5 +-
tests/intel/kms_pwrite_crc.c | 8 +-
tests/intel/kms_sharpness_filter.c | 11 +-
tests/intel/perf_pmu.c | 8 +-
tests/intel/prime_mmap_kms.c | 5 +-
tests/intel/xe_pat.c | 3 +-
tests/intel/xe_pxp.c | 20 +-
tests/kms_async_flips.c | 8 +-
tests/kms_atomic.c | 40 ++--
tests/kms_atomic_interruptible.c | 10 +-
tests/kms_atomic_transition.c | 70 +++---
tests/kms_bw.c | 10 +-
tests/kms_color.c | 59 +++--
tests/kms_color_helper.c | 23 +-
tests/kms_color_helper.h | 14 +-
tests/kms_colorop.c | 3 +-
tests/kms_concurrent.c | 18 +-
tests/kms_content_protection.c | 8 +-
tests/kms_cursor_crc.c | 29 ++-
tests/kms_cursor_edge_walk.c | 11 +-
tests/kms_cursor_legacy.c | 80 +++----
tests/kms_debugfs.c | 5 +-
tests/kms_display_modes.c | 32 +--
tests/kms_dither.c | 11 +-
tests/kms_feature_discovery.c | 6 +-
tests/kms_flip_event_leak.c | 5 +-
tests/kms_hdr.c | 17 +-
tests/kms_invalid_mode.c | 5 +-
tests/kms_lease.c | 45 ++--
tests/kms_multipipe_modeset.c | 16 +-
tests/kms_panel_fitting.c | 6 +-
tests/kms_pipe_crc_basic.c | 22 +-
tests/kms_plane.c | 32 +--
tests/kms_plane_alpha_blend.c | 20 +-
tests/kms_plane_cursor.c | 15 +-
tests/kms_plane_lowres.c | 5 +-
tests/kms_plane_multiple.c | 26 ++-
tests/kms_plane_scaling.c | 40 ++--
tests/kms_prime.c | 3 +-
tests/kms_properties.c | 30 ++-
tests/kms_rmfb.c | 7 +-
tests/kms_rotation_crc.c | 16 +-
tests/kms_scaling_modes.c | 5 +-
tests/kms_sequence.c | 11 +-
tests/kms_tiled_display.c | 12 +-
tests/kms_universal_plane.c | 51 ++---
tests/kms_vblank.c | 19 +-
tests/kms_vrr.c | 7 +-
tests/kms_writeback.c | 5 +-
tests/nouveau_crc.c | 5 +-
tests/vmwgfx/vmw_prime.c | 8 +-
tools/amd_hdmi_compliance.c | 7 +-
tools/intel_pm_rpm.c | 2 +-
110 files changed, 999 insertions(+), 794 deletions(-)
--
2.51.2
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:21 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs() Ville Syrjala
` (11 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Move the i++ out from the igt_output_set_pipe(() arguments to
reduce the number of side effects there. This avoids breaking
things during upcoming cocci refactoring that wants to duplicate
the expression passed as the first argument.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
tests/intel/kms_dp_linktrain_fallback.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/intel/kms_dp_linktrain_fallback.c b/tests/intel/kms_dp_linktrain_fallback.c
index ac398ec5bb70..10c4d9e65ebf 100644
--- a/tests/intel/kms_dp_linktrain_fallback.c
+++ b/tests/intel/kms_dp_linktrain_fallback.c
@@ -103,7 +103,8 @@ static void setup_pipe_on_outputs(data_t *data,
igt_info("Setting pipe %s on output %s\n",
kmstest_pipe_name(data->pipe),
igt_output_name(outputs[i]));
- igt_output_set_pipe(outputs[i++], data->pipe);
+ igt_output_set_pipe(outputs[i], data->pipe);
+ i++;
}
}
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs()
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:21 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere Ville Syrjala
` (10 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Introduce igt_display_n_crtcs() as the new name for
igt_display_get_n_pipes(). The old name will get eliminated
later using cocci, but it's easier to introduce duplicate
names first because this needs to be used in a few messy macros
that cocci doesn't like.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 13 ++++++++++++-
lib/igt_kms.h | 7 ++++---
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 2d7da376bc0b..5b8598305f8c 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -3271,6 +3271,17 @@ out:
}
}
+/**
+ * igt_display_n_crtcs:
+ * @display: A pointer to an #igt_display_t structure
+ *
+ * Returns: Total number of CRTCs for the given @display
+ */
+int igt_display_n_crtcs(igt_display_t *display)
+{
+ return display->n_pipes;
+}
+
/**
* igt_display_get_n_pipes:
* @display: A pointer to an #igt_display_t structure
@@ -3279,7 +3290,7 @@ out:
*/
int igt_display_get_n_pipes(igt_display_t *display)
{
- return display->n_pipes;
+ return igt_display_n_crtcs(display);
}
/**
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 065cbeca09a8..4171e2baef61 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -577,6 +577,7 @@ int igt_display_drop_events(igt_display_t *display);
int igt_display_get_n_pipes(igt_display_t *display);
void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
+int igt_display_n_crtcs(igt_display_t *display);
const char *igt_output_name(igt_output_t *output);
drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
@@ -743,7 +744,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*/
#define for_each_pipe_with_valid_output(display, pipe, output) \
for (int con__ = (pipe) = 0; \
- assert(igt_can_fail()), (pipe) < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
+ assert(igt_can_fail()), (pipe) < igt_display_n_crtcs(display) && con__ < (display)->n_outputs; \
con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
for_each_if((display)->pipes[pipe].valid) \
for_each_if ((((output) = &(display)->outputs[con__]), \
@@ -763,9 +764,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
* be called at most once for each pipe.
*/
#define for_each_pipe_with_single_output(display, pipe, output) \
- for (igt_output_t *__outputs[(display)->n_pipes], \
+ for (igt_output_t *__outputs[igt_display_n_crtcs(display)], \
**__output = __igt_pipe_populate_outputs((display), __outputs); \
- __output < &__outputs[(display)->n_pipes]; __output++) \
+ __output < &__outputs[igt_display_n_crtcs(display)]; __output++) \
for_each_if (*__output && \
((pipe) = (__output - __outputs), (output) = *__output, 1))
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs() Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:22 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe() Ville Syrjala
` (9 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Replace all igt_display_get_n_pipes() and naked
display->n_pipes uses with igt_display_n_crtcs().
One step towards using 'crtcs' instead of 'pipes'.
Done with cocci:
#include "scripts/iterators.cocci"
@@
@@
- igt_display_get_n_pipes(...) { ... }
@@
expression DISPLAY;
@@
- igt_display_get_n_pipes(DISPLAY)
+ igt_display_n_crtcs(DISPLAY)
@@
igt_display_t DISPLAY;
expression E;
@@
(
DISPLAY.n_pipes = E;
|
- DISPLAY.n_pipes
+ igt_display_n_crtcs(&DISPLAY)
)
@@
igt_display_t *DISPLAY;
expression E;
@@
(
DISPLAY->n_pipes = E;
|
- DISPLAY->n_pipes
+ igt_display_n_crtcs(DISPLAY)
)
@@
identifier DISPLAY;
@@
igt_display_n_crtcs(igt_display_t *DISPLAY)
{
<...
- igt_display_n_crtcs(DISPLAY)
+ DISPLAY->n_pipes
...>
}
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 42 ++++++++++---------------
lib/igt_kms.h | 1 -
tests/amdgpu/amd_dp_dsc.c | 3 +-
tests/amdgpu/amd_hotplug.c | 2 +-
tests/amdgpu/amd_mode_switch.c | 2 +-
tests/amdgpu/amd_multidisplay_modeset.c | 2 +-
tests/amdgpu/amd_plane.c | 2 +-
tests/amdgpu/amd_subvp.c | 3 +-
tests/intel/gem_eio.c | 2 +-
tests/kms_bw.c | 2 +-
tests/kms_cursor_legacy.c | 2 +-
tests/kms_tiled_display.c | 4 +--
12 files changed, 30 insertions(+), 37 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 5b8598305f8c..a6bc41fb357d 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2870,7 +2870,7 @@ static void igt_fill_display_format_mod(igt_display_t *display);
*/
void igt_require_pipe(igt_display_t *display, enum pipe pipe)
{
- igt_skip_on_f(pipe >= display->n_pipes || !display->pipes[pipe].valid,
+ igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !display->pipes[pipe].valid,
"Pipe %s does not exist\n",
kmstest_pipe_name(pipe));
}
@@ -3107,8 +3107,10 @@ void igt_display_require(igt_display_t *display, int drm_fd)
resources->count_crtcs, IGT_MAX_PIPES);
display->n_pipes = IGT_MAX_PIPES;
- display->pipes = calloc(display->n_pipes, sizeof(igt_pipe_t));
- igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n", display->n_pipes);
+ display->pipes = calloc(igt_display_n_crtcs(display),
+ sizeof(igt_pipe_t));
+ igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n",
+ igt_display_n_crtcs(display));
for (i = 0; i < resources->count_crtcs; i++) {
igt_pipe_t *pipe;
@@ -3260,14 +3262,14 @@ void igt_display_require(igt_display_t *display, int drm_fd)
out:
LOG_UNINDENT(display);
- if (display->n_pipes && display->n_outputs) {
+ if (igt_display_n_crtcs(display) && display->n_outputs) {
igt_enable_connectors(drm_fd);
igt_handle_spurious_hpd(display);
}
else {
igt_skip("No KMS driver or no outputs, pipes: %d, outputs: %d\n",
- display->n_pipes, display->n_outputs);
+ igt_display_n_crtcs(display), display->n_outputs);
}
}
@@ -3282,17 +3284,6 @@ int igt_display_n_crtcs(igt_display_t *display)
return display->n_pipes;
}
-/**
- * igt_display_get_n_pipes:
- * @display: A pointer to an #igt_display_t structure
- *
- * Returns: Total number of pipes for the given @display
- */
-int igt_display_get_n_pipes(igt_display_t *display)
-{
- return igt_display_n_crtcs(display);
-}
-
/**
* igt_display_require_output:
* @display: A pointer to an #igt_display_t structure
@@ -3469,7 +3460,7 @@ void igt_display_fini(igt_display_t *display)
}
}
- for (i = 0; i < display->n_pipes; i++)
+ for (i = 0; i < igt_display_n_crtcs(display); i++)
igt_pipe_fini(&display->pipes[i]);
for (i = 0; i < display->n_outputs; i++)
@@ -3539,7 +3530,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
pipe = output->pending_pipe;
}
- igt_assert(pipe >= 0 && pipe < display->n_pipes);
+ igt_assert(pipe >= 0 && pipe < igt_display_n_crtcs(display));
return &display->pipes[pipe];
}
@@ -3663,9 +3654,10 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
igt_output_t *output;
int i, j;
- memset(chosen_outputs, 0, sizeof(*chosen_outputs) * display->n_pipes);
+ memset(chosen_outputs, 0,
+ sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
- for (i = 0; i < display->n_pipes; i++) {
+ for (i = 0; i < igt_display_n_crtcs(display); i++) {
igt_pipe_t *pipe = &display->pipes[i];
if (pipe->valid)
full_pipe_mask |= (1 << i);
@@ -3676,7 +3668,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
* it, start with the outputs restricted to 1 pipe, then increase
* number of pipes until we assign connectors to all pipes.
*/
- for (i = 0; i <= display->n_pipes; i++) {
+ for (i = 0; i <= igt_display_n_crtcs(display); i++) {
for_each_connected_output(display, output) {
uint32_t pipe_mask = output->config.valid_crtc_idx_mask & full_pipe_mask;
bool found = false;
@@ -3693,7 +3685,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
} else if (__builtin_popcount(pipe_mask) != i)
continue;
- for (j = 0; j < display->n_pipes; j++) {
+ for (j = 0; j < igt_display_n_crtcs(display); j++) {
bool pipe_assigned = assigned_pipes & (1 << j);
if (pipe_assigned || !(pipe_mask & (1 << j)))
@@ -3733,7 +3725,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
*/
igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe)
{
- igt_output_t *chosen_outputs[display->n_pipes];
+ igt_output_t *chosen_outputs[igt_display_n_crtcs(display)];
igt_assert(pipe != PIPE_NONE);
igt_require_pipe(display, pipe);
@@ -4969,7 +4961,7 @@ static int do_display_commit(igt_display_t *display,
LOG_INDENT(display, "commit");
/* someone managed to bypass igt_display_require, catch them */
- assert(display->n_pipes && display->n_outputs);
+ assert(igt_display_n_crtcs(display) && display->n_outputs);
igt_display_refresh(display);
@@ -5022,7 +5014,7 @@ int igt_display_try_commit_atomic(igt_display_t *display, uint32_t flags, void *
int ret;
/* someone managed to bypass igt_display_require, catch them */
- assert(display->n_pipes && display->n_outputs);
+ assert(igt_display_n_crtcs(display) && display->n_outputs);
LOG_INDENT(display, "commit");
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 4171e2baef61..6e7cf112b1e2 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -574,7 +574,6 @@ int igt_display_try_commit_atomic(igt_display_t *display, uint32_t flags, void
void igt_display_commit_atomic(igt_display_t *display, uint32_t flags, void *user_data);
int igt_display_try_commit2(igt_display_t *display, enum igt_commit_style s);
int igt_display_drop_events(igt_display_t *display);
-int igt_display_get_n_pipes(igt_display_t *display);
void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
int igt_display_n_crtcs(igt_display_t *display);
diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
index 30d7c898f907..788ff911691d 100644
--- a/tests/amdgpu/amd_dp_dsc.c
+++ b/tests/amdgpu/amd_dp_dsc.c
@@ -73,7 +73,8 @@ static void test_init(data_t *data)
IGT_PIPE_CRC_SOURCE_AUTO);
}
- for (i = 0, n = 0; i < display->n_outputs && n < display->n_pipes; ++i) {
+ for (i = 0,
+ n = 0; i < display->n_outputs && n < igt_display_n_crtcs(display); ++i) {
igt_output_t *output = &display->outputs[i];
data->output[n] = output;
diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
index 9038b2ed9208..8d875a5b888f 100644
--- a/tests/amdgpu/amd_hotplug.c
+++ b/tests/amdgpu/amd_hotplug.c
@@ -51,7 +51,7 @@ typedef struct data {
static void test_init(data_t *data)
{
igt_display_t *display = &data->display;
- int i, n, max_pipes = display->n_pipes;
+ int i, n, max_pipes = igt_display_n_crtcs(display);
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
index 57b2b98023f5..8b6b93d68df7 100644
--- a/tests/amdgpu/amd_mode_switch.c
+++ b/tests/amdgpu/amd_mode_switch.c
@@ -88,7 +88,7 @@ static void run_mode_switch_first_last(data_t *data, int num_pipes)
test_init(data);
- igt_skip_on_f(num_pipes > igt_display_get_n_pipes(&data->display) ||
+ igt_skip_on_f(num_pipes > igt_display_n_crtcs(&data->display) ||
num_pipes > data->display.n_outputs,
"ASIC does not have %d outputs/pipes\n", num_pipes);
diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
index a53cf668fb5c..4e97438ad978 100644
--- a/tests/amdgpu/amd_multidisplay_modeset.c
+++ b/tests/amdgpu/amd_multidisplay_modeset.c
@@ -235,7 +235,7 @@ static void multiple_display_test(struct data_t *data, enum sub_test test_mode)
igt_info("Connected num_disps:%d\n", num_disps);
- igt_skip_on_f(num_disps > igt_display_get_n_pipes(&data->display) ||
+ igt_skip_on_f(num_disps > igt_display_n_crtcs(&data->display) ||
num_disps > data->display.n_outputs,
"ASIC does not have %d outputs/pipes\n", num_disps);
diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
index 8bf776f35770..ad7d921d2aa3 100644
--- a/tests/amdgpu/amd_plane.c
+++ b/tests/amdgpu/amd_plane.c
@@ -152,7 +152,7 @@ enum test {
static void test_init(data_t *data)
{
igt_display_t *display = &data->display;
- int i, n, max_pipes = display->n_pipes;
+ int i, n, max_pipes = igt_display_n_crtcs(display);
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
index 7d29bcf10d18..fca9d6036ca2 100644
--- a/tests/amdgpu/amd_subvp.c
+++ b/tests/amdgpu/amd_subvp.c
@@ -73,7 +73,8 @@ static void test_init(struct data *data)
IGT_PIPE_CRC_SOURCE_AUTO);
}
- for (i = 0, n = 0; i < display->n_outputs && n < display->n_pipes; ++i) {
+ for (i = 0,
+ n = 0; i < display->n_outputs && n < igt_display_n_crtcs(display); ++i) {
igt_output_t *output = &display->outputs[i];
data->output[n] = output;
diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
index 290f3e2e870f..5f58cfe699a4 100644
--- a/tests/intel/gem_eio.c
+++ b/tests/intel/gem_eio.c
@@ -1034,7 +1034,7 @@ static void display_helper(igt_display_t *dpy, int *done)
igt_output_t *output;
int pipe;
- pipe = rand() % dpy->n_pipes;
+ pipe = rand() % igt_display_n_crtcs(dpy);
if (!dpy->pipes[pipe].valid)
continue;
output = igt_get_single_output_for_pipe(dpy, pipe);
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 75b98f149665..9100dd329e30 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -119,7 +119,7 @@ static drmModeModeInfo test_mode[] = {
static void test_init(data_t *data, bool physical)
{
igt_display_t *display = &data->display;
- int i, max_pipes = display->n_pipes;
+ int i, max_pipes = igt_display_n_crtcs(display);
igt_output_t *output;
data->connected_outputs = 0;
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 63175fe4c8f5..ec35992bac6a 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -287,7 +287,7 @@ static void stress(igt_display_t *display,
arg.handle = kmstest_dumb_create(display->drm_fd, 64, 64, 32, NULL, NULL);
if (pipe < 0) {
- num_crtcs = display->n_pipes;
+ num_crtcs = igt_display_n_crtcs(display);
for_each_pipe(display, n) {
arg.crtc_id = crtc_id[n] = display->pipes[n].crtc_id;
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
index f50ac5f17a76..d6f5eda7d841 100644
--- a/tests/kms_tiled_display.c
+++ b/tests/kms_tiled_display.c
@@ -513,7 +513,7 @@ static void override_edid(data_t *data)
int num_outputs = 0;
int num_tiles = 0;
- igt_require(data->display.n_pipes >= 2);
+ igt_require(igt_display_n_crtcs(&data->display) >= 2);
for_each_connected_output(&data->display, output) {
drmModeModeInfo *mode = igt_output_get_mode(output);
@@ -530,7 +530,7 @@ static void override_edid(data_t *data)
igt_require(num_outputs >= 2);
- num_tiles = min(num_outputs, data->display.n_pipes);
+ num_tiles = min(num_outputs, igt_display_n_crtcs(&data->display));
/* disable everything so that we are sure to get a full modeset */
igt_display_reset(&data->display);
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe()
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (2 preceding siblings ...)
2025-12-10 9:38 ` [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:23 ` Jani Nikula
2025-12-10 17:16 ` [PATCH i-g-t v2 " Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere Ville Syrjala
` (8 subsequent siblings)
12 siblings, 2 replies; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Start weaning everyone off from poking inside display->pipes[]
by hand. Introduce igt_crtc_for_pipe() as the preferred method
for getting the correct crtc.
Done by hand because this needs to be used in a few messy macros
that cocci doesn't like.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.h | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 6e7cf112b1e2..5bb5c2cac19c 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -578,6 +578,11 @@ void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
int igt_display_n_crtcs(igt_display_t *display);
+static inline igt_pipe_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
+{
+ return &display->pipes[pipe];
+}
+
const char *igt_output_name(igt_output_t *output);
drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
@@ -726,7 +731,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*/
#define for_each_pipe(display, pipe) \
for_each_pipe_static(pipe) \
- for_each_if((display)->pipes[(pipe)].valid)
+ for_each_if(igt_crtc_for_pipe((display), (pipe))->valid)
/**
* for_each_pipe_with_valid_output:
@@ -745,7 +750,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
for (int con__ = (pipe) = 0; \
assert(igt_can_fail()), (pipe) < igt_display_n_crtcs(display) && con__ < (display)->n_outputs; \
con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
- for_each_if((display)->pipes[pipe].valid) \
+ for_each_if(igt_crtc_for_pipe((display), (pipe))->valid) \
for_each_if ((((output) = &(display)->outputs[con__]), \
igt_pipe_connector_valid((pipe), (output))))
@@ -793,8 +798,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
* If there are no valid planes for this pipe, nothing happens.
*/
#define for_each_plane_on_pipe(display, pipe, plane) \
- for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(pipe)].planes[j__], \
- j__ < (display)->pipes[(pipe)].n_planes; j__++)
+ for (int j__ = 0; assert(igt_can_fail()), \
+ (plane) = &igt_crtc_for_pipe((display), (pipe))->planes[j__], \
+ j__ < igt_crtc_for_pipe((display), (pipe))->n_planes; j__++)
/**
* for_each_connector_mode:
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (3 preceding siblings ...)
2025-12-10 9:38 ` [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe() Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:25 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK Ville Syrjala
` (7 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Replace all the naked display->pipes[] stuff with igt_crtc_for_pipe().
One step towards using 'crtcs' instead of 'pipes'.
Done with cocci:
#include "scripts/iterators.cocci"
@@
expression D, P;
identifier M;
@@
(
- D.pipes[P].M
+ igt_crtc_for_pipe(&D, P)->M
|
- D->pipes[P].M
+ igt_crtc_for_pipe(D, P)->M
|
- &D.pipes[P]
+ igt_crtc_for_pipe(&D, P)
|
- &D->pipes[P]
+ igt_crtc_for_pipe(D, P)
|
- D->pipes[P]
+ XXX
)
@@
expression display, pipe;
@@
igt_crtc_for_pipe(...)
{
<...
- igt_crtc_for_pipe(display, pipe)
+ &display->pipes[pipe]
...>
}
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 38 ++++++++++---------
lib/igt_kms.h | 6 ++-
tests/amdgpu/amd_abm.c | 2 +-
tests/amdgpu/amd_assr.c | 2 +-
tests/amdgpu/amd_bypass.c | 2 +-
tests/amdgpu/amd_color.c | 2 +-
tests/amdgpu/amd_dp_dsc.c | 3 +-
tests/amdgpu/amd_hotplug.c | 3 +-
tests/amdgpu/amd_ilr.c | 2 +-
tests/amdgpu/amd_link_settings.c | 2 +-
tests/amdgpu/amd_mall.c | 2 +-
tests/amdgpu/amd_max_bpc.c | 2 +-
tests/amdgpu/amd_mem_leak.c | 2 +-
tests/amdgpu/amd_mode_switch.c | 4 +-
tests/amdgpu/amd_multidisplay_modeset.c | 6 +--
tests/amdgpu/amd_odm.c | 2 +-
tests/amdgpu/amd_plane.c | 2 +-
tests/amdgpu/amd_psr.c | 2 +-
tests/amdgpu/amd_replay.c | 2 +-
tests/amdgpu/amd_subvp.c | 3 +-
tests/chamelium/kms_chamelium_color.c | 10 ++---
.../kms_chamelium_sharpness_filter.c | 4 +-
tests/intel/gem_eio.c | 2 +-
tests/intel/gem_pxp.c | 4 +-
tests/intel/kms_big_fb.c | 6 +--
tests/intel/kms_busy.c | 6 +--
tests/intel/kms_cdclk.c | 2 +-
tests/intel/kms_flip_scaled_crc.c | 4 +-
tests/intel/kms_frontbuffer_tracking.c | 16 +++++---
tests/intel/kms_joiner_helper.c | 2 +-
tests/intel/kms_pipe_stress.c | 10 +++--
tests/intel/kms_pm_dc.c | 4 +-
tests/intel/kms_sharpness_filter.c | 2 +-
tests/intel/perf_pmu.c | 2 +-
tests/intel/xe_pxp.c | 6 +--
tests/kms_async_flips.c | 2 +-
tests/kms_atomic.c | 18 +++++----
tests/kms_atomic_transition.c | 33 ++++++++--------
tests/kms_bw.c | 3 +-
tests/kms_color.c | 10 ++---
tests/kms_color_helper.c | 4 +-
tests/kms_concurrent.c | 4 +-
tests/kms_cursor_crc.c | 8 ++--
tests/kms_cursor_edge_walk.c | 2 +-
tests/kms_cursor_legacy.c | 26 +++++++------
tests/kms_display_modes.c | 16 +++++---
tests/kms_dither.c | 2 +-
tests/kms_hdr.c | 2 +-
tests/kms_invalid_mode.c | 2 +-
tests/kms_lease.c | 37 +++++++++---------
tests/kms_multipipe_modeset.c | 4 +-
tests/kms_pipe_crc_basic.c | 6 ++-
tests/kms_plane.c | 10 ++---
tests/kms_plane_alpha_blend.c | 15 +++++---
tests/kms_plane_cursor.c | 8 ++--
tests/kms_plane_multiple.c | 4 +-
tests/kms_plane_scaling.c | 8 ++--
tests/kms_properties.c | 12 ++++--
tests/kms_rotation_crc.c | 3 +-
tests/kms_sequence.c | 2 +-
tests/kms_tiled_display.c | 2 +-
tests/kms_universal_plane.c | 10 +++--
tests/kms_vblank.c | 4 +-
tools/amd_hdmi_compliance.c | 2 +-
64 files changed, 239 insertions(+), 189 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index a6bc41fb357d..951144bae955 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2839,7 +2839,7 @@ void igt_display_reset(igt_display_t *display)
display->first_commit = true;
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
for_each_plane_on_pipe(display, pipe, plane)
@@ -2870,7 +2870,7 @@ static void igt_fill_display_format_mod(igt_display_t *display);
*/
void igt_require_pipe(igt_display_t *display, enum pipe pipe)
{
- igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !display->pipes[pipe].valid,
+ igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !igt_crtc_for_pipe(display, pipe)->valid,
"Pipe %s does not exist\n",
kmstest_pipe_name(pipe));
}
@@ -3013,7 +3013,7 @@ void igt_display_reset_outputs(igt_display_t *display)
igt_display_reset(display);
for_each_pipe(display, i) {
- igt_pipe_t *pipe = &display->pipes[i];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
igt_output_t *output;
if (!igt_pipe_has_valid_output(display, i))
@@ -3118,7 +3118,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
__intel_get_pipe_from_crtc_id(drm_fd,
resources->crtcs[i], i) : i;
- pipe = &display->pipes[pipe_enum];
+ pipe = igt_crtc_for_pipe(display, pipe_enum);
pipe->pipe = pipe_enum;
pipe->valid = true;
@@ -3156,7 +3156,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
display->n_colorops = 0;
for_each_pipe(display, i) {
- igt_pipe_t *pipe = &display->pipes[i];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
igt_plane_t *plane;
int p = 1, crtc_mask = 0;
int j, type;
@@ -3461,7 +3461,7 @@ void igt_display_fini(igt_display_t *display)
}
for (i = 0; i < igt_display_n_crtcs(display); i++)
- igt_pipe_fini(&display->pipes[i]);
+ igt_pipe_fini(igt_crtc_for_pipe(display, i));
for (i = 0; i < display->n_outputs; i++)
igt_output_fini(&display->outputs[i]);
@@ -3532,7 +3532,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
igt_assert(pipe >= 0 && pipe < igt_display_n_crtcs(display));
- return &display->pipes[pipe];
+ return igt_crtc_for_pipe(display, pipe);
}
static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
@@ -3658,7 +3658,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
for (i = 0; i < igt_display_n_crtcs(display); i++) {
- igt_pipe_t *pipe = &display->pipes[i];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
if (pipe->valid)
full_pipe_mask |= (1 << i);
}
@@ -4815,7 +4815,7 @@ static int igt_atomic_commit(igt_display_t *display, uint32_t flags, void *user_
req = drmModeAtomicAlloc();
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
/*
@@ -4866,7 +4866,7 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)
enum pipe pipe;
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
if (s == COMMIT_ATOMIC) {
@@ -4969,7 +4969,8 @@ static int do_display_commit(igt_display_t *display,
ret = igt_atomic_commit(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
} else {
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display,
+ pipe);
ret = igt_pipe_commit(pipe_obj, s, fail_on_error);
if (ret)
@@ -5296,7 +5297,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
old_pipe = igt_output_get_driving_pipe(output);
if (pipe != PIPE_NONE)
- pipe_obj = &display->pipes[pipe];
+ pipe_obj = igt_crtc_for_pipe(display, pipe);
LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
kmstest_pipe_name(pipe));
@@ -5316,7 +5317,8 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
}
}
- igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID, pipe == PIPE_NONE ? 0 : display->pipes[pipe].crtc_id);
+ igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
+ pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
igt_output_refresh(output);
@@ -5450,7 +5452,7 @@ bool igt_fit_modes_in_bw(igt_display_t *display)
*/
void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
{
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
if (force && display->is_atomic) {
igt_output_t *output = igt_pipe_get_output(pipe_obj);
@@ -7196,9 +7198,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
}
}
- if (!display->pipes[pipes[i].idx + 1].valid) {
+ if (!igt_crtc_for_pipe(display, pipes[i].idx + 1)->valid) {
igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
- kmstest_pipe_name(display->pipes[pipes[i].idx + 1].pipe));
+ kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i].idx + 1)->pipe));
return false;
}
@@ -7218,9 +7220,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
max_dotclock, pipes[i - 1].force_joiner ? "Yes" : "No");
kmstest_dump_mode(pipes[i - 1].mode);
- if (!display->pipes[pipes[i - 1].idx + 1].valid) {
+ if (!igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->valid) {
igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
- kmstest_pipe_name(display->pipes[pipes[i - 1].idx + 1].pipe));
+ kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->pipe));
return false;
}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 5bb5c2cac19c..fd3c8448983e 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1074,7 +1074,8 @@ static inline bool igt_pipe_is_prop_changed(igt_display_t *display,
enum pipe pipe,
enum igt_atomic_crtc_properties prop)
{
- return igt_pipe_obj_is_prop_changed(&display->pipes[pipe], prop);
+ return igt_pipe_obj_is_prop_changed(igt_crtc_for_pipe(display, pipe),
+ prop);
}
/**
@@ -1132,7 +1133,8 @@ static inline void igt_pipe_set_prop_value(igt_display_t *display,
enum igt_atomic_crtc_properties prop,
uint64_t value)
{
- igt_pipe_obj_set_prop_value(&display->pipes[pipe], prop, value);
+ igt_pipe_obj_set_prop_value(igt_crtc_for_pipe(display, pipe), prop,
+ value);
}
extern bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe,
diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 84677fef80d6..9be5cfe8efc1 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -131,7 +131,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
index 8a42baa0ba86..ebd6654ee2a1 100644
--- a/tests/amdgpu/amd_assr.c
+++ b/tests/amdgpu/amd_assr.c
@@ -168,7 +168,7 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
mode = igt_output_get_mode(output);
igt_assert(mode);
- pipe = &data->display.pipes[PIPE_A];
+ pipe = igt_crtc_for_pipe(&data->display, PIPE_A);
primary =
igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_output_set_pipe(output, PIPE_A);
diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
index a3fc39c50a51..40828fa52b1f 100644
--- a/tests/amdgpu/amd_bypass.c
+++ b/tests/amdgpu/amd_bypass.c
@@ -65,7 +65,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
index 917d30b20a47..fcfbe48d1eeb 100644
--- a/tests/amdgpu/amd_color.c
+++ b/tests/amdgpu/amd_color.c
@@ -180,7 +180,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
index 788ff911691d..fe40d0901548 100644
--- a/tests/amdgpu/amd_dp_dsc.c
+++ b/tests/amdgpu/amd_dp_dsc.c
@@ -65,7 +65,8 @@ static void test_init(data_t *data)
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
- data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
+ data->pipe[i] = igt_crtc_for_pipe(&data->display,
+ data->pipe_id[i]);
data->primary[i] = igt_pipe_get_plane_type(
data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
data->pipe_crc[i] =
diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
index 8d875a5b888f..d80eb65bd263 100644
--- a/tests/amdgpu/amd_hotplug.c
+++ b/tests/amdgpu/amd_hotplug.c
@@ -55,7 +55,8 @@ static void test_init(data_t *data)
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
- data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
+ data->pipe[i] = igt_crtc_for_pipe(&data->display,
+ data->pipe_id[i]);
data->primary[i] = igt_pipe_get_plane_type(
data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
data->overlay[i] = igt_pipe_get_plane_type_index(
diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
index 5767d4ac4c11..680b46763af3 100644
--- a/tests/amdgpu/amd_ilr.c
+++ b/tests/amdgpu/amd_ilr.c
@@ -98,7 +98,7 @@ static void test_init(data_t *data, igt_output_t *output)
igt_require(data->pipe_id != PIPE_NONE);
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
AMDGPU_PIPE_CRC_SOURCE_DPRX);
diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
index fb83f3c13932..6e6037ae5fbc 100644
--- a/tests/amdgpu/amd_link_settings.c
+++ b/tests/amdgpu/amd_link_settings.c
@@ -100,7 +100,7 @@ static void test_init(data_t *data, igt_output_t *output)
igt_require(data->pipe_id != PIPE_NONE);
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_output_set_pipe(output, data->pipe_id);
diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
index a3e82a33f8f9..27589b865a53 100644
--- a/tests/amdgpu/amd_mall.c
+++ b/tests/amdgpu/amd_mall.c
@@ -62,7 +62,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
index 869a3e5c52b7..9771c67338c7 100644
--- a/tests/amdgpu/amd_max_bpc.c
+++ b/tests/amdgpu/amd_max_bpc.c
@@ -56,7 +56,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
index 9863ec78d143..1b6b2b730c5b 100644
--- a/tests/amdgpu/amd_mem_leak.c
+++ b/tests/amdgpu/amd_mem_leak.c
@@ -47,7 +47,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
index 8b6b93d68df7..c443578f5f09 100644
--- a/tests/amdgpu/amd_mode_switch.c
+++ b/tests/amdgpu/amd_mode_switch.c
@@ -41,8 +41,8 @@ static void test_init(data_t *data)
for_each_pipe(display, i) {
igt_output_t *output = &display->outputs[i];
- data->primary[i] = igt_pipe_get_plane_type(
- &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
+ data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
+ DRM_PLANE_TYPE_PRIMARY);
data->output[i] = output;
}
diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
index 4e97438ad978..91455ed1dfb8 100644
--- a/tests/amdgpu/amd_multidisplay_modeset.c
+++ b/tests/amdgpu/amd_multidisplay_modeset.c
@@ -160,9 +160,9 @@ static void test_init(struct data_t *data)
* tested
*/
output = igt_get_single_output_for_pipe(display, i);
- pipes = &display->pipes[i];
- data->primary[i] = igt_pipe_get_plane_type(
- &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
+ pipes = igt_crtc_for_pipe(display, i);
+ data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
+ DRM_PLANE_TYPE_PRIMARY);
data->output[i] = output;
/* dp rx crc only available for eDP, SST DP, MST DP */
diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
index 101c89e60e4e..483b30e8ac8f 100644
--- a/tests/amdgpu/amd_odm.c
+++ b/tests/amdgpu/amd_odm.c
@@ -49,7 +49,7 @@ static void test_init(struct data *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
index ad7d921d2aa3..0dbac17a6e7f 100644
--- a/tests/amdgpu/amd_plane.c
+++ b/tests/amdgpu/amd_plane.c
@@ -156,7 +156,7 @@ static void test_init(data_t *data)
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
- data->pipe[i] = &display->pipes[data->pipe_id[i]];
+ data->pipe[i] = igt_crtc_for_pipe(display, data->pipe_id[i]);
data->primary[i] = igt_pipe_get_plane_type(
data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
data->overlay[i] = igt_pipe_get_plane_type_index(
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 040c39f0abdb..789d243f8e86 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -172,7 +172,7 @@ static void test_init(data_t *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
index d06f56df233c..8b194f797938 100644
--- a/tests/amdgpu/amd_replay.c
+++ b/tests/amdgpu/amd_replay.c
@@ -62,7 +62,7 @@ static void test_init(struct test_data *data)
/* It doesn't matter which pipe we choose on amdpgu. */
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
index fca9d6036ca2..a0a546a3e398 100644
--- a/tests/amdgpu/amd_subvp.c
+++ b/tests/amdgpu/amd_subvp.c
@@ -65,7 +65,8 @@ static void test_init(struct data *data)
for_each_pipe(display, i) {
data->pipe_id[i] = PIPE_A + i;
- data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
+ data->pipe[i] = igt_crtc_for_pipe(&data->display,
+ data->pipe_id[i]);
data->primary[i] = igt_pipe_get_plane_type(data->pipe[i],
DRM_PLANE_TYPE_PRIMARY);
data->pipe_crc[i] = igt_pipe_crc_new(data->fd,
diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index fd4f2aad46d6..195556c9368c 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -433,16 +433,16 @@ prep_pipe(data_t *data, enum pipe p)
{
igt_require_pipe(&data->display, p);
- if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
+ if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
data->degamma_lut_size =
- igt_pipe_obj_get_prop(&data->display.pipes[p],
+ igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
IGT_CRTC_DEGAMMA_LUT_SIZE);
igt_assert_lt(0, data->degamma_lut_size);
}
- if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
+ if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
data->gamma_lut_size =
- igt_pipe_obj_get_prop(&data->display.pipes[p],
+ igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
IGT_CRTC_GAMMA_LUT_SIZE);
igt_assert_lt(0, data->gamma_lut_size);
}
@@ -456,7 +456,7 @@ static int test_setup(data_t *data, enum pipe p)
igt_display_reset(&data->display);
prep_pipe(data, p);
- pipe = &data->display.pipes[p];
+ pipe = igt_crtc_for_pipe(&data->display, p);
igt_require(pipe->n_planes >= 0);
data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
index 014532d5c6b8..25e0275630f0 100644
--- a/tests/chamelium/kms_chamelium_sharpness_filter.c
+++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
@@ -180,7 +180,7 @@ static int test_setup(data_t *data, enum pipe p)
igt_display_reset(&data->display);
- pipe = &data->display.pipes[p];
+ pipe = igt_crtc_for_pipe(&data->display, p);
igt_require(pipe->n_planes >= 0);
data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
@@ -217,7 +217,7 @@ static void test_sharpness_filter(data_t *data, enum pipe p)
int port_idx = test_setup(data, p);
igt_require(port_idx >= 0);
- igt_require(igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_SHARPNESS_STRENGTH));
+ igt_require(igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_SHARPNESS_STRENGTH));
if (!pipe_output_combo_valid(data, p))
return;
diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
index 5f58cfe699a4..0d4aa1bd33cb 100644
--- a/tests/intel/gem_eio.c
+++ b/tests/intel/gem_eio.c
@@ -1035,7 +1035,7 @@ static void display_helper(igt_display_t *dpy, int *done)
int pipe;
pipe = rand() % igt_display_n_crtcs(dpy);
- if (!dpy->pipes[pipe].valid)
+ if (!igt_crtc_for_pipe(dpy, pipe)->valid)
continue;
output = igt_get_single_output_for_pipe(dpy, pipe);
if (!output)
diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
index b80b7d33ee6c..49edf744f943 100644
--- a/tests/intel/gem_pxp.c
+++ b/tests/intel/gem_pxp.c
@@ -1226,7 +1226,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
/* Do a modeset on all outputs */
for_each_connected_output(display, output) {
mode = igt_output_get_mode(output);
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
igt_output_set_pipe(output, i);
@@ -1243,7 +1243,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
for_each_connected_output(display, output) {
mode = igt_output_get_mode(output);
- pipe = &display->pipes[output->pending_pipe];
+ pipe = igt_crtc_for_pipe(display, output->pending_pipe);
pipe_crc = igt_pipe_crc_new(i915, pipe->pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index 686c6772ef4b..7316547d276d 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -375,7 +375,7 @@ static void prep_fb(data_t *data)
static void set_c8_lut(data_t *data)
{
- igt_pipe_t *pipe = &data->display.pipes[data->pipe];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
struct drm_color_lut *lut;
int i, lut_size = 256;
@@ -396,7 +396,7 @@ static void set_c8_lut(data_t *data)
static void unset_lut(data_t *data)
{
- igt_pipe_t *pipe = &data->display.pipes[data->pipe];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, NULL, 0);
}
@@ -517,7 +517,7 @@ static bool test_pipe(data_t *data)
kmstest_pipe_name(data->pipe), igt_output_name(data->output));
if (data->format == DRM_FORMAT_C8 &&
- !igt_pipe_obj_has_prop(&data->display.pipes[data->pipe],
+ !igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, data->pipe),
IGT_CRTC_GAMMA_LUT))
return false;
diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
index b2eb418db1fa..53ed4b39813b 100644
--- a/tests/intel/kms_busy.c
+++ b/tests/intel/kms_busy.c
@@ -130,7 +130,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
igt_assert(gem_bo_busy(dpy->drm_fd, fb->gem_handle));
if (!modeset)
do_or_die(drmModePageFlip(dpy->drm_fd,
- dpy->pipes[pipe].crtc_id, fb->fb_id,
+ igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb->fb_id,
DRM_MODE_PAGE_FLIP_EVENT, fb));
else {
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
@@ -204,7 +204,7 @@ static void test_flip(igt_display_t *dpy, int pipe,
struct drm_event_vblank ev;
do_or_die(drmModePageFlip(dpy->drm_fd,
- dpy->pipes[pipe].crtc_id,
+ igt_crtc_for_pipe(dpy, pipe)->crtc_id,
fb[warmup[i]].fb_id,
DRM_MODE_PAGE_FLIP_EVENT,
&fb[warmup[i]]));
@@ -335,7 +335,7 @@ test_pageflip_modeset_hang(igt_display_t *dpy,
.dependency = fb.gem_handle,
.flags = IGT_SPIN_NO_PREEMPTION);
- do_or_die(drmModePageFlip(dpy->drm_fd, dpy->pipes[pipe].crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
+ do_or_die(drmModePageFlip(dpy->drm_fd, igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
/* Kill crtc with hung fb */
igt_plane_set_fb(primary, NULL);
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index 8238b89582ee..3aeaba226cda 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -240,7 +240,7 @@ static void set_mode(data_t *data, int count, drmModeModeInfo *mode,
igt_plane_t *plane;
for (int i = 0; i < count; i++) {
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_output_override_mode(valid_outputs[i], &mode[i]);
diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
index f057b5070bcb..dd5967c91486 100644
--- a/tests/intel/kms_flip_scaled_crc.c
+++ b/tests/intel/kms_flip_scaled_crc.c
@@ -537,7 +537,7 @@ static void free_fbs(data_t *data)
static void set_lut(data_t *data, enum pipe pipe)
{
- igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
struct drm_color_lut *lut;
drmModeCrtc *drm_crtc;
int i, lut_size;
@@ -569,7 +569,7 @@ static void set_lut(data_t *data, enum pipe pipe)
static void clear_lut(data_t *data, enum pipe pipe)
{
- igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
}
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index c32f9c582e86..069f03a6c9f1 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -1110,21 +1110,24 @@ static void init_mode_params(struct modeset_params *params,
params->output = output;
params->mode = *mode;
- params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
+ params->primary.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
+ DRM_PLANE_TYPE_PRIMARY);
params->primary.fb = NULL;
params->primary.x = 0;
params->primary.y = 0;
params->primary.w = mode->hdisplay;
params->primary.h = mode->vdisplay;
- params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
+ params->cursor.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
+ DRM_PLANE_TYPE_CURSOR);
params->cursor.fb = NULL;
params->cursor.x = 0;
params->cursor.y = 0;
params->cursor.w = 64;
params->cursor.h = 64;
- params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
+ params->sprite.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
+ DRM_PLANE_TYPE_OVERLAY);
igt_require(params->sprite.plane);
params->sprite.fb = NULL;
params->sprite.x = 0;
@@ -3112,7 +3115,8 @@ static void page_flip_for_params(struct modeset_params *params,
switch (type) {
case FLIP_PAGEFLIP:
- rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
+ rc = drmModePageFlip(drm.fd,
+ igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
params->primary.fb->fb_id,
DRM_MODE_PAGE_FLIP_EVENT, NULL);
igt_assert_eq(rc, 0);
@@ -3724,7 +3728,9 @@ static void stridechange_subtest(const struct test_mode *t)
* Try to set a new stride. with the page flip api. This is allowed
* with the atomic page flip helper, but not with the legacy page flip.
*/
- rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id, new_fb->fb_id, 0, NULL);
+ rc = drmModePageFlip(drm.fd,
+ igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
+ new_fb->fb_id, 0, NULL);
igt_assert(rc == -EINVAL || rc == 0);
do_assertions(rc ? 0 : DONT_ASSERT_FBC_STATUS);
}
diff --git a/tests/intel/kms_joiner_helper.c b/tests/intel/kms_joiner_helper.c
index d2a3117fec26..a59efcd1217a 100644
--- a/tests/intel/kms_joiner_helper.c
+++ b/tests/intel/kms_joiner_helper.c
@@ -105,7 +105,7 @@ void igt_set_all_master_pipes_for_platform(igt_display_t *display, uint32_t *mas
*master_pipes = 0;
for (pipe = PIPE_A; pipe < IGT_MAX_PIPES - 1; pipe++) {
- if (display->pipes[pipe].valid && display->pipes[pipe + 1].valid) {
+ if (igt_crtc_for_pipe(display, pipe)->valid && igt_crtc_for_pipe(display, pipe + 1)->valid) {
*master_pipes |= BIT(pipe);
igt_info("Found master pipe %s\n", kmstest_pipe_name(pipe));
}
diff --git a/tests/intel/kms_pipe_stress.c b/tests/intel/kms_pipe_stress.c
index 282288f8e943..7d212a07cb75 100644
--- a/tests/intel/kms_pipe_stress.c
+++ b/tests/intel/kms_pipe_stress.c
@@ -588,8 +588,8 @@ static void stress_pipes(struct data *data, struct timespec *start,
if (!data->highest_mode[pipe])
continue;
- igt_assert_f(data->display.pipes[pipe].n_planes < MAX_PLANES,
- "Currently we don't support more than %d planes!",
+ igt_assert_f(igt_crtc_for_pipe(&data->display, pipe)->n_planes < MAX_PLANES,
+ "Currently we don't support more than %d planes!",
MAX_PLANES);
ret = pipe_stress(data, output, pipe,
@@ -748,7 +748,8 @@ static void destroy_framebuffers(struct data *data)
for (j = 0; j < MAX_PLANES; j++) {
if (data->fb[i * MAX_PLANES + j].fb_id) {
- igt_plane_set_fb(&data->display.pipes[i].planes[j], NULL);
+ igt_plane_set_fb(&igt_crtc_for_pipe(&data->display, i)->planes[j],
+ NULL);
igt_remove_fb(data->display.drm_fd, &data->fb[i * MAX_PLANES + j]);
data->fb[i * MAX_PLANES + j].fb_id = 0;
}
@@ -812,7 +813,8 @@ static void prepare_test(struct data *data)
data->pipe_crc[i] = NULL;
if (data->num_planes[i] == -1)
- data->num_planes[i] = data->display.pipes[i].n_planes;
+ data->num_planes[i] = igt_crtc_for_pipe(&data->display,
+ i)->n_planes;
igt_info("Max number of planes is %d for pipe %d\n",
data->num_planes[i], i);
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index dbdd7b3e3eaa..47b2db268568 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -697,7 +697,9 @@ static void test_deep_pkgc_state(data_t *data)
igt_plane_set_fb(primary, &data->fb_rgb);
igt_display_commit(&data->display);
/* Wait for the vblank to sync the frame time */
- igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
+ igt_wait_for_vblank_count(data->drm_fd,
+ igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
+ 1);
pre_val = read_pkgc_counter(data->debugfs_root_fd);
/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
usleep(delay * 0.5);
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index 41a42c60868a..3714153276b0 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -436,7 +436,7 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
data->output = output;
data->pipe_id = pipe;
- data->pipe = &display->pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(display, data->pipe_id);
data->mode = igt_output_get_mode(data->output);
if (!has_sharpness_filter(data->pipe)) {
diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
index 8fd5ace40b07..ef95b50cd1ab 100644
--- a/tests/intel/perf_pmu.c
+++ b/tests/intel/perf_pmu.c
@@ -1066,7 +1066,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
igt_wait_for_vblank(fd,
- display->pipes[data->pipe].crtc_offset);
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
index c6274bf616bf..351897e1ce68 100644
--- a/tests/intel/xe_pxp.c
+++ b/tests/intel/xe_pxp.c
@@ -845,7 +845,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
for_each_connected_output(display, output) {
mode = igt_output_get_mode(output);
- pipe = &display->pipes[output->pending_pipe];
+ pipe = igt_crtc_for_pipe(display, output->pending_pipe);
pipe_crc = igt_pipe_crc_new(fd, pipe->pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
@@ -902,7 +902,7 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
/* Do a modeset on all outputs */
for_each_connected_output(display, output) {
mode = igt_output_get_mode(output);
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
igt_output_set_pipe(output, i);
@@ -959,7 +959,7 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
/* Do a modeset on all outputs */
for_each_connected_output(display, output) {
mode = igt_output_get_mode(output);
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
igt_output_set_pipe(output, i);
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 6b2da0013b25..6762f172c4fa 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -299,7 +299,7 @@ static void test_init(data_t *data)
mode = igt_output_get_mode(data->output);
- data->crtc_id = data->display.pipes[data->pipe].crtc_id;
+ data->crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
data->refresh_rate = mode->vrefresh;
igt_output_set_pipe(data->output, data->pipe);
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index d25528e65fa5..01a058673913 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -488,7 +488,7 @@ plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_p
int zpos;
igt_plane_t *temp;
- temp = &data->display.pipes[pipe].planes[k];
+ temp = &igt_crtc_for_pipe(&data->display, pipe)->planes[k];
if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS))
continue;
@@ -1333,8 +1333,9 @@ static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output)
igt_display_reset(&data->display);
igt_output_set_pipe(output, pipe);
- data->primary = igt_pipe_get_plane_type(&data->display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
- data->pipe = &data->display.pipes[pipe];
+ data->primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
+ DRM_PLANE_TYPE_PRIMARY);
+ data->pipe = igt_crtc_for_pipe(&data->display, pipe);
mode = igt_output_get_mode(output);
igt_create_pattern_fb(data->drm_fd,
@@ -1418,7 +1419,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
igt_subtest_with_dynamic("plane-overlay-legacy") {
for_each_pipe_with_single_output(&data.display, pipe, output) {
igt_plane_t *overlay =
- igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
+ igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
+ DRM_PLANE_TYPE_OVERLAY);
uint32_t format = plane_get_igt_format(overlay);
if (!pipe_output_combo_valid(&data.display, pipe, output))
@@ -1456,7 +1458,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") {
for_each_pipe_with_single_output(&data.display, pipe, output) {
igt_plane_t *overlay =
- igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
+ igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
+ DRM_PLANE_TYPE_OVERLAY);
if (!pipe_output_combo_valid(&data.display, pipe, output))
continue;
@@ -1483,7 +1486,7 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
"only higher zpos planes cover the lower zpos ones.");
igt_subtest_with_dynamic("plane-immutable-zpos") {
for_each_pipe_with_single_output(&data.display, pipe, output) {
- int n_planes = data.display.pipes[pipe].n_planes;
+ int n_planes = igt_crtc_for_pipe(&data.display, pipe)->n_planes;
if (!pipe_output_combo_valid(&data.display, pipe, output))
continue;
@@ -1527,7 +1530,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
igt_subtest_with_dynamic("plane-cursor-legacy") {
for_each_pipe_with_single_output(&data.display, pipe, output) {
igt_plane_t *cursor =
- igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
+ igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
+ DRM_PLANE_TYPE_CURSOR);
if (!pipe_output_combo_valid(&data.display, pipe, output))
continue;
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 18f79136c30f..ab04b9f711b7 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -163,14 +163,14 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
if (!(i & 1))
igt_wait_for_vblank(data->drm_fd,
- data->display.pipes[pipe].crtc_offset);
+ igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
igt_plane_set_fb(primary, (i & 1) ? fb : NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
if (i & 1)
igt_wait_for_vblank(data->drm_fd,
- data->display.pipes[pipe].crtc_offset);
+ igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
igt_plane_set_fb(primary, (i & 1) ? NULL : fb);
}
@@ -327,7 +327,7 @@ static void setup_parms(data_t *data, enum pipe pipe,
uint64_t cursor_width, cursor_height;
unsigned sprite_width, sprite_height, prev_w, prev_h;
bool max_sprite_width, max_sprite_height, alpha = true;
- uint32_t n_planes = data->display.pipes[pipe].n_planes;
+ uint32_t n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
uint32_t n_overlays = 0, overlays[n_planes];
igt_plane_t *plane;
uint32_t iter_mask = 3;
@@ -438,7 +438,8 @@ static void setup_parms(data_t *data, enum pipe pipe,
igt_assert_f(n_planes >= 3, "No planes left to proceed with!");
if (n_overlays > 0) {
uint32_t plane_to_remove = hars_petruska_f54_1_random_unsafe_max(n_overlays);
- removed_plane = &data->display.pipes[pipe].planes[overlays[plane_to_remove]];
+ removed_plane = &igt_crtc_for_pipe(&data->display,
+ pipe)->planes[overlays[plane_to_remove]];
igt_plane_set_fb(removed_plane, NULL);
while (plane_to_remove < (n_overlays - 1)) {
overlays[plane_to_remove] = overlays[plane_to_remove + 1];
@@ -479,7 +480,7 @@ static void prepare_fencing(data_t *data, enum pipe pipe)
igt_require_sw_sync();
- n_planes = data->display.pipes[pipe].n_planes;
+ n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
timeline = calloc(n_planes, sizeof(*timeline));
igt_assert_f(timeline != NULL, "Failed to allocate memory for timelines\n");
thread = calloc(n_planes, sizeof(*thread));
@@ -510,7 +511,7 @@ static void unprepare_fencing(data_t *data, enum pipe pipe)
static void atomic_commit(data_t *data_v, enum pipe pipe, unsigned int flags, void *data, bool fencing)
{
if (fencing)
- igt_pipe_request_out_fence(&data_v->display.pipes[pipe]);
+ igt_pipe_request_out_fence(igt_crtc_for_pipe(&data_v->display, pipe));
igt_display_commit_atomic(&data_v->display, flags, data);
}
@@ -528,7 +529,7 @@ static int fd_completed(int fd)
static void wait_for_transition(data_t *data, enum pipe pipe, bool nonblocking, bool fencing)
{
if (fencing) {
- int fence_fd = data->display.pipes[pipe].out_fence_fd;
+ int fence_fd = igt_crtc_for_pipe(&data->display, pipe)->out_fence_fd;
if (!nonblocking)
igt_assert(fd_completed(fence_fd));
@@ -557,7 +558,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
{
drmModeModeInfo *mode, override_mode;
igt_plane_t *plane;
- igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
uint32_t iter_max, i;
struct plane_parms parms[pipe_obj->n_planes];
unsigned flags = 0;
@@ -804,8 +805,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
unset_output_pipe(&data->display);
for_each_pipe(&data->display, pipe) {
- igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
- DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
+ DRM_PLANE_TYPE_PRIMARY);
enum pipe old_pipe = plane->ref->pipe->pipe;
@@ -814,8 +815,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
* currently is holding the plane
*/
if (old_pipe != pipe) {
- igt_plane_t *old_plane = igt_pipe_get_plane_type(&data->display.pipes[old_pipe],
- DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_t *old_plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, old_pipe),
+ DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(old_plane, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
@@ -823,8 +824,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
}
for_each_pipe(&data->display, pipe) {
- igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
- DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
+ DRM_PLANE_TYPE_PRIMARY);
drmModeModeInfo *mode = NULL;
if (!(mask & (1 << pipe))) {
@@ -918,7 +919,7 @@ retry:
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, .5, .5, .5, &data->fbs[1]);
for_each_pipe(&data->display, i) {
- igt_pipe_t *pipe = &data->display.pipes[i];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, i);
igt_plane_t *plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
drmModeModeInfo *mode = NULL;
@@ -953,7 +954,7 @@ retry:
igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
if (fencing)
- igt_pipe_request_out_fence(&data->display.pipes[i]);
+ igt_pipe_request_out_fence(igt_crtc_for_pipe(&data->display, i));
} else {
igt_plane_set_fb(plane, NULL);
}
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 9100dd329e30..a8a094f4d1f1 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -125,7 +125,8 @@ static void test_init(data_t *data, bool physical)
for_each_pipe(display, i) {
data->pipe_id[i] = i;
- data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
+ data->pipe[i] = igt_crtc_for_pipe(&data->display,
+ data->pipe_id[i]);
data->primary[i] = igt_pipe_get_plane_type(
data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
data->pipe_crc[i] =
diff --git a/tests/kms_color.c b/tests/kms_color.c
index b3f3a34a559c..d7c713a775b0 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -724,16 +724,16 @@ prep_pipe(data_t *data, enum pipe p)
{
igt_require_pipe(&data->display, p);
- if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
+ if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
data->degamma_lut_size =
- igt_pipe_obj_get_prop(&data->display.pipes[p],
+ igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
IGT_CRTC_DEGAMMA_LUT_SIZE);
igt_assert_lt(0, data->degamma_lut_size);
}
- if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
+ if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
data->gamma_lut_size =
- igt_pipe_obj_get_prop(&data->display.pipes[p],
+ igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
IGT_CRTC_GAMMA_LUT_SIZE);
igt_assert_lt(0, data->gamma_lut_size);
}
@@ -746,7 +746,7 @@ static void test_setup(data_t *data, enum pipe p)
prep_pipe(data, p);
igt_require_pipe_crc(data->drm_fd);
- pipe = &data->display.pipes[p];
+ pipe = igt_crtc_for_pipe(&data->display, p);
igt_require(pipe->n_planes >= 0);
data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 143dff43e76b..3ca56138e97d 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -319,7 +319,7 @@ invalid_lut_sizes(data_t *data, enum pipe p,
enum igt_atomic_crtc_properties prop, int size)
{
igt_display_t *display = &data->display;
- igt_pipe_t *pipe = &display->pipes[p];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
struct drm_color_lut *lut;
size_t lut_size = size * sizeof(lut[0]);
@@ -362,7 +362,7 @@ invalid_degamma_lut_sizes(data_t *data, enum pipe p)
void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
{
igt_display_t *display = &data->display;
- igt_pipe_t *pipe = &display->pipes[p];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
void *ptr;
igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index bb8cbe703622..b3cc2cec4931 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -306,7 +306,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
static void
run_test(data_t *data, enum pipe pipe, igt_output_t *output)
{
- int n_planes = data->display.pipes[pipe].n_planes;
+ int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
igt_display_reset(&data->display);
if (!opt.user_seed)
@@ -346,7 +346,7 @@ run_tests_for_pipe(data_t *data)
if (!intel_pipe_output_combo_valid(&data->display))
continue;
- igt_require(data->display.pipes[pipe].n_planes > 0);
+ igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
run_test(data, pipe, output);
}
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 7ca2ca82c0bd..fe5a63eb0a64 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -215,7 +215,7 @@ static void cursor_disable(data_t *data)
/* do this wait here so it will not need to be added everywhere */
igt_wait_for_vblank_count(data->drm_fd,
- data->display.pipes[data->pipe].crtc_offset,
+ igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
data->vblank_wait_count);
}
@@ -301,7 +301,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
/* Extra vblank wait is because nonblocking cursor ioctl */
igt_wait_for_vblank_count(data->drm_fd,
- display->pipes[data->pipe].crtc_offset,
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
@@ -351,7 +351,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
*/
if (is_amdgpu_device(data->drm_fd))
igt_wait_for_vblank_count(data->drm_fd,
- display->pipes[data->pipe].crtc_offset,
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
@@ -736,7 +736,7 @@ static void timed_cursor_changes(data_t *data, void (changefunc)(data_t *, enum
/* Extra vblank wait is because nonblocking cursor ioctl */
igt_wait_for_vblank_count(data->drm_fd,
- data->display.pipes[data->pipe].crtc_offset,
+ igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc1);
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index 27f861378763..e84dfeb9aefb 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -127,7 +127,7 @@ static void cursor_move(data_t *data, int x, int y, int i)
(IS_CHERRYVIEW(data->devid) && data->pipe == PIPE_C &&
x < 0 && x > -data->curw));
igt_wait_for_vblank(data->drm_fd,
- display->pipes[data->pipe].crtc_offset);
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
}
#define XSTEP 8
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index ec35992bac6a..566d920124ad 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -289,13 +289,15 @@ static void stress(igt_display_t *display,
if (pipe < 0) {
num_crtcs = igt_display_n_crtcs(display);
for_each_pipe(display, n) {
- arg.crtc_id = crtc_id[n] = display->pipes[n].crtc_id;
+ arg.crtc_id = crtc_id[n] = igt_crtc_for_pipe(display,
+ n)->crtc_id;
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
}
} else {
num_crtcs = 1;
- if(display->pipes[pipe].valid) {
- arg.crtc_id = crtc_id[0] = display->pipes[pipe].crtc_id;
+ if(igt_crtc_for_pipe(display, pipe)->valid) {
+ arg.crtc_id = crtc_id[0] = igt_crtc_for_pipe(display,
+ pipe)->crtc_id;
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
}
}
@@ -410,7 +412,7 @@ static void set_cursor_hotspot(igt_plane_t *cursor, int hot_x, int hot_y)
static void populate_cursor_args(igt_display_t *display, enum pipe pipe,
struct drm_mode_cursor *arg, struct igt_fb *fb)
{
- arg->crtc_id = display->pipes[pipe].crtc_id;
+ arg->crtc_id = igt_crtc_for_pipe(display, pipe)->crtc_id;
arg->flags = DRM_MODE_CURSOR_MOVE;
arg->x = 128;
arg->y = 128;
@@ -468,7 +470,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
static void flip_nonblocking(igt_display_t *display, enum pipe pipe_id, bool atomic, struct igt_fb *fb, void *data)
{
- igt_pipe_t *pipe = &display->pipes[pipe_id];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
int ret;
@@ -532,7 +534,7 @@ static void transition_nonblocking(igt_display_t *display, enum pipe pipe_id,
struct igt_fb *prim_fb, struct igt_fb *argb_fb,
bool hide_sprite)
{
- igt_pipe_t *pipe = &display->pipes[pipe_id];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_plane_t *sprite = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_OVERLAY);
@@ -600,8 +602,8 @@ static void prepare_flip_test(igt_display_t *display,
if (mode == flip_test_atomic_transitions ||
mode == flip_test_atomic_transitions_varying_size) {
- igt_require(display->pipes[flip_pipe].n_planes > 1 &&
- display->pipes[flip_pipe].planes[1].type != DRM_PLANE_TYPE_CURSOR);
+ igt_require(igt_crtc_for_pipe(display, flip_pipe)->n_planes > 1 &&
+ igt_crtc_for_pipe(display, flip_pipe)->planes[1].type != DRM_PLANE_TYPE_CURSOR);
igt_create_color_pattern_fb(display->drm_fd, prim_fb->width, prim_fb->height,
DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR, .1, .1, .1, argb_fb);
@@ -633,8 +635,8 @@ static void flip(igt_display_t *display,
if (mode == flip_test_atomic_transitions ||
mode == flip_test_atomic_transitions_varying_size) {
- igt_require(igt_pipe_get_plane_type(&display->pipes[flip_pipe],
- DRM_PLANE_TYPE_OVERLAY));
+ igt_require(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, flip_pipe),
+ DRM_PLANE_TYPE_OVERLAY));
}
set_fb_on_crtc(display, flip_pipe, output, &fb_info);
@@ -1289,11 +1291,11 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
continue;
}
- if (vbl.crtc_id == display->pipes[pipe].crtc_id) {
+ if (vbl.crtc_id == igt_crtc_for_pipe(display, pipe)->crtc_id) {
vblank_start = kmstest_get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
flip_nonblocking(display, pipe, atomic, &fb_info, (void*)(ptrdiff_t)vblank_start);
} else {
- igt_assert(vbl.crtc_id == display->pipes[pipe2].crtc_id);
+ igt_assert(vbl.crtc_id == igt_crtc_for_pipe(display, pipe2)->crtc_id);
nloops--;
diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
index b8b1fa8e555c..a5588904b0d3 100644
--- a/tests/kms_display_modes.c
+++ b/tests/kms_display_modes.c
@@ -103,8 +103,10 @@ static void run_extendedmode_basic(data_t *data,
igt_create_color_fb(data->drm_fd, mode[1]->hdisplay, mode[1]->vdisplay,
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, 0, 0, 1, &fbs[1]);
- plane[0] = igt_pipe_get_plane_type(&display->pipes[pipe1], DRM_PLANE_TYPE_PRIMARY);
- plane[1] = igt_pipe_get_plane_type(&display->pipes[pipe2], DRM_PLANE_TYPE_PRIMARY);
+ plane[0] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
+ DRM_PLANE_TYPE_PRIMARY);
+ plane[1] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
+ DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(plane[0], &fbs[0]);
igt_fb_set_size(&fbs[0], plane[0], mode[0]->hdisplay, mode[0]->vdisplay);
@@ -157,10 +159,12 @@ static void run_extendedmode_basic(data_t *data,
igt_output_set_pipe(output1, PIPE_NONE);
igt_output_set_pipe(output2, PIPE_NONE);
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe1],
- DRM_PLANE_TYPE_PRIMARY), NULL);
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe2],
- DRM_PLANE_TYPE_PRIMARY), NULL);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
+ DRM_PLANE_TYPE_PRIMARY),
+ NULL);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
+ DRM_PLANE_TYPE_PRIMARY),
+ NULL);
igt_assert_f(igt_fit_modes_in_bw(display), "Unable to fit modes in bw\n");
igt_display_commit2(display, COMMIT_ATOMIC);
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index a4cb004e8e24..102bab1debd1 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -74,7 +74,7 @@ typedef struct {
/* Prepare test data. */
static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
{
- igt_pipe_t *pipe = &data->display.pipes[p];
+ igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, p);
igt_assert(pipe);
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index ab0ec47cbfad..45840945d658 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -213,7 +213,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
igt_display_t *display = &data->display;
data->pipe_id = pipe;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_assert(data->pipe);
igt_display_reset(display);
diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 78c73e72ffa3..2b385d4931f2 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -277,7 +277,7 @@ test_output(data_t *data)
kmstest_unset_all_crtcs(data->drm_fd, data->res);
- crtc_id = data->display.pipes[data->pipe].crtc_id;
+ crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
ret = drmModeSetCrtc(data->drm_fd, crtc_id,
fb.fb_id, 0, 0,
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index 495b9aebba53..df16fc7af78e 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -153,7 +153,7 @@ static int prepare_crtc(data_t *data, bool is_master)
lease_t *lease = is_master ? &data->master : &data->lease;
igt_display_t *display = &lease->display;
igt_output_t *output = connector_id_to_output(display, data->connector_id);
- enum pipe pipe = display->pipes[data->pipe].pipe;
+ enum pipe pipe = igt_crtc_for_pipe(display, data->pipe)->pipe;
igt_plane_t *primary;
int ret;
@@ -179,7 +179,8 @@ static int prepare_crtc(data_t *data, bool is_master)
if (ret)
return ret;
- igt_wait_for_vblank(lease->fd, display->pipes[pipe].crtc_offset);
+ igt_wait_for_vblank(lease->fd,
+ igt_crtc_for_pipe(display, pipe)->crtc_offset);
lease->output = output;
lease->mode = mode;
@@ -377,7 +378,7 @@ static void page_flip_implicit_plane(data_t *data)
display = &data->master.display;
igt_wait_for_vblank(data->master.fd,
- display->pipes[pipe].crtc_offset);
+ igt_crtc_for_pipe(display, pipe)->crtc_offset);
do_or_die(drmModePageFlip(data->lease.fd, data->crtc_id,
data->master.primary_fb.fb_id,
@@ -388,7 +389,7 @@ static void page_flip_implicit_plane(data_t *data)
do_or_die(create_lease(data->master.fd, &mcl, &data->lease.fd));
igt_wait_for_vblank(data->master.fd,
- display->pipes[pipe].crtc_offset);
+ igt_crtc_for_pipe(display, pipe)->crtc_offset);
igt_assert_eq(drmModePageFlip(data->lease.fd, data->crtc_id,
data->master.primary_fb.fb_id,
@@ -714,8 +715,9 @@ static void lease_unleased_crtc(data_t *data)
for_each_pipe(&data->master.display, p) {
if (bad_crtc_id != 0)
break;
- if (data->master.display.pipes[p].crtc_id != data->crtc_id)
- bad_crtc_id = data->master.display.pipes[p].crtc_id;
+ if (igt_crtc_for_pipe(&data->master.display, p)->crtc_id != data->crtc_id)
+ bad_crtc_id = igt_crtc_for_pipe(&data->master.display,
+ p)->crtc_id;
}
/* Give up if there isn't another crtc */
@@ -895,11 +897,11 @@ static void invalid_create_leases(data_t *data)
igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
/* no connector, non-universal_plane */
- object_ids[0] = data->master.display.pipes[0].crtc_id;
+ object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
/* sanity check */
- object_ids[0] = data->master.display.pipes[0].crtc_id;
+ object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
object_ids[1] = data->master.display.outputs[0].id;
mcl.object_count = 2;
igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
@@ -910,7 +912,7 @@ static void invalid_create_leases(data_t *data)
igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
/* sanity check */
- object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
+ object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
mcl.object_count = 3;
igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
@@ -1075,9 +1077,9 @@ static int _create_simple_lease(int master_fd, data_t *data, int expected_ret)
uint32_t object_ids[3];
struct drm_mode_create_lease mcl;
- object_ids[0] = data->master.display.pipes[0].crtc_id;
+ object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
object_ids[1] = data->master.display.outputs[0].id;
- object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
+ object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
mcl.object_count = 3;
@@ -1165,12 +1167,12 @@ static void implicit_plane_lease(data_t *data)
struct drm_mode_create_lease mcl;
struct drm_mode_get_lease mgl;
int ret;
- uint32_t cursor_id = igt_pipe_get_plane_type(&data->master.display.pipes[0],
+ uint32_t cursor_id = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
DRM_PLANE_TYPE_CURSOR)->drm_plane->plane_id;
- object_ids[0] = data->master.display.pipes[0].crtc_id;
+ object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
object_ids[1] = data->master.display.outputs[0].id;
- object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
+ object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
mcl.object_count = 3;
@@ -1298,11 +1300,12 @@ int igt_main()
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(data.pipe),
igt_output_name(output)) {
- data.crtc_id = display->pipes[data.pipe].crtc_id;
+ data.crtc_id = igt_crtc_for_pipe(display,
+ data.pipe)->crtc_id;
data.connector_id = output->id;
data.plane_id =
- igt_pipe_get_plane_type(&data.master.display.pipes[data.pipe],
- DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
+ igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.master.display, data.pipe),
+ DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
f->func(&data);
}
terminate_lease(data.lease.fd);
diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
index 28c71fdec00a..3a1944b48874 100644
--- a/tests/kms_multipipe_modeset.c
+++ b/tests/kms_multipipe_modeset.c
@@ -75,7 +75,7 @@ static void run_test(data_t *data, int valid_outputs)
/* Collect reference CRC by Committing individually on all outputs*/
for_each_connected_output(display, output) {
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
mode = NULL;
@@ -100,7 +100,7 @@ static void run_test(data_t *data, int valid_outputs)
i = 0;
/* Simultaneously commit on all outputs */
for_each_connected_output(display, output) {
- pipe = &display->pipes[i];
+ pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
mode = NULL;
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index ca8f76c8aa27..1699b68ff3d0 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -169,11 +169,13 @@ static void test_read_crc(data_t *data, enum pipe pipe,
pipe_crc = igt_pipe_crc_new_nonblock(data->drm_fd, pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_wait_for_vblank(data->drm_fd, display->pipes[pipe].crtc_offset);
+ igt_wait_for_vblank(data->drm_fd,
+ igt_crtc_for_pipe(display, pipe)->crtc_offset);
igt_pipe_crc_start(pipe_crc);
igt_wait_for_vblank_count(data->drm_fd,
- display->pipes[pipe].crtc_offset, N_CRCS);
+ igt_crtc_for_pipe(display, pipe)->crtc_offset,
+ N_CRCS);
n_crcs = igt_pipe_crc_get_crcs(pipe_crc, N_CRCS+1, &crcs);
igt_pipe_crc_stop(pipe_crc);
igt_pipe_crc_free(pipe_crc);
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 5f18eac13ac1..84455e77bbb2 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -127,7 +127,7 @@ static color_t blue = { 0.0f, 0.0f, 1.0f };
*/
static void test_init(data_t *data, enum pipe pipe)
{
- igt_require(data->display.pipes[pipe].n_planes > 0);
+ igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
if (data->pipe_crc)
igt_pipe_crc_free(data->pipe_crc);
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
@@ -337,7 +337,7 @@ test_plane_position_with_output(data_t *data,
static void
test_plane_position(data_t *data, enum pipe pipe)
{
- int n_planes = data->display.pipes[pipe].n_planes;
+ int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
igt_output_t *output = data->output;
igt_crc_t reference_crc;
@@ -522,7 +522,7 @@ static const color_t colors_reduced[] = {
static void set_legacy_lut(data_t *data, enum pipe pipe,
uint16_t mask)
{
- igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
drmModeCrtc *drm_crtc;
uint16_t *lut;
int i, lut_size;
@@ -549,7 +549,7 @@ static void set_legacy_lut(data_t *data, enum pipe pipe,
static bool set_c8_legacy_lut(data_t *data, enum pipe pipe,
uint16_t mask)
{
- igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
drmModeCrtc *drm_crtc;
uint16_t *r, *g, *b;
int i, lut_size;
@@ -793,7 +793,7 @@ restart_round:
igt_display_t *display = &data->display;
igt_wait_for_vblank(data->drm_fd,
- display->pipes[pipe].crtc_offset);
+ igt_crtc_for_pipe(display, pipe)->crtc_offset);
}
}
diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index 037a5c1060a2..99ce90616720 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -214,7 +214,8 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe)
drmModeModeInfo *mode;
igt_display_t *display = &data->display;
int w, h;
- igt_plane_t *primary = igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_t *primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe),
+ DRM_PLANE_TYPE_PRIMARY);
/* create the pipe_crc object for this pipe */
igt_pipe_crc_free(data->pipe_crc);
@@ -387,7 +388,8 @@ static void constant_alpha_mid(data_t *data, enum pipe pipe, igt_plane_t *plane)
igt_crc_t ref_crc, crc;
if (plane->type != DRM_PLANE_TYPE_PRIMARY)
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
+ &data->gray_fb);
igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "None");
igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7fff);
@@ -412,7 +414,8 @@ static void constant_alpha_max(data_t *data, enum pipe pipe, igt_plane_t *plane)
igt_crc_t ref_crc, crc;
if (plane->type != DRM_PLANE_TYPE_PRIMARY)
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
+ &data->gray_fb);
igt_plane_set_fb(plane, &data->argb_fb_100);
igt_display_commit2(display, COMMIT_ATOMIC);
@@ -442,7 +445,8 @@ static void alpha_7efc(data_t *data, enum pipe pipe, igt_plane_t *plane)
igt_crc_t ref_crc = {}, crc = {};
if (plane->type != DRM_PLANE_TYPE_PRIMARY)
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
+ &data->gray_fb);
igt_display_commit2(display, COMMIT_ATOMIC);
igt_pipe_crc_start(data->pipe_crc);
@@ -496,7 +500,8 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
/* Set a background color on the primary fb for testing */
if (plane->type != DRM_PLANE_TYPE_PRIMARY)
- igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
+ igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
+ &data->gray_fb);
igt_require(igt_plane_try_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "Coverage"));
igt_plane_set_fb(plane, &data->argb_fb_cov_7e);
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 3f9afe674259..7817d6df9f1d 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -94,7 +94,7 @@ static void test_init(data_t *data, enum pipe pipe_id, igt_output_t *output,
unsigned int flags)
{
data->pipe_id = pipe_id;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
data->output = output;
data->mode = igt_output_get_mode(data->output);
@@ -188,7 +188,9 @@ static void test_cursor_pos(data_t *data, int x, int y, unsigned int flags)
/* Wait for one more vblank since cursor updates are not
* synchronized to the same frame on AMD hw */
if(is_amdgpu_device(data->drm_fd))
- igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[data->pipe_id].crtc_offset, 1);
+ igt_wait_for_vblank_count(data->drm_fd,
+ igt_crtc_for_pipe(&data->display, data->pipe_id)->crtc_offset,
+ 1);
igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &test_crc);
igt_pipe_crc_stop(data->pipe_crc);
@@ -326,7 +328,7 @@ int igt_main()
igt_subtest_with_dynamic_f("%s", tests[i].name) {
for_each_pipe_with_single_output(&data.display, pipe, output) {
if ((tests[i].flags & TEST_OVERLAY) &&
- !igt_pipe_get_plane_type(&data.display.pipes[pipe],
+ !igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
DRM_PLANE_TYPE_OVERLAY))
continue;
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 2f1bd16a1b33..0ce12749f7c8 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -403,7 +403,7 @@ static void
test_plane_position(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t modifier)
{
int n_planes = opt.all_planes ?
- data->display.pipes[pipe].n_planes : DEFAULT_N_PLANES;
+ igt_crtc_for_pipe(&data->display, pipe)->n_planes : DEFAULT_N_PLANES;
if (!opt.user_seed)
opt.seed = time(NULL);
@@ -464,7 +464,7 @@ static void test_plane_position_2_display(data_t *data, enum pipe pipe1, enum pi
color_t blue = { 0.0f, 0.0f, 1.0f };
igt_crc_t crc1, crc2;
int n_planes = opt.all_planes ?
- data->display.pipes[0].n_planes : DEFAULT_N_PLANES;
+ igt_crtc_for_pipe(&data->display, 0)->n_planes : DEFAULT_N_PLANES;
/*
* Note: We could use the dynamic way of calculating the maximum planes here
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index bdb290b5430e..10b168615226 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -963,7 +963,7 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
w2 = get_width(mode, sf_plane2);
h2 = get_height(mode, sf_plane2);
- n_planes = display->pipes[pipe].n_planes;
+ n_planes = igt_crtc_for_pipe(display, pipe)->n_planes;
igt_require(n_planes >= 2);
switch (test_type) {
@@ -990,9 +990,9 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
for (int k = 0; k < n_planes - 1; k += 2) {
igt_plane_t *p1, *p2;
- p1 = &display->pipes[pipe].planes[k];
+ p1 = &igt_crtc_for_pipe(display, pipe)->planes[k];
igt_require(p1);
- p2 = &display->pipes[pipe].planes[k+1];
+ p2 = &igt_crtc_for_pipe(display, pipe)->planes[k+1];
igt_require(p2);
if (p1->type == DRM_PLANE_TYPE_CURSOR || p2->type == DRM_PLANE_TYPE_CURSOR)
@@ -1015,7 +1015,7 @@ static void
test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
{
igt_display_t *display = &d->display;
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
int width, height;
igt_plane_t *plane[3];
drmModeModeInfo *mode;
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 64514b4d2676..95bfe293a242 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -291,7 +291,9 @@ static void run_crtc_property_tests(igt_display_t *display, enum pipe pipe, igt_
igt_info("Testing crtc properties on %s (output: %s)\n", kmstest_pipe_name(pipe), output->name);
- test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC, display->pipes[pipe].crtc_id, atomic, false);
+ test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC,
+ igt_crtc_for_pipe(display, pipe)->crtc_id, atomic,
+ false);
cleanup_pipe(display, pipe, output, &fb);
}
@@ -482,7 +484,9 @@ static void test_object_invalid_properties(igt_display_t *display,
enum pipe pipe;
for_each_pipe(display, pipe)
- test_invalid_properties(display->drm_fd, id, type, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
+ test_invalid_properties(display->drm_fd, id, type,
+ igt_crtc_for_pipe(display, pipe)->crtc_id,
+ DRM_MODE_OBJECT_CRTC, atomic);
for_each_pipe(display, pipe)
for_each_plane_on_pipe(display, pipe, plane)
@@ -888,7 +892,9 @@ static void invalid_properties(igt_display_t *display, bool atomic)
igt_skip_on(!display->is_atomic);
for_each_pipe(display, pipe)
- test_object_invalid_properties(display, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
+ test_object_invalid_properties(display,
+ igt_crtc_for_pipe(display, pipe)->crtc_id,
+ DRM_MODE_OBJECT_CRTC, atomic);
for_each_pipe(display, pipe)
for_each_plane_on_pipe(display, pipe, plane)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 6f10da8fbf7c..d37a14e275f7 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -1353,7 +1353,8 @@ int igt_main_args("", long_opts, help_str, opt_handler, &data)
igt_display_require_output(&data.display);
for_each_pipe_with_valid_output(&data.display, pipe, output) {
- igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
+ igt_plane_t *primary = &igt_crtc_for_pipe(&data.display,
+ pipe)->planes[0];
test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
break;
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 46edcc50d2ab..80a586ce62f5 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -123,7 +123,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
igt_wait_for_vblank(fd,
- display->pipes[data->pipe].crtc_offset);
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
index d6f5eda7d841..003e6ea408e8 100644
--- a/tests/kms_tiled_display.c
+++ b/tests/kms_tiled_display.c
@@ -328,7 +328,7 @@ static data_connector_t *conn_for_crtc(data_t *data, unsigned int crtc_id)
for (int i = 0; i < data->num_h_tiles; i++) {
data_connector_t *conn = &data->conns[i];
- if (data->display.pipes[conn->pipe].crtc_id == crtc_id)
+ if (igt_crtc_for_pipe(&data->display, conn->pipe)->crtc_id == crtc_id)
return conn;
}
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 47c805cd36cd..a4913ec13819 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -172,10 +172,10 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
* drm_universal_plane_init(), the type enum can get interpreted as a
* boolean and show up in userspace as the wrong type.
*/
- for (i = 0; i < display->pipes[pipe].n_planes; i++)
- if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY)
+ for (i = 0; i < igt_crtc_for_pipe(display, pipe)->n_planes; i++)
+ if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_PRIMARY)
num_primary++;
- else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR)
+ else if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_CURSOR)
num_cursor++;
igt_warn_on(num_primary != 1);
@@ -711,7 +711,9 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
* framebuffer.
*/
if (is_xe_device(data->drm_fd))
- igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 2);
+ igt_wait_for_vblank_count(data->drm_fd,
+ igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
+ 2);
/* We should be back to the same framebuffer count as when we started */
count2 = intel_gem_fb_count(data);
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index bce767a2ab83..1803308c56e1 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -144,7 +144,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
igt_wait_for_vblank(fd,
- display->pipes[data->pipe].crtc_offset);
+ igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
@@ -251,7 +251,7 @@ static void crtc_id_subtest(data_t *data, int fd)
uint64_t val;
union drm_wait_vblank vbl;
- crtc_id = display->pipes[p].crtc_id;
+ crtc_id = igt_crtc_for_pipe(display, p)->crtc_id;
if (drmGetCap(display->drm_fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &val) == 0)
expected_crtc_id = crtc_id;
else
diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
index d21301733b5c..bcb7e00b0b07 100644
--- a/tools/amd_hdmi_compliance.c
+++ b/tools/amd_hdmi_compliance.c
@@ -385,7 +385,7 @@ static void test_init(data_t *data, int conn_id)
igt_display_t *display = &data->display;
data->pipe_id = PIPE_A;
- data->pipe = &data->display.pipes[data->pipe_id];
+ data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
igt_display_reset(display);
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (4 preceding siblings ...)
2025-12-10 9:38 ` [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere Ville Syrjala
@ 2025-12-10 9:38 ` Ville Syrjala
2025-12-10 14:25 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*() Ville Syrjala
` (6 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:38 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The igt_wait_for_vblank_count() docs are talking nonsense about
DRM_IOCTL_WAIT_VBLANK taking some kind of 'pipe' parameter.
What it actually takes is the original (short-sighted)
DRM_VBLANK_SECONDARY flag, and the later extension in the
form of DRM_VBLANK_HIGH_CRTC_MASK.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 951144bae955..3e7543ae1d88 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5827,15 +5827,6 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
* @count: Number of vblanks to wait on
*
* Waits for a given number of vertical blank intervals
- *
- * In DRM, 'Pipe', as understood by DRM_IOCTL_WAIT_VBLANK,
- * is actually an offset of crtc in drmModeRes.crtcs
- * and it has nothing to do with a hardware concept of a pipe.
- * They can match but don't have to in case of DRM lease or
- * non-contiguous pipes.
- *
- * To make thing clear we are calling DRM_IOCTL_WAIT_VBLANK's 'pipe'
- * a crtc_offset.
*/
void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count)
{
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*()
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (5 preceding siblings ...)
2025-12-10 9:38 ` [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK Ville Syrjala
@ 2025-12-10 9:39 ` Ville Syrjala
2025-12-10 14:29 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc() Ville Syrjala
` (5 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:39 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Raise the abstraction level a bit by passing the entire
igt_pipe_t to igt_wait_for_vblank*().
One step towards using 'crtcs' instead of 'pipes'.
Done with cocci (with the docs fixed up by hand):
#include "scripts/iterators.cocci"
@@
expression FD, PIPE, COUNT;
@@
(
- igt_wait_for_vblank_count(FD, PIPE->crtc_offset, COUNT)
+ igt_wait_for_vblank_count(PIPE, COUNT)
|
- igt_wait_for_vblank(FD, PIPE->crtc_offset)
+ igt_wait_for_vblank(PIPE)
)
@plane@
igt_display_t *display;
igt_plane_t *plane;
@@
- &display->pipes[plane->pipe->pipe]
+ plane->pipe
@depends on plane@
expression E;
identifier DISPLAY;
@@
- igt_display_t *DISPLAY = E;
... when != DISPLAY;
@@
typedef igt_pipe_t;
identifier FD, CRTC_OFFSET, COUNT;
@@
igt_wait_for_vblank_count(
- int FD, int CRTC_OFFSET
+ igt_pipe_t *crtc
,int COUNT
)
{
<...
(
- FD
+ crtc->display->drm_fd
|
- CRTC_OFFSET
+ crtc->crtc_offset
)
...>
}
@@
identifier FD, CRTC_OFFSET, COUNT;
@@
void igt_wait_for_vblank_count(
- int FD,
- int CRTC_OFFSET
+ igt_pipe_t *crtc
,int COUNT
);
@@
typedef igt_pipe_t;
identifier FD, CRTC_OFFSET;
@@
igt_wait_for_vblank(
- int FD, int CRTC_OFFSET
+ igt_pipe_t *crtc
)
{
<...
(
- FD
+ crtc->display->drm_fd
|
- CRTC_OFFSET
+ crtc->crtc_offset
)
...>
}
@@
identifier FD, CRTC_OFFSET;
@@
void igt_wait_for_vblank(
- int FD,
- int CRTC_OFFSET
+ igt_pipe_t *crtc
);
---
lib/igt_kms.c | 12 ++++++------
lib/igt_kms.h | 4 ++--
tests/amdgpu/amd_ilr.c | 3 +--
tests/intel/kms_pm_dc.c | 4 +---
tests/intel/perf_pmu.c | 3 +--
tests/kms_atomic_transition.c | 6 ++----
tests/kms_color.c | 24 ++++++++----------------
tests/kms_cursor_crc.c | 14 +++++---------
tests/kms_cursor_edge_walk.c | 3 +--
tests/kms_lease.c | 9 +++------
tests/kms_pipe_crc_basic.c | 8 +++-----
tests/kms_plane.c | 3 +--
tests/kms_plane_cursor.c | 3 +--
tests/kms_sequence.c | 3 +--
tests/kms_universal_plane.c | 3 +--
tests/kms_vblank.c | 3 +--
16 files changed, 38 insertions(+), 67 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 3e7543ae1d88..3b71cee61635 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5823,28 +5823,28 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
/**
* igt_wait_for_vblank_count:
* @drm_fd: A drm file descriptor
- * @crtc_offset: offset of the crtc in drmModeRes.crtcs
+ * @crtc: the CRTC
* @count: Number of vblanks to wait on
*
* Waits for a given number of vertical blank intervals
*/
-void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count)
+void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
{
- igt_assert(__igt_vblank_wait(drm_fd, crtc_offset, count) == 0);
+ igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, count) == 0);
}
/**
* igt_wait_for_vblank:
* @drm_fd: A drm file descriptor
- * @crtc_offset: offset of a crtc in drmModeRes.crtcs
+ * @crtc: the CRTC
*
* See #igt_wait_for_vblank_count for more details
*
* Waits for 1 vertical blank intervals
*/
-void igt_wait_for_vblank(int drm_fd, int crtc_offset)
+void igt_wait_for_vblank(igt_pipe_t *crtc)
{
- igt_assert(__igt_vblank_wait(drm_fd, crtc_offset, 1) == 0);
+ igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, 1) == 0);
}
/**
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index fd3c8448983e..a9d2d9027ae8 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -637,8 +637,8 @@ static inline bool igt_plane_has_rotation(igt_plane_t *plane, igt_rotation_t rot
}
const char *igt_plane_rotation_name(igt_rotation_t rotation);
-void igt_wait_for_vblank(int drm_fd, int crtc_offset);
-void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count);
+void igt_wait_for_vblank(igt_pipe_t *crtc);
+void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count);
/**
* igt_output_is_connected:
diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
index 680b46763af3..5875dc36d69b 100644
--- a/tests/amdgpu/amd_ilr.c
+++ b/tests/amdgpu/amd_ilr.c
@@ -180,8 +180,7 @@ static void test_ilr_policy(data_t *data, igt_output_t *output)
/* Secondly check trained BW is sufficient.
* If BW is insufficient, crc retrieving will timeout
*/
- igt_wait_for_vblank_count(data->drm_fd,
- data->pipe->crtc_offset, 10);
+ igt_wait_for_vblank_count(data->pipe, 10);
igt_pipe_crc_collect_crc(data->pipe_crc, &data->crc_dprx);
crc_str = igt_crc_to_string(&data->crc_dprx);
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 47b2db268568..8cc260fac0e5 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -697,9 +697,7 @@ static void test_deep_pkgc_state(data_t *data)
igt_plane_set_fb(primary, &data->fb_rgb);
igt_display_commit(&data->display);
/* Wait for the vblank to sync the frame time */
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
- 1);
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, pipe), 1);
pre_val = read_pkgc_counter(data->debugfs_root_fd);
/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
usleep(delay * 0.5);
diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
index ef95b50cd1ab..5d96f91a6704 100644
--- a/tests/intel/perf_pmu.c
+++ b/tests/intel/perf_pmu.c
@@ -1065,8 +1065,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
- igt_wait_for_vblank(fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index ab04b9f711b7..63c7cf9f9f08 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -162,15 +162,13 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
igt_display_commit2(&data->display, COMMIT_ATOMIC);
if (!(i & 1))
- igt_wait_for_vblank(data->drm_fd,
- igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(&data->display, pipe));
igt_plane_set_fb(primary, (i & 1) ? fb : NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
if (i & 1)
- igt_wait_for_vblank(data->drm_fd,
- igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(&data->display, pipe));
igt_plane_set_fb(primary, (i & 1) ? NULL : fb);
}
diff --git a/tests/kms_color.c b/tests/kms_color.c
index d7c713a775b0..c68ccafd390a 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -130,8 +130,7 @@ static bool test_pipe_degamma(data_t *data,
paint_rectangles(data, mode, red_green_blue, &fb);
igt_plane_set_fb(primary, &fb);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
/*
@@ -142,8 +141,7 @@ static bool test_pipe_degamma(data_t *data,
igt_plane_set_fb(primary, &fb);
set_degamma(data, primary->pipe, degamma_full);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
/*
@@ -219,8 +217,7 @@ static bool test_pipe_gamma(data_t *data,
paint_rectangles(data, mode, red_green_blue, &fb);
igt_plane_set_fb(primary, &fb);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
/*
@@ -230,8 +227,7 @@ static bool test_pipe_gamma(data_t *data,
paint_gradient_rectangles(data, mode, red_green_blue, &fb);
igt_plane_set_fb(primary, &fb);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
/*
@@ -315,8 +311,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
paint_rectangles(data, mode, red_green_blue, &fb);
igt_plane_set_fb(primary, &fb);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
/*
@@ -332,8 +327,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
igt_assert_eq(drmModeCrtcSetGamma(data->drm_fd, primary->pipe->crtc_id,
legacy_lut_size, red_lut, green_lut, blue_lut), 0);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
/*
@@ -574,8 +568,7 @@ static bool test_pipe_ctm(data_t *data,
igt_plane_set_fb(primary, &fb);
set_ctm(primary->pipe, ctm_identity);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_software);
/* With CTM transformation. */
@@ -583,8 +576,7 @@ static bool test_pipe_ctm(data_t *data,
igt_plane_set_fb(primary, &fb);
set_ctm(primary->pipe, ctm_matrix);
igt_display_commit(&data->display);
- igt_wait_for_vblank(data->drm_fd,
- primary->pipe->crtc_offset);
+ igt_wait_for_vblank(primary->pipe);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_hardware);
/*
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index fe5a63eb0a64..ff682b93a242 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -214,8 +214,7 @@ static void cursor_disable(data_t *data)
igt_display_commit(&data->display);
/* do this wait here so it will not need to be added everywhere */
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe),
data->vblank_wait_count);
}
@@ -300,8 +299,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
igt_display_commit(display);
/* Extra vblank wait is because nonblocking cursor ioctl */
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(display, data->pipe),
data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
@@ -350,9 +348,8 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
* synchronized to the same frame on AMD HW
*/
if (is_amdgpu_device(data->drm_fd))
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
- data->vblank_wait_count);
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(display, data->pipe),
+ data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
igt_assert_crc_equal(&crc, hwcrc);
@@ -735,8 +732,7 @@ static void timed_cursor_changes(data_t *data, void (changefunc)(data_t *, enum
igt_display_commit(&data->display);
/* Extra vblank wait is because nonblocking cursor ioctl */
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe),
data->vblank_wait_count);
igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc1);
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index e84dfeb9aefb..ff8fe3402fe8 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -126,8 +126,7 @@ static void cursor_move(data_t *data, int x, int y, int i)
igt_assert(drmModeMoveCursor(data->drm_fd, crtc_id, x, y) == 0 ||
(IS_CHERRYVIEW(data->devid) && data->pipe == PIPE_C &&
x < 0 && x > -data->curw));
- igt_wait_for_vblank(data->drm_fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
}
#define XSTEP 8
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index df16fc7af78e..d2e55ffcf538 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -179,8 +179,7 @@ static int prepare_crtc(data_t *data, bool is_master)
if (ret)
return ret;
- igt_wait_for_vblank(lease->fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
lease->output = output;
lease->mode = mode;
@@ -377,8 +376,7 @@ static void page_flip_implicit_plane(data_t *data)
display = &data->master.display;
- igt_wait_for_vblank(data->master.fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
do_or_die(drmModePageFlip(data->lease.fd, data->crtc_id,
data->master.primary_fb.fb_id,
@@ -388,8 +386,7 @@ static void page_flip_implicit_plane(data_t *data)
object_ids[mcl.object_count++] = wrong_plane_id;
do_or_die(create_lease(data->master.fd, &mcl, &data->lease.fd));
- igt_wait_for_vblank(data->master.fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
igt_assert_eq(drmModePageFlip(data->lease.fd, data->crtc_id,
data->master.primary_fb.fb_id,
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 1699b68ff3d0..0a52b651ee72 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -169,13 +169,11 @@ static void test_read_crc(data_t *data, enum pipe pipe,
pipe_crc = igt_pipe_crc_new_nonblock(data->drm_fd, pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_wait_for_vblank(data->drm_fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
igt_pipe_crc_start(pipe_crc);
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset,
- N_CRCS);
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(display, pipe),
+ N_CRCS);
n_crcs = igt_pipe_crc_get_crcs(pipe_crc, N_CRCS+1, &crcs);
igt_pipe_crc_stop(pipe_crc);
igt_pipe_crc_free(pipe_crc);
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 84455e77bbb2..c8701cf1a07d 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -792,8 +792,7 @@ restart_round:
if (plane->type == DRM_PLANE_TYPE_CURSOR) {
igt_display_t *display = &data->display;
- igt_wait_for_vblank(data->drm_fd,
- igt_crtc_for_pipe(display, pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
}
}
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 7817d6df9f1d..b9aa0deed292 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -188,8 +188,7 @@ static void test_cursor_pos(data_t *data, int x, int y, unsigned int flags)
/* Wait for one more vblank since cursor updates are not
* synchronized to the same frame on AMD hw */
if(is_amdgpu_device(data->drm_fd))
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(&data->display, data->pipe_id)->crtc_offset,
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe_id),
1);
igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &test_crc);
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 80a586ce62f5..1d3b98728e15 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -122,8 +122,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
- igt_wait_for_vblank(fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index a4913ec13819..4f43050791f8 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -711,8 +711,7 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
* framebuffer.
*/
if (is_xe_device(data->drm_fd))
- igt_wait_for_vblank_count(data->drm_fd,
- igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
+ igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, pipe),
2);
/* We should be back to the same framebuffer count as when we started */
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 1803308c56e1..9057905acd67 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -143,8 +143,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_commit(display);
- igt_wait_for_vblank(fd,
- igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
+ igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
}
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (6 preceding siblings ...)
2025-12-10 9:39 ` [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*() Ville Syrjala
@ 2025-12-10 9:39 ` Ville Syrjala
2025-12-10 14:34 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc() Ville Syrjala
` (4 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:39 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Introduce igt_output_set_crtc() as the intended replacement for
igt_output_set_pipe().
One step towards using 'crtcs' instead of 'pipes'.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 44 +++++++++++++++++++++++++++++++-------------
lib/igt_kms.h | 1 +
2 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 3b71cee61635..40c521b3a331 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5277,31 +5277,35 @@ int igt_output_preferred_vrefresh(igt_output_t *output)
return 60;
}
+static const char *igt_crtc_name(igt_pipe_t *crtc)
+{
+ if (crtc == NULL)
+ return "None";
+
+ return kmstest_pipe_name(crtc->pipe);
+}
+
/**
- * igt_output_set_pipe:
+ * igt_output_set_crtc:
* @output: Target output for which the pipe is being set to
- * @pipe: Display pipe to set to
+ * @pipe_obj: CRTC to set to
*
- * This function sets a @pipe to a specific @output connector by
- * setting the CRTC_ID property of the @pipe. The pipe
- * is only activated for all pipes except PIPE_NONE.
+ * This function sets a @crtc to a specific @output connector by
+ * setting the CRTC_ID property of the @crtc.
*/
-void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
+void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
{
igt_display_t *display = output->display;
- igt_pipe_t *old_pipe = NULL, *pipe_obj = NULL;;
+ igt_pipe_t *old_pipe = NULL;
igt_assert(output->name);
if (output->pending_pipe != PIPE_NONE)
old_pipe = igt_output_get_driving_pipe(output);
- if (pipe != PIPE_NONE)
- pipe_obj = igt_crtc_for_pipe(display, pipe);
-
LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
- kmstest_pipe_name(pipe));
- output->pending_pipe = pipe;
+ igt_crtc_name(pipe_obj));
+ output->pending_pipe = pipe_obj ? pipe_obj->pipe : PIPE_NONE;
if (old_pipe) {
igt_output_t *old_output;
@@ -5318,7 +5322,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
}
igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
- pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
+ pipe_obj ? pipe_obj->crtc_id : 0);
igt_output_refresh(output);
@@ -5332,6 +5336,20 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
}
}
+/**
+ * igt_output_set_pipe:
+ * @output: Target output for which the pipe is being set to
+ * @pipe_obj: Display pipe to set to
+ *
+ * This function sets a @pipe to a specific @output connector by
+ * setting the CRTC_ID property of the @pipe. The pipe
+ * is only activated for all pipes except PIPE_NONE.
+ */
+void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
+{
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
+}
+
static
bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
igt_output_t *outputs[IGT_MAX_PIPES],
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index a9d2d9027ae8..9ec0f08ada24 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -589,6 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
int igt_output_preferred_vrefresh(igt_output_t *output);
+void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc()
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (7 preceding siblings ...)
2025-12-10 9:39 ` [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc() Ville Syrjala
@ 2025-12-10 9:39 ` Ville Syrjala
2025-12-10 14:42 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t Ville Syrjala
` (3 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:39 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Replace all igt_output_set_pipe() uses with igt_output_set_crtc().
This is one small step towards using 'crtcs' instead of 'pipes'.
The results aren't super pretty as most callers end up doing
"igt_output_set_crtc(..., igt_crtc_for_pipe(...))" but we'll
try to clean all that up once all tests get properly weaned
off 'pipes'.
Done with cocci:
#include "scripts/iterators.cocci"
@@
@@
- igt_output_set_pipe(...) { ... }
@@
expression OUTPUT, PIPE;
igt_pipe_t *CRTC;
igt_plane_t *PLANE;
@@
(
- igt_output_set_pipe(OUTPUT, PIPE_NONE)
+ igt_output_set_crtc(OUTPUT, NULL)
|
- igt_output_set_pipe(OUTPUT, PLANE->pipe->pipe)
+ igt_output_set_crtc(OUTPUT, PLANE->pipe)
|
- igt_output_set_pipe(OUTPUT, CRTC->pipe)
+ igt_output_set_crtc(OUTPUT, CRTC)
|
- igt_output_set_pipe(OUTPUT, PIPE)
+ igt_output_set_crtc(OUTPUT, igt_crtc_for_pipe(OUTPUT->display, PIPE))
)
@@
identifier CRTC;
expression DISPLAY1, DISPLAY2, PIPE;
@@
CRTC = igt_crtc_for_pipe(DISPLAY1, PIPE)
<+...
- igt_crtc_for_pipe(DISPLAY2, PIPE)
+ CRTC
...+>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
benchmarks/kms_fb_stress.c | 3 +-
lib/igt_kms.c | 18 +------
lib/igt_kms.h | 1 -
tests/amdgpu/amd_abm.c | 6 ++-
tests/amdgpu/amd_assr.c | 5 +-
tests/amdgpu/amd_bypass.c | 3 +-
tests/amdgpu/amd_color.c | 3 +-
tests/amdgpu/amd_dp_dsc.c | 12 +++--
tests/amdgpu/amd_freesync_video_mode.c | 5 +-
tests/amdgpu/amd_hotplug.c | 3 +-
tests/amdgpu/amd_ilr.c | 5 +-
tests/amdgpu/amd_link_settings.c | 5 +-
tests/amdgpu/amd_mall.c | 3 +-
tests/amdgpu/amd_max_bpc.c | 3 +-
tests/amdgpu/amd_mem_leak.c | 3 +-
tests/amdgpu/amd_mode_switch.c | 3 +-
tests/amdgpu/amd_multidisplay_modeset.c | 5 +-
tests/amdgpu/amd_odm.c | 6 ++-
tests/amdgpu/amd_plane.c | 18 ++++---
tests/amdgpu/amd_psr.c | 23 +++++---
tests/amdgpu/amd_replay.c | 3 +-
tests/amdgpu/amd_subvp.c | 3 +-
tests/chamelium/kms_chamelium_color.c | 16 +++---
tests/chamelium/kms_chamelium_edid.c | 5 +-
tests/chamelium/kms_chamelium_helper.c | 11 ++--
tests/chamelium/kms_chamelium_hpd.c | 8 +--
.../kms_chamelium_sharpness_filter.c | 10 ++--
tests/drm_read.c | 3 +-
tests/intel/gem_eio.c | 3 +-
tests/intel/gem_exec_reloc.c | 3 +-
tests/intel/gem_pxp.c | 5 +-
tests/intel/kms_big_fb.c | 11 ++--
tests/intel/kms_busy.c | 20 +++----
tests/intel/kms_ccs.c | 3 +-
tests/intel/kms_cdclk.c | 15 +++---
tests/intel/kms_dirtyfb.c | 8 +--
tests/intel/kms_dp_linktrain_fallback.c | 6 ++-
tests/intel/kms_draw_crc.c | 3 +-
tests/intel/kms_dsc.c | 5 +-
tests/intel/kms_fb_coherency.c | 8 +--
tests/intel/kms_fbc_dirty_rect.c | 5 +-
tests/intel/kms_fence_pin_leak.c | 7 +--
tests/intel/kms_flip_scaled_crc.c | 10 ++--
tests/intel/kms_flip_tiling.c | 5 +-
tests/intel/kms_frontbuffer_tracking.c | 24 ++++++---
tests/intel/kms_joiner.c | 20 ++++---
tests/intel/kms_joiner_helper.c | 6 ++-
tests/intel/kms_mmap_write_crc.c | 8 +--
tests/intel/kms_pipe_b_c_ivb.c | 6 +--
tests/intel/kms_pipe_stress.c | 2 +-
tests/intel/kms_pm_backlight.c | 7 +--
tests/intel/kms_pm_dc.c | 8 +--
tests/intel/kms_pm_lpsp.c | 7 +--
tests/intel/kms_pm_rpm.c | 3 +-
tests/intel/kms_psr.c | 5 +-
tests/intel/kms_psr2_sf.c | 11 ++--
tests/intel/kms_psr2_su.c | 8 +--
tests/intel/kms_psr_stress_test.c | 5 +-
tests/intel/kms_pwrite_crc.c | 8 +--
tests/intel/kms_sharpness_filter.c | 5 +-
tests/intel/perf_pmu.c | 5 +-
tests/intel/prime_mmap_kms.c | 5 +-
tests/intel/xe_pat.c | 3 +-
tests/intel/xe_pxp.c | 8 +--
tests/kms_async_flips.c | 6 ++-
tests/kms_atomic.c | 12 ++---
tests/kms_atomic_interruptible.c | 10 ++--
tests/kms_atomic_transition.c | 35 +++++++------
tests/kms_bw.c | 3 +-
tests/kms_color.c | 23 ++++----
tests/kms_color_helper.c | 5 +-
tests/kms_colorop.c | 3 +-
tests/kms_concurrent.c | 12 +++--
tests/kms_content_protection.c | 8 +--
tests/kms_cursor_crc.c | 15 +++---
tests/kms_cursor_edge_walk.c | 8 +--
tests/kms_cursor_legacy.c | 52 ++++++++++---------
tests/kms_debugfs.c | 5 +-
tests/kms_display_modes.c | 16 +++---
tests/kms_dither.c | 9 ++--
tests/kms_feature_discovery.c | 6 ++-
tests/kms_flip_event_leak.c | 5 +-
tests/kms_hdr.c | 13 +++--
tests/kms_invalid_mode.c | 3 +-
tests/kms_lease.c | 7 +--
tests/kms_multipipe_modeset.c | 10 ++--
tests/kms_panel_fitting.c | 6 +--
tests/kms_pipe_crc_basic.c | 16 +++---
tests/kms_plane.c | 21 ++++----
tests/kms_plane_alpha_blend.c | 5 +-
tests/kms_plane_cursor.c | 6 ++-
tests/kms_plane_lowres.c | 5 +-
tests/kms_plane_multiple.c | 20 ++++---
tests/kms_plane_scaling.c | 32 +++++++-----
tests/kms_prime.c | 3 +-
tests/kms_properties.c | 18 ++++---
tests/kms_rmfb.c | 7 +--
tests/kms_rotation_crc.c | 13 +++--
tests/kms_scaling_modes.c | 5 +-
tests/kms_sequence.c | 8 +--
tests/kms_tiled_display.c | 6 +--
tests/kms_universal_plane.c | 42 +++++++--------
tests/kms_vblank.c | 14 ++---
tests/kms_vrr.c | 7 +--
tests/kms_writeback.c | 5 +-
tests/nouveau_crc.c | 5 +-
tests/vmwgfx/vmw_prime.c | 8 +--
tools/amd_hdmi_compliance.c | 3 +-
tools/intel_pm_rpm.c | 2 +-
109 files changed, 574 insertions(+), 412 deletions(-)
diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
index 49ca5c7239d7..4bc23eb4bbd9 100644
--- a/benchmarks/kms_fb_stress.c
+++ b/benchmarks/kms_fb_stress.c
@@ -166,7 +166,8 @@ int igt_simple_main()
igt_debug("Selecting pipe %s to %s\n",
kmstest_pipe_name(pipe),
igt_output_name(data.wb_output));
- igt_output_set_pipe(data.wb_output, pipe);
+ igt_output_set_crtc(data.wb_output,
+ igt_crtc_for_pipe(data.wb_output->display, pipe));
break;
}
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 40c521b3a331..082b126f8a49 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -3412,7 +3412,7 @@ void igt_modeset_disable_all_outputs(igt_display_t *display)
for (i = 0; i < display->n_outputs; i++) {
igt_output_t *output = &display->outputs[i];
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_display_commit2(display, COMMIT_ATOMIC);
@@ -5336,20 +5336,6 @@ void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
}
}
-/**
- * igt_output_set_pipe:
- * @output: Target output for which the pipe is being set to
- * @pipe_obj: Display pipe to set to
- *
- * This function sets a @pipe to a specific @output connector by
- * setting the CRTC_ID property of the @pipe. The pipe
- * is only activated for all pipes except PIPE_NONE.
- */
-void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
-{
- igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
-}
-
static
bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
igt_output_t *outputs[IGT_MAX_PIPES],
@@ -7913,7 +7899,7 @@ void igt_detach_crtc(igt_display_t *display, igt_output_t *output)
if (igt_get_writeback_fb_id(output) == 0)
return;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 9ec0f08ada24..8f257c86d88f 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -590,7 +590,6 @@ drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
int igt_output_preferred_vrefresh(igt_output_t *output);
void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
-void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
int igt_output_count_plane_type(igt_output_t *output, int plane_type);
diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 9be5cfe8efc1..00560ce3ac00 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -146,7 +146,8 @@ static void test_init(data_t *data)
data->primary =
igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
@@ -266,7 +267,8 @@ static void set_abm_level(data_t *data, igt_output_t *output, int level)
igt_assert_eq(close(fd), 0);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_plane_set_fb(data->primary, &data->ref_fb);
igt_display_commit_atomic(&data->display, 0, 0);
}
diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
index ebd6654ee2a1..976582ade9eb 100644
--- a/tests/amdgpu/amd_assr.c
+++ b/tests/amdgpu/amd_assr.c
@@ -171,7 +171,8 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
pipe = igt_crtc_for_pipe(&data->display, PIPE_A);
primary =
igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(output, PIPE_A);
+ igt_output_set_crtc(output,
+ pipe);
igt_create_fb(data->fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, 0, &fb);
@@ -188,7 +189,7 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
igt_plane_set_fb(primary, NULL);
igt_remove_fb(data->fd, &fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
index 40828fa52b1f..460e69dfa7c1 100644
--- a/tests/amdgpu/amd_bypass.c
+++ b/tests/amdgpu/amd_bypass.c
@@ -92,7 +92,8 @@ static void test_init(data_t *data)
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
AMDGPU_PIPE_CRC_SOURCE_DPRX);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->width = data->mode->hdisplay;
data->height = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
index fcfbe48d1eeb..422b111768c0 100644
--- a/tests/amdgpu/amd_color.c
+++ b/tests/amdgpu/amd_color.c
@@ -196,7 +196,8 @@ static void test_init(data_t *data)
data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
index fe40d0901548..b1809b65aa0e 100644
--- a/tests/amdgpu/amd_dp_dsc.c
+++ b/tests/amdgpu/amd_dp_dsc.c
@@ -133,7 +133,8 @@ static void test_dsc_enable(data_t *data)
DRM_FORMAT_XRGB8888,
0,
&ref_fb);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &ref_fb);
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
@@ -279,7 +280,8 @@ static void test_dsc_slice_dimensions_change(data_t *data)
DRM_FORMAT_XRGB8888,
0,
&ref_fb);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &ref_fb);
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
@@ -369,7 +371,8 @@ static void test_dsc_link_settings(data_t *data)
DRM_FORMAT_XRGB8888,
0,
&ref_fb[i]);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &ref_fb[i]);
}
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
@@ -489,7 +492,8 @@ static void test_dsc_bpc(data_t *data)
DRM_FORMAT_XRGB8888,
0,
&ref_fb[i]);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &ref_fb[i]);
}
diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
index 4db975e26347..c1a3e8161304 100644
--- a/tests/amdgpu/amd_freesync_video_mode.c
+++ b/tests/amdgpu/amd_freesync_video_mode.c
@@ -750,7 +750,7 @@ static void init_data(data_t *data, igt_output_t *output)
static void finish_test(data_t *data, enum pipe pipe, igt_output_t *output)
{
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_output_override_mode(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
@@ -847,7 +847,8 @@ run_test(data_t *data, uint32_t scene)
for_each_pipe(&data->display, pipe)
if (igt_pipe_connector_valid(pipe, output)) {
igt_display_reset(&data->display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
mode_transition(data, pipe, output, scene);
diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
index d80eb65bd263..71c859799f74 100644
--- a/tests/amdgpu/amd_hotplug.c
+++ b/tests/amdgpu/amd_hotplug.c
@@ -161,7 +161,8 @@ static void test_hotplug_basic(data_t *data, bool suspend)
igt_create_pattern_fb(data->fd, data->w[i], data->h[i],
DRM_FORMAT_XRGB8888, 0, &ref_fb[i]);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &ref_fb[i]);
}
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
index 5875dc36d69b..16ef6ffe40f1 100644
--- a/tests/amdgpu/amd_ilr.c
+++ b/tests/amdgpu/amd_ilr.c
@@ -73,7 +73,7 @@ static void set_all_output_pipe_to_none(data_t *data)
igt_output_t *output;
for_each_connected_output(&data->display, output) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -103,7 +103,8 @@ static void test_init(data_t *data, igt_output_t *output)
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
AMDGPU_PIPE_CRC_SOURCE_DPRX);
- igt_output_set_pipe(output, data->pipe_id);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id));
data->primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
}
diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
index 6e6037ae5fbc..3ea4168f93ed 100644
--- a/tests/amdgpu/amd_link_settings.c
+++ b/tests/amdgpu/amd_link_settings.c
@@ -75,7 +75,7 @@ static void set_all_output_pipe_to_none(data_t *data)
igt_output_t *output;
for_each_connected_output(&data->display, output) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -102,7 +102,8 @@ static void test_init(data_t *data, igt_output_t *output)
data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
- igt_output_set_pipe(output, data->pipe_id);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id));
data->primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
}
diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
index 27589b865a53..a1a04d0ea9c3 100644
--- a/tests/amdgpu/amd_mall.c
+++ b/tests/amdgpu/amd_mall.c
@@ -88,7 +88,8 @@ static void test_init(data_t *data)
data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
index 9771c67338c7..bb362926c6b9 100644
--- a/tests/amdgpu/amd_max_bpc.c
+++ b/tests/amdgpu/amd_max_bpc.c
@@ -85,7 +85,8 @@ static void test_init(data_t *data)
data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
index 1b6b2b730c5b..ef2b59be4a1c 100644
--- a/tests/amdgpu/amd_mem_leak.c
+++ b/tests/amdgpu/amd_mem_leak.c
@@ -67,7 +67,8 @@ static void test_init(data_t *data)
data->primary =
igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
index c443578f5f09..d142873e9372 100644
--- a/tests/amdgpu/amd_mode_switch.c
+++ b/tests/amdgpu/amd_mode_switch.c
@@ -112,7 +112,8 @@ static void run_mode_switch_first_last(data_t *data, int num_pipes)
DRM_FORMAT_MOD_NONE, 1.f, 0.f,
0.f, buffer1[j]);
}
- igt_output_set_pipe(output, j);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, j));
force_output_mode(data, output, kmode);
igt_plane_set_fb(data->primary[j], buffer1[j]);
drmModeFreeConnector(conn);
diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
index 91455ed1dfb8..94bc99f4143f 100644
--- a/tests/amdgpu/amd_multidisplay_modeset.c
+++ b/tests/amdgpu/amd_multidisplay_modeset.c
@@ -134,7 +134,7 @@ static void set_all_output_pipe_to_none(struct data_t *data)
igt_output_t *output;
for_each_connected_output(&data->display, output) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_display_commit_atomic(&data->display,
@@ -329,7 +329,8 @@ static void multiple_display_test(struct data_t *data, enum sub_test test_mode)
kmode->vdisplay, DRM_FORMAT_XRGB8888,
0, (buf + j));
- igt_output_set_pipe(output, j);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, j));
igt_plane_set_fb(data->primary[j], (buf + j));
j++;
}
diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
index 483b30e8ac8f..0e0a55396b73 100644
--- a/tests/amdgpu/amd_odm.c
+++ b/tests/amdgpu/amd_odm.c
@@ -77,7 +77,8 @@ static void test_init(struct data *data)
"ODM Combine isn't supported on HDMI 1.x\n");
data->primary = igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_reset(display);
}
@@ -121,7 +122,8 @@ static void run_test_odmc(struct data *data, enum odmc_mode m, const drmModeMode
DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
&buffer);
- igt_output_set_pipe(data->output, i);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, i));
igt_plane_set_fb(data->primary, &buffer);
diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
index 0dbac17a6e7f..cb1fcab930e3 100644
--- a/tests/amdgpu/amd_plane.c
+++ b/tests/amdgpu/amd_plane.c
@@ -566,7 +566,8 @@ static void test_multi_mpo_invalid(data_t *data)
/* Skip test if we don't have 2 overlay planes */
igt_skip_on(!data->overlay2[0]);
- igt_output_set_pipe(data->output[0], data->pipe_id[0]);
+ igt_output_set_crtc(data->output[0],
+ igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
igt_create_color_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, 1.0, 1.0, 1.0, &fb[0].test_primary);
igt_create_fb(data->fd, w, h, DRM_FORMAT_NV12, 0, &fb[0].test_overlay);
@@ -641,7 +642,8 @@ static void test_display_mpo(data_t *data, enum test test, uint32_t format, int
h = data->h[n] = test_mode_3.vdisplay;
}
- igt_output_set_pipe(data->output[n], data->pipe_id[n]);
+ igt_output_set_crtc(data->output[n],
+ igt_crtc_for_pipe(data->output[n]->display, data->pipe_id[n]));
igt_create_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, &fb[n].ref_primary);
igt_create_color_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, 1.0, 1.0, 1.0, &fb[n].ref_primary);
@@ -728,7 +730,8 @@ static void test_mpo_4k(data_t *data)
draw_color_alpha(&o_fb, cutout_x, cutout_y, cutout_w, cutout_h,
0.00, 0.00, 0.00, 0.00);
- igt_output_set_pipe(data->output[0], data->pipe_id[0]);
+ igt_output_set_crtc(data->output[0],
+ igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
igt_plane_set_fb(data->primary[0], &r_fb);
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -793,8 +796,10 @@ static void test_mpo_swizzle_toggle_multihead(data_t *data)
test_init(data);
/* Initial modeset */
- igt_output_set_pipe(data->output[0], data->pipe_id[0]);
- igt_output_set_pipe(data->output[1], data->pipe_id[1]);
+ igt_output_set_crtc(data->output[0],
+ igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
+ igt_output_set_crtc(data->output[1],
+ igt_crtc_for_pipe(data->output[1]->display, data->pipe_id[1]));
force_output_mode(data, data->output[0], &test_mode_1);
force_output_mode(data, data->output[1], &test_mode_2);
@@ -862,7 +867,8 @@ static void test_mpo_swizzle_toggle(data_t *data)
test_init(data);
/* Initial modeset */
- igt_output_set_pipe(data->output[0], data->pipe_id[0]);
+ igt_output_set_crtc(data->output[0],
+ igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
force_output_mode(data, data->output[0], &test_mode_1);
igt_plane_set_fb(data->primary[0], &fb_1920_xb24_linear);
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 789d243f8e86..9071a2e9d780 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -196,7 +196,8 @@ static void test_init(data_t *data)
data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
@@ -330,7 +331,7 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)
continue;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
}
@@ -371,7 +372,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
.5, .5, .5, &ref_fb);
igt_plane_set_fb(data->primary, &ref_fb);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
/*
@@ -410,7 +412,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, .5, .5, .5, .0);
draw_color_alpha(&data->ov_fb[1], 0, 0, pm_w_scale, pm_h_scale, .5, .5, .5, .0);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_commit_atomic(&data->display, 0, NULL);
/* multiplane overlay to emulate video playback use case */
@@ -428,7 +431,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
igt_plane_set_fb(data->overlay, &data->ov_fb[1]);
igt_plane_set_size(data->primary, pm_w_scale, pm_h_scale);
}
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
ret = igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL);
igt_require(ret == 0);
@@ -486,7 +490,8 @@ static void panning_rect_fb(data_t *data, igt_fb_t *rect_fb, int rect_w, int rec
igt_plane_set_fb(data->overlay, &data->ov_fb[i % 2]);
igt_plane_set_fb(data->primary, rect_fb);
igt_plane_set_size(data->primary, rect_w, rect_h);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
ret = igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL);
igt_require(ret == 0);
@@ -512,7 +517,8 @@ static void run_check_psr_su_ffu(data_t *data)
igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
.5, .5, .5, &ref_fb);
igt_plane_set_fb(data->primary, &ref_fb);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
/*
@@ -649,7 +655,8 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
igt_plane_set_fb(data->cursor, &data->cs_fb);
igt_plane_set_position(data->cursor, 0, 0);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
/*
diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
index 8b194f797938..38fe80a236f6 100644
--- a/tests/amdgpu/amd_replay.c
+++ b/tests/amdgpu/amd_replay.c
@@ -77,7 +77,8 @@ static void test_init(struct test_data *data)
data->primary =
igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
data->w = data->mode->hdisplay;
data->h = data->mode->vdisplay;
diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
index a0a546a3e398..0998a0c960d0 100644
--- a/tests/amdgpu/amd_subvp.c
+++ b/tests/amdgpu/amd_subvp.c
@@ -141,7 +141,8 @@ static void test_subvp(struct data *data)
0,
&rfb);
- igt_output_set_pipe(output, data->pipe_id[i]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_id[i]));
igt_plane_set_fb(data->primary[i], &rfb);
igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
}
diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index 195556c9368c..72c02dbbc339 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -84,7 +84,7 @@ static bool test_pipe_degamma(data_t *data,
degamma_full = generate_table_max(data->degamma_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
/* Create a framebuffer at the size of the output. */
fb_id = igt_create_fb(data->drm_fd,
@@ -140,7 +140,7 @@ static bool test_pipe_degamma(data_t *data,
disable_degamma(primary->pipe);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
free_lut(degamma_full);
@@ -173,7 +173,7 @@ static bool test_pipe_gamma(data_t *data,
gamma_full = generate_table_max(data->gamma_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
/* Create a framebuffer at the size of the output. */
fb_id = igt_create_fb(data->drm_fd,
@@ -229,7 +229,7 @@ static bool test_pipe_gamma(data_t *data,
disable_gamma(primary->pipe);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
free_lut(gamma_full);
@@ -260,7 +260,7 @@ static bool test_pipe_ctm(data_t *data,
degamma_linear = generate_table(data->degamma_lut_size, 1.0);
gamma_linear = generate_table(data->gamma_lut_size, 1.0);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
/* Create a framebuffer at the size of the output. */
fb_id = igt_create_fb(data->drm_fd,
@@ -324,7 +324,7 @@ static bool test_pipe_ctm(data_t *data,
igt_plane_set_fb(primary, NULL);
disable_degamma(primary->pipe);
disable_gamma(primary->pipe);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
free_lut(degamma_linear);
free_lut(gamma_linear);
@@ -363,7 +363,7 @@ static bool test_pipe_limited_range_ctm(data_t *data,
degamma_linear = generate_table(data->degamma_lut_size, 1.0);
gamma_linear = generate_table(data->gamma_lut_size, 1.0);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
/* Create a framebuffer at the size of the output. */
fb_id0 = igt_create_fb(data->drm_fd,
@@ -415,7 +415,7 @@ static bool test_pipe_limited_range_ctm(data_t *data,
IGT_CONNECTOR_BROADCAST_RGB,
BROADCAST_RGB_FULL);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
/* Verify frame dumps are equal. */
ret = chamelium_frame_match_or_dump_frame_pair(data->chamelium, port,
diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
index 566a4f0ac886..5b1a063fffbe 100644
--- a/tests/chamelium/kms_chamelium_edid.c
+++ b/tests/chamelium/kms_chamelium_edid.c
@@ -303,7 +303,8 @@ static void edid_stress_resolution(chamelium_data_t *data,
chamelium_create_fb_for_mode(data, &fb, &mode);
output = chamelium_get_output_for_port(data, port);
pipe = chamelium_get_pipe_for_output(&data->display, output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
chamelium_enable_output(data, port, output, &mode, &fb);
/* Capture the screen resolution and verify. */
@@ -357,7 +358,7 @@ static void edid_resolution_list(chamelium_data_t *data,
output = chamelium_get_output_for_port(data, port);
pipe = chamelium_get_pipe_for_output(&data->display, output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for (i = 0; i < count_modes; ++i)
igt_debug("#%d %s %uHz\n", i, modes[i].name, modes[i].vrefresh);
diff --git a/tests/chamelium/kms_chamelium_helper.c b/tests/chamelium/kms_chamelium_helper.c
index 26c5f87f151b..328ff9292d0d 100644
--- a/tests/chamelium/kms_chamelium_helper.c
+++ b/tests/chamelium/kms_chamelium_helper.c
@@ -150,10 +150,10 @@ igt_output_t *chamelium_prepare_output(chamelium_data_t *data,
output = chamelium_get_output_for_port(data, port);
/* Refresh pipe to update connected status */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
pipe = chamelium_get_pipe_for_output(display, output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
return output;
}
@@ -207,14 +207,15 @@ enum pipe chamelium_get_pipe_for_output(igt_display_t *display,
enum pipe pipe;
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return pipe;
}
diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
index d1460533f276..8f13b380a46b 100644
--- a/tests/chamelium/kms_chamelium_hpd.c
+++ b/tests/chamelium/kms_chamelium_hpd.c
@@ -266,7 +266,8 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
chamelium_create_fb_for_mode(data, &fb, &mode);
}
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
chamelium_enable_output(data, port, output, &mode, &fb);
}
@@ -279,7 +280,7 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
igt_flush_uevents(mon);
if (modeset_mode == TEST_MODESET_ON_OFF) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
}
@@ -315,7 +316,8 @@ static void test_hotplug_for_each_pipe(chamelium_data_t *data,
output = chamelium_get_output_for_port(data, port);
/* If pipe is valid for output then set it */
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (intel_pipe_output_combo_valid(&data->display))
igt_display_commit2(&data->display, COMMIT_ATOMIC);
diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
index 25e0275630f0..0507ad7ac38a 100644
--- a/tests/chamelium/kms_chamelium_sharpness_filter.c
+++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
@@ -42,10 +42,11 @@ static bool pipe_output_combo_valid(data_t *data, enum pipe pipe)
{
bool ret = true;
- igt_output_set_pipe(data->output, pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display))
ret = false;
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
return ret;
}
@@ -102,7 +103,7 @@ static void destroy_frame_dumps(struct chamelium_frame_dump *frames[], int count
static void cleanup(data_t *data)
{
igt_remove_fb(data->drm_fd, &data->fb);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_output_override_mode(data->output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
@@ -115,7 +116,8 @@ static void test_t(data_t *data, igt_plane_t *primary,
int height, width;
bool match[4], match_ok = false;
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
mode = igt_output_get_mode(data->output);
height = mode->hdisplay;
diff --git a/tests/drm_read.c b/tests/drm_read.c
index 151294fa710f..c44e207f7dd8 100644
--- a/tests/drm_read.c
+++ b/tests/drm_read.c
@@ -299,7 +299,8 @@ int igt_main()
DRM_FORMAT_XRGB8888,
DRM_FORMAT_MOD_LINEAR, &fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), &fb);
break;
}
diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
index 0d4aa1bd33cb..2191274ae8d3 100644
--- a/tests/intel/gem_eio.c
+++ b/tests/intel/gem_eio.c
@@ -1041,7 +1041,8 @@ static void display_helper(igt_display_t *dpy, int *done)
if (!output)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
if (fb.width != mode->hdisplay || fb.height != mode->vdisplay) {
diff --git a/tests/intel/gem_exec_reloc.c b/tests/intel/gem_exec_reloc.c
index 5b51d7b384bb..eecc201308c2 100644
--- a/tests/intel/gem_exec_reloc.c
+++ b/tests/intel/gem_exec_reloc.c
@@ -1517,7 +1517,8 @@ static void scanout(int i915,
output = igt_get_single_output_for_pipe(dpy, PIPE_A);
igt_require(output);
- igt_output_set_pipe(output, PIPE_A);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, PIPE_A));
/*
* Find where the scanout is in our GTT; on !full-ppgtt this will be
diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
index 49edf744f943..9c1d724ac3cc 100644
--- a/tests/intel/gem_pxp.c
+++ b/tests/intel/gem_pxp.c
@@ -1229,7 +1229,8 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
igt_plane_set_fb(plane, &ref_fb);
igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
@@ -1248,7 +1249,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
IGT_PIPE_CRC_SOURCE_AUTO);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(pipe->pipe, output));
- igt_output_set_pipe(output, pipe->pipe);
+ igt_output_set_crtc(output, pipe);
igt_plane_set_fb(plane, &ref_fb);
igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index 7316547d276d..1ddda65e4ab6 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -536,7 +536,8 @@ static bool test_pipe(data_t *data)
igt_create_fb(data->drm_fd, width, height,
data->format, data->modifier, &data->small_fb);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
@@ -595,7 +596,8 @@ max_hw_stride_async_flip_test(data_t *data)
igt_info("Using (pipe %s + %s) to run the subtest.\n",
kmstest_pipe_name(data->pipe), igt_output_name(data->output));
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
@@ -708,7 +710,8 @@ static void test_scanout(data_t *data)
for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
igt_display_reset(&data->display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
@@ -905,7 +908,7 @@ static void test_cleanup(data_t *data)
return;
igt_pipe_crc_free(data->pipe_crc);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_remove_fb(data->drm_fd, &data->big_fb);
igt_remove_fb(data->drm_fd, &data->big_fb_flip[0]);
igt_remove_fb(data->drm_fd, &data->big_fb_flip[1]);
diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
index 53ed4b39813b..c38d45dd020d 100644
--- a/tests/intel/kms_busy.c
+++ b/tests/intel/kms_busy.c
@@ -79,7 +79,7 @@ set_fb_on_crtc(igt_display_t *dpy, int pipe,
drmModeModeInfoPtr mode;
igt_plane_t *primary;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
@@ -101,7 +101,7 @@ static void do_cleanup_display(igt_display_t *dpy)
igt_plane_set_fb(plane, NULL);
for_each_connected_output(dpy, output)
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
}
@@ -134,7 +134,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
DRM_MODE_PAGE_FLIP_EVENT, fb));
else {
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit_atomic(dpy,
DRM_MODE_ATOMIC_NONBLOCK |
DRM_MODE_PAGE_FLIP_EVENT |
@@ -163,7 +163,8 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
/* Clear old mode blob. */
igt_pipe_refresh(dpy, pipe, true);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_display_commit2(dpy, COMMIT_ATOMIC);
}
@@ -287,13 +288,14 @@ static void test_hang(igt_display_t *dpy,
if (modeset) {
/* Test modeset disable with hang */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_plane_set_fb(primary, &fb[1]);
test_atomic_commit_hang(dpy, primary, &fb[hang_newfb]);
/* Test modeset enable with hang */
igt_plane_set_fb(primary, &fb[0]);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
test_atomic_commit_hang(dpy, primary, &fb[!hang_newfb]);
} else {
/*
@@ -339,7 +341,7 @@ test_pageflip_modeset_hang(igt_display_t *dpy,
/* Kill crtc with hung fb */
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_assert(read(dpy->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
@@ -357,10 +359,10 @@ pipe_output_combo_valid(igt_display_t *dpy,
igt_display_reset(dpy);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(dpy))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
index 9087c6a38680..6512e206f047 100644
--- a/tests/intel/kms_ccs.c
+++ b/tests/intel/kms_ccs.c
@@ -1153,7 +1153,8 @@ static void test_output(data_t *data, const int testnum)
for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
igt_display_reset(&data->display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index 3aeaba226cda..441ffa200e64 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -123,7 +123,7 @@ static void do_cleanup_display(igt_display_t *dpy)
igt_plane_set_fb(plane, NULL);
for_each_connected_output(dpy, output)
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
}
@@ -143,7 +143,8 @@ static void test_plane_scaling(data_t *data, enum pipe pipe, igt_output_t *outpu
do_cleanup_display(display);
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
mode = *igt_output_get_highres_mode(output);
igt_require_f(is_4k(mode), "Mode >= 4K not found on output %s\n",
igt_output_name(output));
@@ -193,7 +194,7 @@ static void test_mode_transition(data_t *data, enum pipe pipe, igt_output_t *out
do_cleanup_display(display);
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
mode_lo = *get_lowres_mode(output);
mode_hi = *igt_output_get_highres_mode(output);
@@ -292,7 +293,8 @@ static void test_mode_transition_on_all_outputs(data_t *data)
width = max(width, mode->hdisplay);
height = max(height, mode->vdisplay);
- igt_output_set_pipe(valid_outputs[i], i);
+ igt_output_set_crtc(valid_outputs[i],
+ igt_crtc_for_pipe(valid_outputs[i]->display, i));
igt_output_override_mode(valid_outputs[i], &mode_highres[i]);
}
@@ -325,9 +327,10 @@ static void run_cdclk_test(data_t *data, uint32_t flags)
enum pipe pipe;
for_each_pipe_with_valid_output(display, pipe, output) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
index 758d6fd8965d..5697afb2b3e1 100644
--- a/tests/intel/kms_dirtyfb.c
+++ b/tests/intel/kms_dirtyfb.c
@@ -229,7 +229,8 @@ static void prepare(data_t *data)
{
igt_plane_t *primary;
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
@@ -287,7 +288,7 @@ static void cleanup(data_t *data)
igt_pipe_crc_free(data->pipe_crc);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
@@ -394,7 +395,8 @@ int igt_main()
continue;
igt_display_reset(&data.display);
- igt_output_set_pipe(data.output, data.pipe);
+ igt_output_set_crtc(data.output,
+ igt_crtc_for_pipe(data.output->display, data.pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/intel/kms_dp_linktrain_fallback.c b/tests/intel/kms_dp_linktrain_fallback.c
index 10c4d9e65ebf..5e6ba922420c 100644
--- a/tests/intel/kms_dp_linktrain_fallback.c
+++ b/tests/intel/kms_dp_linktrain_fallback.c
@@ -103,7 +103,8 @@ static void setup_pipe_on_outputs(data_t *data,
igt_info("Setting pipe %s on output %s\n",
kmstest_pipe_name(data->pipe),
igt_output_name(outputs[i]));
- igt_output_set_pipe(outputs[i], data->pipe);
+ igt_output_set_crtc(outputs[i],
+ igt_crtc_for_pipe(outputs[i]->display, data->pipe));
i++;
}
}
@@ -479,7 +480,8 @@ static void test_dsc_sst_fallback(data_t *data)
DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
&data->fb);
igt_output_override_mode(data->output, data->mode);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
data->primary = igt_output_get_plane_type(data->output,
DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(data->primary, &data->fb);
diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
index 020a2ad8674f..6f9786ba2454 100644
--- a/tests/intel/kms_draw_crc.c
+++ b/tests/intel/kms_draw_crc.c
@@ -98,7 +98,8 @@ static void find_modeset_params(void)
for_each_pipe_with_valid_output(&display, pipe, output) {
igt_display_reset(&display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&display))
continue;
diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
index 1bb79bbcbbb6..e70cae2524a8 100644
--- a/tests/intel/kms_dsc.c
+++ b/tests/intel/kms_dsc.c
@@ -122,7 +122,7 @@ static void test_cleanup(data_t *data)
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_remove_fb(data->drm_fd, &data->fb_test_pattern);
}
@@ -164,7 +164,8 @@ static void update_display(data_t *data, uint32_t test_type)
force_dsc_fractional_bpp_enable(data->drm_fd, data->output);
}
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_skip_on(!igt_plane_has_format_mod(primary, data->plane_format,
diff --git a/tests/intel/kms_fb_coherency.c b/tests/intel/kms_fb_coherency.c
index e1344b97bc0a..59bc29d19177 100644
--- a/tests/intel/kms_fb_coherency.c
+++ b/tests/intel/kms_fb_coherency.c
@@ -47,7 +47,8 @@ static void prepare_crtc(data_t *data)
igt_display_reset(display);
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
mode = igt_output_get_mode(output);
@@ -144,7 +145,7 @@ static void cleanup_crtc(data_t *data)
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &data->fb[0]);
@@ -226,7 +227,8 @@ static void select_valid_pipe_output_combo(data_t *data)
for_each_pipe_with_valid_output(display, data->pipe, data->output) {
igt_display_reset(display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (intel_pipe_output_combo_valid(display))
return;
}
diff --git a/tests/intel/kms_fbc_dirty_rect.c b/tests/intel/kms_fbc_dirty_rect.c
index 06ac749d7a27..e063493ef4f4 100644
--- a/tests/intel/kms_fbc_dirty_rect.c
+++ b/tests/intel/kms_fbc_dirty_rect.c
@@ -397,7 +397,7 @@ static void cleanup(data_t *data)
igt_pipe_crc_free(data->pipe_crc);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
@@ -407,7 +407,8 @@ static bool prepare_test(data_t *data)
igt_display_reset(&data->display);
data->mode = igt_output_get_mode(data->output);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
diff --git a/tests/intel/kms_fence_pin_leak.c b/tests/intel/kms_fence_pin_leak.c
index 2e3165300eb8..15ae038d8b08 100644
--- a/tests/intel/kms_fence_pin_leak.c
+++ b/tests/intel/kms_fence_pin_leak.c
@@ -141,7 +141,7 @@ static void run_single_test(data_t *data, enum pipe pipe, igt_output_t *output)
igt_info("Using (pipe %s + %s) to run the subtest.\n",
kmstest_pipe_name(pipe), igt_output_name(output));
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -197,7 +197,7 @@ static void run_single_test(data_t *data, enum pipe pipe, igt_output_t *output)
}
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &fb[1]);
@@ -215,7 +215,8 @@ static void run_test(data_t *data)
for_each_pipe_with_valid_output(display, p, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, p);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, p));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
index dd5967c91486..d9452dff0b84 100644
--- a/tests/intel/kms_flip_scaled_crc.c
+++ b/tests/intel/kms_flip_scaled_crc.c
@@ -611,7 +611,7 @@ static void test_flip_to_scaled(data_t *data, uint32_t index,
if (modetoset)
igt_output_override_mode(output, modetoset);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -676,7 +676,7 @@ static void test_flip_to_scaled(data_t *data, uint32_t index,
clear_lut(data, pipe);
modetoset = NULL;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_plane_set_fb(primary, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
@@ -750,7 +750,8 @@ int igt_main()
igt_display_reset(&data.display);
modetoset = find_mode(&data, output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_output_override_mode(output, modetoset);
if (modetoset && intel_pipe_output_combo_valid(&data.display)) {
@@ -764,7 +765,8 @@ int igt_main()
for_each_valid_output_on_pipe(&data.display, pipe, output) {
igt_display_reset(&data.display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/intel/kms_flip_tiling.c b/tests/intel/kms_flip_tiling.c
index 9bcaacb826b1..e7ada7740cd2 100644
--- a/tests/intel/kms_flip_tiling.c
+++ b/tests/intel/kms_flip_tiling.c
@@ -176,7 +176,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
/* Clean up. */
igt_plane_set_fb(primary, NULL);
pipe_crc_free(data);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_remove_fb(data->drm_fd, &data->fb[0]);
igt_remove_fb(data->drm_fd, &data->fb[1]);
@@ -234,7 +234,8 @@ int igt_main()
igt_display_reset(&data.display);
pipe_crc_free(&data);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index 069f03a6c9f1..f2e7c72f6f4c 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -1169,7 +1169,8 @@ static bool find_connector(bool edp_only, bool pipe_a,
continue;
if (output == forbidden_output || pipe == forbidden_pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_output_override_mode(output, connector_get_mode(output));
continue;
@@ -1178,7 +1179,8 @@ static bool find_connector(bool edp_only, bool pipe_a,
if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_output_override_mode(output, connector_get_mode(output));
if (intel_pipe_output_combo_valid(&drm.display)) {
*ret_output = output;
@@ -1480,7 +1482,8 @@ static void __set_prim_plane_for_params(struct modeset_params *params)
static void __set_mode_for_params(struct modeset_params *params)
{
igt_output_override_mode(params->output, ¶ms->mode);
- igt_output_set_pipe(params->output, params->pipe);
+ igt_output_set_crtc(params->output,
+ igt_crtc_for_pipe(params->output->display, params->pipe));
__set_prim_plane_for_params(params);
}
@@ -1939,7 +1942,8 @@ static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
fill_fb(&blue, COLOR_PRIM_BG);
- igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+ igt_output_set_crtc(prim_mode_params.output,
+ igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
igt_display_commit(&drm.display);
@@ -1994,7 +1998,8 @@ static void init_crcs(enum pixel_format format, enum tiling_type tiling,
IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
}
- igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+ igt_output_set_crtc(prim_mode_params.output,
+ igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
for (r = 0; r < pattern->n_rects; r++) {
igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
@@ -2400,8 +2405,10 @@ static void update_modeset_cached_params(enum igt_draw_method method)
{
bool found = false;
- igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
- igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
+ igt_output_set_crtc(prim_mode_params.output,
+ igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
+ igt_output_set_crtc(scnd_mode_params.output,
+ igt_crtc_for_pipe(scnd_mode_params.output->display, scnd_mode_params.pipe));
found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
igt_require_f(found, "No valid mode combo found.\n");
@@ -2724,7 +2731,8 @@ static void plane_fbc_rte_subtest(const struct test_mode *t)
do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
- igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
+ igt_output_set_crtc(prim_mode_params.output,
+ igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
wanted_crc = &blue_crcs[t->format].crc;
diff --git a/tests/intel/kms_joiner.c b/tests/intel/kms_joiner.c
index bf77f6626f5b..c34a73908100 100644
--- a/tests/intel/kms_joiner.c
+++ b/tests/intel/kms_joiner.c
@@ -152,7 +152,7 @@ static enum pipe setup_pipe(data_t *data, igt_output_t *output, enum pipe pipe,
igt_info("Using pipe %s as master and %s slave for %s\n", kmstest_pipe_name(pipe),
kmstest_pipe_name(pipe + 1), output->name);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
return master_pipe;
}
@@ -165,7 +165,8 @@ static void set_joiner_mode(data_t *data, igt_output_t *output, drmModeModeInfo
igt_info("Committing joiner mode for output %s with mode %dx%d@%d\n",
output->name, mode->hdisplay, mode->vdisplay, mode->vrefresh);
- igt_output_set_pipe(output, PIPE_A);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, PIPE_A));
igt_output_override_mode(output, mode);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
@@ -351,7 +352,8 @@ static void test_invalid_modeset_two_joiner(data_t *data,
mode = *igt_output_get_mode(output);
}
- igt_output_set_pipe(output, data->pipe_seq[i + j]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_seq[i + j]));
igt_info("Assigning pipe %s to %s with mode %dx%d@%d%s",
kmstest_pipe_name(data->pipe_seq[i + j]),
igt_output_name(output), mode.hdisplay,
@@ -398,7 +400,8 @@ static void test_joiner_on_last_pipe(data_t *data, bool force_joiner)
mode = *igt_output_get_mode(output);
}
- igt_output_set_pipe(output, data->pipe_seq[data->n_pipes - 1]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_seq[data->n_pipes - 1]));
igt_info(" Assigning pipe %s to %s with mode %dx%d@%d\n",
kmstest_pipe_name(data->pipe_seq[data->n_pipes - 1]),
igt_output_name(output), mode.hdisplay,
@@ -454,7 +457,8 @@ static void test_ultra_joiner(data_t *data, bool invalid_pipe, bool two_display,
if (two_display && j != PIPE_A)
continue;
- igt_output_set_pipe(output, data->pipe_seq[j]);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe_seq[j]));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_create_pattern_fb(data->drm_fd, mode.hdisplay, mode.vdisplay, DRM_FORMAT_XRGB8888,
@@ -475,7 +479,8 @@ static void test_ultra_joiner(data_t *data, bool invalid_pipe, bool two_display,
mode1 = igt_output_get_mode(non_ultra_joiner_output);
- igt_output_set_pipe(non_ultra_joiner_output, data->pipe_seq[k]);
+ igt_output_set_crtc(non_ultra_joiner_output,
+ igt_crtc_for_pipe(non_ultra_joiner_output->display, data->pipe_seq[k]));
plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(plane, &fb);
@@ -521,7 +526,8 @@ static void test_basic_max_non_joiner(data_t *data)
for (pipe = 0; pipe < data->n_pipes; pipe++) {
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_require(max_non_joiner_mode_found(data->drm_fd,
output->config.connector,
max_dotclock, &mode));
diff --git a/tests/intel/kms_joiner_helper.c b/tests/intel/kms_joiner_helper.c
index a59efcd1217a..7dd87c5c36ea 100644
--- a/tests/intel/kms_joiner_helper.c
+++ b/tests/intel/kms_joiner_helper.c
@@ -168,11 +168,13 @@ bool igt_assign_pipes_for_outputs(int drm_fd,
out->name);
return false;
}
- igt_output_set_pipe(out, start);
+ igt_output_set_crtc(out,
+ igt_crtc_for_pipe(out->display, start));
igt_debug("Using pipe %s as master.\n",
kmstest_pipe_name(start));
} else
- igt_output_set_pipe(out, start);
+ igt_output_set_crtc(out,
+ igt_crtc_for_pipe(out->display, start));
for (i = 0; i < needed; i++)
*used_pipes_mask |= BIT(start + i);
diff --git a/tests/intel/kms_mmap_write_crc.c b/tests/intel/kms_mmap_write_crc.c
index ad3dd1b20333..98a3ca4edd99 100644
--- a/tests/intel/kms_mmap_write_crc.c
+++ b/tests/intel/kms_mmap_write_crc.c
@@ -193,7 +193,8 @@ static void prepare_crtc(data_t *data)
igt_display_reset(display);
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
mode = igt_output_get_mode(output);
@@ -227,7 +228,7 @@ static void cleanup_crtc(data_t *data)
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &data->fb[0]);
@@ -296,7 +297,8 @@ int igt_main_args("n", NULL, NULL, opt_handler, NULL)
for_each_pipe_with_valid_output(&data.display, pipe, output) {
igt_display_reset(&data.display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
index 2dde4660e77c..4559c8b9e951 100644
--- a/tests/intel/kms_pipe_b_c_ivb.c
+++ b/tests/intel/kms_pipe_b_c_ivb.c
@@ -102,7 +102,7 @@ disable_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
{
igt_plane_t *primary;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane(output, 0);
igt_plane_set_fb(primary, NULL);
return igt_display_commit(&data->display);
@@ -116,7 +116,7 @@ set_mode_on_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
struct igt_fb fb;
int fb_id;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
@@ -162,7 +162,7 @@ find_outputs(data_t *data, igt_output_t **output1, igt_output_t **output2)
if (pipe == PIPE_C && output != *output1 && !*output2)
*output2 = output;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_skip_on_f(!*output1 || !*output2, "Not enough connected outputs\n");
diff --git a/tests/intel/kms_pipe_stress.c b/tests/intel/kms_pipe_stress.c
index 7d212a07cb75..e8e01556ba25 100644
--- a/tests/intel/kms_pipe_stress.c
+++ b/tests/intel/kms_pipe_stress.c
@@ -343,7 +343,7 @@ static int commit_mode(struct data *data, igt_output_t *output,
int ret;
igt_output_override_mode(output, mode);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
ret = igt_display_try_commit_atomic(&data->display,
DRM_MODE_ATOMIC_TEST_ONLY |
diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
index 7d62d0503d51..360887f1772f 100644
--- a/tests/intel/kms_pm_backlight.c
+++ b/tests/intel/kms_pm_backlight.c
@@ -166,7 +166,7 @@ check_suspend(igt_output_t *output)
static void test_cleanup(igt_display_t *display, igt_output_t *output)
{
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_pm_restore_sata_link_power_management();
}
@@ -181,9 +181,10 @@ static void test_setup(igt_display_t display, igt_output_t *output)
igt_display_reset(&display);
for_each_pipe(&display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
mode = igt_output_get_mode(output);
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 8cc260fac0e5..5e59ba6e03a3 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -135,7 +135,8 @@ static void set_output_on_pipe_b(data_t *data)
if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -169,7 +170,8 @@ static void setup_output(data_t *data)
if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
data->output = output;
data->mode = igt_output_get_mode(output);
@@ -678,7 +680,7 @@ static void test_deep_pkgc_state(data_t *data)
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for_each_connector_mode(output) {
data->mode = &output->config.connector->modes[j__];
delay = (MSEC / (data->mode->vrefresh));
diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
index 07916d42cb85..a8801261dafa 100644
--- a/tests/intel/kms_pm_lpsp.c
+++ b/tests/intel/kms_pm_lpsp.c
@@ -105,7 +105,7 @@ static void screens_disabled_subtest(data_t *data)
for (int i = 0; i < data->display.n_outputs; i++) {
data->output = &data->display.outputs[i];
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_display_commit(&data->display);
valid_output++;
}
@@ -145,7 +145,7 @@ static void test_cleanup(data_t *data)
primary = igt_output_get_plane_type(data->output,
DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &data->fb);
data->output = NULL;
@@ -156,7 +156,8 @@ static bool test_constraint(data_t *data)
drmModeModeInfo *mode;
igt_display_reset(&data->display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
mode = igt_output_get_mode(data->output);
diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
index c5948f18ce41..d7d0989b9a67 100644
--- a/tests/intel/kms_pm_rpm.c
+++ b/tests/intel/kms_pm_rpm.c
@@ -1629,7 +1629,8 @@ static void set_prefered_mode(void)
for_each_pipe_with_valid_output(display, pipe, output) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
index 7b93608f3e4a..8bb4b15482ae 100644
--- a/tests/intel/kms_psr.c
+++ b/tests/intel/kms_psr.c
@@ -697,10 +697,11 @@ static enum pipe get_pipe_for_output(igt_display_t *display,
enum pipe pipe;
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
index 61a195a45d2a..f42863874e5e 100644
--- a/tests/intel/kms_psr2_sf.c
+++ b/tests/intel/kms_psr2_sf.c
@@ -424,11 +424,12 @@ static void prepare(data_t *data)
if (data->coexist_feature & FEATURE_DSC) {
save_force_dsc_en(data->drm_fd, output);
force_dsc_enable(data->drm_fd, output);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
if (data->big_fb_test) {
fb_w = data->big_fb_width;
@@ -1045,7 +1046,7 @@ static void cleanup(data_t *data)
if (data->coexist_feature & FEATURE_DSC)
restore_force_dsc_en();
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
@@ -1082,10 +1083,10 @@ pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
index fd0963ab7d3d..24318037ea44 100644
--- a/tests/intel/kms_psr2_su.c
+++ b/tests/intel/kms_psr2_su.c
@@ -127,7 +127,8 @@ static void setup_output(data_t *data)
continue;
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -300,7 +301,7 @@ static int check_psr2_support(data_t *data, enum pipe pipe)
igt_display_reset(display);
output = data->output;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
prepare(data, output);
status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2, output);
@@ -372,7 +373,8 @@ int igt_main()
for (i = 0; i < n_pipes; i++) {
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
igt_output_name(outputs[i])) {
- igt_output_set_pipe(outputs[i], pipes[i]);
+ igt_output_set_crtc(outputs[i],
+ igt_crtc_for_pipe(outputs[i]->display, pipes[i]));
if (data.op == FRONTBUFFER &&
intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
/*
diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
index 8fe4a25d74ff..87016eb94f4f 100644
--- a/tests/intel/kms_psr_stress_test.c
+++ b/tests/intel/kms_psr_stress_test.c
@@ -94,9 +94,10 @@ static void setup_output(data_t *data)
continue;
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/intel/kms_pwrite_crc.c b/tests/intel/kms_pwrite_crc.c
index 03944c201f61..d1cd9674381c 100644
--- a/tests/intel/kms_pwrite_crc.c
+++ b/tests/intel/kms_pwrite_crc.c
@@ -124,7 +124,8 @@ static void prepare_crtc(data_t *data)
drmModeModeInfo *mode;
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
mode = igt_output_get_mode(output);
@@ -158,7 +159,7 @@ static void cleanup_crtc(data_t *data)
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &data->fb[0]);
@@ -173,7 +174,8 @@ static void run_test(data_t *data)
for_each_pipe_with_valid_output(display, data->pipe, data->output) {
igt_display_reset(display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index 3714153276b0..c1242e8d514c 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -445,10 +445,11 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
continue;
}
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
continue;
}
diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
index 5d96f91a6704..57113981d70a 100644
--- a/tests/intel/perf_pmu.c
+++ b/tests/intel/perf_pmu.c
@@ -1050,7 +1050,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_plane_t *primary;
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
/* create and set the primary plane fb */
mode = igt_output_get_mode(output);
@@ -1078,7 +1079,7 @@ static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
}
diff --git a/tests/intel/prime_mmap_kms.c b/tests/intel/prime_mmap_kms.c
index 37bc174a5c1e..c19c3763fc04 100644
--- a/tests/intel/prime_mmap_kms.c
+++ b/tests/intel/prime_mmap_kms.c
@@ -161,7 +161,7 @@ static void cleanup_crtc(gpu_process_t *gpu)
igt_plane_set_fb(gpu->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(gpu->drm_fd, &gpu->fb);
@@ -174,7 +174,8 @@ static void prepare_crtc(gpu_process_t *gpu)
drmModeModeInfo *mode;
/* select the pipe we want to use */
- igt_output_set_pipe(output, gpu->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, gpu->pipe));
mode = igt_output_get_mode(output);
diff --git a/tests/intel/xe_pat.c b/tests/intel/xe_pat.c
index 193b63a1d079..2fd3635fdc5c 100644
--- a/tests/intel/xe_pat.c
+++ b/tests/intel/xe_pat.c
@@ -852,7 +852,8 @@ static void display_vs_wb_transient(int fd)
for_each_pipe_with_valid_output(&display, pipe, output) {
igt_display_reset(&display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&display))
continue;
diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
index 351897e1ce68..b525bff8da0b 100644
--- a/tests/intel/xe_pxp.c
+++ b/tests/intel/xe_pxp.c
@@ -850,7 +850,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
IGT_PIPE_CRC_SOURCE_AUTO);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(pipe->pipe, output));
- igt_output_set_pipe(output, pipe->pipe);
+ igt_output_set_crtc(output, pipe);
commit_fb(display, plane, ref_fb, mode);
igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
@@ -905,7 +905,8 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
commit_fb(display, plane, &ref_fb, mode);
@@ -962,7 +963,8 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
pipe = igt_crtc_for_pipe(display, i);
plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_require(igt_pipe_connector_valid(i, output));
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
igt_plane_set_fb(plane, &ref_fb);
igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 6762f172c4fa..71570385c32e 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -302,7 +302,8 @@ static void test_init(data_t *data)
data->crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
data->refresh_rate = mode->vrefresh;
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
data->plane = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
if (data->overlay_path)
@@ -915,7 +916,8 @@ static void run_test(data_t *data, void (*test)(data_t *))
for_each_pipe_with_valid_output(display, data->pipe, data->output) {
igt_display_reset(display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 01a058673913..236c1d5445e2 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -677,7 +677,7 @@ static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32
mode->hdisplay, mode->vdisplay,
format, I915_TILING_NONE, &fb);
igt_plane_set_fb(data->primary, &fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -696,7 +696,7 @@ static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32
crtc_get_current_state(data->pipe, old_crtc_values);
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -1331,7 +1331,7 @@ static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output)
{
drmModeModeInfo *mode;
igt_display_reset(&data->display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
data->primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
DRM_PLANE_TYPE_PRIMARY);
@@ -1357,7 +1357,7 @@ static void atomic_clear(data_t *data, enum pipe pipe, igt_output_t *output)
igt_plane_set_position(plane, 0, 0);
}
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE);
igt_remove_fb(data->drm_fd, &data->fb);
}
@@ -1376,10 +1376,10 @@ pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index 9bce0bf1f829..b519fc635a54 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -85,7 +85,7 @@ static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_
signal(SIGCONT, SIG_IGN);
if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
@@ -130,7 +130,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
igt_display_reset(display);
igt_display_commit2(display, COMMIT_ATOMIC);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
plane = igt_output_get_plane_type(output, plane_type);
@@ -301,7 +301,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
igt_plane_set_fb(plane, NULL);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
igt_remove_fb(display->drm_fd, &fb);
}
@@ -313,10 +313,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 63c7cf9f9f08..5b8728631a75 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -144,7 +144,7 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
igt_info("Using (pipe %s + %s) to run the subtest.\n",
kmstest_pipe_name(pipe), igt_output_name(output));
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
mode = igt_output_get_mode(output);
@@ -584,16 +584,17 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, &data->fbs[0]);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, pipe_obj);
wm_setup_plane(data, pipe, 0, NULL, false);
if (flags & DRM_MODE_ATOMIC_ALLOW_MODESET) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ pipe_obj);
}
setup_parms(data, pipe, mode, &data->fbs[0], &data->argb_fb, &data->sprite_fb, parms, &iter_max);
@@ -674,7 +675,8 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
n_enable_planes < pipe_obj->n_planes)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ pipe_obj);
if (!wm_setup_plane(data, pipe, i, parms, fencing))
continue;
@@ -683,7 +685,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
wait_for_transition(data, pipe, nonblocking, fencing);
if (type == TRANSITION_MODESET_DISABLE) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
if (!wm_setup_plane(data, pipe, 0, parms, fencing))
continue;
@@ -731,7 +733,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output, boo
if (fencing)
unprepare_fencing(data, pipe);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
for_each_plane_on_pipe(&data->display, pipe, plane)
igt_plane_set_fb(plane, NULL);
@@ -791,7 +793,7 @@ static void unset_output_pipe(igt_display_t *display)
int i;
for (i = 0; i < display->n_outputs; i++)
- igt_output_set_pipe(&display->outputs[i], PIPE_NONE);
+ igt_output_set_crtc(&display->outputs[i], NULL);
}
static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
@@ -841,19 +843,21 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
if (output->pending_pipe != PIPE_NONE)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (intel_pipe_output_combo_valid(&data->display)) {
mode = igt_output_get_mode(output);
break;
} else {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
}
if (!mode)
return 0;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_plane_set_fb(plane, fb);
igt_fb_set_size(fb, plane, mode->hdisplay, mode->vdisplay);
igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
@@ -932,7 +936,8 @@ retry:
if (output->pending_pipe != PIPE_NONE)
continue;
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
if (intel_pipe_output_combo_valid(&data->display)) {
mode = igt_output_get_mode(output);
@@ -942,7 +947,7 @@ retry:
break;
} else {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
}
@@ -1088,10 +1093,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index a8a094f4d1f1..2622eae89eda 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -223,7 +223,8 @@ static void run_test_linear_tiling(data_t *data, int pipe, const drmModeModeInfo
DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
&buffer[i]);
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
igt_plane_set_fb(data->primary[i], &buffer[i]);
igt_info("Assigning pipe %s to output %s with mode %s\n",
diff --git a/tests/kms_color.c b/tests/kms_color.c
index c68ccafd390a..072d0ad09474 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -100,7 +100,7 @@ static bool test_pipe_degamma(data_t *data,
degamma_linear = generate_table(data->degamma_lut_size, 1.0);
degamma_full = generate_table_max(data->degamma_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
@@ -152,7 +152,7 @@ static bool test_pipe_degamma(data_t *data,
disable_degamma(primary->pipe);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &fb);
igt_remove_fb(data->drm_fd, &fb_modeset);
@@ -187,7 +187,7 @@ static bool test_pipe_gamma(data_t *data,
gamma_full = generate_table_max(data->gamma_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
@@ -238,7 +238,7 @@ static bool test_pipe_gamma(data_t *data,
disable_gamma(primary->pipe);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &fb);
igt_remove_fb(data->drm_fd, &fb_modeset);
@@ -281,7 +281,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
green_lut = malloc(sizeof(uint16_t) * legacy_lut_size);
blue_lut = malloc(sizeof(uint16_t) * legacy_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
@@ -345,7 +345,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
igt_display_commit(&data->display);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &fb);
igt_remove_fb(data->drm_fd, &fb_modeset);
@@ -384,7 +384,7 @@ static bool test_pipe_legacy_gamma_reset(data_t *data,
degamma_linear = generate_table(data->degamma_lut_size, 1.0);
gamma_zero = generate_table_zero(data->gamma_lut_size);
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
/* Ensure we have a clean state to start with. */
disable_degamma(primary->pipe);
@@ -483,7 +483,7 @@ static bool test_pipe_legacy_gamma_reset(data_t *data,
end:
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
free_lut(degamma_linear);
@@ -516,7 +516,7 @@ static bool test_pipe_ctm(data_t *data,
igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_CTM));
- igt_output_set_pipe(output, primary->pipe->pipe);
+ igt_output_set_crtc(output, primary->pipe);
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
@@ -587,7 +587,7 @@ static bool test_pipe_ctm(data_t *data,
disable_ctm(primary->pipe);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &fb);
igt_remove_fb(data->drm_fd, &fb_modeset);
@@ -896,7 +896,8 @@ run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
igt_display_reset(&data->display);
igt_output_set_prop_value(output, IGT_CONNECTOR_MAX_BPC, 10);
- igt_output_set_pipe(output, p);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, p));
if (is_intel_device(data->drm_fd) &&
!igt_max_bpc_constraint(&data->display, p, output, 10)) {
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 3ca56138e97d..37639a261cd2 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -28,10 +28,11 @@ bool pipe_output_combo_valid(data_t *data, enum pipe pipe)
{
bool ret = true;
- igt_output_set_pipe(data->output, pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display))
ret = false;
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
return ret;
}
diff --git a/tests/kms_colorop.c b/tests/kms_colorop.c
index 2714312834c1..6bce0ab057bb 100644
--- a/tests/kms_colorop.c
+++ b/tests/kms_colorop.c
@@ -154,7 +154,8 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display, __u32 four
continue;
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (check_writeback_config(display, output, override_mode, fourcc_in, fourcc_out)) {
igt_debug("Using connector %u:%s on pipe %d\n",
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index b3cc2cec4931..0c05453496e7 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -97,7 +97,7 @@ static void test_fini(data_t *data, enum pipe pipe, int n_planes,
}
/* reset the constraint on the pipe */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
free(data->plane);
@@ -166,7 +166,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
int i;
int format, modifier;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
p = primary->pipe;
@@ -283,7 +283,8 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
const drmModeModeInfo *mode_hi;
drmModeModeInfo *mode_lo;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
mode_hi = igt_output_get_mode(output);
mode_lo = get_lowres_mode(data, mode_hi, output);
@@ -292,7 +293,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
igt_output_override_mode(output, mode_lo);
free(mode_lo);
if (is_amdgpu_device(data->drm_fd))
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
/* switch back to higher resolution */
@@ -342,7 +343,8 @@ run_tests_for_pipe(data_t *data)
for_each_valid_output_on_pipe(&data->display, pipe, output) {
igt_display_reset(&data->display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 20a06ab58071..377bab9a3afb 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -609,7 +609,7 @@ test_fini(igt_output_t *output, enum igt_commit_style commit_style)
primary = igt_output_get_plane_type(output,
DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data.display, commit_style);
}
@@ -672,7 +672,8 @@ test_content_protection(enum igt_commit_style commit_style, int content_type)
}
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -808,7 +809,8 @@ test_content_protection_mst(int content_type)
igt_assert_f(pipe_found, "No valid pipe found for %s\n", output->name);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
prepare_modeset_on_mst_output(output, false);
dp_mst_outputs++;
if (output_hdcp_capable(output, content_type))
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index ff682b93a242..24553e1bda09 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -559,7 +559,7 @@ static void cleanup_crtc(data_t *data)
cairo_surface_destroy(data->surface);
data->surface = NULL;
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_plane_set_fb(data->primary, NULL);
igt_display_commit(display);
@@ -578,7 +578,8 @@ static void prepare_crtc(data_t *data, int cursor_w, int cursor_h)
igt_display_reset(display);
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
/* create and set the primary plane fbs */
mode = igt_output_get_mode(output);
@@ -780,7 +781,8 @@ static bool cursor_size_supported(data_t *data, int w, int h)
h <= data->cursor_max_h);
igt_display_reset(display);
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
mode = igt_output_get_mode(output);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -807,7 +809,7 @@ static bool cursor_size_supported(data_t *data, int w, int h)
igt_plane_set_fb(cursor, NULL);
igt_remove_fb(data->drm_fd, &primary_fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret == 0;
}
@@ -884,12 +886,13 @@ static bool valid_pipe_output_combo(data_t *data)
igt_display_t *display = &data->display;
igt_display_reset(display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (intel_pipe_output_combo_valid(display))
ret = true;
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
return ret;
}
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index ff8fe3402fe8..d77787e51b97 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -266,7 +266,8 @@ static void prepare_crtc(data_t *data)
cleanup_crtc(data);
/* select the pipe we want to use */
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
mode = igt_output_get_mode(data->output);
igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
@@ -399,11 +400,12 @@ int igt_main_args("", long_opts, help_str, opt_handler, &data)
continue;
igt_display_reset(&data.display);
- igt_output_set_pipe(data.output, data.pipe);
+ igt_output_set_crtc(data.output,
+ igt_crtc_for_pipe(data.output->display, data.pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
- igt_output_set_pipe(data.output, PIPE_NONE);
+ igt_output_set_crtc(data.output, NULL);
igt_dynamic_f("pipe-%s-%s",
kmstest_pipe_name(data.pipe),
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 566d920124ad..509cff1cf335 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -256,8 +256,8 @@ static void override_output_modes(igt_display_t *display,
bool found = igt_override_all_active_output_modes_to_fit_bw(display);
igt_require_f(found, "No valid mode combo found.\n");
- igt_output_set_pipe(output1, PIPE_NONE);
- igt_output_set_pipe(output2, PIPE_NONE);
+ igt_output_set_crtc(output1, NULL);
+ igt_output_set_crtc(output2, NULL);
}
static void stress(igt_display_t *display,
@@ -373,7 +373,7 @@ static void set_fb_on_crtc(igt_display_t *display, enum pipe pipe,
drmModeModeInfoPtr mode;
igt_plane_t *primary;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_pattern_fb(display->drm_fd,
@@ -442,7 +442,8 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
if((*output)->pending_pipe != PIPE_NONE)
continue;
- igt_output_set_pipe(*output, pipe);
+ igt_output_set_crtc(*output,
+ igt_crtc_for_pipe((*output)->display, pipe));
if (intel_pipe_output_combo_valid(display)) {
found = true;
@@ -453,7 +454,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
}
break;
}
- igt_output_set_pipe(*output, PIPE_NONE);
+ igt_output_set_crtc(*output, NULL);
}
if (found)
break;
@@ -707,11 +708,11 @@ static void flip(igt_display_t *display,
igt_plane_set_fb(cursor, NULL);
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
if (flip_pipe != cursor_pipe) {
igt_plane_set_fb(igt_output_get_plane_type(output2, DRM_PLANE_TYPE_PRIMARY),
NULL);
- igt_output_set_pipe(output2, PIPE_NONE);
+ igt_output_set_crtc(output2, NULL);
}
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -873,7 +874,7 @@ static void basic_flip_cursor(igt_display_t *display,
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1041,7 +1042,7 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1080,7 +1081,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
* Start disabled. No way around it, since the first atomic
* commit may be unreliable with amount of events sent.
*/
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
while (loops--) {
@@ -1097,7 +1098,8 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
* works as intended. It should block until the modeset completes.
*/
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
igt_plane_set_fb(cursor, NULL);
igt_display_commit_atomic(display, flags, NULL);
@@ -1113,7 +1115,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
igt_ignore_warn(read(display->drm_fd, &vbl, sizeof(vbl)));
igt_reset_timeout();
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit_atomic(display, flags, NULL);
igt_assert_eq(0, poll(&pfd, 1, 0));
@@ -1132,7 +1134,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
igt_plane_set_fb(primary, NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1225,7 +1227,7 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT;
/* Disable pipe2 */
- igt_output_set_pipe(output2, PIPE_NONE);
+ igt_output_set_crtc(output2, NULL);
igt_display_commit_atomic(display, flags, NULL);
enabled = false;
@@ -1255,7 +1257,8 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
/* Commit page flip and modeset simultaneously. */
igt_plane_set_fb(plane, &fb_info);
- igt_output_set_pipe(output2, enabled ? PIPE_NONE : pipe2);
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, enabled ? PIPE_NONE : pipe2));
enabled = !enabled;
wait_for_modeset(display, flags, 5, "Scheduling modeset");
@@ -1303,7 +1306,8 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
vblank_start = kmstest_get_vblank(display->drm_fd, pipe2, DRM_VBLANK_NEXTONMISS);
flip_nonblocking(display, pipe2, atomic, &fb2_info, (void*)(ptrdiff_t)vblank_start);
} else {
- igt_output_set_pipe(output2, enabled ? PIPE_NONE : pipe2);
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, enabled ? PIPE_NONE : pipe2));
igt_set_timeout(1, "Scheduling modeset\n");
do {
@@ -1329,8 +1333,8 @@ done:
NULL);
igt_plane_set_fb(cursor, NULL);
igt_plane_set_fb(cursor2, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
- igt_output_set_pipe(output2, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
+ igt_output_set_crtc(output2, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1439,7 +1443,7 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1569,8 +1573,8 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
NULL);
igt_plane_set_fb(cursors[0], NULL);
igt_plane_set_fb(cursors[1], NULL);
- igt_output_set_pipe(outputs[0], PIPE_NONE);
- igt_output_set_pipe(outputs[1], PIPE_NONE);
+ igt_output_set_crtc(outputs[0], NULL);
+ igt_output_set_crtc(outputs[1], NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info[0]);
@@ -1644,7 +1648,7 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -1755,7 +1759,7 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
/* Clean-up */
igt_plane_set_fb(plane_primary, NULL);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(display->drm_fd, &fb_info[1]);
@@ -1820,7 +1824,7 @@ static void modeset_atomic_cursor_hotspot(igt_display_t *display)
/* Clean-up */
set_cursor_hotspot(cursor, init_hot_x, init_hot_y);
igt_plane_set_fb(cursor, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
igt_remove_fb(display->drm_fd, &cursor_fb);
diff --git a/tests/kms_debugfs.c b/tests/kms_debugfs.c
index e77c91afff9f..8cdb020fe482 100644
--- a/tests/kms_debugfs.c
+++ b/tests/kms_debugfs.c
@@ -48,7 +48,8 @@ static void igt_display_all_on(igt_display_t *display)
if (output->pending_pipe != PIPE_NONE)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
mode = igt_output_get_mode(output);
igt_create_pattern_fb(display->drm_fd,
@@ -83,7 +84,7 @@ static void igt_display_all_off(igt_display_t *display)
igt_plane_t *plane;
for_each_connected_output(display, output)
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
for_each_pipe(display, pipe)
for_each_plane_on_pipe(display, pipe, plane)
diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
index a5588904b0d3..818ebf32c2f0 100644
--- a/tests/kms_display_modes.c
+++ b/tests/kms_display_modes.c
@@ -87,8 +87,10 @@ static void run_extendedmode_basic(data_t *data,
igt_display_reset(display);
- igt_output_set_pipe(output1, pipe1);
- igt_output_set_pipe(output2, pipe2);
+ igt_output_set_crtc(output1,
+ igt_crtc_for_pipe(output1->display, pipe1));
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, pipe2));
mode[0] = igt_output_get_mode(output1);
mode[1] = igt_output_get_mode(output2);
@@ -156,8 +158,8 @@ static void run_extendedmode_basic(data_t *data,
igt_pipe_crc_free(pipe_crc[0]);
igt_pipe_crc_free(pipe_crc[1]);
- igt_output_set_pipe(output1, PIPE_NONE);
- igt_output_set_pipe(output2, PIPE_NONE);
+ igt_output_set_crtc(output1, NULL);
+ igt_output_set_crtc(output2, NULL);
igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
DRM_PLANE_TYPE_PRIMARY),
@@ -203,8 +205,10 @@ static void run_extendedmode_test(data_t *data) {
igt_display_reset(display);
- igt_output_set_pipe(output1, pipe1);
- igt_output_set_pipe(output2, pipe2);
+ igt_output_set_crtc(output1,
+ igt_crtc_for_pipe(output1->display, pipe1));
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, pipe2));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 102bab1debd1..3731b7d4b4ea 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -81,7 +81,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
data->primary =
igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(output, p);
+ igt_output_set_crtc(output, pipe);
}
/* Returns the current state of dithering from the crtc debugfs. */
@@ -168,7 +168,7 @@ static void test_dithering(data_t *data, enum pipe pipe,
cleanup:
igt_output_set_prop_value(output, IGT_CONNECTOR_MAX_BPC, bpc);
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(data->drm_fd, &data->fb);
@@ -218,10 +218,11 @@ run_dither_test(data_t *data, int fb_bpc, int fb_format, int output_bpc)
}
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
index a0615a113f1c..da80ecf66855 100644
--- a/tests/kms_feature_discovery.c
+++ b/tests/kms_feature_discovery.c
@@ -100,7 +100,8 @@ int igt_main() {
for_each_pipe(&display, pipe) {
for_each_valid_output_on_pipe(&display, pipe, output) {
if (output->pending_pipe == PIPE_NONE) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
output_count++;
break;
}
@@ -108,7 +109,8 @@ int igt_main() {
}
for (int i = 0; i < display.n_outputs; i++) {
- igt_output_set_pipe(&display.outputs[i], PIPE_NONE);
+ igt_output_set_crtc(&display.outputs[i],
+ NULL);
}
}
diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index eafda2110a39..ce8993ccb681 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -97,7 +97,7 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
igt_device_set_master(data->drm_fd);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(data->drm_fd, &fb[0]);
@@ -121,7 +121,8 @@ int igt_main()
for_each_pipe_with_valid_output(&data.display, pipe, output) {
igt_display_reset(&data.display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index 45840945d658..e6092dbfce99 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -230,7 +230,8 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_output_set_prop_value(data->output, IGT_CONNECTOR_MAX_BPC, 10);
data->w = data->mode->hdisplay;
@@ -333,9 +334,10 @@ static void test_bpc_switch(data_t *data, uint32_t flags)
}
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
@@ -741,9 +743,10 @@ static void test_hdr(data_t *data, uint32_t flags)
}
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 2b385d4931f2..a3d52deafd7f 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -359,7 +359,8 @@ int igt_main()
for_each_pipe_with_valid_output(&data.display, pipe, output) {
igt_display_reset(&data.display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index d2e55ffcf538..4111a26b4c8b 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -161,7 +161,7 @@ static int prepare_crtc(data_t *data, bool is_master)
return -ENOENT;
/* select the pipe we want to use */
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
/* create and set the primary plane fb */
mode = igt_output_get_mode(output);
@@ -196,7 +196,7 @@ static void cleanup_crtc(lease_t *lease, igt_output_t *output)
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
}
@@ -1291,7 +1291,8 @@ int igt_main()
for_each_pipe_with_valid_output(display, data.pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, data.pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data.pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
index 3a1944b48874..7ce142f44fd4 100644
--- a/tests/kms_multipipe_modeset.c
+++ b/tests/kms_multipipe_modeset.c
@@ -64,7 +64,7 @@ static void run_test(data_t *data, int valid_outputs)
mode = igt_output_get_mode(output);
igt_assert(mode);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
width = max(width, mode->hdisplay);
height = max(height, mode->vdisplay);
@@ -83,7 +83,8 @@ static void run_test(data_t *data, int valid_outputs)
pipe_crcs[i] = igt_pipe_crc_new(display->drm_fd, i,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
mode = igt_output_get_mode(output);
igt_assert(mode);
@@ -93,7 +94,7 @@ static void run_test(data_t *data, int valid_outputs)
igt_display_commit2(display, COMMIT_ATOMIC);
igt_pipe_crc_collect_crc(pipe_crcs[i], &ref_crcs[i]);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
i++;
}
@@ -105,7 +106,8 @@ static void run_test(data_t *data, int valid_outputs)
mode = NULL;
- igt_output_set_pipe(output, i);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, i));
mode = igt_output_get_mode(output);
igt_assert(mode);
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index 14cebf384d91..9bfb7d3f1356 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -74,7 +74,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_display_t *display = &data->display;
igt_output_override_mode(output, mode);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
/* before allocating, free if any older fb */
igt_remove_fb(data->drm_fd, &data->fb1);
@@ -109,7 +109,7 @@ test_panel_fitting_legacy(data_t *d, igt_display_t *display,
drmModeModeInfo *mode, native_mode;
bool is_plane_scaling_active = true;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
native_mode = *mode;
@@ -202,7 +202,7 @@ test_panel_fitting_fastset(igt_display_t *display, const enum pipe pipe, igt_out
mode = *igt_output_get_mode(output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 0a52b651ee72..c74c0a02ae2f 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -138,7 +138,7 @@ static void test_read_crc(data_t *data, enum pipe pipe,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -219,7 +219,7 @@ static void test_read_crc(data_t *data, enum pipe pipe,
}
/* Clean-up */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_plane_set_fb(primary, NULL);
igt_display_commit(display);
}
@@ -245,7 +245,7 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
struct igt_fb fb0, fb1;
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
@@ -282,7 +282,7 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
/* Clean-up */
igt_pipe_crc_free(pipe_crc);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &fb0);
@@ -302,7 +302,7 @@ static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_color_fb(data->drm_fd,
@@ -330,7 +330,7 @@ static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
/* Clean-up */
igt_pipe_crc_free(pipe_crc);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(data->drm_fd, &data->fb);
}
@@ -342,10 +342,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index c8701cf1a07d..535ce84d3074 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -194,7 +194,7 @@ test_grab_crc(data_t *data, igt_output_t *output, enum pipe pipe,
char *crc_str;
int ret;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane(output, 0);
@@ -271,7 +271,7 @@ test_plane_position_with_output(data_t *data,
igt_debug("Testing connector %s using pipe %s plane %d\n", igt_output_name(output),
kmstest_pipe_name(pipe), plane);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -327,7 +327,7 @@ test_plane_position_with_output(data_t *data,
igt_plane_set_fb(sprite, NULL);
/* reset the constraint on the pipe */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(data->drm_fd, &primary_fb);
@@ -407,7 +407,7 @@ test_plane_panning_with_output(data_t *data,
drmModeModeInfo *mode;
igt_crc_t crc;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
primary = igt_output_get_plane(output, 0);
@@ -436,7 +436,7 @@ test_plane_panning_with_output(data_t *data,
igt_plane_set_fb(primary, NULL);
/* reset states to neutral values, assumed by other tests */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_fb_set_position(&primary_fb, primary, 0, 0);
igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -1215,7 +1215,7 @@ test_pixel_formats(data_t *data, enum pipe pipe)
igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, &primary_fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, &primary_fb);
@@ -1235,7 +1235,7 @@ test_pixel_formats(data_t *data, enum pipe pipe)
set_legacy_lut(data, pipe, 0xffff);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
igt_remove_fb(data->drm_fd, &primary_fb);
@@ -1264,7 +1264,7 @@ static void test_planar_settings(data_t *data)
output = igt_get_single_output_for_pipe(&data->display, pipe);
igt_require(output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_display_commit_atomic(&data->display,
@@ -1347,11 +1347,12 @@ static void run_test(data_t *data, void (*test)(data_t *, enum pipe))
for_each_pipe_with_single_output(&data->display, pipe, data->output) {
igt_display_reset(&data->display);
- igt_output_set_pipe(data->output, pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
test(data, pipe);
if (is_pipe_limit_reached(++count))
diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index 99ce90616720..cfb67861086a 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -578,7 +578,7 @@ static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t *
break;
}
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
}
@@ -705,7 +705,8 @@ static void run_subtests(data_t *data)
igt_display_reset(&data->display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index b9aa0deed292..03fdb847d8c9 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -276,7 +276,8 @@ static void test_cursor(data_t *data, int size, unsigned int flags)
DRM_FORMAT_MOD_LINEAR, 1.0, 0.0, 1.0, &data->cfb);
igt_plane_set_fb(data->primary, &data->pfb);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
igt_display_commit2(&data->display, COMMIT_ATOMIC);
test_cursor_spots(data, size, flags);
@@ -333,7 +334,8 @@ int igt_main()
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index 5dac21ea6def..4b4b4b4597f3 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -283,7 +283,7 @@ static void test_cleanup(data_t *data)
{
igt_pipe_crc_free(data->pipe_crc);
- igt_output_set_pipe(data->output, PIPE_NONE);
+ igt_output_set_crtc(data->output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
@@ -301,7 +301,8 @@ static void run_test(data_t *data, uint64_t modifier)
data->output = output;
igt_display_reset(&data->display);
- igt_output_set_pipe(data->output, data->pipe);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe));
if (!intel_pipe_output_combo_valid(&data->display))
continue;
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 0ce12749f7c8..79af0d93a370 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -120,7 +120,7 @@ static void test_init(data_t *data, enum pipe pipe, int n_planes)
static void test_fini(data_t *data, igt_output_t *output, int n_planes)
{
/* reset the constraint on the pipe */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_pipe_crc_free(data->pipe_crc1);
data->pipe_crc1 = NULL;
@@ -143,7 +143,7 @@ get_reference_crc(data_t *data, igt_output_t *output, enum pipe pipe, igt_pipe_c
int ret;
igt_display_reset(&data->display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
plane[primary->index] = primary;
@@ -212,7 +212,8 @@ prepare_planes(data_t *data, enum pipe pipe_id, color_t *color, igt_plane_t **pl
int i;
int* suffle;
- igt_output_set_pipe(output, pipe_id);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe_id));
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
pipe = primary->pipe;
@@ -357,7 +358,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
for_each_plane_on_pipe(&data->display, pipe, plane)
igt_plane_set_fb(plane, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
for (int x = 0; x < c; x++)
@@ -387,7 +388,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
for_each_plane_on_pipe(&data->display, pipe, plane)
igt_plane_set_fb(plane, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
for (int x = 0; x < c; x++)
@@ -527,8 +528,10 @@ static void run_2_display_test(data_t *data, uint64_t modifier, const char *name
igt_display_reset(display);
- igt_output_set_pipe(output1, pipe1);
- igt_output_set_pipe(output2, pipe2);
+ igt_output_set_crtc(output1,
+ igt_crtc_for_pipe(output1->display, pipe1));
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, pipe2));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -559,7 +562,8 @@ static void run_test(data_t *data, uint64_t modifier, const char *name)
for_each_pipe_with_valid_output(display, pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 10b168615226..25adadb87bf8 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -726,7 +726,7 @@ test_scaler_with_modifier_pipe(data_t *d,
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for_each_plane_on_pipe(display, pipe, plane) {
if (plane->type == DRM_PLANE_TYPE_CURSOR)
@@ -766,7 +766,7 @@ test_scaler_with_rotation_pipe(data_t *d,
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for_each_plane_on_pipe(display, pipe, plane) {
if (plane->type == DRM_PLANE_TYPE_CURSOR)
@@ -804,7 +804,7 @@ test_scaler_with_pixel_format_pipe(data_t *d, double sf_plane,
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for_each_plane_on_pipe(display, pipe, plane) {
struct igt_vec tested_formats;
@@ -854,7 +854,8 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
if((*output)->pending_pipe != PIPE_NONE)
continue;
- igt_output_set_pipe(*output, pipe);
+ igt_output_set_crtc(*output,
+ igt_crtc_for_pipe((*output)->display, pipe));
if (intel_pipe_output_combo_valid(display)) {
found = true;
@@ -865,7 +866,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
}
break;
}
- igt_output_set_pipe(*output, PIPE_NONE);
+ igt_output_set_crtc(*output, NULL);
}
if (found)
break;
@@ -952,7 +953,7 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
for_each_connector_mode(output) {
mode = &output->config.connector->modes[j__];
igt_output_override_mode(output, mode);
@@ -1023,7 +1024,7 @@ test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, pipe_obj);
width = height = 20;
mode = igt_output_get_mode(output);
@@ -1095,8 +1096,10 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
kmstest_pipe_name(pipe1), igt_output_name(output1),
kmstest_pipe_name(pipe2), igt_output_name(output2));
- igt_output_set_pipe(output1, pipe1);
- igt_output_set_pipe(output2, pipe2);
+ igt_output_set_crtc(output1,
+ igt_crtc_for_pipe(output1->display, pipe1));
+ igt_output_set_crtc(output2,
+ igt_crtc_for_pipe(output2->display, pipe2));
igt_require(get_num_scalers(display, pipe1) >= 2);
igt_require(get_num_scalers(display, pipe2) >= 2);
@@ -1184,7 +1187,8 @@ static void invalid_parameter_tests(data_t *d)
output = igt_get_single_output_for_pipe(&d->display, pipe);
igt_require(output);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_require(get_num_scalers(&d->display, pipe) >= 1);
@@ -1219,7 +1223,7 @@ static void invalid_parameter_tests(data_t *d)
igt_fixture() {
igt_remove_fb(d->drm_fd, &fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
}
@@ -1281,7 +1285,7 @@ static void intel_max_source_size_test(data_t *d, enum pipe pipe, igt_output_t *
cleanup_crtc(d);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
/*
* Need to get the mode again, because it may have changed
@@ -1323,10 +1327,10 @@ pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index b4469d83339b..f443e9838a2b 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -124,7 +124,8 @@ static igt_output_t *setup_display(int importer_fd, igt_display_t *display,
for_each_pipe_with_valid_output(display, *pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, *pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, *pipe));
if (intel_pipe_output_combo_valid(display)) {
found = true;
break;
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 95bfe293a242..62e936bc5e51 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -80,7 +80,7 @@ static void prepare_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *o
igt_create_pattern_fb(display->drm_fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
@@ -94,7 +94,7 @@ static void cleanup_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *o
for_each_plane_on_pipe(display, pipe, plane)
igt_plane_set_fb(plane, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -328,7 +328,8 @@ static void colorop_properties(igt_display_t *display, bool atomic)
for_each_valid_output_on_pipe(display, pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -352,7 +353,8 @@ static void plane_properties(igt_display_t *display, bool atomic)
for_each_pipe_with_single_output(display, pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -371,7 +373,8 @@ static void crtc_properties(igt_display_t *display, bool atomic)
for_each_pipe_with_single_output(display, pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -393,9 +396,10 @@ static void connector_properties(igt_display_t *display, bool atomic)
for_each_pipe(display, pipe) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index b5b041857c7a..4726d4745d58 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -85,7 +85,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
int num_active_planes = 0;
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
@@ -167,7 +167,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
drmModeFreePlane(planeres);
}
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
static void
@@ -180,7 +180,8 @@ run_rmfb_test(struct rmfb_data *data, bool reopen)
for_each_pipe_with_single_output(display, pipe, output) {
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index d37a14e275f7..c0642a389121 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -299,7 +299,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
cleanup_crtc(data);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_require(intel_pipe_output_combo_valid(display));
igt_plane_set_rotation(plane, IGT_ROTATION_0);
@@ -609,7 +609,8 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -647,7 +648,8 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
break;
pipe_count++;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
plane = igt_output_get_plane_type(output, plane_type);
igt_require(plane_rotation_requirements(data, plane));
@@ -940,7 +942,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
@@ -1079,7 +1082,7 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
lastroundirotation = 0;
lastroundjrotation = 0;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
data->pipe_crc = NULL;
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index 4edefe4ec5b1..588513750257 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -62,7 +62,7 @@ static void test_scaling_mode_on_output(igt_display_t *display, const enum pipe
struct igt_fb red, blue;
int ret;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = *igt_output_get_mode(output);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -121,7 +121,8 @@ static void test_scaling_mode(data_t *data, uint32_t flags)
continue;
}
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
continue;
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 1d3b98728e15..cfeec133de58 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -105,7 +105,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_reset(&data->display);
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
/* create and set the primary plane fb */
mode = igt_output_get_mode(output);
@@ -135,7 +136,7 @@ static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
}
@@ -311,7 +312,8 @@ int igt_main()
for_each_pipe_with_valid_output(&data.display, p, output) {
igt_display_reset(&data.display);
- igt_output_set_pipe(output, p);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, p));
if (!intel_pipe_output_combo_valid(&data.display))
continue;
diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
index 003e6ea408e8..b63b03c0cd51 100644
--- a/tests/kms_tiled_display.c
+++ b/tests/kms_tiled_display.c
@@ -198,7 +198,7 @@ static void test_cleanup(data_t *data)
for (count = 0; count < data->num_h_tiles; count++) {
if (conns[count].output) {
reset_plane(conns[count].output);
- igt_output_set_pipe(conns[count].output, PIPE_NONE);
+ igt_output_set_crtc(conns[count].output, NULL);
}
}
igt_remove_fb(data->drm_fd, &data->fb_test_pattern);
@@ -250,8 +250,8 @@ static void setup_mode(data_t *data)
conns[count].pipe = pipe;
conns[count].output = output;
- igt_output_set_pipe(conns[count].output,
- conns[count].pipe);
+ igt_output_set_crtc(conns[count].output,
+ igt_crtc_for_pipe(conns[count].output->display, conns[count].pipe));
break;
}
}
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 4f43050791f8..aa5927cdf726 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -99,7 +99,7 @@ functional_test_init(functional_test_t *test, igt_output_t *output, enum pipe pi
test->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
IGT_PIPE_CRC_SOURCE_AUTO);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
@@ -136,7 +136,7 @@ functional_test_fini(functional_test_t *test, igt_output_t *output)
igt_remove_fb(test->data->drm_fd, &test->red_fb);
igt_remove_fb(test->data->drm_fd, &test->yellow_fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&test->data->display, COMMIT_LEGACY);
}
@@ -254,14 +254,14 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7);
/* Step 11: Disable primary plane */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
igt_plane_set_fb(primary, NULL);
igt_display_commit2(display, COMMIT_UNIVERSAL);
/* Step 12: Legacy modeset to yellow FB (CRC 8) */
igt_plane_set_fb(primary, &test.yellow_fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_display_commit2(display, COMMIT_LEGACY);
igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8);
@@ -349,7 +349,7 @@ sanity_test_init(sanity_test_t *test, igt_output_t *output, enum pipe pipe)
data_t *data = test->data;
drmModeModeInfo *mode;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
@@ -383,7 +383,7 @@ sanity_test_fini(sanity_test_t *test, igt_output_t *output)
igt_remove_fb(test->data->drm_fd, &test->undersized_fb);
igt_remove_fb(test->data->drm_fd, &test->blue_fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&test->data->display, COMMIT_LEGACY);
}
@@ -402,7 +402,7 @@ sanity_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
int i, ret;
int expect = 0;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
sanity_test_init(&test, output, pipe);
@@ -492,7 +492,7 @@ pageflip_test_init(pageflip_test_t *test, igt_output_t *output, enum pipe pipe)
data_t *data = test->data;
drmModeModeInfo *mode;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
@@ -513,7 +513,7 @@ pageflip_test_fini(pageflip_test_t *test, igt_output_t *output)
igt_remove_fb(test->data->drm_fd, &test->red_fb);
igt_remove_fb(test->data->drm_fd, &test->blue_fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&test->data->display, COMMIT_LEGACY);
}
@@ -528,7 +528,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
fd_set fds;
int ret = 0;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
pageflip_test_init(&test, output, pipe);
@@ -539,7 +539,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
igt_display_commit2(&data->display, COMMIT_LEGACY);
/* Disable the primary plane */
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
igt_plane_set_fb(primary, NULL);
igt_display_commit2(&data->display, COMMIT_UNIVERSAL);
@@ -550,7 +550,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
* Note that crtc->primary->fb = NULL causes flip to return EBUSY for
* historical reasons...
*/
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_assert(drmModePageFlip(data->drm_fd, output->config.crtc->crtc_id,
test.red_fb.fb_id, 0, NULL) == -EBUSY);
@@ -565,12 +565,12 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
* completes, which we don't have a good way to specifically test for,
* but at least we can make sure that nothing blows up.
*/
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
igt_display_commit2(&data->display, COMMIT_ATOMIC);
igt_assert(drmModePageFlip(data->drm_fd, output->config.crtc->crtc_id,
test.red_fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT,
&test) == 0);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
igt_plane_set_fb(primary, NULL);
igt_display_commit2(&data->display, COMMIT_UNIVERSAL);
@@ -600,7 +600,7 @@ cursor_leak_test_fini(data_t *data,
for (i = 0; i < 10; i++)
igt_remove_fb(data->drm_fd, &curs[i]);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
}
static int
@@ -642,7 +642,7 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
igt_require(display->has_cursor_plane);
igt_require_intel(data->drm_fd);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
/* Count GEM framebuffers before creating our cursor FB's */
@@ -726,7 +726,7 @@ gen9_test_init(gen9_test_t *test, igt_output_t *output, enum pipe pipe)
data_t *data = test->data;
drmModeModeInfo *mode;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
mode = igt_output_get_mode(output);
test->w = mode->hdisplay / 2;
@@ -761,7 +761,7 @@ gen9_test_fini(gen9_test_t *test, igt_output_t *output)
igt_remove_fb(test->data->drm_fd, &test->smallred_fb);
igt_remove_fb(test->data->drm_fd, &test->smallblue_fb);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(&test->data->display, COMMIT_LEGACY);
}
@@ -777,7 +777,7 @@ pageflip_win_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
int ret = 0;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
gen9_test_init(&test, output, pipe);
@@ -820,10 +820,10 @@ pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 9057905acd67..ed72c3576784 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -129,7 +129,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_reset(display);
/* select the pipe we want to use */
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
/* create and set the primary plane fb */
mode = igt_output_get_mode(output);
@@ -148,7 +149,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
{
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
igt_remove_fb(fd, &data->primary_fb);
}
@@ -231,10 +232,10 @@ pipe_output_combo_valid(igt_display_t *display,
igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(display))
ret = false;
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
return ret;
}
@@ -420,7 +421,7 @@ static void vblank_ts_cont(data_t *data, int fd, int nchildren)
}
if (data->flags & MODESET) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
}
@@ -445,7 +446,8 @@ static void vblank_ts_cont(data_t *data, int fd, int nchildren)
}
if (data->flags & MODESET) {
- igt_output_set_pipe(output, data->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, data->pipe));
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
}
diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 4f4d7667c7d2..0e54672a7d83 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -973,7 +973,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
if (data->primary)
igt_plane_set_fb(data->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_output_override_mode(output, NULL);
igt_display_commit2(&data->display, COMMIT_ATOMIC);
@@ -1093,10 +1093,11 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
continue;
for_each_pipe(&data->display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (!intel_pipe_output_combo_valid(&data->display)) {
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
continue;
}
diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index 3760cdc6814f..0b968baa260a 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -170,7 +170,8 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display)
continue;
for_each_pipe(display, pipe) {
- igt_output_set_pipe(output, pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, pipe));
if (data.custom_mode)
override_mode = data.user_mode;
@@ -201,7 +202,7 @@ static void cleanup_writeback(igt_display_t *display, igt_output_t *output)
to_user_pointer(NULL));
igt_output_set_writeback_fb(output, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
}
diff --git a/tests/nouveau_crc.c b/tests/nouveau_crc.c
index bf913cf13ad4..7887ff409e9e 100644
--- a/tests/nouveau_crc.c
+++ b/tests/nouveau_crc.c
@@ -344,7 +344,7 @@ int igt_main()
* one
*/
if (data.output) {
- igt_output_set_pipe(data.output, PIPE_NONE);
+ igt_output_set_crtc(data.output, NULL);
igt_display_commit(&data.display);
}
@@ -354,7 +354,8 @@ int igt_main()
/* None of these tests need to perform modesets, just page flips. So running
* display setup here is fine
*/
- igt_output_set_pipe(data.output, pipe);
+ igt_output_set_crtc(data.output,
+ igt_crtc_for_pipe(data.output->display, pipe));
data.primary = igt_output_get_plane(data.output, 0);
igt_create_color_fb(data.drm_fd,
data.mode->hdisplay,
diff --git a/tests/vmwgfx/vmw_prime.c b/tests/vmwgfx/vmw_prime.c
index dd1e40cec14e..5f704089b146 100644
--- a/tests/vmwgfx/vmw_prime.c
+++ b/tests/vmwgfx/vmw_prime.c
@@ -185,7 +185,7 @@ static void cleanup_crtc(struct gpu_process_t *gpu)
igt_plane_set_fb(gpu->primary, NULL);
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(display);
igt_remove_fb(gpu->mdevice.drm_fd, &gpu->fb);
@@ -203,7 +203,8 @@ static void prepare_crtc(struct gpu_process_t *gpu)
int ret;
/* select the pipe we want to use */
- igt_output_set_pipe(output, gpu->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, gpu->pipe));
mode = igt_output_get_mode(output);
@@ -229,7 +230,8 @@ static void prepare_crtc_surface(struct gpu_process_t *gpu)
int prime_fd;
/* select the pipe we want to use */
- igt_output_set_pipe(output, gpu->pipe);
+ igt_output_set_crtc(output,
+ igt_crtc_for_pipe(output->display, gpu->pipe));
mode = igt_output_get_mode(output);
diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
index bcb7e00b0b07..a94370178847 100644
--- a/tools/amd_hdmi_compliance.c
+++ b/tools/amd_hdmi_compliance.c
@@ -409,7 +409,8 @@ static void test_init(data_t *data, int conn_id)
data->primary =
igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_pipe(data->output, data->pipe_id);
+ igt_output_set_crtc(data->output,
+ igt_crtc_for_pipe(data->output->display, data->pipe_id));
if (data->timeout_seconds > 0) {
struct sigaction sa;
diff --git a/tools/intel_pm_rpm.c b/tools/intel_pm_rpm.c
index c1cc54b82ad2..940107314190 100644
--- a/tools/intel_pm_rpm.c
+++ b/tools/intel_pm_rpm.c
@@ -76,7 +76,7 @@ static void disable_all_displays(data_t *data)
for (int i = 0; i < data->display.n_outputs; i++) {
output = &data->display.outputs[i];
- igt_output_set_pipe(output, PIPE_NONE);
+ igt_output_set_crtc(output, NULL);
igt_display_commit(&data->display);
}
}
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (8 preceding siblings ...)
2025-12-10 9:39 ` [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc() Ville Syrjala
@ 2025-12-10 9:39 ` Ville Syrjala
2025-12-10 14:43 ` Jani Nikula
2025-12-10 13:34 ` ✓ Xe.CI.BAT: success for lib/kms: Move towards using 'crtcs' instead of 'pipes' Patchwork
` (2 subsequent siblings)
12 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 9:39 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Move towards using 'crtcs' instead of 'pipes' by renaming
igt_pipe_t to igt_crtc_t.
Done with sed:
$ find -type f -name \*.[ch] -exec sed -i -e 's/struct igt_pipe/struct igt_crtc/g' -e 's/igt_pipe_t/igt_crtc_t/g' {} +
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.c | 108 +++++++++---------
lib/igt_kms.h | 44 +++----
tests/amdgpu/amd_abm.c | 2 +-
tests/amdgpu/amd_assr.c | 2 +-
tests/amdgpu/amd_bypass.c | 2 +-
tests/amdgpu/amd_color.c | 2 +-
tests/amdgpu/amd_dp_dsc.c | 2 +-
tests/amdgpu/amd_hotplug.c | 2 +-
tests/amdgpu/amd_ilr.c | 2 +-
tests/amdgpu/amd_link_settings.c | 2 +-
tests/amdgpu/amd_mall.c | 2 +-
tests/amdgpu/amd_max_bpc.c | 2 +-
tests/amdgpu/amd_mem_leak.c | 2 +-
tests/amdgpu/amd_multidisplay_modeset.c | 2 +-
tests/amdgpu/amd_odm.c | 2 +-
tests/amdgpu/amd_plane.c | 2 +-
tests/amdgpu/amd_psr.c | 2 +-
tests/amdgpu/amd_replay.c | 2 +-
tests/amdgpu/amd_subvp.c | 2 +-
tests/chamelium/kms_chamelium_color.c | 2 +-
.../kms_chamelium_sharpness_filter.c | 2 +-
tests/intel/gem_pxp.c | 2 +-
tests/intel/kms_big_fb.c | 4 +-
tests/intel/kms_cdclk.c | 2 +-
tests/intel/kms_flip_scaled_crc.c | 4 +-
tests/intel/kms_sharpness_filter.c | 4 +-
tests/intel/xe_pxp.c | 6 +-
tests/kms_atomic.c | 10 +-
tests/kms_atomic_transition.c | 4 +-
tests/kms_bw.c | 2 +-
tests/kms_color.c | 2 +-
tests/kms_color_helper.c | 18 +--
tests/kms_color_helper.h | 14 +--
tests/kms_concurrent.c | 2 +-
tests/kms_cursor_legacy.c | 4 +-
tests/kms_dither.c | 2 +-
tests/kms_hdr.c | 2 +-
tests/kms_multipipe_modeset.c | 2 +-
tests/kms_plane.c | 4 +-
tests/kms_plane_cursor.c | 2 +-
tests/kms_plane_multiple.c | 2 +-
tests/kms_plane_scaling.c | 2 +-
tools/amd_hdmi_compliance.c | 2 +-
43 files changed, 143 insertions(+), 143 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 082b126f8a49..ba8cc6b8163c 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -964,7 +964,7 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output,
}
static void
-igt_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,
+igt_fill_pipe_props(igt_display_t *display, igt_crtc_t *pipe,
int num_crtc_props, const char * const crtc_prop_names[])
{
drmModeObjectPropertiesPtr props;
@@ -993,7 +993,7 @@ igt_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,
drmModeFreeObjectProperties(props);
}
-static igt_plane_t *igt_get_assigned_primary(igt_output_t *output, igt_pipe_t *pipe)
+static igt_plane_t *igt_get_assigned_primary(igt_output_t *output, igt_crtc_t *pipe)
{
int drm_fd = output->display->drm_fd;
drmModeModeInfo *mode;
@@ -2657,7 +2657,7 @@ void igt_output_refresh(igt_output_t *output)
static int
igt_plane_set_property(igt_plane_t *plane, uint32_t prop_id, uint64_t value)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
return drmModeObjectSetProperty(display->drm_fd, plane->drm_plane->plane_id,
@@ -2741,7 +2741,7 @@ static void igt_plane_reset(igt_plane_t *plane)
plane->gem_handle = 0;
}
-static void igt_pipe_reset(igt_pipe_t *pipe)
+static void igt_pipe_reset(igt_crtc_t *pipe)
{
igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, 0);
igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 0);
@@ -2839,7 +2839,7 @@ void igt_display_reset(igt_display_t *display)
display->first_commit = true;
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
for_each_plane_on_pipe(display, pipe, plane)
@@ -2877,7 +2877,7 @@ void igt_require_pipe(igt_display_t *display, enum pipe pipe)
/* Get crtc mask for a pipe using crtc id */
static int
-__get_crtc_mask_for_pipe(drmModeRes *resources, igt_pipe_t *pipe)
+__get_crtc_mask_for_pipe(drmModeRes *resources, igt_crtc_t *pipe)
{
int offset;
@@ -3013,7 +3013,7 @@ void igt_display_reset_outputs(igt_display_t *display)
igt_display_reset(display);
for_each_pipe(display, i) {
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
igt_output_t *output;
if (!igt_pipe_has_valid_output(display, i))
@@ -3108,12 +3108,12 @@ void igt_display_require(igt_display_t *display, int drm_fd)
display->n_pipes = IGT_MAX_PIPES;
display->pipes = calloc(igt_display_n_crtcs(display),
- sizeof(igt_pipe_t));
+ sizeof(igt_crtc_t));
igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n",
igt_display_n_crtcs(display));
for (i = 0; i < resources->count_crtcs; i++) {
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int pipe_enum = (is_intel_dev)?
__intel_get_pipe_from_crtc_id(drm_fd,
resources->crtcs[i], i) : i;
@@ -3156,7 +3156,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
display->n_colorops = 0;
for_each_pipe(display, i) {
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
igt_plane_t *plane;
int p = 1, crtc_mask = 0;
int j, type;
@@ -3419,7 +3419,7 @@ void igt_modeset_disable_all_outputs(igt_display_t *display)
}
-static void igt_pipe_fini(igt_pipe_t *pipe)
+static void igt_pipe_fini(igt_crtc_t *pipe)
{
free(pipe->planes);
pipe->planes = NULL;
@@ -3512,7 +3512,7 @@ report_dup:
}
}
-static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
+static igt_crtc_t *igt_output_get_driving_pipe(igt_output_t *output)
{
igt_display_t *display = output->display;
enum pipe pipe;
@@ -3535,7 +3535,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
return igt_crtc_for_pipe(display, pipe);
}
-static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
+static igt_plane_t *igt_pipe_get_plane(igt_crtc_t *pipe, int plane_idx)
{
igt_require_f(plane_idx >= 0 && plane_idx < pipe->n_planes,
"Valid pipe->planes plane_idx not found, plane_idx=%d n_planes=%d",
@@ -3554,7 +3554,7 @@ static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
*
* Returns: A #igt_plane_t structure that matches the requested plane type
*/
-igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
+igt_plane_t *igt_pipe_get_plane_type(igt_crtc_t *pipe, int plane_type)
{
int i, plane_idx = -1;
@@ -3590,7 +3590,7 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
*
* Returns: The number of planes that match the requested plane type
*/
-int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type)
+int igt_pipe_count_plane_type(igt_crtc_t *pipe, int plane_type)
{
int i, count = 0;
@@ -3611,7 +3611,7 @@ int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type)
*
* Returns: The @index th plane that matches the requested plane type
*/
-igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
+igt_plane_t *igt_pipe_get_plane_type_index(igt_crtc_t *pipe, int plane_type,
int index)
{
int i, type_index = 0;
@@ -3658,7 +3658,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
for (i = 0; i < igt_display_n_crtcs(display); i++) {
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
if (pipe->valid)
full_pipe_mask |= (1 << i);
}
@@ -3735,7 +3735,7 @@ igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe p
return chosen_outputs[pipe];
}
-static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)
+static igt_output_t *igt_pipe_get_output(igt_crtc_t *pipe)
{
igt_display_t *display = pipe->display;
int i;
@@ -3762,7 +3762,7 @@ static uint32_t igt_plane_get_fb_id(igt_plane_t *plane)
}
static bool
-igt_atomic_ignore_plane_prop(igt_pipe_t *pipe, uint32_t prop)
+igt_atomic_ignore_plane_prop(igt_crtc_t *pipe, uint32_t prop)
{
igt_display_t *display = pipe->display;
@@ -3781,7 +3781,7 @@ igt_atomic_ignore_plane_prop(igt_pipe_t *pipe, uint32_t prop)
* Add position and fb changes of a plane to the atomic property set
*/
static void
-igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe,
+igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_crtc_t *pipe,
drmModeAtomicReq *req)
{
igt_display_t *display = pipe->display;
@@ -3823,7 +3823,7 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe,
* Add colorop properties
*/
static void
-igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_pipe_t *pipe,
+igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_crtc_t *pipe,
drmModeAtomicReq *req)
{
igt_display_t *display = pipe->display;
@@ -3882,7 +3882,7 @@ igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_pipe_t *pipe,
* tests that expect a specific error code).
*/
static int igt_drm_plane_commit(igt_plane_t *plane,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
bool fail_on_error)
{
igt_display_t *display = pipe->display;
@@ -3986,7 +3986,7 @@ static int igt_drm_plane_commit(igt_plane_t *plane,
* code).
*/
static int igt_cursor_commit_legacy(igt_plane_t *cursor,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
bool fail_on_error)
{
igt_display_t *display = pipe->display;
@@ -4037,7 +4037,7 @@ static int igt_cursor_commit_legacy(igt_plane_t *cursor,
* (setmode).
*/
static int igt_primary_plane_commit_legacy(igt_plane_t *primary,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
bool fail_on_error)
{
struct igt_display *display = primary->pipe->display;
@@ -4105,7 +4105,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,
}
static int igt_plane_fixup_rotation(igt_plane_t *plane,
- igt_pipe_t *pipe)
+ igt_crtc_t *pipe)
{
int ret;
@@ -4152,7 +4152,7 @@ static int igt_plane_fixup_rotation(igt_plane_t *plane,
* which API is used to do the programming.
*/
static int igt_plane_commit(igt_plane_t *plane,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
enum igt_commit_style s,
bool fail_on_error)
{
@@ -4196,7 +4196,7 @@ static bool is_atomic_prop(enum igt_atomic_crtc_properties prop)
* further programming will take place, which may result in some changes
* taking effect and others not taking effect.
*/
-static int igt_pipe_commit(igt_pipe_t *pipe,
+static int igt_pipe_commit(igt_crtc_t *pipe,
enum igt_commit_style s,
bool fail_on_error)
{
@@ -4663,7 +4663,7 @@ igt_output_replace_prop_blob(igt_output_t *output, enum igt_atomic_connector_pro
* is a blob, the blob id is returned. This can be passed
* to drmModeGetPropertyBlob() to get the contents of the blob.
*/
-uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+uint64_t igt_pipe_obj_get_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
{
igt_assert(igt_pipe_obj_has_prop(pipe, prop));
@@ -4680,7 +4680,7 @@ uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
* Returns: False if the given @pipe_obj doesn't have the enum @prop or
* failed to set the enum property @val else True.
*/
-bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe_obj,
+bool igt_pipe_obj_try_prop_enum(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop,
const char *val)
{
@@ -4706,7 +4706,7 @@ bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe_obj,
* This function tries to set given enum property @prop value @val to
* the given @pipe_obj, and terminate the execution if its failed.
*/
-void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe_obj,
+void igt_pipe_obj_set_prop_enum(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop,
const char *val)
{
@@ -4730,7 +4730,7 @@ void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe_obj,
* it works better with legacy commit.
*/
void
-igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, const void *ptr, size_t length)
+igt_pipe_obj_replace_prop_blob(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop, const void *ptr, size_t length)
{
igt_display_t *display = pipe->display;
uint64_t *blob = &pipe->values[prop];
@@ -4751,7 +4751,7 @@ igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
/*
* Add crtc property changes to the atomic property set
*/
-static void igt_atomic_prepare_crtc_commit(igt_pipe_t *pipe_obj, drmModeAtomicReq *req)
+static void igt_atomic_prepare_crtc_commit(igt_crtc_t *pipe_obj, drmModeAtomicReq *req)
{
int i;
@@ -4815,7 +4815,7 @@ static int igt_atomic_commit(igt_display_t *display, uint32_t flags, void *user_
req = drmModeAtomicAlloc();
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
/*
@@ -4866,7 +4866,7 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)
enum pipe pipe;
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
igt_plane_t *plane;
if (s == COMMIT_ATOMIC) {
@@ -4969,7 +4969,7 @@ static int do_display_commit(igt_display_t *display,
ret = igt_atomic_commit(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
} else {
for_each_pipe(display, pipe) {
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display,
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display,
pipe);
ret = igt_pipe_commit(pipe_obj, s, fail_on_error);
@@ -5244,7 +5244,7 @@ drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output)
*/
void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode)
{
- igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+ igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
if (mode)
output->override_mode = *mode;
@@ -5277,7 +5277,7 @@ int igt_output_preferred_vrefresh(igt_output_t *output)
return 60;
}
-static const char *igt_crtc_name(igt_pipe_t *crtc)
+static const char *igt_crtc_name(igt_crtc_t *crtc)
{
if (crtc == NULL)
return "None";
@@ -5293,10 +5293,10 @@ static const char *igt_crtc_name(igt_pipe_t *crtc)
* This function sets a @crtc to a specific @output connector by
* setting the CRTC_ID property of the @crtc.
*/
-void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
+void igt_output_set_crtc(igt_output_t *output, igt_crtc_t *pipe_obj)
{
igt_display_t *display = output->display;
- igt_pipe_t *old_pipe = NULL;
+ igt_crtc_t *old_pipe = NULL;
igt_assert(output->name);
@@ -5456,7 +5456,7 @@ bool igt_fit_modes_in_bw(igt_display_t *display)
*/
void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
{
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
if (force && display->is_atomic) {
igt_output_t *output = igt_pipe_get_output(pipe_obj);
@@ -5481,7 +5481,7 @@ void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
*/
igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx)
{
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
pipe = igt_output_get_driving_pipe(output);
igt_assert(pipe);
@@ -5501,7 +5501,7 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx)
*/
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
{
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
pipe = igt_output_get_driving_pipe(output);
igt_assert(pipe);
@@ -5520,7 +5520,7 @@ igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
*/
int igt_output_count_plane_type(igt_output_t *output, int plane_type)
{
- igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+ igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
igt_assert(pipe);
return igt_pipe_count_plane_type(pipe, plane_type);
@@ -5539,7 +5539,7 @@ int igt_output_count_plane_type(igt_output_t *output, int plane_type)
igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
int plane_type, int index)
{
- igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+ igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
igt_assert(pipe);
return igt_pipe_get_plane_type_index(pipe, plane_type, index);
@@ -5557,7 +5557,7 @@ igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
*/
void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: plane_set_fb(%d)\n", kmstest_pipe_name(pipe->pipe),
@@ -5631,7 +5631,7 @@ void igt_plane_set_fence_fd(igt_plane_t *plane, int fence_fd)
* @plane: Target plane pointer
* @pipe: The pipe to assign the plane to
*/
-void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe)
+void igt_plane_set_pipe(igt_plane_t *plane, igt_crtc_t *pipe)
{
/*
* HACK: Point the global plane back to the local plane.
@@ -5653,7 +5653,7 @@ void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe)
*/
void igt_plane_set_position(igt_plane_t *plane, int x, int y)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: plane_set_position(%d,%d)\n",
@@ -5675,7 +5675,7 @@ void igt_plane_set_position(igt_plane_t *plane, int x, int y)
*/
void igt_plane_set_size(igt_plane_t *plane, int w, int h)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: plane_set_size (%dx%d)\n",
@@ -5698,7 +5698,7 @@ void igt_plane_set_size(igt_plane_t *plane, int w, int h)
void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,
uint32_t x, uint32_t y)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: fb_set_position(%d,%d)\n",
@@ -5722,7 +5722,7 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,
void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,
uint32_t w, uint32_t h)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: fb_set_size(%dx%d)\n",
@@ -5765,7 +5765,7 @@ const char *igt_plane_rotation_name(igt_rotation_t rotation)
*/
void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)
{
- igt_pipe_t *pipe = plane->pipe;
+ igt_crtc_t *pipe = plane->pipe;
igt_display_t *display = pipe->display;
LOG(display, "%s.%d: plane_set_rotation(%s°)\n",
@@ -5782,7 +5782,7 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)
* Marks this pipe for requesting an out fence at the next atomic commit
* will contain the fd number of the out fence created by KMS.
*/
-void igt_pipe_request_out_fence(igt_pipe_t *pipe)
+void igt_pipe_request_out_fence(igt_crtc_t *pipe)
{
igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)&pipe->out_fence_fd);
}
@@ -5832,7 +5832,7 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
*
* Waits for a given number of vertical blank intervals
*/
-void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
+void igt_wait_for_vblank_count(igt_crtc_t *crtc, int count)
{
igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, count) == 0);
}
@@ -5846,7 +5846,7 @@ void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
*
* Waits for 1 vertical blank intervals
*/
-void igt_wait_for_vblank(igt_pipe_t *crtc)
+void igt_wait_for_vblank(igt_crtc_t *crtc)
{
igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, 1) == 0);
}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 8f257c86d88f..a8bb356c2d49 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -379,7 +379,7 @@ extern const char * const igt_plane_prop_names[];
extern const char * const igt_colorop_prop_names[];
typedef struct igt_display igt_display_t;
-typedef struct igt_pipe igt_pipe_t;
+typedef struct igt_crtc igt_crtc_t;
typedef uint32_t igt_fixed_t; /* 16.16 fixed point */
#define IGT_NUM_PLANE_COLOR_PIPELINES 4
@@ -425,7 +425,7 @@ typedef struct igt_colorop {
typedef struct igt_plane {
/*< private >*/
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
struct igt_plane *ref;
int index;
/* capabilities */
@@ -473,7 +473,7 @@ typedef struct igt_plane {
* DRM_IOCTL_WAIT_VBLANK notion of pipe is confusing and we are using
* crtc_offset instead (refer people to #igt_wait_for_vblank_count)
*/
-struct igt_pipe {
+struct igt_crtc {
igt_display_t *display;
/* ID of a hardware pipe */
enum pipe pipe;
@@ -535,7 +535,7 @@ struct igt_display {
igt_output_t *outputs;
igt_plane_t *planes;
igt_colorop_t *colorops;
- igt_pipe_t *pipes;
+ igt_crtc_t *pipes;
bool has_cursor_plane;
bool is_atomic;
bool has_virt_cursor_plane;
@@ -578,7 +578,7 @@ void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
int igt_display_n_crtcs(igt_display_t *display);
-static inline igt_pipe_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
+static inline igt_crtc_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
{
return &display->pipes[pipe];
}
@@ -589,7 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
int igt_output_preferred_vrefresh(igt_output_t *output);
-void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
+void igt_output_set_crtc(igt_output_t *output, igt_crtc_t *pipe_obj);
igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
int igt_output_count_plane_type(igt_output_t *output, int plane_type);
@@ -602,18 +602,18 @@ drmModeModeInfo *igt_std_1024_mode_get(int vrefresh);
void igt_output_set_writeback_fb(igt_output_t *output, struct igt_fb *fb);
void igt_modeset_disable_all_outputs(igt_display_t *display);
-igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type);
-int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type);
-igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
+igt_plane_t *igt_pipe_get_plane_type(igt_crtc_t *pipe, int plane_type);
+int igt_pipe_count_plane_type(igt_crtc_t *pipe, int plane_type);
+igt_plane_t *igt_pipe_get_plane_type_index(igt_crtc_t *pipe, int plane_type,
int index);
bool output_is_internal_panel(igt_output_t *output);
igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe);
-void igt_pipe_request_out_fence(igt_pipe_t *pipe);
+void igt_pipe_request_out_fence(igt_crtc_t *pipe);
void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb);
void igt_plane_set_fence_fd(igt_plane_t *plane, int fence_fd);
-void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe);
+void igt_plane_set_pipe(igt_plane_t *plane, igt_crtc_t *pipe);
void igt_plane_set_position(igt_plane_t *plane, int x, int y);
void igt_plane_set_size(igt_plane_t *plane, int w, int h);
void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation);
@@ -637,8 +637,8 @@ static inline bool igt_plane_has_rotation(igt_plane_t *plane, igt_rotation_t rot
}
const char *igt_plane_rotation_name(igt_rotation_t rotation);
-void igt_wait_for_vblank(igt_pipe_t *crtc);
-void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count);
+void igt_wait_for_vblank(igt_crtc_t *crtc);
+void igt_wait_for_vblank_count(igt_crtc_t *crtc, int count);
/**
* igt_output_is_connected:
@@ -1043,12 +1043,12 @@ extern void igt_output_replace_prop_blob(igt_output_t *output,
* Returns: True if the property is supported, otherwise false.
*/
static inline bool
-igt_pipe_obj_has_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+igt_pipe_obj_has_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
{
return pipe->props[prop];
}
-uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop);
+uint64_t igt_pipe_obj_get_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop);
/**
* igt_pipe_obj_is_prop_changed:
@@ -1057,7 +1057,7 @@ uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
*
* Check whether a given @prop changed for the @pipe_obj.
*/
-static inline bool igt_pipe_obj_is_prop_changed(igt_pipe_t *pipe_obj,
+static inline bool igt_pipe_obj_is_prop_changed(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop)
{
return pipe_obj->changed & (1 << prop);
@@ -1085,7 +1085,7 @@ static inline bool igt_pipe_is_prop_changed(igt_display_t *display,
*
* Sets the given @prop for the @pipe_obj.
*/
-static inline void igt_pipe_obj_set_prop_changed(igt_pipe_t *pipe_obj,
+static inline void igt_pipe_obj_set_prop_changed(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop)
{
pipe_obj->changed |= 1 << prop;
@@ -1098,7 +1098,7 @@ static inline void igt_pipe_obj_set_prop_changed(igt_pipe_t *pipe_obj,
*
* Clears the given @prop for the @pipe_obj.
*/
-static inline void igt_pipe_obj_clear_prop_changed(igt_pipe_t *pipe_obj,
+static inline void igt_pipe_obj_clear_prop_changed(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop)
{
pipe_obj->changed &= ~(1 << prop);
@@ -1112,7 +1112,7 @@ static inline void igt_pipe_obj_clear_prop_changed(igt_pipe_t *pipe_obj,
*
* Sets the given @prop with the @value for the @pipe_obj.
*/
-static inline void igt_pipe_obj_set_prop_value(igt_pipe_t *pipe_obj,
+static inline void igt_pipe_obj_set_prop_value(igt_crtc_t *pipe_obj,
enum igt_atomic_crtc_properties prop,
uint64_t value)
{
@@ -1137,14 +1137,14 @@ static inline void igt_pipe_set_prop_value(igt_display_t *display,
value);
}
-extern bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe,
+extern bool igt_pipe_obj_try_prop_enum(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
const char *val);
-extern void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe,
+extern void igt_pipe_obj_set_prop_enum(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
const char *val);
-extern void igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe,
+extern void igt_pipe_obj_replace_prop_blob(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
const void *ptr, size_t length);
void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force);
diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 00560ce3ac00..6d6fce320467 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -42,7 +42,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int drm_fd;
drmModeModeInfo *mode;
enum pipe pipe_id;
diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
index 976582ade9eb..8ab409164283 100644
--- a/tests/amdgpu/amd_assr.c
+++ b/tests/amdgpu/amd_assr.c
@@ -160,7 +160,7 @@ static bool get_internal_display_flag(data_t *data, igt_output_t *output)
static void present_visual_pattern(data_t *data, igt_output_t *output)
{
igt_plane_t *primary;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
drmModeModeInfo *mode;
igt_fb_t fb;
cairo_t *cr;
diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
index 460e69dfa7c1..7f768ea4e209 100644
--- a/tests/amdgpu/amd_bypass.c
+++ b/tests/amdgpu/amd_bypass.c
@@ -35,7 +35,7 @@ typedef struct {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_crc_t crc_fb;
igt_crc_t crc_dprx;
diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
index 422b111768c0..9631fc34d9f4 100644
--- a/tests/amdgpu/amd_color.c
+++ b/tests/amdgpu/amd_color.c
@@ -42,7 +42,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
drmModeModeInfo *mode;
enum pipe pipe_id;
diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
index b1809b65aa0e..11d77c6e9f4a 100644
--- a/tests/amdgpu/amd_dp_dsc.c
+++ b/tests/amdgpu/amd_dp_dsc.c
@@ -36,7 +36,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary[MAX_PIPES];
igt_output_t *output[MAX_PIPES];
- igt_pipe_t *pipe[MAX_PIPES];
+ igt_crtc_t *pipe[MAX_PIPES];
igt_pipe_crc_t *pipe_crc[MAX_PIPES];
drmModeModeInfo mode[MAX_PIPES];
enum pipe pipe_id[MAX_PIPES];
diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
index 71c859799f74..e2982f755d46 100644
--- a/tests/amdgpu/amd_hotplug.c
+++ b/tests/amdgpu/amd_hotplug.c
@@ -39,7 +39,7 @@ typedef struct data {
igt_plane_t *overlay[MAX_PIPES];
igt_plane_t *cursor[MAX_PIPES];
igt_output_t *output[MAX_PIPES];
- igt_pipe_t *pipe[MAX_PIPES];
+ igt_crtc_t *pipe[MAX_PIPES];
igt_pipe_crc_t *pipe_crc[MAX_PIPES];
drmModeModeInfo mode[MAX_PIPES];
enum pipe pipe_id[MAX_PIPES];
diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
index 16ef6ffe40f1..f1db9649c4e8 100644
--- a/tests/amdgpu/amd_ilr.c
+++ b/tests/amdgpu/amd_ilr.c
@@ -41,7 +41,7 @@ typedef struct {
igt_plane_t *primary;
igt_output_t *output;
igt_fb_t fb;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_crc_t crc_dprx;
enum pipe pipe_id;
diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
index 3ea4168f93ed..d042eb58d656 100644
--- a/tests/amdgpu/amd_link_settings.c
+++ b/tests/amdgpu/amd_link_settings.c
@@ -30,7 +30,7 @@ typedef struct
igt_plane_t *primary;
igt_output_t *output;
igt_fb_t fb;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
enum pipe pipe_id;
int connector_type;
int w, h;
diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
index a1a04d0ea9c3..5364cf797163 100644
--- a/tests/amdgpu/amd_mall.c
+++ b/tests/amdgpu/amd_mall.c
@@ -39,7 +39,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
drmModeModeInfo *mode;
enum pipe pipe_id;
diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
index bb362926c6b9..9abf7abd3800 100644
--- a/tests/amdgpu/amd_max_bpc.c
+++ b/tests/amdgpu/amd_max_bpc.c
@@ -30,7 +30,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_pipe_crc_t *pipe_crc_dither;
drmModeModeInfo *mode;
diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
index ef2b59be4a1c..68fbe5f4167f 100644
--- a/tests/amdgpu/amd_mem_leak.c
+++ b/tests/amdgpu/amd_mem_leak.c
@@ -32,7 +32,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
drmModeModeInfo *mode;
enum pipe pipe_id;
int fd;
diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
index 94bc99f4143f..a35eeb7ab9d4 100644
--- a/tests/amdgpu/amd_multidisplay_modeset.c
+++ b/tests/amdgpu/amd_multidisplay_modeset.c
@@ -153,7 +153,7 @@ static void test_init(struct data_t *data)
for_each_pipe(display, i) {
igt_output_t *output;
- igt_pipe_t *pipes;
+ igt_crtc_t *pipes;
/* For each valid pipe, get one connected display.
* This will let displays connected to MST hub be
diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
index 0e0a55396b73..3decc7d805e0 100644
--- a/tests/amdgpu/amd_odm.c
+++ b/tests/amdgpu/amd_odm.c
@@ -23,7 +23,7 @@ struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
drmModeModeInfoPtr mode;
enum pipe pipe_id;
int fd;
diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
index cb1fcab930e3..53fb6a12f558 100644
--- a/tests/amdgpu/amd_plane.c
+++ b/tests/amdgpu/amd_plane.c
@@ -44,7 +44,7 @@ typedef struct data {
igt_plane_t *overlay[MAX_PIPES];
igt_plane_t *overlay2[MAX_PIPES];
igt_output_t *output[MAX_PIPES];
- igt_pipe_t *pipe[MAX_PIPES];
+ igt_crtc_t *pipe[MAX_PIPES];
igt_pipe_crc_t *pipe_crc[MAX_PIPES];
drmModeModeInfo mode[MAX_PIPES];
enum pipe pipe_id[MAX_PIPES];
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 9071a2e9d780..c66dcf1ef39d 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -56,7 +56,7 @@ typedef struct data {
igt_plane_t *cursor;
igt_plane_t *overlay;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_fb_t ov_fb[2];
igt_fb_t pm_fb[2];
diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
index 38fe80a236f6..3104c436a326 100644
--- a/tests/amdgpu/amd_replay.c
+++ b/tests/amdgpu/amd_replay.c
@@ -21,7 +21,7 @@ struct test_data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
drmModeModeInfo *mode;
igt_fb_t ref_fb;
igt_fb_t ref_fb2;
diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
index 0998a0c960d0..66114d36a8af 100644
--- a/tests/amdgpu/amd_subvp.c
+++ b/tests/amdgpu/amd_subvp.c
@@ -16,7 +16,7 @@ struct data {
igt_display_t display;
igt_plane_t *primary[IGT_MAX_PIPES];
igt_output_t *output[IGT_MAX_PIPES];
- igt_pipe_t *pipe[IGT_MAX_PIPES];
+ igt_crtc_t *pipe[IGT_MAX_PIPES];
igt_pipe_crc_t *pipe_crc[IGT_MAX_PIPES];
drmModeModeInfo mode[IGT_MAX_PIPES];
enum pipe pipe_id[IGT_MAX_PIPES];
diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
index 72c02dbbc339..2512f7b7e049 100644
--- a/tests/chamelium/kms_chamelium_color.c
+++ b/tests/chamelium/kms_chamelium_color.c
@@ -450,7 +450,7 @@ prep_pipe(data_t *data, enum pipe p)
static int test_setup(data_t *data, enum pipe p)
{
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int i = 0;
igt_display_reset(&data->display);
diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
index 0507ad7ac38a..6f161660b043 100644
--- a/tests/chamelium/kms_chamelium_sharpness_filter.c
+++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
@@ -177,7 +177,7 @@ static void test_t(data_t *data, igt_plane_t *primary,
static int test_setup(data_t *data, enum pipe p)
{
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int i = 0;
igt_display_reset(&data->display);
diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
index 9c1d724ac3cc..31a872e4b559 100644
--- a/tests/intel/gem_pxp.c
+++ b/tests/intel/gem_pxp.c
@@ -1204,7 +1204,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
drmModeModeInfo *mode;
igt_fb_t ref_fb, protected_fb;
igt_plane_t *plane;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_crc_t ref_crc, new_crc;
int width = 0, height = 0, i = 0, ret;
diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
index 1ddda65e4ab6..8a9ed8042d89 100644
--- a/tests/intel/kms_big_fb.c
+++ b/tests/intel/kms_big_fb.c
@@ -375,7 +375,7 @@ static void prep_fb(data_t *data)
static void set_c8_lut(data_t *data)
{
- igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
struct drm_color_lut *lut;
int i, lut_size = 256;
@@ -396,7 +396,7 @@ static void set_c8_lut(data_t *data)
static void unset_lut(data_t *data)
{
- igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, NULL, 0);
}
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index 441ffa200e64..a9c4dda98f2c 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -237,7 +237,7 @@ static void set_mode(data_t *data, int count, drmModeModeInfo *mode,
igt_output_t **valid_outputs, struct igt_fb fb)
{
igt_display_t *display = &data->display;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_plane_t *plane;
for (int i = 0; i < count; i++) {
diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
index d9452dff0b84..5ffa357e08c8 100644
--- a/tests/intel/kms_flip_scaled_crc.c
+++ b/tests/intel/kms_flip_scaled_crc.c
@@ -537,7 +537,7 @@ static void free_fbs(data_t *data)
static void set_lut(data_t *data, enum pipe pipe)
{
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
struct drm_color_lut *lut;
drmModeCrtc *drm_crtc;
int i, lut_size;
@@ -569,7 +569,7 @@ static void set_lut(data_t *data, enum pipe pipe)
static void clear_lut(data_t *data, enum pipe pipe)
{
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
}
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index c1242e8d514c..06ceb640a976 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -157,7 +157,7 @@ typedef struct {
bool limited;
enum pipe pipe_id;
struct igt_fb fb[4];
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_display_t display;
igt_output_t *output;
igt_plane_t *plane[4];
@@ -417,7 +417,7 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
cleanup(data);
}
-static bool has_sharpness_filter(igt_pipe_t *pipe)
+static bool has_sharpness_filter(igt_crtc_t *pipe)
{
return igt_pipe_obj_has_prop(pipe, IGT_CRTC_SHARPNESS_STRENGTH);
}
diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
index b525bff8da0b..967130f26f32 100644
--- a/tests/intel/xe_pxp.c
+++ b/tests/intel/xe_pxp.c
@@ -839,7 +839,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
igt_output_t *output;
drmModeModeInfo *mode;
igt_plane_t *plane;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
igt_crc_t ref_crc, new_crc;
@@ -881,7 +881,7 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
drmModeModeInfo *mode;
igt_fb_t ref_fb, pxp_fb;
igt_plane_t *plane;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int width = 0, height = 0, i = 0;
uint32_t q;
uint32_t vm;
@@ -938,7 +938,7 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
drmModeModeInfo *mode;
igt_fb_t ref_fb, pxp_fb;
igt_plane_t *plane;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int width = 0, height = 0, i = 0;
uint32_t q;
uint32_t vm;
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 236c1d5445e2..58d57cafecce 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -113,7 +113,7 @@ static bool all_pipes = false;
typedef struct {
igt_display_t display;
igt_plane_t *primary;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
int drm_fd;
igt_fb_t fb;
} data_t;
@@ -222,7 +222,7 @@ static bool crtc_filter(enum igt_atomic_crtc_properties prop)
return true;
}
-static void crtc_get_current_state(igt_pipe_t *pipe, uint64_t *values)
+static void crtc_get_current_state(igt_crtc_t *pipe, uint64_t *values)
{
int i;
@@ -236,7 +236,7 @@ static void crtc_get_current_state(igt_pipe_t *pipe, uint64_t *values)
}
}
-static void crtc_check_current_state(igt_pipe_t *pipe,
+static void crtc_check_current_state(igt_crtc_t *pipe,
const uint64_t *pipe_values,
const uint64_t *primary_values,
enum kms_atomic_check_relax relax)
@@ -307,7 +307,7 @@ static void crtc_check_current_state(igt_pipe_t *pipe,
drmModeFreePropertyBlob(mode_prop);
}
-static void crtc_commit(igt_pipe_t *pipe, igt_plane_t *plane,
+static void crtc_commit(igt_crtc_t *pipe, igt_plane_t *plane,
enum igt_commit_style s,
enum kms_atomic_check_relax relax)
{
@@ -317,7 +317,7 @@ static void crtc_commit(igt_pipe_t *pipe, igt_plane_t *plane,
plane_check_current_state(plane, plane->values, relax);
}
-static void crtc_commit_atomic_flags_err(igt_pipe_t *pipe, igt_plane_t *plane,
+static void crtc_commit_atomic_flags_err(igt_crtc_t *pipe, igt_plane_t *plane,
unsigned flags,
enum kms_atomic_check_relax relax,
int err)
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 5b8728631a75..4631d54725db 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -556,7 +556,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
{
drmModeModeInfo *mode, override_mode;
igt_plane_t *plane;
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
uint32_t iter_max, i;
struct plane_parms parms[pipe_obj->n_planes];
unsigned flags = 0;
@@ -921,7 +921,7 @@ retry:
DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, .5, .5, .5, &data->fbs[1]);
for_each_pipe(&data->display, i) {
- igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, i);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, i);
igt_plane_t *plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
drmModeModeInfo *mode = NULL;
diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 2622eae89eda..44b3c6ddf04c 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -67,7 +67,7 @@ typedef struct data {
igt_plane_t *primary[IGT_MAX_PIPES];
igt_output_t *output[IGT_MAX_PIPES];
igt_output_t *connected_output[IGT_MAX_PIPES];
- igt_pipe_t *pipe[IGT_MAX_PIPES];
+ igt_crtc_t *pipe[IGT_MAX_PIPES];
igt_pipe_crc_t *pipe_crc[IGT_MAX_PIPES];
drmModeModeInfo mode[IGT_MAX_PIPES];
enum pipe pipe_id[IGT_MAX_PIPES];
diff --git a/tests/kms_color.c b/tests/kms_color.c
index 072d0ad09474..9a259d8d3072 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -733,7 +733,7 @@ prep_pipe(data_t *data, enum pipe p)
static void test_setup(data_t *data, enum pipe p)
{
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
prep_pipe(data, p);
igt_require_pipe_crc(data->drm_fd);
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 37639a261cd2..9e68ef334f91 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -220,7 +220,7 @@ struct drm_color_lut *coeffs_to_lut(data_t *data,
}
void set_degamma(data_t *data,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
const gamma_lut_t *gamma)
{
size_t size = sizeof(struct drm_color_lut) * gamma->size;
@@ -233,7 +233,7 @@ void set_degamma(data_t *data,
}
void set_gamma(data_t *data,
- igt_pipe_t *pipe, const gamma_lut_t *gamma)
+ igt_crtc_t *pipe, const gamma_lut_t *gamma)
{
size_t size = sizeof(struct drm_color_lut) * gamma->size;
struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
@@ -244,7 +244,7 @@ void set_gamma(data_t *data,
free(lut);
}
-void set_ctm(igt_pipe_t *pipe, const double *coefficients)
+void set_ctm(igt_crtc_t *pipe, const double *coefficients)
{
struct drm_color_ctm ctm;
int i;
@@ -264,14 +264,14 @@ void set_ctm(igt_pipe_t *pipe, const double *coefficients)
igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_CTM, &ctm, sizeof(ctm));
}
-void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+void disable_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
{
if (igt_pipe_obj_has_prop(pipe, prop))
igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
}
drmModePropertyBlobPtr
-get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+get_blob(data_t *data, igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
{
uint64_t prop_value;
@@ -284,7 +284,7 @@ get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
}
int
-pipe_set_property_blob_id(igt_pipe_t *pipe,
+pipe_set_property_blob_id(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
uint32_t blob_id)
{
@@ -304,7 +304,7 @@ pipe_set_property_blob_id(igt_pipe_t *pipe,
}
int
-pipe_set_property_blob(igt_pipe_t *pipe,
+pipe_set_property_blob(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
void *ptr, size_t length)
{
@@ -320,7 +320,7 @@ invalid_lut_sizes(data_t *data, enum pipe p,
enum igt_atomic_crtc_properties prop, int size)
{
igt_display_t *display = &data->display;
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, p);
struct drm_color_lut *lut;
size_t lut_size = size * sizeof(lut[0]);
@@ -363,7 +363,7 @@ invalid_degamma_lut_sizes(data_t *data, enum pipe p)
void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
{
igt_display_t *display = &data->display;
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, p);
void *ptr;
igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
diff --git a/tests/kms_color_helper.h b/tests/kms_color_helper.h
index 23463b944b6f..fb9c3b3aa6b1 100644
--- a/tests/kms_color_helper.h
+++ b/tests/kms_color_helper.h
@@ -90,25 +90,25 @@ struct drm_color_lut *coeffs_to_lut(data_t *data,
uint32_t color_depth,
int off);
void set_degamma(data_t *data,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
const gamma_lut_t *gamma);
void set_gamma(data_t *data,
- igt_pipe_t *pipe,
+ igt_crtc_t *pipe,
const gamma_lut_t *gamma);
-void set_ctm(igt_pipe_t *pipe, const double *coefficients);
-void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop);
+void set_ctm(igt_crtc_t *pipe, const double *coefficients);
+void disable_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop);
#define disable_degamma(pipe) disable_prop(pipe, IGT_CRTC_DEGAMMA_LUT)
#define disable_gamma(pipe) disable_prop(pipe, IGT_CRTC_GAMMA_LUT)
#define disable_ctm(pipe) disable_prop(pipe, IGT_CRTC_CTM)
-drmModePropertyBlobPtr get_blob(data_t *data, igt_pipe_t *pipe,
+drmModePropertyBlobPtr get_blob(data_t *data, igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop);
bool crc_equal(igt_crc_t *a, igt_crc_t *b);
-int pipe_set_property_blob_id(igt_pipe_t *pipe,
+int pipe_set_property_blob_id(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
uint32_t blob_id);
-int pipe_set_property_blob(igt_pipe_t *pipe,
+int pipe_set_property_blob(igt_crtc_t *pipe,
enum igt_atomic_crtc_properties prop,
void *ptr, size_t length);
void invalid_gamma_lut_sizes(data_t *data, enum pipe p);
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index 0c05453496e7..4ef8e0f56339 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -158,7 +158,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
igt_output_t *output)
{
drmModeModeInfo *mode;
- igt_pipe_t *p;
+ igt_crtc_t *p;
igt_plane_t *primary;
int *x;
int *y;
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 509cff1cf335..7171e565cd51 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -471,7 +471,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
static void flip_nonblocking(igt_display_t *display, enum pipe pipe_id, bool atomic, struct igt_fb *fb, void *data)
{
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, pipe_id);
igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
int ret;
@@ -535,7 +535,7 @@ static void transition_nonblocking(igt_display_t *display, enum pipe pipe_id,
struct igt_fb *prim_fb, struct igt_fb *argb_fb,
bool hide_sprite)
{
- igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(display, pipe_id);
igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
igt_plane_t *sprite = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_OVERLAY);
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 3731b7d4b4ea..f79fbb2cb2f3 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -74,7 +74,7 @@ typedef struct {
/* Prepare test data. */
static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
{
- igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, p);
+ igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, p);
igt_assert(pipe);
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index e6092dbfce99..39f2e860d7cb 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -111,7 +111,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
drmModeModeInfo *mode;
enum pipe pipe_id;
diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
index 7ce142f44fd4..663e95db81b3 100644
--- a/tests/kms_multipipe_modeset.c
+++ b/tests/kms_multipipe_modeset.c
@@ -55,7 +55,7 @@ static void run_test(data_t *data, int valid_outputs)
igt_crc_t ref_crcs[IGT_MAX_PIPES], new_crcs[IGT_MAX_PIPES];
igt_display_t *display = &data->display;
uint16_t width = 0, height = 0;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_plane_t *plane;
drmModeModeInfo *mode;
int i = 0;
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 535ce84d3074..2c083f4b7da9 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -522,7 +522,7 @@ static const color_t colors_reduced[] = {
static void set_legacy_lut(data_t *data, enum pipe pipe,
uint16_t mask)
{
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
drmModeCrtc *drm_crtc;
uint16_t *lut;
int i, lut_size;
@@ -549,7 +549,7 @@ static void set_legacy_lut(data_t *data, enum pipe pipe,
static bool set_c8_legacy_lut(data_t *data, enum pipe pipe,
uint16_t mask)
{
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
drmModeCrtc *drm_crtc;
uint16_t *r, *g, *b;
int i, lut_size;
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 03fdb847d8c9..8b172794bc88 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -75,7 +75,7 @@ typedef struct data {
igt_plane_t *overlay;
igt_plane_t *cursor;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_pipe_crc_t *pipe_crc;
drmModeModeInfo *mode;
igt_fb_t ref_fb;
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 79af0d93a370..342eb7b293da 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -204,7 +204,7 @@ prepare_planes(data_t *data, enum pipe pipe_id, color_t *color, igt_plane_t **pl
uint64_t modifier, int max_planes, igt_output_t *output, igt_fb_t *fb)
{
drmModeModeInfo *mode;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
igt_plane_t *primary;
int *x;
int *y;
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 25adadb87bf8..3ba709dd2cd0 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -1016,7 +1016,7 @@ static void
test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
{
igt_display_t *display = &d->display;
- igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
+ igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
int width, height;
igt_plane_t *plane[3];
drmModeModeInfo *mode;
diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
index a94370178847..6becc646d20a 100644
--- a/tools/amd_hdmi_compliance.c
+++ b/tools/amd_hdmi_compliance.c
@@ -33,7 +33,7 @@ typedef struct data {
igt_display_t display;
igt_plane_t *primary;
igt_output_t *output;
- igt_pipe_t *pipe;
+ igt_crtc_t *pipe;
enum pipe pipe_id;
bool use_virtual_connector;
int timeout_seconds;
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* ✓ Xe.CI.BAT: success for lib/kms: Move towards using 'crtcs' instead of 'pipes'
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (9 preceding siblings ...)
2025-12-10 9:39 ` [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t Ville Syrjala
@ 2025-12-10 13:34 ` Patchwork
2025-12-10 14:12 ` ✗ i915.CI.BAT: failure " Patchwork
2025-12-10 19:49 ` ✗ Xe.CI.Full: " Patchwork
12 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-12-10 13:34 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 1958 bytes --]
== Series Details ==
Series: lib/kms: Move towards using 'crtcs' instead of 'pipes'
URL : https://patchwork.freedesktop.org/series/158749/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_8662_BAT -> XEIGTPW_14182_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in XEIGTPW_14182_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_waitfence@abstime:
- bat-dg2-oem2: [PASS][1] -> [TIMEOUT][2] ([Intel XE#6506])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/bat-dg2-oem2/igt@xe_waitfence@abstime.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/bat-dg2-oem2/igt@xe_waitfence@abstime.html
* igt@xe_waitfence@engine:
- bat-dg2-oem2: [PASS][3] -> [FAIL][4] ([Intel XE#6519])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/bat-dg2-oem2/igt@xe_waitfence@engine.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/bat-dg2-oem2/igt@xe_waitfence@engine.html
[Intel XE#6506]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6506
[Intel XE#6519]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6519
Build changes
-------------
* IGT: IGT_8662 -> IGTPW_14182
* Linux: xe-4211-12271f632915efe0c5d4171b9c0e90f57ecdfe01 -> xe-4215-2a9deeb5c3fd4dddbed361f10b26ce567072a985
IGTPW_14182: 14182
IGT_8662: 9410b6926f317e8bf824502394e09ee8753ff65e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4211-12271f632915efe0c5d4171b9c0e90f57ecdfe01: 12271f632915efe0c5d4171b9c0e90f57ecdfe01
xe-4215-2a9deeb5c3fd4dddbed361f10b26ce567072a985: 2a9deeb5c3fd4dddbed361f10b26ce567072a985
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/index.html
[-- Attachment #2: Type: text/html, Size: 2588 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ i915.CI.BAT: failure for lib/kms: Move towards using 'crtcs' instead of 'pipes'
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (10 preceding siblings ...)
2025-12-10 13:34 ` ✓ Xe.CI.BAT: success for lib/kms: Move towards using 'crtcs' instead of 'pipes' Patchwork
@ 2025-12-10 14:12 ` Patchwork
2025-12-10 19:49 ` ✗ Xe.CI.Full: " Patchwork
12 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-12-10 14:12 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 66336 bytes --]
== Series Details ==
Series: lib/kms: Move towards using 'crtcs' instead of 'pipes'
URL : https://patchwork.freedesktop.org/series/158749/
State : failure
== Summary ==
CI Bug Log - changes from IGT_8662 -> IGTPW_14182
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_14182 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_14182, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/index.html
Participating hosts (18 -> 41)
------------------------------
Additional (24): bat-adlp-6 fi-skl-6600u bat-mtlp-9 fi-bsw-n3050 bat-dg2-8 bat-dg2-9 bat-twl-1 bat-rplp-1 bat-apl-1 bat-arls-5 fi-bsw-nick bat-twl-2 bat-dg1-7 bat-arlh-3 bat-adlp-9 fi-glk-j4005 bat-dg1-6 bat-arls-6 bat-mtlp-8 bat-jsl-1 bat-adlp-11 bat-jsl-5 fi-kbl-x1275 bat-dg2-14
Missing (1): bat-dg2-13
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_14182:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live@hugepages:
- fi-glk-j4005: NOTRUN -> [INCOMPLETE][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@i915_selftest@live@hugepages.html
* igt@i915_selftest@live@objects:
- fi-glk-j4005: NOTRUN -> [ABORT][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@i915_selftest@live@objects.html
#### Warnings ####
* igt@i915_selftest@live:
- fi-hsw-4770: [ABORT][3] ([i915#15399]) -> [ABORT][4] +1 other test abort
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8662/fi-hsw-4770/igt@i915_selftest@live.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-hsw-4770/igt@i915_selftest@live.html
Known issues
------------
Here are the changes found in IGTPW_14182 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@fbdev@info:
- fi-kbl-x1275: NOTRUN -> [SKIP][5] ([i915#1849])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@fbdev@info.html
- bat-adlp-11: NOTRUN -> [SKIP][6] ([i915#1849] / [i915#2582])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@fbdev@info.html
- bat-dg1-6: NOTRUN -> [SKIP][7] ([i915#1849] / [i915#2582])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@fbdev@info.html
- fi-bsw-nick: NOTRUN -> [SKIP][8] ([i915#1849])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-nick/igt@fbdev@info.html
* igt@fbdev@nullptr:
- bat-adlp-11: NOTRUN -> [SKIP][9] ([i915#2582]) +3 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@fbdev@nullptr.html
- bat-dg1-6: NOTRUN -> [SKIP][10] ([i915#2582]) +3 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@fbdev@nullptr.html
* igt@gem_huc_copy@huc-copy:
- bat-jsl-5: NOTRUN -> [SKIP][11] ([i915#2190])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@gem_huc_copy@huc-copy.html
- bat-jsl-1: NOTRUN -> [SKIP][12] ([i915#2190])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@gem_huc_copy@huc-copy.html
- fi-skl-6600u: NOTRUN -> [SKIP][13] ([i915#2190])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html
- fi-glk-j4005: NOTRUN -> [SKIP][14] ([i915#2190])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@gem_huc_copy@huc-copy.html
- fi-kbl-x1275: NOTRUN -> [SKIP][15] ([i915#2190])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- bat-arlh-3: NOTRUN -> [SKIP][16] ([i915#11671]) +3 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@gem_lmem_swapping@basic.html
- fi-glk-j4005: NOTRUN -> [SKIP][17] ([i915#4613]) +3 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@gem_lmem_swapping@basic.html
- bat-adlp-9: NOTRUN -> [SKIP][18] ([i915#4613]) +3 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@gem_lmem_swapping@basic.html
- bat-twl-2: NOTRUN -> [SKIP][19] ([i915#10213] / [i915#11671]) +3 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@gem_lmem_swapping@basic.html
- bat-twl-1: NOTRUN -> [SKIP][20] ([i915#10213] / [i915#11671]) +3 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@gem_lmem_swapping@basic.html
- bat-jsl-5: NOTRUN -> [SKIP][21] ([i915#4613]) +3 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@parallel-random-engines:
- fi-bsw-nick: NOTRUN -> [SKIP][22] +24 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-nick/igt@gem_lmem_swapping@parallel-random-engines.html
- bat-arls-5: NOTRUN -> [SKIP][23] ([i915#10213] / [i915#11671]) +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@gem_lmem_swapping@parallel-random-engines.html
- bat-rplp-1: NOTRUN -> [SKIP][24] ([i915#4613]) +3 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_lmem_swapping@random-engines:
- fi-bsw-n3050: NOTRUN -> [SKIP][25] +21 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-n3050/igt@gem_lmem_swapping@random-engines.html
- bat-adlp-6: NOTRUN -> [SKIP][26] ([i915#4613]) +3 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@gem_lmem_swapping@random-engines.html
- fi-skl-6600u: NOTRUN -> [SKIP][27] ([i915#4613]) +3 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-skl-6600u/igt@gem_lmem_swapping@random-engines.html
* igt@gem_lmem_swapping@verify-random:
- bat-mtlp-9: NOTRUN -> [SKIP][28] ([i915#4613]) +3 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@gem_lmem_swapping@verify-random.html
- bat-arls-6: NOTRUN -> [SKIP][29] ([i915#10213] / [i915#11671]) +3 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@gem_lmem_swapping@verify-random.html
- fi-kbl-x1275: NOTRUN -> [SKIP][30] ([i915#4613]) +3 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@gem_lmem_swapping@verify-random.html
- bat-adlp-11: NOTRUN -> [SKIP][31] ([i915#4613]) +3 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@gem_lmem_swapping@verify-random.html
- bat-mtlp-8: NOTRUN -> [SKIP][32] ([i915#4613]) +3 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@gem_lmem_swapping@verify-random.html
- bat-jsl-1: NOTRUN -> [SKIP][33] ([i915#4613]) +3 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@gem_lmem_swapping@verify-random.html
* igt@gem_mmap@basic:
- bat-dg1-7: NOTRUN -> [SKIP][34] ([i915#4083])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@gem_mmap@basic.html
- bat-mtlp-9: NOTRUN -> [SKIP][35] ([i915#4083])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@gem_mmap@basic.html
- bat-dg2-9: NOTRUN -> [SKIP][36] ([i915#4083])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@gem_mmap@basic.html
- bat-mtlp-8: NOTRUN -> [SKIP][37] ([i915#4083])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@gem_mmap@basic.html
- bat-dg1-6: NOTRUN -> [SKIP][38] ([i915#4083])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@gem_mmap@basic.html
- bat-dg2-8: NOTRUN -> [SKIP][39] ([i915#4083])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@gem_mmap@basic.html
- bat-arls-6: NOTRUN -> [SKIP][40] ([i915#4083])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@gem_mmap@basic.html
- bat-arlh-3: NOTRUN -> [SKIP][41] ([i915#11343])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@gem_mmap@basic.html
- bat-dg2-14: NOTRUN -> [SKIP][42] ([i915#4083])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@gem_mmap@basic.html
- bat-arls-5: NOTRUN -> [SKIP][43] ([i915#4083])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@gem_mmap@basic.html
* igt@gem_mmap_gtt@basic:
- bat-mtlp-9: NOTRUN -> [SKIP][44] ([i915#4077]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@gem_mmap_gtt@basic.html
- bat-arls-6: NOTRUN -> [SKIP][45] ([i915#12637] / [i915#4077]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@gem_mmap_gtt@basic.html
- bat-dg2-9: NOTRUN -> [SKIP][46] ([i915#4077]) +2 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@gem_mmap_gtt@basic.html
- bat-mtlp-8: NOTRUN -> [SKIP][47] ([i915#4077]) +2 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@gem_mmap_gtt@basic.html
- bat-dg1-6: NOTRUN -> [SKIP][48] ([i915#4077]) +2 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@gem_mmap_gtt@basic.html
- bat-dg2-8: NOTRUN -> [SKIP][49] ([i915#4077]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@gem_mmap_gtt@basic.html
* igt@gem_render_tiled_blits@basic:
- bat-mtlp-9: NOTRUN -> [SKIP][50] ([i915#4079]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@gem_render_tiled_blits@basic.html
- bat-arls-6: NOTRUN -> [SKIP][51] ([i915#10197] / [i915#10211] / [i915#4079])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@gem_render_tiled_blits@basic.html
- bat-dg1-6: NOTRUN -> [SKIP][52] ([i915#4079]) +1 other test skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@gem_render_tiled_blits@basic.html
- bat-dg2-14: NOTRUN -> [SKIP][53] ([i915#4079]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@gem_render_tiled_blits@basic.html
- bat-arls-5: NOTRUN -> [SKIP][54] ([i915#10197] / [i915#10211] / [i915#4079])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@gem_render_tiled_blits@basic.html
- bat-arlh-3: NOTRUN -> [SKIP][55] ([i915#10211] / [i915#11725] / [i915#4079])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@gem_render_tiled_blits@basic.html
- bat-dg2-9: NOTRUN -> [SKIP][56] ([i915#4079]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@gem_render_tiled_blits@basic.html
- bat-mtlp-8: NOTRUN -> [SKIP][57] ([i915#4079]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@gem_render_tiled_blits@basic.html
* igt@gem_tiled_fence_blits@basic:
- bat-dg2-14: NOTRUN -> [SKIP][58] ([i915#4077]) +2 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@gem_tiled_fence_blits@basic.html
- bat-arls-5: NOTRUN -> [SKIP][59] ([i915#12637] / [i915#4077]) +2 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@gem_tiled_fence_blits@basic.html
- bat-dg1-7: NOTRUN -> [SKIP][60] ([i915#4077]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@gem_tiled_fence_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-arls-5: NOTRUN -> [SKIP][61] ([i915#10206] / [i915#4079])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@gem_tiled_pread_basic.html
- bat-adlp-6: NOTRUN -> [SKIP][62] ([i915#3282])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@gem_tiled_pread_basic.html
- bat-arlh-3: NOTRUN -> [SKIP][63] ([i915#11724] / [i915#4079])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@gem_tiled_pread_basic.html
- bat-dg1-7: NOTRUN -> [SKIP][64] ([i915#4079]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@gem_tiled_pread_basic.html
- bat-adlp-9: NOTRUN -> [SKIP][65] ([i915#3282])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@gem_tiled_pread_basic.html
- bat-twl-2: NOTRUN -> [SKIP][66] ([i915#11031])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@gem_tiled_pread_basic.html
- bat-twl-1: NOTRUN -> [SKIP][67] ([i915#11031])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@gem_tiled_pread_basic.html
- bat-dg2-8: NOTRUN -> [SKIP][68] ([i915#4079]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@gem_tiled_pread_basic.html
- bat-rplp-1: NOTRUN -> [SKIP][69] ([i915#3282])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@gem_tiled_pread_basic.html
- bat-arls-6: NOTRUN -> [SKIP][70] ([i915#10206] / [i915#4079])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@gem_tiled_pread_basic.html
- bat-adlp-11: NOTRUN -> [SKIP][71] ([i915#3282])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@gem_tiled_pread_basic.html
* igt@i915_pm_rps@basic-api:
- bat-dg1-7: NOTRUN -> [SKIP][72] ([i915#11681] / [i915#6621])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@i915_pm_rps@basic-api.html
- bat-adlp-9: NOTRUN -> [SKIP][73] ([i915#6621])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@i915_pm_rps@basic-api.html
- bat-twl-2: NOTRUN -> [SKIP][74] ([i915#10209] / [i915#11681])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@i915_pm_rps@basic-api.html
- bat-twl-1: NOTRUN -> [SKIP][75] ([i915#10209] / [i915#11681])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@i915_pm_rps@basic-api.html
- bat-dg2-14: NOTRUN -> [SKIP][76] ([i915#11681] / [i915#6621])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@i915_pm_rps@basic-api.html
- bat-arls-5: NOTRUN -> [SKIP][77] ([i915#10209] / [i915#11681])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@i915_pm_rps@basic-api.html
- bat-adlp-6: NOTRUN -> [SKIP][78] ([i915#6621])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@i915_pm_rps@basic-api.html
- bat-rplp-1: NOTRUN -> [SKIP][79] ([i915#6621])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@i915_pm_rps@basic-api.html
- bat-mtlp-9: NOTRUN -> [SKIP][80] ([i915#11681] / [i915#6621])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@i915_pm_rps@basic-api.html
- bat-dg2-9: NOTRUN -> [SKIP][81] ([i915#11681] / [i915#6621])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@i915_pm_rps@basic-api.html
- bat-adlp-11: NOTRUN -> [SKIP][82] ([i915#6621])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@i915_pm_rps@basic-api.html
- bat-mtlp-8: NOTRUN -> [SKIP][83] ([i915#11681] / [i915#6621])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@i915_pm_rps@basic-api.html
- bat-dg1-6: NOTRUN -> [SKIP][84] ([i915#11681] / [i915#6621])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@i915_pm_rps@basic-api.html
- bat-dg2-8: NOTRUN -> [SKIP][85] ([i915#11681] / [i915#6621])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@i915_pm_rps@basic-api.html
- bat-arls-6: NOTRUN -> [SKIP][86] ([i915#10209] / [i915#11681])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@i915_pm_rps@basic-api.html
- bat-arlh-3: NOTRUN -> [SKIP][87] ([i915#11681])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@i915_pm_rps@basic-api.html
* igt@i915_selftest@live:
- fi-kbl-x1275: NOTRUN -> [ABORT][88] ([i915#15399]) +1 other test abort
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@i915_selftest@live.html
- bat-adlp-11: NOTRUN -> [ABORT][89] ([i915#14365] / [i915#15399])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@i915_selftest@live.html
- bat-mtlp-8: NOTRUN -> [ABORT][90] ([i915#15399]) +1 other test abort
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@i915_selftest@live.html
- bat-dg1-6: NOTRUN -> [ABORT][91] ([i915#15399]) +1 other test abort
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@i915_selftest@live.html
- bat-dg2-8: NOTRUN -> [ABORT][92] ([i915#15399]) +1 other test abort
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@i915_selftest@live.html
- bat-jsl-1: NOTRUN -> [ABORT][93] ([i915#15399]) +1 other test abort
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@i915_selftest@live.html
- fi-bsw-n3050: NOTRUN -> [ABORT][94] ([i915#15399]) +1 other test abort
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-n3050/igt@i915_selftest@live.html
- bat-adlp-6: NOTRUN -> [ABORT][95] ([i915#14365] / [i915#15399])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@i915_selftest@live.html
- fi-skl-6600u: NOTRUN -> [ABORT][96] ([i915#15399]) +1 other test abort
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-skl-6600u/igt@i915_selftest@live.html
- bat-arlh-3: NOTRUN -> [ABORT][97] ([i915#15399]) +1 other test abort
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@i915_selftest@live.html
- fi-glk-j4005: NOTRUN -> [ABORT][98] ([i915#15399])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@i915_selftest@live.html
- bat-adlp-9: NOTRUN -> [ABORT][99] ([i915#14365] / [i915#15399])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@i915_selftest@live.html
- bat-twl-2: NOTRUN -> [ABORT][100] ([i915#14365] / [i915#15399])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@i915_selftest@live.html
- bat-twl-1: NOTRUN -> [ABORT][101] ([i915#14365] / [i915#15399])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@i915_selftest@live.html
- bat-rplp-1: NOTRUN -> [ABORT][102] ([i915#14365] / [i915#15399])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@i915_selftest@live.html
* igt@i915_selftest@live@hugepages:
- bat-adlp-9: NOTRUN -> [ABORT][103] ([i915#15399])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@i915_selftest@live@hugepages.html
- bat-twl-2: NOTRUN -> [ABORT][104] ([i915#15399])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@i915_selftest@live@hugepages.html
- bat-twl-1: NOTRUN -> [ABORT][105] ([i915#15399])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@i915_selftest@live@hugepages.html
- bat-apl-1: NOTRUN -> [ABORT][106] ([i915#15399]) +1 other test abort
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-apl-1/igt@i915_selftest@live@hugepages.html
- bat-dg2-14: NOTRUN -> [ABORT][107] ([i915#15399]) +1 other test abort
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@i915_selftest@live@hugepages.html
- fi-bsw-nick: NOTRUN -> [ABORT][108] ([i915#15399]) +1 other test abort
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-nick/igt@i915_selftest@live@hugepages.html
- bat-arls-5: NOTRUN -> [ABORT][109] ([i915#15399]) +1 other test abort
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@i915_selftest@live@hugepages.html
- bat-adlp-6: NOTRUN -> [ABORT][110] ([i915#15399])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@i915_selftest@live@hugepages.html
- bat-rplp-1: NOTRUN -> [ABORT][111] ([i915#15399])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@i915_selftest@live@hugepages.html
- bat-dg1-7: NOTRUN -> [ABORT][112] ([i915#15399]) +1 other test abort
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@i915_selftest@live@hugepages.html
- bat-dg2-9: NOTRUN -> [ABORT][113] ([i915#15399]) +1 other test abort
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@i915_selftest@live@hugepages.html
- bat-adlp-11: NOTRUN -> [ABORT][114] ([i915#15399])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@i915_selftest@live@hugepages.html
- bat-jsl-5: NOTRUN -> [ABORT][115] ([i915#15399]) +1 other test abort
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@i915_selftest@live@hugepages.html
- bat-mtlp-9: NOTRUN -> [ABORT][116] ([i915#15399]) +1 other test abort
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@i915_selftest@live@hugepages.html
- bat-arls-6: NOTRUN -> [ABORT][117] ([i915#15399]) +1 other test abort
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@i915_selftest@live@hugepages.html
* igt@intel_hwmon@hwmon-read:
- bat-rplp-1: NOTRUN -> [SKIP][118] ([i915#7707]) +1 other test skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@intel_hwmon@hwmon-read.html
- bat-mtlp-9: NOTRUN -> [SKIP][119] ([i915#7707]) +1 other test skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@intel_hwmon@hwmon-read.html
- bat-arls-6: NOTRUN -> [SKIP][120] ([i915#7707]) +1 other test skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@intel_hwmon@hwmon-read.html
- bat-adlp-11: NOTRUN -> [SKIP][121] ([i915#7707]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@intel_hwmon@hwmon-read.html
- bat-mtlp-8: NOTRUN -> [SKIP][122] ([i915#7707]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@intel_hwmon@hwmon-read.html
- bat-jsl-1: NOTRUN -> [SKIP][123] ([i915#7707]) +1 other test skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@intel_hwmon@hwmon-read.html
- bat-adlp-6: NOTRUN -> [SKIP][124] ([i915#7707]) +1 other test skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@intel_hwmon@hwmon-read.html
- bat-arlh-3: NOTRUN -> [SKIP][125] ([i915#11680]) +1 other test skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@intel_hwmon@hwmon-read.html
* igt@intel_hwmon@hwmon-write:
- bat-adlp-9: NOTRUN -> [SKIP][126] ([i915#7707]) +1 other test skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@intel_hwmon@hwmon-write.html
- bat-twl-2: NOTRUN -> [SKIP][127] ([i915#7707]) +1 other test skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@intel_hwmon@hwmon-write.html
- bat-twl-1: NOTRUN -> [SKIP][128] ([i915#7707]) +1 other test skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@intel_hwmon@hwmon-write.html
- bat-jsl-5: NOTRUN -> [SKIP][129] ([i915#7707]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@intel_hwmon@hwmon-write.html
- bat-arls-5: NOTRUN -> [SKIP][130] ([i915#7707]) +1 other test skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@intel_hwmon@hwmon-write.html
* igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
- bat-dg1-6: NOTRUN -> [SKIP][131] ([i915#12311] / [i915#4212]) +7 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html
* igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
- bat-dg1-7: NOTRUN -> [SKIP][132] ([i915#4212]) +7 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-dg2-9: NOTRUN -> [SKIP][133] ([i915#5190])
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-mtlp-8: NOTRUN -> [SKIP][134] ([i915#5190])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-dg2-8: NOTRUN -> [SKIP][135] ([i915#5190])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-arls-6: NOTRUN -> [SKIP][136] ([i915#10200] / [i915#12203])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-arlh-3: NOTRUN -> [SKIP][137] ([i915#11666] / [i915#12203])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-dg2-14: NOTRUN -> [SKIP][138] ([i915#5190])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-arls-5: NOTRUN -> [SKIP][139] ([i915#10200] / [i915#12203])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- bat-mtlp-9: NOTRUN -> [SKIP][140] ([i915#5190])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@basic-x-tiled-legacy:
- bat-dg2-14: NOTRUN -> [SKIP][141] ([i915#4212]) +7 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_addfb_basic@basic-x-tiled-legacy.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- bat-mtlp-9: NOTRUN -> [SKIP][142] ([i915#4212]) +8 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-arls-6: NOTRUN -> [SKIP][143] ([i915#10200]) +8 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-dg2-9: NOTRUN -> [SKIP][144] ([i915#4215] / [i915#5190])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-mtlp-8: NOTRUN -> [SKIP][145] ([i915#4212]) +8 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-dg1-6: NOTRUN -> [SKIP][146] ([i915#12311] / [i915#4215])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-dg2-8: NOTRUN -> [SKIP][147] ([i915#4215] / [i915#5190])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-dg1-7: NOTRUN -> [SKIP][148] ([i915#4215])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
- bat-dg2-14: NOTRUN -> [SKIP][149] ([i915#4215] / [i915#5190])
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_addfb_basic@bo-too-small-due-to-tiling:
- bat-arlh-3: NOTRUN -> [SKIP][150] ([i915#11666]) +8 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
* igt@kms_addfb_basic@clobberred-modifier:
- bat-arls-5: NOTRUN -> [SKIP][151] ([i915#10200]) +8 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_addfb_basic@clobberred-modifier.html
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- bat-dg2-9: NOTRUN -> [SKIP][152] ([i915#4212]) +7 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
- bat-dg2-8: NOTRUN -> [SKIP][153] ([i915#4212]) +7 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
* igt@kms_busy@basic:
- bat-dg1-6: NOTRUN -> [SKIP][154] ([i915#11190] / [i915#12311] / [i915#4303])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_busy@basic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- fi-glk-j4005: NOTRUN -> [SKIP][155] +11 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-glk-j4005/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- bat-adlp-9: NOTRUN -> [SKIP][156] ([i915#4103]) +1 other test skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- bat-twl-2: NOTRUN -> [SKIP][157] ([i915#11030] / [i915#11731]) +1 other test skip
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- bat-arls-6: NOTRUN -> [SKIP][158] ([i915#10202]) +1 other test skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-twl-1: NOTRUN -> [SKIP][159] ([i915#11030] / [i915#11731]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-jsl-5: NOTRUN -> [SKIP][160] ([i915#4103]) +1 other test skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-dg2-14: NOTRUN -> [SKIP][161] ([i915#4103] / [i915#4213]) +1 other test skip
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-arls-5: NOTRUN -> [SKIP][162] ([i915#10202]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-rplp-1: NOTRUN -> [SKIP][163] ([i915#4103] / [i915#4213]) +1 other test skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-mtlp-9: NOTRUN -> [SKIP][164] ([i915#4213]) +1 other test skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-dg2-9: NOTRUN -> [SKIP][165] ([i915#4103] / [i915#4213]) +1 other test skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-mtlp-8: NOTRUN -> [SKIP][166] ([i915#4213]) +1 other test skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-dg2-8: NOTRUN -> [SKIP][167] ([i915#4103] / [i915#4213]) +1 other test skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-jsl-1: NOTRUN -> [SKIP][168] ([i915#4103]) +1 other test skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-adlp-6: NOTRUN -> [SKIP][169] ([i915#4103]) +1 other test skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-arlh-3: NOTRUN -> [SKIP][170] ([i915#11731]) +1 other test skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- bat-dg1-7: NOTRUN -> [SKIP][171] ([i915#4103] / [i915#4213]) +1 other test skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
- bat-dg1-6: NOTRUN -> [SKIP][172] ([i915#11190] / [i915#12311]) +15 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html
* igt@kms_dsc@dsc-basic:
- bat-twl-1: NOTRUN -> [SKIP][173] ([i915#9886])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@kms_dsc@dsc-basic.html
- bat-jsl-5: NOTRUN -> [SKIP][174] ([i915#3555] / [i915#9886])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_dsc@dsc-basic.html
- bat-dg2-14: NOTRUN -> [SKIP][175] ([i915#3555] / [i915#3840])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_dsc@dsc-basic.html
- bat-arls-5: NOTRUN -> [SKIP][176] ([i915#9886])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_dsc@dsc-basic.html
- bat-rplp-1: NOTRUN -> [SKIP][177] ([i915#3555] / [i915#3840])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_dsc@dsc-basic.html
- bat-mtlp-9: NOTRUN -> [SKIP][178] ([i915#3555] / [i915#3840] / [i915#9159])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_dsc@dsc-basic.html
- bat-arls-6: NOTRUN -> [SKIP][179] ([i915#9886])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_dsc@dsc-basic.html
- bat-mtlp-8: NOTRUN -> [SKIP][180] ([i915#3555] / [i915#3840] / [i915#9159])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_dsc@dsc-basic.html
- bat-jsl-1: NOTRUN -> [SKIP][181] ([i915#3555] / [i915#9886])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@kms_dsc@dsc-basic.html
- bat-arlh-3: NOTRUN -> [SKIP][182] ([i915#9886])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_dsc@dsc-basic.html
- bat-dg1-7: NOTRUN -> [SKIP][183] ([i915#3555] / [i915#3840])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_dsc@dsc-basic.html
- bat-adlp-9: NOTRUN -> [SKIP][184] ([i915#3555] / [i915#3840])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_dsc@dsc-basic.html
- bat-twl-2: NOTRUN -> [SKIP][185] ([i915#9886])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@kms_dsc@dsc-basic.html
* igt@kms_flip@basic-flip-vs-dpms:
- bat-adlp-11: NOTRUN -> [SKIP][186] ([i915#3637]) +3 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_flip@basic-flip-vs-dpms.html
- bat-dg1-6: NOTRUN -> [SKIP][187] ([i915#12311] / [i915#3637]) +2 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_flip@basic-flip-vs-dpms@c-hdmi-a2:
- fi-bsw-n3050: NOTRUN -> [DMESG-WARN][188] ([i915#15371]) +3 other tests dmesg-warn
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-n3050/igt@kms_flip@basic-flip-vs-dpms@c-hdmi-a2.html
* igt@kms_flip@basic-plain-flip:
- bat-dg1-6: NOTRUN -> [SKIP][189] ([i915#12311]) +1 other test skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_flip@basic-plain-flip.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-twl-1: NOTRUN -> [SKIP][190] ([i915#11032])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@kms_force_connector_basic@force-load-detect.html
- bat-jsl-5: NOTRUN -> [SKIP][191]
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_force_connector_basic@force-load-detect.html
- bat-dg2-14: NOTRUN -> [SKIP][192]
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_force_connector_basic@force-load-detect.html
- bat-arls-5: NOTRUN -> [SKIP][193] ([i915#10207])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_force_connector_basic@force-load-detect.html
- bat-rplp-1: NOTRUN -> [SKIP][194] ([i915#4093]) +3 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_force_connector_basic@force-load-detect.html
- bat-mtlp-9: NOTRUN -> [SKIP][195]
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_force_connector_basic@force-load-detect.html
- bat-arls-6: NOTRUN -> [SKIP][196] ([i915#10207])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_force_connector_basic@force-load-detect.html
- bat-dg2-9: NOTRUN -> [SKIP][197]
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_force_connector_basic@force-load-detect.html
- bat-mtlp-8: NOTRUN -> [SKIP][198]
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_force_connector_basic@force-load-detect.html
- bat-dg2-8: NOTRUN -> [SKIP][199]
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html
- bat-jsl-1: NOTRUN -> [SKIP][200]
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@kms_force_connector_basic@force-load-detect.html
- bat-adlp-6: NOTRUN -> [SKIP][201]
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@kms_force_connector_basic@force-load-detect.html
- bat-arlh-3: NOTRUN -> [SKIP][202] ([i915#10207])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_force_connector_basic@force-load-detect.html
- bat-dg1-7: NOTRUN -> [SKIP][203]
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html
- bat-adlp-9: NOTRUN -> [SKIP][204]
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_force_connector_basic@force-load-detect.html
- bat-twl-2: NOTRUN -> [SKIP][205] ([i915#11032])
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-adlp-11: NOTRUN -> [SKIP][206] ([i915#4093]) +3 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@basic:
- fi-kbl-x1275: NOTRUN -> [SKIP][207] +19 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@kms_frontbuffer_tracking@basic.html
- bat-adlp-11: NOTRUN -> [SKIP][208] ([i915#4342] / [i915#5354])
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_frontbuffer_tracking@basic.html
- bat-dg1-6: NOTRUN -> [SKIP][209] ([i915#12311] / [i915#4342])
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_hdmi_inject@inject-audio:
- bat-rplp-1: NOTRUN -> [SKIP][210] ([i915#4369])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_hdmi_inject@inject-audio.html
- bat-adlp-11: NOTRUN -> [SKIP][211] ([i915#4369])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-c-edp-1:
- fi-skl-6600u: NOTRUN -> [SKIP][212] +10 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-skl-6600u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-c-edp-1.html
* igt@kms_pipe_crc_basic@read-crc:
- fi-kbl-x1275: NOTRUN -> [SKIP][213] ([i915#11190]) +16 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-kbl-x1275/igt@kms_pipe_crc_basic@read-crc.html
- bat-adlp-11: NOTRUN -> [SKIP][214] ([i915#11190]) +16 other tests skip
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_pipe_crc_basic@read-crc.html
* igt@kms_pipe_crc_basic@read-crc-frame-sequence:
- fi-bsw-nick: NOTRUN -> [SKIP][215] ([i915#11190]) +16 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/fi-bsw-nick/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
* igt@kms_pm_backlight@basic-brightness:
- bat-apl-1: NOTRUN -> [SKIP][216] +24 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-apl-1/igt@kms_pm_backlight@basic-brightness.html
- bat-arls-5: NOTRUN -> [SKIP][217] ([i915#9812])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_pm_backlight@basic-brightness.html
- bat-dg1-7: NOTRUN -> [SKIP][218] ([i915#5354])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html
- bat-jsl-5: NOTRUN -> [SKIP][219] ([i915#15205])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_pm_backlight@basic-brightness.html
- bat-dg2-14: NOTRUN -> [SKIP][220] ([i915#5354])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_pm_backlight@basic-brightness.html
- bat-dg2-8: NOTRUN -> [SKIP][221] ([i915#5354])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_pm_backlight@basic-brightness.html
- bat-arls-6: NOTRUN -> [SKIP][222] ([i915#9812])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_pm_backlight@basic-brightness.html
- bat-dg2-9: NOTRUN -> [SKIP][223] ([i915#5354])
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_pm_backlight@basic-brightness.html
- bat-adlp-11: NOTRUN -> [SKIP][224] ([i915#9812])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_pm_backlight@basic-brightness.html
- bat-dg1-6: NOTRUN -> [SKIP][225] ([i915#12311] / [i915#5354])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_pm_backlight@basic-brightness.html
- bat-adlp-9: NOTRUN -> [SKIP][226] ([i915#9812])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr@psr-cursor-plane-move:
- bat-arls-6: NOTRUN -> [SKIP][227] ([i915#9732]) +3 other tests skip
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_psr@psr-cursor-plane-move.html
* igt@kms_psr@psr-primary-mmap-gtt:
- bat-mtlp-9: NOTRUN -> [SKIP][228] ([i915#4077] / [i915#9688]) +1 other test skip
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html
- bat-mtlp-8: NOTRUN -> [SKIP][229] ([i915#4077] / [i915#9688]) +1 other test skip
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt.html
- bat-dg1-6: NOTRUN -> [SKIP][230] ([i915#1072] / [i915#12311] / [i915#9732]) +3 other tests skip
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_psr@psr-primary-mmap-gtt.html
- bat-arlh-3: NOTRUN -> [SKIP][231] ([i915#12637] / [i915#9688]) +1 other test skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_psr@psr-primary-mmap-gtt.html
* igt@kms_psr@psr-primary-page-flip:
- bat-dg1-7: NOTRUN -> [SKIP][232] ([i915#1072] / [i915#9732]) +3 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html
* igt@kms_psr@psr-sprite-plane-onoff:
- bat-adlp-9: NOTRUN -> [SKIP][233] ([i915#1072] / [i915#9732]) +3 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-jsl-5: NOTRUN -> [SKIP][234] ([i915#1072]) +3 other tests skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-dg2-14: NOTRUN -> [SKIP][235] ([i915#1072] / [i915#9732]) +3 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-arls-5: NOTRUN -> [SKIP][236] ([i915#9732]) +3 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-rplp-1: NOTRUN -> [SKIP][237] ([i915#1072] / [i915#9732]) +3 other tests skip
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-dg2-9: NOTRUN -> [SKIP][238] ([i915#1072] / [i915#9732]) +3 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-adlp-11: NOTRUN -> [SKIP][239] ([i915#1072] / [i915#9732]) +3 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_psr@psr-sprite-plane-onoff.html
- bat-dg2-8: NOTRUN -> [SKIP][240] ([i915#1072] / [i915#9732]) +3 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-adlp-9: NOTRUN -> [SKIP][241] ([i915#3555])
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@kms_setmode@basic-clone-single-crtc.html
- bat-twl-2: NOTRUN -> [SKIP][242] ([i915#8809])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@kms_setmode@basic-clone-single-crtc.html
- bat-twl-1: NOTRUN -> [SKIP][243] ([i915#8809])
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg2-14: NOTRUN -> [SKIP][244] ([i915#3555])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@kms_setmode@basic-clone-single-crtc.html
- bat-arls-5: NOTRUN -> [SKIP][245] ([i915#10208] / [i915#8809])
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@kms_setmode@basic-clone-single-crtc.html
- bat-adlp-6: NOTRUN -> [SKIP][246] ([i915#3555])
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
- bat-rplp-1: NOTRUN -> [SKIP][247] ([i915#3555])
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
- bat-mtlp-9: NOTRUN -> [SKIP][248] ([i915#3555] / [i915#8809])
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg2-9: NOTRUN -> [SKIP][249] ([i915#3555])
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@kms_setmode@basic-clone-single-crtc.html
- bat-adlp-11: NOTRUN -> [SKIP][250] ([i915#3555])
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@kms_setmode@basic-clone-single-crtc.html
- bat-jsl-5: NOTRUN -> [SKIP][251] ([i915#3555])
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-5/igt@kms_setmode@basic-clone-single-crtc.html
- bat-mtlp-8: NOTRUN -> [SKIP][252] ([i915#3555] / [i915#8809])
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg1-6: NOTRUN -> [SKIP][253] ([i915#12311] / [i915#3555])
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg2-8: NOTRUN -> [SKIP][254] ([i915#3555])
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html
- bat-jsl-1: NOTRUN -> [SKIP][255] ([i915#3555])
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-jsl-1/igt@kms_setmode@basic-clone-single-crtc.html
- bat-arls-6: NOTRUN -> [SKIP][256] ([i915#10208] / [i915#8809])
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@kms_setmode@basic-clone-single-crtc.html
- bat-arlh-3: NOTRUN -> [SKIP][257] ([i915#8809])
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg1-7: NOTRUN -> [SKIP][258] ([i915#3555])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-dg1-7: NOTRUN -> [SKIP][259] ([i915#3708]) +3 other tests skip
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@prime_vgem@basic-fence-flip.html
- bat-dg2-9: NOTRUN -> [SKIP][260] ([i915#3708])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@prime_vgem@basic-fence-flip.html
- bat-dg2-14: NOTRUN -> [SKIP][261] ([i915#3708])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@prime_vgem@basic-fence-flip.html
- bat-dg2-8: NOTRUN -> [SKIP][262] ([i915#3708])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html
- bat-adlp-11: NOTRUN -> [SKIP][263] ([i915#3708])
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-arlh-3: NOTRUN -> [SKIP][264] ([i915#12637]) +4 other tests skip
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@prime_vgem@basic-fence-mmap.html
- bat-dg1-7: NOTRUN -> [SKIP][265] ([i915#3708] / [i915#4077]) +1 other test skip
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html
- bat-dg2-14: NOTRUN -> [SKIP][266] ([i915#3708] / [i915#4077]) +1 other test skip
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@prime_vgem@basic-fence-mmap.html
- bat-dg2-8: NOTRUN -> [SKIP][267] ([i915#3708] / [i915#4077]) +1 other test skip
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html
- bat-mtlp-9: NOTRUN -> [SKIP][268] ([i915#3708] / [i915#4077]) +1 other test skip
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@prime_vgem@basic-fence-mmap.html
- bat-arls-6: NOTRUN -> [SKIP][269] ([i915#12637] / [i915#3708] / [i915#4077]) +1 other test skip
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@prime_vgem@basic-fence-mmap.html
- bat-dg2-9: NOTRUN -> [SKIP][270] ([i915#3708] / [i915#4077]) +1 other test skip
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@prime_vgem@basic-fence-mmap.html
- bat-mtlp-8: NOTRUN -> [SKIP][271] ([i915#3708] / [i915#4077]) +1 other test skip
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@prime_vgem@basic-fence-mmap.html
- bat-dg1-6: NOTRUN -> [SKIP][272] ([i915#3708] / [i915#4077]) +1 other test skip
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-fence-read:
- bat-adlp-11: NOTRUN -> [SKIP][273] ([i915#3291] / [i915#3708]) +2 other tests skip
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-11/igt@prime_vgem@basic-fence-read.html
- bat-mtlp-8: NOTRUN -> [SKIP][274] ([i915#3708]) +1 other test skip
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@prime_vgem@basic-fence-read.html
- bat-dg1-6: NOTRUN -> [SKIP][275] ([i915#3708]) +2 other tests skip
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@prime_vgem@basic-fence-read.html
- bat-adlp-9: NOTRUN -> [SKIP][276] ([i915#3291] / [i915#3708]) +2 other tests skip
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-9/igt@prime_vgem@basic-fence-read.html
- bat-arls-5: NOTRUN -> [SKIP][277] ([i915#10212] / [i915#3708])
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@prime_vgem@basic-fence-read.html
- bat-adlp-6: NOTRUN -> [SKIP][278] ([i915#3291] / [i915#3708]) +2 other tests skip
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-adlp-6/igt@prime_vgem@basic-fence-read.html
- bat-arlh-3: NOTRUN -> [SKIP][279] ([i915#11726]) +1 other test skip
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@prime_vgem@basic-fence-read.html
- bat-twl-2: NOTRUN -> [SKIP][280] ([i915#10212] / [i915#3708])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@prime_vgem@basic-fence-read.html
- bat-twl-1: NOTRUN -> [SKIP][281] ([i915#10212] / [i915#3708])
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@prime_vgem@basic-fence-read.html
- bat-arls-6: NOTRUN -> [SKIP][282] ([i915#10212] / [i915#3708])
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-gtt:
- bat-arls-5: NOTRUN -> [SKIP][283] ([i915#12637] / [i915#3708] / [i915#4077]) +1 other test skip
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@prime_vgem@basic-gtt.html
* igt@prime_vgem@basic-read:
- bat-twl-1: NOTRUN -> [SKIP][284] ([i915#10214] / [i915#3708])
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@prime_vgem@basic-read.html
- bat-dg2-14: NOTRUN -> [SKIP][285] ([i915#3291] / [i915#3708]) +2 other tests skip
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-14/igt@prime_vgem@basic-read.html
- bat-arls-5: NOTRUN -> [SKIP][286] ([i915#10214] / [i915#3708])
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@prime_vgem@basic-read.html
- bat-rplp-1: NOTRUN -> [SKIP][287] ([i915#3708]) +2 other tests skip
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-rplp-1/igt@prime_vgem@basic-read.html
- bat-mtlp-9: NOTRUN -> [SKIP][288] ([i915#3708]) +1 other test skip
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@prime_vgem@basic-read.html
- bat-arls-6: NOTRUN -> [SKIP][289] ([i915#10214] / [i915#3708])
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@prime_vgem@basic-read.html
- bat-twl-2: NOTRUN -> [SKIP][290] ([i915#10214] / [i915#3708])
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@prime_vgem@basic-read.html
* igt@prime_vgem@basic-write:
- bat-mtlp-9: NOTRUN -> [SKIP][291] ([i915#10216] / [i915#3708])
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-9/igt@prime_vgem@basic-write.html
- bat-arls-6: NOTRUN -> [SKIP][292] ([i915#10216] / [i915#3708])
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-6/igt@prime_vgem@basic-write.html
- bat-dg2-9: NOTRUN -> [SKIP][293] ([i915#3291] / [i915#3708]) +2 other tests skip
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-9/igt@prime_vgem@basic-write.html
- bat-mtlp-8: NOTRUN -> [SKIP][294] ([i915#10216] / [i915#3708])
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-mtlp-8/igt@prime_vgem@basic-write.html
- bat-dg1-6: NOTRUN -> [SKIP][295] ([i915#11723] / [i915#3708])
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg1-6/igt@prime_vgem@basic-write.html
- bat-dg2-8: NOTRUN -> [SKIP][296] ([i915#3291] / [i915#3708]) +2 other tests skip
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-dg2-8/igt@prime_vgem@basic-write.html
- bat-arlh-3: NOTRUN -> [SKIP][297] ([i915#11723])
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arlh-3/igt@prime_vgem@basic-write.html
- bat-twl-2: NOTRUN -> [SKIP][298] ([i915#10216] / [i915#3708])
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-2/igt@prime_vgem@basic-write.html
- bat-twl-1: NOTRUN -> [SKIP][299] ([i915#10216] / [i915#3708])
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-twl-1/igt@prime_vgem@basic-write.html
- bat-arls-5: NOTRUN -> [SKIP][300] ([i915#10216] / [i915#3708])
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-arls-5/igt@prime_vgem@basic-write.html
#### Warnings ####
* igt@i915_selftest@live@mman:
- bat-atsm-1: [DMESG-FAIL][301] ([i915#13929]) -> [DMESG-FAIL][302] ([i915#14204])
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8662/bat-atsm-1/igt@i915_selftest@live@mman.html
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/bat-atsm-1/igt@i915_selftest@live@mman.html
[i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197
[i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
[i915#10202]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10202
[i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206
[i915#10207]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10207
[i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208
[i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
[i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211
[i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
[i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
[i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
[i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#11030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11030
[i915#11031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11031
[i915#11032]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11032
[i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
[i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343
[i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666
[i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
[i915#11680]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11680
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#11723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11723
[i915#11724]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11724
[i915#11725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11725
[i915#11726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11726
[i915#11731]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11731
[i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
[i915#12311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12311
[i915#12637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12637
[i915#13929]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13929
[i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
[i915#14365]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14365
[i915#15205]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15205
[i915#15371]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15371
[i915#15399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15399
[i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[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#4093]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4093
[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#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
[i915#4303]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4303
[i915#4342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4342
[i915#4369]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4369
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#9159]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9159
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8662 -> IGTPW_14182
* Linux: CI_DRM_17650 -> CI_DRM_17654
CI-20190529: 20190529
CI_DRM_17650: 12271f632915efe0c5d4171b9c0e90f57ecdfe01 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_17654: 2a9deeb5c3fd4dddbed361f10b26ce567072a985 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_14182: 14182
IGT_8662: 9410b6926f317e8bf824502394e09ee8753ff65e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14182/index.html
[-- Attachment #2: Type: text/html, Size: 93441 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args
2025-12-10 9:38 ` [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args Ville Syrjala
@ 2025-12-10 14:21 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:21 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Move the i++ out from the igt_output_set_pipe(() arguments to
> reduce the number of side effects there. This avoids breaking
> things during upcoming cocci refactoring that wants to duplicate
> the expression passed as the first argument.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> tests/intel/kms_dp_linktrain_fallback.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tests/intel/kms_dp_linktrain_fallback.c b/tests/intel/kms_dp_linktrain_fallback.c
> index ac398ec5bb70..10c4d9e65ebf 100644
> --- a/tests/intel/kms_dp_linktrain_fallback.c
> +++ b/tests/intel/kms_dp_linktrain_fallback.c
> @@ -103,7 +103,8 @@ static void setup_pipe_on_outputs(data_t *data,
> igt_info("Setting pipe %s on output %s\n",
> kmstest_pipe_name(data->pipe),
> igt_output_name(outputs[i]));
> - igt_output_set_pipe(outputs[i++], data->pipe);
> + igt_output_set_pipe(outputs[i], data->pipe);
> + i++;
> }
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs()
2025-12-10 9:38 ` [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs() Ville Syrjala
@ 2025-12-10 14:21 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:21 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Introduce igt_display_n_crtcs() as the new name for
> igt_display_get_n_pipes(). The old name will get eliminated
> later using cocci, but it's easier to introduce duplicate
> names first because this needs to be used in a few messy macros
> that cocci doesn't like.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 13 ++++++++++++-
> lib/igt_kms.h | 7 ++++---
> 2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 2d7da376bc0b..5b8598305f8c 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -3271,6 +3271,17 @@ out:
> }
> }
>
> +/**
> + * igt_display_n_crtcs:
> + * @display: A pointer to an #igt_display_t structure
> + *
> + * Returns: Total number of CRTCs for the given @display
> + */
> +int igt_display_n_crtcs(igt_display_t *display)
> +{
> + return display->n_pipes;
> +}
> +
> /**
> * igt_display_get_n_pipes:
> * @display: A pointer to an #igt_display_t structure
> @@ -3279,7 +3290,7 @@ out:
> */
> int igt_display_get_n_pipes(igt_display_t *display)
> {
> - return display->n_pipes;
> + return igt_display_n_crtcs(display);
> }
>
> /**
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 065cbeca09a8..4171e2baef61 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -577,6 +577,7 @@ int igt_display_drop_events(igt_display_t *display);
> int igt_display_get_n_pipes(igt_display_t *display);
> void igt_display_require_output(igt_display_t *display);
> void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> +int igt_display_n_crtcs(igt_display_t *display);
>
> const char *igt_output_name(igt_output_t *output);
> drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
> @@ -743,7 +744,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> */
> #define for_each_pipe_with_valid_output(display, pipe, output) \
> for (int con__ = (pipe) = 0; \
> - assert(igt_can_fail()), (pipe) < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
> + assert(igt_can_fail()), (pipe) < igt_display_n_crtcs(display) && con__ < (display)->n_outputs; \
> con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
> for_each_if((display)->pipes[pipe].valid) \
> for_each_if ((((output) = &(display)->outputs[con__]), \
> @@ -763,9 +764,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
> * be called at most once for each pipe.
> */
> #define for_each_pipe_with_single_output(display, pipe, output) \
> - for (igt_output_t *__outputs[(display)->n_pipes], \
> + for (igt_output_t *__outputs[igt_display_n_crtcs(display)], \
> **__output = __igt_pipe_populate_outputs((display), __outputs); \
> - __output < &__outputs[(display)->n_pipes]; __output++) \
> + __output < &__outputs[igt_display_n_crtcs(display)]; __output++) \
> for_each_if (*__output && \
> ((pipe) = (__output - __outputs), (output) = *__output, 1))
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere
2025-12-10 9:38 ` [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere Ville Syrjala
@ 2025-12-10 14:22 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:22 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace all igt_display_get_n_pipes() and naked
> display->n_pipes uses with igt_display_n_crtcs().
>
> One step towards using 'crtcs' instead of 'pipes'.
>
> Done with cocci:
> #include "scripts/iterators.cocci"
>
> @@
> @@
> - igt_display_get_n_pipes(...) { ... }
>
> @@
> expression DISPLAY;
> @@
> - igt_display_get_n_pipes(DISPLAY)
> + igt_display_n_crtcs(DISPLAY)
>
> @@
> igt_display_t DISPLAY;
> expression E;
> @@
> (
> DISPLAY.n_pipes = E;
> |
> - DISPLAY.n_pipes
> + igt_display_n_crtcs(&DISPLAY)
> )
>
> @@
> igt_display_t *DISPLAY;
> expression E;
> @@
> (
> DISPLAY->n_pipes = E;
> |
> - DISPLAY->n_pipes
> + igt_display_n_crtcs(DISPLAY)
> )
>
> @@
> identifier DISPLAY;
> @@
> igt_display_n_crtcs(igt_display_t *DISPLAY)
> {
> <...
> - igt_display_n_crtcs(DISPLAY)
> + DISPLAY->n_pipes
> ...>
> }
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
There's a few extra newlines added by cocci's strict adheration to max
line length, but I guess we'll just let it slide.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 42 ++++++++++---------------
> lib/igt_kms.h | 1 -
> tests/amdgpu/amd_dp_dsc.c | 3 +-
> tests/amdgpu/amd_hotplug.c | 2 +-
> tests/amdgpu/amd_mode_switch.c | 2 +-
> tests/amdgpu/amd_multidisplay_modeset.c | 2 +-
> tests/amdgpu/amd_plane.c | 2 +-
> tests/amdgpu/amd_subvp.c | 3 +-
> tests/intel/gem_eio.c | 2 +-
> tests/kms_bw.c | 2 +-
> tests/kms_cursor_legacy.c | 2 +-
> tests/kms_tiled_display.c | 4 +--
> 12 files changed, 30 insertions(+), 37 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 5b8598305f8c..a6bc41fb357d 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2870,7 +2870,7 @@ static void igt_fill_display_format_mod(igt_display_t *display);
> */
> void igt_require_pipe(igt_display_t *display, enum pipe pipe)
> {
> - igt_skip_on_f(pipe >= display->n_pipes || !display->pipes[pipe].valid,
> + igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !display->pipes[pipe].valid,
> "Pipe %s does not exist\n",
> kmstest_pipe_name(pipe));
> }
> @@ -3107,8 +3107,10 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> resources->count_crtcs, IGT_MAX_PIPES);
>
> display->n_pipes = IGT_MAX_PIPES;
> - display->pipes = calloc(display->n_pipes, sizeof(igt_pipe_t));
> - igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n", display->n_pipes);
> + display->pipes = calloc(igt_display_n_crtcs(display),
> + sizeof(igt_pipe_t));
> + igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n",
> + igt_display_n_crtcs(display));
>
> for (i = 0; i < resources->count_crtcs; i++) {
> igt_pipe_t *pipe;
> @@ -3260,14 +3262,14 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> out:
> LOG_UNINDENT(display);
>
> - if (display->n_pipes && display->n_outputs) {
> + if (igt_display_n_crtcs(display) && display->n_outputs) {
> igt_enable_connectors(drm_fd);
>
> igt_handle_spurious_hpd(display);
> }
> else {
> igt_skip("No KMS driver or no outputs, pipes: %d, outputs: %d\n",
> - display->n_pipes, display->n_outputs);
> + igt_display_n_crtcs(display), display->n_outputs);
> }
> }
>
> @@ -3282,17 +3284,6 @@ int igt_display_n_crtcs(igt_display_t *display)
> return display->n_pipes;
> }
>
> -/**
> - * igt_display_get_n_pipes:
> - * @display: A pointer to an #igt_display_t structure
> - *
> - * Returns: Total number of pipes for the given @display
> - */
> -int igt_display_get_n_pipes(igt_display_t *display)
> -{
> - return igt_display_n_crtcs(display);
> -}
> -
> /**
> * igt_display_require_output:
> * @display: A pointer to an #igt_display_t structure
> @@ -3469,7 +3460,7 @@ void igt_display_fini(igt_display_t *display)
> }
> }
>
> - for (i = 0; i < display->n_pipes; i++)
> + for (i = 0; i < igt_display_n_crtcs(display); i++)
> igt_pipe_fini(&display->pipes[i]);
>
> for (i = 0; i < display->n_outputs; i++)
> @@ -3539,7 +3530,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> pipe = output->pending_pipe;
> }
>
> - igt_assert(pipe >= 0 && pipe < display->n_pipes);
> + igt_assert(pipe >= 0 && pipe < igt_display_n_crtcs(display));
>
> return &display->pipes[pipe];
> }
> @@ -3663,9 +3654,10 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> igt_output_t *output;
> int i, j;
>
> - memset(chosen_outputs, 0, sizeof(*chosen_outputs) * display->n_pipes);
> + memset(chosen_outputs, 0,
> + sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
>
> - for (i = 0; i < display->n_pipes; i++) {
> + for (i = 0; i < igt_display_n_crtcs(display); i++) {
> igt_pipe_t *pipe = &display->pipes[i];
> if (pipe->valid)
> full_pipe_mask |= (1 << i);
> @@ -3676,7 +3668,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> * it, start with the outputs restricted to 1 pipe, then increase
> * number of pipes until we assign connectors to all pipes.
> */
> - for (i = 0; i <= display->n_pipes; i++) {
> + for (i = 0; i <= igt_display_n_crtcs(display); i++) {
> for_each_connected_output(display, output) {
> uint32_t pipe_mask = output->config.valid_crtc_idx_mask & full_pipe_mask;
> bool found = false;
> @@ -3693,7 +3685,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> } else if (__builtin_popcount(pipe_mask) != i)
> continue;
>
> - for (j = 0; j < display->n_pipes; j++) {
> + for (j = 0; j < igt_display_n_crtcs(display); j++) {
> bool pipe_assigned = assigned_pipes & (1 << j);
>
> if (pipe_assigned || !(pipe_mask & (1 << j)))
> @@ -3733,7 +3725,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> */
> igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe)
> {
> - igt_output_t *chosen_outputs[display->n_pipes];
> + igt_output_t *chosen_outputs[igt_display_n_crtcs(display)];
>
> igt_assert(pipe != PIPE_NONE);
> igt_require_pipe(display, pipe);
> @@ -4969,7 +4961,7 @@ static int do_display_commit(igt_display_t *display,
> LOG_INDENT(display, "commit");
>
> /* someone managed to bypass igt_display_require, catch them */
> - assert(display->n_pipes && display->n_outputs);
> + assert(igt_display_n_crtcs(display) && display->n_outputs);
>
> igt_display_refresh(display);
>
> @@ -5022,7 +5014,7 @@ int igt_display_try_commit_atomic(igt_display_t *display, uint32_t flags, void *
> int ret;
>
> /* someone managed to bypass igt_display_require, catch them */
> - assert(display->n_pipes && display->n_outputs);
> + assert(igt_display_n_crtcs(display) && display->n_outputs);
>
> LOG_INDENT(display, "commit");
>
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 4171e2baef61..6e7cf112b1e2 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -574,7 +574,6 @@ int igt_display_try_commit_atomic(igt_display_t *display, uint32_t flags, void
> void igt_display_commit_atomic(igt_display_t *display, uint32_t flags, void *user_data);
> int igt_display_try_commit2(igt_display_t *display, enum igt_commit_style s);
> int igt_display_drop_events(igt_display_t *display);
> -int igt_display_get_n_pipes(igt_display_t *display);
> void igt_display_require_output(igt_display_t *display);
> void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> int igt_display_n_crtcs(igt_display_t *display);
> diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
> index 30d7c898f907..788ff911691d 100644
> --- a/tests/amdgpu/amd_dp_dsc.c
> +++ b/tests/amdgpu/amd_dp_dsc.c
> @@ -73,7 +73,8 @@ static void test_init(data_t *data)
> IGT_PIPE_CRC_SOURCE_AUTO);
> }
>
> - for (i = 0, n = 0; i < display->n_outputs && n < display->n_pipes; ++i) {
> + for (i = 0,
> + n = 0; i < display->n_outputs && n < igt_display_n_crtcs(display); ++i) {
> igt_output_t *output = &display->outputs[i];
> data->output[n] = output;
>
> diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
> index 9038b2ed9208..8d875a5b888f 100644
> --- a/tests/amdgpu/amd_hotplug.c
> +++ b/tests/amdgpu/amd_hotplug.c
> @@ -51,7 +51,7 @@ typedef struct data {
> static void test_init(data_t *data)
> {
> igt_display_t *display = &data->display;
> - int i, n, max_pipes = display->n_pipes;
> + int i, n, max_pipes = igt_display_n_crtcs(display);
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
> index 57b2b98023f5..8b6b93d68df7 100644
> --- a/tests/amdgpu/amd_mode_switch.c
> +++ b/tests/amdgpu/amd_mode_switch.c
> @@ -88,7 +88,7 @@ static void run_mode_switch_first_last(data_t *data, int num_pipes)
>
> test_init(data);
>
> - igt_skip_on_f(num_pipes > igt_display_get_n_pipes(&data->display) ||
> + igt_skip_on_f(num_pipes > igt_display_n_crtcs(&data->display) ||
> num_pipes > data->display.n_outputs,
> "ASIC does not have %d outputs/pipes\n", num_pipes);
>
> diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
> index a53cf668fb5c..4e97438ad978 100644
> --- a/tests/amdgpu/amd_multidisplay_modeset.c
> +++ b/tests/amdgpu/amd_multidisplay_modeset.c
> @@ -235,7 +235,7 @@ static void multiple_display_test(struct data_t *data, enum sub_test test_mode)
>
> igt_info("Connected num_disps:%d\n", num_disps);
>
> - igt_skip_on_f(num_disps > igt_display_get_n_pipes(&data->display) ||
> + igt_skip_on_f(num_disps > igt_display_n_crtcs(&data->display) ||
> num_disps > data->display.n_outputs,
> "ASIC does not have %d outputs/pipes\n", num_disps);
>
> diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
> index 8bf776f35770..ad7d921d2aa3 100644
> --- a/tests/amdgpu/amd_plane.c
> +++ b/tests/amdgpu/amd_plane.c
> @@ -152,7 +152,7 @@ enum test {
> static void test_init(data_t *data)
> {
> igt_display_t *display = &data->display;
> - int i, n, max_pipes = display->n_pipes;
> + int i, n, max_pipes = igt_display_n_crtcs(display);
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
> index 7d29bcf10d18..fca9d6036ca2 100644
> --- a/tests/amdgpu/amd_subvp.c
> +++ b/tests/amdgpu/amd_subvp.c
> @@ -73,7 +73,8 @@ static void test_init(struct data *data)
> IGT_PIPE_CRC_SOURCE_AUTO);
> }
>
> - for (i = 0, n = 0; i < display->n_outputs && n < display->n_pipes; ++i) {
> + for (i = 0,
> + n = 0; i < display->n_outputs && n < igt_display_n_crtcs(display); ++i) {
> igt_output_t *output = &display->outputs[i];
>
> data->output[n] = output;
> diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
> index 290f3e2e870f..5f58cfe699a4 100644
> --- a/tests/intel/gem_eio.c
> +++ b/tests/intel/gem_eio.c
> @@ -1034,7 +1034,7 @@ static void display_helper(igt_display_t *dpy, int *done)
> igt_output_t *output;
> int pipe;
>
> - pipe = rand() % dpy->n_pipes;
> + pipe = rand() % igt_display_n_crtcs(dpy);
> if (!dpy->pipes[pipe].valid)
> continue;
> output = igt_get_single_output_for_pipe(dpy, pipe);
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 75b98f149665..9100dd329e30 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -119,7 +119,7 @@ static drmModeModeInfo test_mode[] = {
> static void test_init(data_t *data, bool physical)
> {
> igt_display_t *display = &data->display;
> - int i, max_pipes = display->n_pipes;
> + int i, max_pipes = igt_display_n_crtcs(display);
> igt_output_t *output;
> data->connected_outputs = 0;
>
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 63175fe4c8f5..ec35992bac6a 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -287,7 +287,7 @@ static void stress(igt_display_t *display,
> arg.handle = kmstest_dumb_create(display->drm_fd, 64, 64, 32, NULL, NULL);
>
> if (pipe < 0) {
> - num_crtcs = display->n_pipes;
> + num_crtcs = igt_display_n_crtcs(display);
> for_each_pipe(display, n) {
> arg.crtc_id = crtc_id[n] = display->pipes[n].crtc_id;
> do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
> diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> index f50ac5f17a76..d6f5eda7d841 100644
> --- a/tests/kms_tiled_display.c
> +++ b/tests/kms_tiled_display.c
> @@ -513,7 +513,7 @@ static void override_edid(data_t *data)
> int num_outputs = 0;
> int num_tiles = 0;
>
> - igt_require(data->display.n_pipes >= 2);
> + igt_require(igt_display_n_crtcs(&data->display) >= 2);
>
> for_each_connected_output(&data->display, output) {
> drmModeModeInfo *mode = igt_output_get_mode(output);
> @@ -530,7 +530,7 @@ static void override_edid(data_t *data)
>
> igt_require(num_outputs >= 2);
>
> - num_tiles = min(num_outputs, data->display.n_pipes);
> + num_tiles = min(num_outputs, igt_display_n_crtcs(&data->display));
>
> /* disable everything so that we are sure to get a full modeset */
> igt_display_reset(&data->display);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe()
2025-12-10 9:38 ` [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe() Ville Syrjala
@ 2025-12-10 14:23 ` Jani Nikula
2025-12-10 17:16 ` [PATCH i-g-t v2 " Ville Syrjala
1 sibling, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:23 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Start weaning everyone off from poking inside display->pipes[]
> by hand. Introduce igt_crtc_for_pipe() as the preferred method
> for getting the correct crtc.
>
> Done by hand because this needs to be used in a few messy macros
> that cocci doesn't like.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.h | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 6e7cf112b1e2..5bb5c2cac19c 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -578,6 +578,11 @@ void igt_display_require_output(igt_display_t *display);
> void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> int igt_display_n_crtcs(igt_display_t *display);
>
> +static inline igt_pipe_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
> +{
> + return &display->pipes[pipe];
> +}
> +
> const char *igt_output_name(igt_output_t *output);
> drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
> drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
> @@ -726,7 +731,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> */
> #define for_each_pipe(display, pipe) \
> for_each_pipe_static(pipe) \
> - for_each_if((display)->pipes[(pipe)].valid)
> + for_each_if(igt_crtc_for_pipe((display), (pipe))->valid)
>
> /**
> * for_each_pipe_with_valid_output:
> @@ -745,7 +750,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> for (int con__ = (pipe) = 0; \
> assert(igt_can_fail()), (pipe) < igt_display_n_crtcs(display) && con__ < (display)->n_outputs; \
> con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
> - for_each_if((display)->pipes[pipe].valid) \
> + for_each_if(igt_crtc_for_pipe((display), (pipe))->valid) \
> for_each_if ((((output) = &(display)->outputs[con__]), \
> igt_pipe_connector_valid((pipe), (output))))
>
> @@ -793,8 +798,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
> * If there are no valid planes for this pipe, nothing happens.
> */
> #define for_each_plane_on_pipe(display, pipe, plane) \
> - for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(pipe)].planes[j__], \
> - j__ < (display)->pipes[(pipe)].n_planes; j__++)
> + for (int j__ = 0; assert(igt_can_fail()), \
> + (plane) = &igt_crtc_for_pipe((display), (pipe))->planes[j__], \
> + j__ < igt_crtc_for_pipe((display), (pipe))->n_planes; j__++)
>
> /**
> * for_each_connector_mode:
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere
2025-12-10 9:38 ` [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere Ville Syrjala
@ 2025-12-10 14:25 ` Jani Nikula
2025-12-12 15:32 ` Ville Syrjälä
0 siblings, 1 reply; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:25 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace all the naked display->pipes[] stuff with igt_crtc_for_pipe().
>
> One step towards using 'crtcs' instead of 'pipes'.
>
> Done with cocci:
> #include "scripts/iterators.cocci"
>
> @@
> expression D, P;
> identifier M;
> @@
> (
> - D.pipes[P].M
> + igt_crtc_for_pipe(&D, P)->M
> |
> - D->pipes[P].M
> + igt_crtc_for_pipe(D, P)->M
> |
> - &D.pipes[P]
> + igt_crtc_for_pipe(&D, P)
> |
> - &D->pipes[P]
> + igt_crtc_for_pipe(D, P)
> |
> - D->pipes[P]
> + XXX
Is that just to catch any remaining references that didn't match the
earlier ones?
> )
>
> @@
> expression display, pipe;
> @@
> igt_crtc_for_pipe(...)
> {
> <...
> - igt_crtc_for_pipe(display, pipe)
> + &display->pipes[pipe]
> ...>
> }
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
I'm guessing most of these places shouldn't be using pipe to begin with,
but that's for another patch. This is nice cleanup.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 38 ++++++++++---------
> lib/igt_kms.h | 6 ++-
> tests/amdgpu/amd_abm.c | 2 +-
> tests/amdgpu/amd_assr.c | 2 +-
> tests/amdgpu/amd_bypass.c | 2 +-
> tests/amdgpu/amd_color.c | 2 +-
> tests/amdgpu/amd_dp_dsc.c | 3 +-
> tests/amdgpu/amd_hotplug.c | 3 +-
> tests/amdgpu/amd_ilr.c | 2 +-
> tests/amdgpu/amd_link_settings.c | 2 +-
> tests/amdgpu/amd_mall.c | 2 +-
> tests/amdgpu/amd_max_bpc.c | 2 +-
> tests/amdgpu/amd_mem_leak.c | 2 +-
> tests/amdgpu/amd_mode_switch.c | 4 +-
> tests/amdgpu/amd_multidisplay_modeset.c | 6 +--
> tests/amdgpu/amd_odm.c | 2 +-
> tests/amdgpu/amd_plane.c | 2 +-
> tests/amdgpu/amd_psr.c | 2 +-
> tests/amdgpu/amd_replay.c | 2 +-
> tests/amdgpu/amd_subvp.c | 3 +-
> tests/chamelium/kms_chamelium_color.c | 10 ++---
> .../kms_chamelium_sharpness_filter.c | 4 +-
> tests/intel/gem_eio.c | 2 +-
> tests/intel/gem_pxp.c | 4 +-
> tests/intel/kms_big_fb.c | 6 +--
> tests/intel/kms_busy.c | 6 +--
> tests/intel/kms_cdclk.c | 2 +-
> tests/intel/kms_flip_scaled_crc.c | 4 +-
> tests/intel/kms_frontbuffer_tracking.c | 16 +++++---
> tests/intel/kms_joiner_helper.c | 2 +-
> tests/intel/kms_pipe_stress.c | 10 +++--
> tests/intel/kms_pm_dc.c | 4 +-
> tests/intel/kms_sharpness_filter.c | 2 +-
> tests/intel/perf_pmu.c | 2 +-
> tests/intel/xe_pxp.c | 6 +--
> tests/kms_async_flips.c | 2 +-
> tests/kms_atomic.c | 18 +++++----
> tests/kms_atomic_transition.c | 33 ++++++++--------
> tests/kms_bw.c | 3 +-
> tests/kms_color.c | 10 ++---
> tests/kms_color_helper.c | 4 +-
> tests/kms_concurrent.c | 4 +-
> tests/kms_cursor_crc.c | 8 ++--
> tests/kms_cursor_edge_walk.c | 2 +-
> tests/kms_cursor_legacy.c | 26 +++++++------
> tests/kms_display_modes.c | 16 +++++---
> tests/kms_dither.c | 2 +-
> tests/kms_hdr.c | 2 +-
> tests/kms_invalid_mode.c | 2 +-
> tests/kms_lease.c | 37 +++++++++---------
> tests/kms_multipipe_modeset.c | 4 +-
> tests/kms_pipe_crc_basic.c | 6 ++-
> tests/kms_plane.c | 10 ++---
> tests/kms_plane_alpha_blend.c | 15 +++++---
> tests/kms_plane_cursor.c | 8 ++--
> tests/kms_plane_multiple.c | 4 +-
> tests/kms_plane_scaling.c | 8 ++--
> tests/kms_properties.c | 12 ++++--
> tests/kms_rotation_crc.c | 3 +-
> tests/kms_sequence.c | 2 +-
> tests/kms_tiled_display.c | 2 +-
> tests/kms_universal_plane.c | 10 +++--
> tests/kms_vblank.c | 4 +-
> tools/amd_hdmi_compliance.c | 2 +-
> 64 files changed, 239 insertions(+), 189 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index a6bc41fb357d..951144bae955 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2839,7 +2839,7 @@ void igt_display_reset(igt_display_t *display)
> display->first_commit = true;
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> for_each_plane_on_pipe(display, pipe, plane)
> @@ -2870,7 +2870,7 @@ static void igt_fill_display_format_mod(igt_display_t *display);
> */
> void igt_require_pipe(igt_display_t *display, enum pipe pipe)
> {
> - igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !display->pipes[pipe].valid,
> + igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !igt_crtc_for_pipe(display, pipe)->valid,
> "Pipe %s does not exist\n",
> kmstest_pipe_name(pipe));
> }
> @@ -3013,7 +3013,7 @@ void igt_display_reset_outputs(igt_display_t *display)
> igt_display_reset(display);
>
> for_each_pipe(display, i) {
> - igt_pipe_t *pipe = &display->pipes[i];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> igt_output_t *output;
>
> if (!igt_pipe_has_valid_output(display, i))
> @@ -3118,7 +3118,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> __intel_get_pipe_from_crtc_id(drm_fd,
> resources->crtcs[i], i) : i;
>
> - pipe = &display->pipes[pipe_enum];
> + pipe = igt_crtc_for_pipe(display, pipe_enum);
> pipe->pipe = pipe_enum;
>
> pipe->valid = true;
> @@ -3156,7 +3156,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> display->n_colorops = 0;
>
> for_each_pipe(display, i) {
> - igt_pipe_t *pipe = &display->pipes[i];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> igt_plane_t *plane;
> int p = 1, crtc_mask = 0;
> int j, type;
> @@ -3461,7 +3461,7 @@ void igt_display_fini(igt_display_t *display)
> }
>
> for (i = 0; i < igt_display_n_crtcs(display); i++)
> - igt_pipe_fini(&display->pipes[i]);
> + igt_pipe_fini(igt_crtc_for_pipe(display, i));
>
> for (i = 0; i < display->n_outputs; i++)
> igt_output_fini(&display->outputs[i]);
> @@ -3532,7 +3532,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
>
> igt_assert(pipe >= 0 && pipe < igt_display_n_crtcs(display));
>
> - return &display->pipes[pipe];
> + return igt_crtc_for_pipe(display, pipe);
> }
>
> static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
> @@ -3658,7 +3658,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
>
> for (i = 0; i < igt_display_n_crtcs(display); i++) {
> - igt_pipe_t *pipe = &display->pipes[i];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> if (pipe->valid)
> full_pipe_mask |= (1 << i);
> }
> @@ -4815,7 +4815,7 @@ static int igt_atomic_commit(igt_display_t *display, uint32_t flags, void *user_
> req = drmModeAtomicAlloc();
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> /*
> @@ -4866,7 +4866,7 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)
> enum pipe pipe;
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> if (s == COMMIT_ATOMIC) {
> @@ -4969,7 +4969,8 @@ static int do_display_commit(igt_display_t *display,
> ret = igt_atomic_commit(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> } else {
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display,
> + pipe);
>
> ret = igt_pipe_commit(pipe_obj, s, fail_on_error);
> if (ret)
> @@ -5296,7 +5297,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> old_pipe = igt_output_get_driving_pipe(output);
>
> if (pipe != PIPE_NONE)
> - pipe_obj = &display->pipes[pipe];
> + pipe_obj = igt_crtc_for_pipe(display, pipe);
>
> LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
> kmstest_pipe_name(pipe));
> @@ -5316,7 +5317,8 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> }
> }
>
> - igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID, pipe == PIPE_NONE ? 0 : display->pipes[pipe].crtc_id);
> + igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
> + pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
>
> igt_output_refresh(output);
>
> @@ -5450,7 +5452,7 @@ bool igt_fit_modes_in_bw(igt_display_t *display)
> */
> void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
> {
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
>
> if (force && display->is_atomic) {
> igt_output_t *output = igt_pipe_get_output(pipe_obj);
> @@ -7196,9 +7198,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
> }
> }
>
> - if (!display->pipes[pipes[i].idx + 1].valid) {
> + if (!igt_crtc_for_pipe(display, pipes[i].idx + 1)->valid) {
> igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
> - kmstest_pipe_name(display->pipes[pipes[i].idx + 1].pipe));
> + kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i].idx + 1)->pipe));
> return false;
> }
>
> @@ -7218,9 +7220,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
> max_dotclock, pipes[i - 1].force_joiner ? "Yes" : "No");
> kmstest_dump_mode(pipes[i - 1].mode);
>
> - if (!display->pipes[pipes[i - 1].idx + 1].valid) {
> + if (!igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->valid) {
> igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
> - kmstest_pipe_name(display->pipes[pipes[i - 1].idx + 1].pipe));
> + kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->pipe));
> return false;
> }
>
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 5bb5c2cac19c..fd3c8448983e 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1074,7 +1074,8 @@ static inline bool igt_pipe_is_prop_changed(igt_display_t *display,
> enum pipe pipe,
> enum igt_atomic_crtc_properties prop)
> {
> - return igt_pipe_obj_is_prop_changed(&display->pipes[pipe], prop);
> + return igt_pipe_obj_is_prop_changed(igt_crtc_for_pipe(display, pipe),
> + prop);
> }
>
> /**
> @@ -1132,7 +1133,8 @@ static inline void igt_pipe_set_prop_value(igt_display_t *display,
> enum igt_atomic_crtc_properties prop,
> uint64_t value)
> {
> - igt_pipe_obj_set_prop_value(&display->pipes[pipe], prop, value);
> + igt_pipe_obj_set_prop_value(igt_crtc_for_pipe(display, pipe), prop,
> + value);
> }
>
> extern bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe,
> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> index 84677fef80d6..9be5cfe8efc1 100644
> --- a/tests/amdgpu/amd_abm.c
> +++ b/tests/amdgpu/amd_abm.c
> @@ -131,7 +131,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> index 8a42baa0ba86..ebd6654ee2a1 100644
> --- a/tests/amdgpu/amd_assr.c
> +++ b/tests/amdgpu/amd_assr.c
> @@ -168,7 +168,7 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
> mode = igt_output_get_mode(output);
> igt_assert(mode);
>
> - pipe = &data->display.pipes[PIPE_A];
> + pipe = igt_crtc_for_pipe(&data->display, PIPE_A);
> primary =
> igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_output_set_pipe(output, PIPE_A);
> diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
> index a3fc39c50a51..40828fa52b1f 100644
> --- a/tests/amdgpu/amd_bypass.c
> +++ b/tests/amdgpu/amd_bypass.c
> @@ -65,7 +65,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
> index 917d30b20a47..fcfbe48d1eeb 100644
> --- a/tests/amdgpu/amd_color.c
> +++ b/tests/amdgpu/amd_color.c
> @@ -180,7 +180,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
> index 788ff911691d..fe40d0901548 100644
> --- a/tests/amdgpu/amd_dp_dsc.c
> +++ b/tests/amdgpu/amd_dp_dsc.c
> @@ -65,7 +65,8 @@ static void test_init(data_t *data)
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> + data->pipe_id[i]);
> data->primary[i] = igt_pipe_get_plane_type(
> data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> data->pipe_crc[i] =
> diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
> index 8d875a5b888f..d80eb65bd263 100644
> --- a/tests/amdgpu/amd_hotplug.c
> +++ b/tests/amdgpu/amd_hotplug.c
> @@ -55,7 +55,8 @@ static void test_init(data_t *data)
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> + data->pipe_id[i]);
> data->primary[i] = igt_pipe_get_plane_type(
> data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> data->overlay[i] = igt_pipe_get_plane_type_index(
> diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
> index 5767d4ac4c11..680b46763af3 100644
> --- a/tests/amdgpu/amd_ilr.c
> +++ b/tests/amdgpu/amd_ilr.c
> @@ -98,7 +98,7 @@ static void test_init(data_t *data, igt_output_t *output)
>
> igt_require(data->pipe_id != PIPE_NONE);
>
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
> AMDGPU_PIPE_CRC_SOURCE_DPRX);
> diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
> index fb83f3c13932..6e6037ae5fbc 100644
> --- a/tests/amdgpu/amd_link_settings.c
> +++ b/tests/amdgpu/amd_link_settings.c
> @@ -100,7 +100,7 @@ static void test_init(data_t *data, igt_output_t *output)
>
> igt_require(data->pipe_id != PIPE_NONE);
>
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_output_set_pipe(output, data->pipe_id);
>
> diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
> index a3e82a33f8f9..27589b865a53 100644
> --- a/tests/amdgpu/amd_mall.c
> +++ b/tests/amdgpu/amd_mall.c
> @@ -62,7 +62,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
> index 869a3e5c52b7..9771c67338c7 100644
> --- a/tests/amdgpu/amd_max_bpc.c
> +++ b/tests/amdgpu/amd_max_bpc.c
> @@ -56,7 +56,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
> index 9863ec78d143..1b6b2b730c5b 100644
> --- a/tests/amdgpu/amd_mem_leak.c
> +++ b/tests/amdgpu/amd_mem_leak.c
> @@ -47,7 +47,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
> index 8b6b93d68df7..c443578f5f09 100644
> --- a/tests/amdgpu/amd_mode_switch.c
> +++ b/tests/amdgpu/amd_mode_switch.c
> @@ -41,8 +41,8 @@ static void test_init(data_t *data)
> for_each_pipe(display, i) {
> igt_output_t *output = &display->outputs[i];
>
> - data->primary[i] = igt_pipe_get_plane_type(
> - &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
> + data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
> + DRM_PLANE_TYPE_PRIMARY);
>
> data->output[i] = output;
> }
> diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
> index 4e97438ad978..91455ed1dfb8 100644
> --- a/tests/amdgpu/amd_multidisplay_modeset.c
> +++ b/tests/amdgpu/amd_multidisplay_modeset.c
> @@ -160,9 +160,9 @@ static void test_init(struct data_t *data)
> * tested
> */
> output = igt_get_single_output_for_pipe(display, i);
> - pipes = &display->pipes[i];
> - data->primary[i] = igt_pipe_get_plane_type(
> - &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
> + pipes = igt_crtc_for_pipe(display, i);
> + data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
> + DRM_PLANE_TYPE_PRIMARY);
> data->output[i] = output;
>
> /* dp rx crc only available for eDP, SST DP, MST DP */
> diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
> index 101c89e60e4e..483b30e8ac8f 100644
> --- a/tests/amdgpu/amd_odm.c
> +++ b/tests/amdgpu/amd_odm.c
> @@ -49,7 +49,7 @@ static void test_init(struct data *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
> index ad7d921d2aa3..0dbac17a6e7f 100644
> --- a/tests/amdgpu/amd_plane.c
> +++ b/tests/amdgpu/amd_plane.c
> @@ -156,7 +156,7 @@ static void test_init(data_t *data)
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> - data->pipe[i] = &display->pipes[data->pipe_id[i]];
> + data->pipe[i] = igt_crtc_for_pipe(display, data->pipe_id[i]);
> data->primary[i] = igt_pipe_get_plane_type(
> data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> data->overlay[i] = igt_pipe_get_plane_type_index(
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 040c39f0abdb..789d243f8e86 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -172,7 +172,7 @@ static void test_init(data_t *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
> index d06f56df233c..8b194f797938 100644
> --- a/tests/amdgpu/amd_replay.c
> +++ b/tests/amdgpu/amd_replay.c
> @@ -62,7 +62,7 @@ static void test_init(struct test_data *data)
>
> /* It doesn't matter which pipe we choose on amdpgu. */
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
>
> diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
> index fca9d6036ca2..a0a546a3e398 100644
> --- a/tests/amdgpu/amd_subvp.c
> +++ b/tests/amdgpu/amd_subvp.c
> @@ -65,7 +65,8 @@ static void test_init(struct data *data)
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = PIPE_A + i;
> - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> + data->pipe_id[i]);
> data->primary[i] = igt_pipe_get_plane_type(data->pipe[i],
> DRM_PLANE_TYPE_PRIMARY);
> data->pipe_crc[i] = igt_pipe_crc_new(data->fd,
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index fd4f2aad46d6..195556c9368c 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -433,16 +433,16 @@ prep_pipe(data_t *data, enum pipe p)
> {
> igt_require_pipe(&data->display, p);
>
> - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> data->degamma_lut_size =
> - igt_pipe_obj_get_prop(&data->display.pipes[p],
> + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> IGT_CRTC_DEGAMMA_LUT_SIZE);
> igt_assert_lt(0, data->degamma_lut_size);
> }
>
> - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
> + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
> data->gamma_lut_size =
> - igt_pipe_obj_get_prop(&data->display.pipes[p],
> + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> IGT_CRTC_GAMMA_LUT_SIZE);
> igt_assert_lt(0, data->gamma_lut_size);
> }
> @@ -456,7 +456,7 @@ static int test_setup(data_t *data, enum pipe p)
> igt_display_reset(&data->display);
> prep_pipe(data, p);
>
> - pipe = &data->display.pipes[p];
> + pipe = igt_crtc_for_pipe(&data->display, p);
> igt_require(pipe->n_planes >= 0);
>
> data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
> index 014532d5c6b8..25e0275630f0 100644
> --- a/tests/chamelium/kms_chamelium_sharpness_filter.c
> +++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
> @@ -180,7 +180,7 @@ static int test_setup(data_t *data, enum pipe p)
>
> igt_display_reset(&data->display);
>
> - pipe = &data->display.pipes[p];
> + pipe = igt_crtc_for_pipe(&data->display, p);
> igt_require(pipe->n_planes >= 0);
>
> data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> @@ -217,7 +217,7 @@ static void test_sharpness_filter(data_t *data, enum pipe p)
> int port_idx = test_setup(data, p);
>
> igt_require(port_idx >= 0);
> - igt_require(igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_SHARPNESS_STRENGTH));
> + igt_require(igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_SHARPNESS_STRENGTH));
>
> if (!pipe_output_combo_valid(data, p))
> return;
> diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
> index 5f58cfe699a4..0d4aa1bd33cb 100644
> --- a/tests/intel/gem_eio.c
> +++ b/tests/intel/gem_eio.c
> @@ -1035,7 +1035,7 @@ static void display_helper(igt_display_t *dpy, int *done)
> int pipe;
>
> pipe = rand() % igt_display_n_crtcs(dpy);
> - if (!dpy->pipes[pipe].valid)
> + if (!igt_crtc_for_pipe(dpy, pipe)->valid)
> continue;
> output = igt_get_single_output_for_pipe(dpy, pipe);
> if (!output)
> diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
> index b80b7d33ee6c..49edf744f943 100644
> --- a/tests/intel/gem_pxp.c
> +++ b/tests/intel/gem_pxp.c
> @@ -1226,7 +1226,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> /* Do a modeset on all outputs */
> for_each_connected_output(display, output) {
> mode = igt_output_get_mode(output);
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> igt_output_set_pipe(output, i);
> @@ -1243,7 +1243,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
>
> for_each_connected_output(display, output) {
> mode = igt_output_get_mode(output);
> - pipe = &display->pipes[output->pending_pipe];
> + pipe = igt_crtc_for_pipe(display, output->pending_pipe);
> pipe_crc = igt_pipe_crc_new(i915, pipe->pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index 686c6772ef4b..7316547d276d 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -375,7 +375,7 @@ static void prep_fb(data_t *data)
>
> static void set_c8_lut(data_t *data)
> {
> - igt_pipe_t *pipe = &data->display.pipes[data->pipe];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> struct drm_color_lut *lut;
> int i, lut_size = 256;
>
> @@ -396,7 +396,7 @@ static void set_c8_lut(data_t *data)
>
> static void unset_lut(data_t *data)
> {
> - igt_pipe_t *pipe = &data->display.pipes[data->pipe];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
>
> igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, NULL, 0);
> }
> @@ -517,7 +517,7 @@ static bool test_pipe(data_t *data)
> kmstest_pipe_name(data->pipe), igt_output_name(data->output));
>
> if (data->format == DRM_FORMAT_C8 &&
> - !igt_pipe_obj_has_prop(&data->display.pipes[data->pipe],
> + !igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, data->pipe),
> IGT_CRTC_GAMMA_LUT))
> return false;
>
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index b2eb418db1fa..53ed4b39813b 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -130,7 +130,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
> igt_assert(gem_bo_busy(dpy->drm_fd, fb->gem_handle));
> if (!modeset)
> do_or_die(drmModePageFlip(dpy->drm_fd,
> - dpy->pipes[pipe].crtc_id, fb->fb_id,
> + igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb->fb_id,
> DRM_MODE_PAGE_FLIP_EVENT, fb));
> else {
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
> @@ -204,7 +204,7 @@ static void test_flip(igt_display_t *dpy, int pipe,
> struct drm_event_vblank ev;
>
> do_or_die(drmModePageFlip(dpy->drm_fd,
> - dpy->pipes[pipe].crtc_id,
> + igt_crtc_for_pipe(dpy, pipe)->crtc_id,
> fb[warmup[i]].fb_id,
> DRM_MODE_PAGE_FLIP_EVENT,
> &fb[warmup[i]]));
> @@ -335,7 +335,7 @@ test_pageflip_modeset_hang(igt_display_t *dpy,
> .dependency = fb.gem_handle,
> .flags = IGT_SPIN_NO_PREEMPTION);
>
> - do_or_die(drmModePageFlip(dpy->drm_fd, dpy->pipes[pipe].crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
> + do_or_die(drmModePageFlip(dpy->drm_fd, igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
>
> /* Kill crtc with hung fb */
> igt_plane_set_fb(primary, NULL);
> diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> index 8238b89582ee..3aeaba226cda 100644
> --- a/tests/intel/kms_cdclk.c
> +++ b/tests/intel/kms_cdclk.c
> @@ -240,7 +240,7 @@ static void set_mode(data_t *data, int count, drmModeModeInfo *mode,
> igt_plane_t *plane;
>
> for (int i = 0; i < count; i++) {
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
>
> igt_output_override_mode(valid_outputs[i], &mode[i]);
> diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> index f057b5070bcb..dd5967c91486 100644
> --- a/tests/intel/kms_flip_scaled_crc.c
> +++ b/tests/intel/kms_flip_scaled_crc.c
> @@ -537,7 +537,7 @@ static void free_fbs(data_t *data)
>
> static void set_lut(data_t *data, enum pipe pipe)
> {
> - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> struct drm_color_lut *lut;
> drmModeCrtc *drm_crtc;
> int i, lut_size;
> @@ -569,7 +569,7 @@ static void set_lut(data_t *data, enum pipe pipe)
>
> static void clear_lut(data_t *data, enum pipe pipe)
> {
> - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
>
> igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
> }
> diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> index c32f9c582e86..069f03a6c9f1 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -1110,21 +1110,24 @@ static void init_mode_params(struct modeset_params *params,
> params->output = output;
> params->mode = *mode;
>
> - params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> + params->primary.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> + DRM_PLANE_TYPE_PRIMARY);
> params->primary.fb = NULL;
> params->primary.x = 0;
> params->primary.y = 0;
> params->primary.w = mode->hdisplay;
> params->primary.h = mode->vdisplay;
>
> - params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> + params->cursor.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> + DRM_PLANE_TYPE_CURSOR);
> params->cursor.fb = NULL;
> params->cursor.x = 0;
> params->cursor.y = 0;
> params->cursor.w = 64;
> params->cursor.h = 64;
>
> - params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> + params->sprite.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> + DRM_PLANE_TYPE_OVERLAY);
> igt_require(params->sprite.plane);
> params->sprite.fb = NULL;
> params->sprite.x = 0;
> @@ -3112,7 +3115,8 @@ static void page_flip_for_params(struct modeset_params *params,
>
> switch (type) {
> case FLIP_PAGEFLIP:
> - rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
> + rc = drmModePageFlip(drm.fd,
> + igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
> params->primary.fb->fb_id,
> DRM_MODE_PAGE_FLIP_EVENT, NULL);
> igt_assert_eq(rc, 0);
> @@ -3724,7 +3728,9 @@ static void stridechange_subtest(const struct test_mode *t)
> * Try to set a new stride. with the page flip api. This is allowed
> * with the atomic page flip helper, but not with the legacy page flip.
> */
> - rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id, new_fb->fb_id, 0, NULL);
> + rc = drmModePageFlip(drm.fd,
> + igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
> + new_fb->fb_id, 0, NULL);
> igt_assert(rc == -EINVAL || rc == 0);
> do_assertions(rc ? 0 : DONT_ASSERT_FBC_STATUS);
> }
> diff --git a/tests/intel/kms_joiner_helper.c b/tests/intel/kms_joiner_helper.c
> index d2a3117fec26..a59efcd1217a 100644
> --- a/tests/intel/kms_joiner_helper.c
> +++ b/tests/intel/kms_joiner_helper.c
> @@ -105,7 +105,7 @@ void igt_set_all_master_pipes_for_platform(igt_display_t *display, uint32_t *mas
>
> *master_pipes = 0;
> for (pipe = PIPE_A; pipe < IGT_MAX_PIPES - 1; pipe++) {
> - if (display->pipes[pipe].valid && display->pipes[pipe + 1].valid) {
> + if (igt_crtc_for_pipe(display, pipe)->valid && igt_crtc_for_pipe(display, pipe + 1)->valid) {
> *master_pipes |= BIT(pipe);
> igt_info("Found master pipe %s\n", kmstest_pipe_name(pipe));
> }
> diff --git a/tests/intel/kms_pipe_stress.c b/tests/intel/kms_pipe_stress.c
> index 282288f8e943..7d212a07cb75 100644
> --- a/tests/intel/kms_pipe_stress.c
> +++ b/tests/intel/kms_pipe_stress.c
> @@ -588,8 +588,8 @@ static void stress_pipes(struct data *data, struct timespec *start,
> if (!data->highest_mode[pipe])
> continue;
>
> - igt_assert_f(data->display.pipes[pipe].n_planes < MAX_PLANES,
> - "Currently we don't support more than %d planes!",
> + igt_assert_f(igt_crtc_for_pipe(&data->display, pipe)->n_planes < MAX_PLANES,
> + "Currently we don't support more than %d planes!",
> MAX_PLANES);
>
> ret = pipe_stress(data, output, pipe,
> @@ -748,7 +748,8 @@ static void destroy_framebuffers(struct data *data)
>
> for (j = 0; j < MAX_PLANES; j++) {
> if (data->fb[i * MAX_PLANES + j].fb_id) {
> - igt_plane_set_fb(&data->display.pipes[i].planes[j], NULL);
> + igt_plane_set_fb(&igt_crtc_for_pipe(&data->display, i)->planes[j],
> + NULL);
> igt_remove_fb(data->display.drm_fd, &data->fb[i * MAX_PLANES + j]);
> data->fb[i * MAX_PLANES + j].fb_id = 0;
> }
> @@ -812,7 +813,8 @@ static void prepare_test(struct data *data)
> data->pipe_crc[i] = NULL;
>
> if (data->num_planes[i] == -1)
> - data->num_planes[i] = data->display.pipes[i].n_planes;
> + data->num_planes[i] = igt_crtc_for_pipe(&data->display,
> + i)->n_planes;
>
> igt_info("Max number of planes is %d for pipe %d\n",
> data->num_planes[i], i);
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index dbdd7b3e3eaa..47b2db268568 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -697,7 +697,9 @@ static void test_deep_pkgc_state(data_t *data)
> igt_plane_set_fb(primary, &data->fb_rgb);
> igt_display_commit(&data->display);
> /* Wait for the vblank to sync the frame time */
> - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
> + igt_wait_for_vblank_count(data->drm_fd,
> + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> + 1);
> pre_val = read_pkgc_counter(data->debugfs_root_fd);
> /* Add a half-frame delay to ensure the flip occurs when the frame is active. */
> usleep(delay * 0.5);
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index 41a42c60868a..3714153276b0 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -436,7 +436,7 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
>
> data->output = output;
> data->pipe_id = pipe;
> - data->pipe = &display->pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(display, data->pipe_id);
> data->mode = igt_output_get_mode(data->output);
>
> if (!has_sharpness_filter(data->pipe)) {
> diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
> index 8fd5ace40b07..ef95b50cd1ab 100644
> --- a/tests/intel/perf_pmu.c
> +++ b/tests/intel/perf_pmu.c
> @@ -1066,7 +1066,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_commit(display);
>
> igt_wait_for_vblank(fd,
> - display->pipes[data->pipe].crtc_offset);
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
> index c6274bf616bf..351897e1ce68 100644
> --- a/tests/intel/xe_pxp.c
> +++ b/tests/intel/xe_pxp.c
> @@ -845,7 +845,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
>
> for_each_connected_output(display, output) {
> mode = igt_output_get_mode(output);
> - pipe = &display->pipes[output->pending_pipe];
> + pipe = igt_crtc_for_pipe(display, output->pending_pipe);
> pipe_crc = igt_pipe_crc_new(fd, pipe->pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> @@ -902,7 +902,7 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
> /* Do a modeset on all outputs */
> for_each_connected_output(display, output) {
> mode = igt_output_get_mode(output);
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> igt_output_set_pipe(output, i);
> @@ -959,7 +959,7 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
> /* Do a modeset on all outputs */
> for_each_connected_output(display, output) {
> mode = igt_output_get_mode(output);
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> igt_output_set_pipe(output, i);
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 6b2da0013b25..6762f172c4fa 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -299,7 +299,7 @@ static void test_init(data_t *data)
>
> mode = igt_output_get_mode(data->output);
>
> - data->crtc_id = data->display.pipes[data->pipe].crtc_id;
> + data->crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
> data->refresh_rate = mode->vrefresh;
>
> igt_output_set_pipe(data->output, data->pipe);
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index d25528e65fa5..01a058673913 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -488,7 +488,7 @@ plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_p
> int zpos;
> igt_plane_t *temp;
>
> - temp = &data->display.pipes[pipe].planes[k];
> + temp = &igt_crtc_for_pipe(&data->display, pipe)->planes[k];
>
> if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS))
> continue;
> @@ -1333,8 +1333,9 @@ static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_display_reset(&data->display);
> igt_output_set_pipe(output, pipe);
>
> - data->primary = igt_pipe_get_plane_type(&data->display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> - data->pipe = &data->display.pipes[pipe];
> + data->primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> + DRM_PLANE_TYPE_PRIMARY);
> + data->pipe = igt_crtc_for_pipe(&data->display, pipe);
> mode = igt_output_get_mode(output);
>
> igt_create_pattern_fb(data->drm_fd,
> @@ -1418,7 +1419,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> igt_subtest_with_dynamic("plane-overlay-legacy") {
> for_each_pipe_with_single_output(&data.display, pipe, output) {
> igt_plane_t *overlay =
> - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> + DRM_PLANE_TYPE_OVERLAY);
> uint32_t format = plane_get_igt_format(overlay);
>
> if (!pipe_output_combo_valid(&data.display, pipe, output))
> @@ -1456,7 +1458,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") {
> for_each_pipe_with_single_output(&data.display, pipe, output) {
> igt_plane_t *overlay =
> - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> + DRM_PLANE_TYPE_OVERLAY);
>
> if (!pipe_output_combo_valid(&data.display, pipe, output))
> continue;
> @@ -1483,7 +1486,7 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> "only higher zpos planes cover the lower zpos ones.");
> igt_subtest_with_dynamic("plane-immutable-zpos") {
> for_each_pipe_with_single_output(&data.display, pipe, output) {
> - int n_planes = data.display.pipes[pipe].n_planes;
> + int n_planes = igt_crtc_for_pipe(&data.display, pipe)->n_planes;
>
> if (!pipe_output_combo_valid(&data.display, pipe, output))
> continue;
> @@ -1527,7 +1530,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> igt_subtest_with_dynamic("plane-cursor-legacy") {
> for_each_pipe_with_single_output(&data.display, pipe, output) {
> igt_plane_t *cursor =
> - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> + DRM_PLANE_TYPE_CURSOR);
>
> if (!pipe_output_combo_valid(&data.display, pipe, output))
> continue;
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 18f79136c30f..ab04b9f711b7 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -163,14 +163,14 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
>
> if (!(i & 1))
> igt_wait_for_vblank(data->drm_fd,
> - data->display.pipes[pipe].crtc_offset);
> + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
>
> igt_plane_set_fb(primary, (i & 1) ? fb : NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> if (i & 1)
> igt_wait_for_vblank(data->drm_fd,
> - data->display.pipes[pipe].crtc_offset);
> + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
>
> igt_plane_set_fb(primary, (i & 1) ? NULL : fb);
> }
> @@ -327,7 +327,7 @@ static void setup_parms(data_t *data, enum pipe pipe,
> uint64_t cursor_width, cursor_height;
> unsigned sprite_width, sprite_height, prev_w, prev_h;
> bool max_sprite_width, max_sprite_height, alpha = true;
> - uint32_t n_planes = data->display.pipes[pipe].n_planes;
> + uint32_t n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> uint32_t n_overlays = 0, overlays[n_planes];
> igt_plane_t *plane;
> uint32_t iter_mask = 3;
> @@ -438,7 +438,8 @@ static void setup_parms(data_t *data, enum pipe pipe,
> igt_assert_f(n_planes >= 3, "No planes left to proceed with!");
> if (n_overlays > 0) {
> uint32_t plane_to_remove = hars_petruska_f54_1_random_unsafe_max(n_overlays);
> - removed_plane = &data->display.pipes[pipe].planes[overlays[plane_to_remove]];
> + removed_plane = &igt_crtc_for_pipe(&data->display,
> + pipe)->planes[overlays[plane_to_remove]];
> igt_plane_set_fb(removed_plane, NULL);
> while (plane_to_remove < (n_overlays - 1)) {
> overlays[plane_to_remove] = overlays[plane_to_remove + 1];
> @@ -479,7 +480,7 @@ static void prepare_fencing(data_t *data, enum pipe pipe)
>
> igt_require_sw_sync();
>
> - n_planes = data->display.pipes[pipe].n_planes;
> + n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> timeline = calloc(n_planes, sizeof(*timeline));
> igt_assert_f(timeline != NULL, "Failed to allocate memory for timelines\n");
> thread = calloc(n_planes, sizeof(*thread));
> @@ -510,7 +511,7 @@ static void unprepare_fencing(data_t *data, enum pipe pipe)
> static void atomic_commit(data_t *data_v, enum pipe pipe, unsigned int flags, void *data, bool fencing)
> {
> if (fencing)
> - igt_pipe_request_out_fence(&data_v->display.pipes[pipe]);
> + igt_pipe_request_out_fence(igt_crtc_for_pipe(&data_v->display, pipe));
>
> igt_display_commit_atomic(&data_v->display, flags, data);
> }
> @@ -528,7 +529,7 @@ static int fd_completed(int fd)
> static void wait_for_transition(data_t *data, enum pipe pipe, bool nonblocking, bool fencing)
> {
> if (fencing) {
> - int fence_fd = data->display.pipes[pipe].out_fence_fd;
> + int fence_fd = igt_crtc_for_pipe(&data->display, pipe)->out_fence_fd;
>
> if (!nonblocking)
> igt_assert(fd_completed(fence_fd));
> @@ -557,7 +558,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> {
> drmModeModeInfo *mode, override_mode;
> igt_plane_t *plane;
> - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> uint32_t iter_max, i;
> struct plane_parms parms[pipe_obj->n_planes];
> unsigned flags = 0;
> @@ -804,8 +805,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> unset_output_pipe(&data->display);
>
> for_each_pipe(&data->display, pipe) {
> - igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
> - DRM_PLANE_TYPE_PRIMARY);
> + igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> + DRM_PLANE_TYPE_PRIMARY);
>
> enum pipe old_pipe = plane->ref->pipe->pipe;
>
> @@ -814,8 +815,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> * currently is holding the plane
> */
> if (old_pipe != pipe) {
> - igt_plane_t *old_plane = igt_pipe_get_plane_type(&data->display.pipes[old_pipe],
> - DRM_PLANE_TYPE_PRIMARY);
> + igt_plane_t *old_plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, old_pipe),
> + DRM_PLANE_TYPE_PRIMARY);
>
> igt_plane_set_fb(old_plane, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> @@ -823,8 +824,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> }
>
> for_each_pipe(&data->display, pipe) {
> - igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
> - DRM_PLANE_TYPE_PRIMARY);
> + igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> + DRM_PLANE_TYPE_PRIMARY);
> drmModeModeInfo *mode = NULL;
>
> if (!(mask & (1 << pipe))) {
> @@ -918,7 +919,7 @@ retry:
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, .5, .5, .5, &data->fbs[1]);
>
> for_each_pipe(&data->display, i) {
> - igt_pipe_t *pipe = &data->display.pipes[i];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, i);
> igt_plane_t *plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> drmModeModeInfo *mode = NULL;
>
> @@ -953,7 +954,7 @@ retry:
> igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
>
> if (fencing)
> - igt_pipe_request_out_fence(&data->display.pipes[i]);
> + igt_pipe_request_out_fence(igt_crtc_for_pipe(&data->display, i));
> } else {
> igt_plane_set_fb(plane, NULL);
> }
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 9100dd329e30..a8a094f4d1f1 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -125,7 +125,8 @@ static void test_init(data_t *data, bool physical)
>
> for_each_pipe(display, i) {
> data->pipe_id[i] = i;
> - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> + data->pipe_id[i]);
> data->primary[i] = igt_pipe_get_plane_type(
> data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> data->pipe_crc[i] =
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index b3f3a34a559c..d7c713a775b0 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -724,16 +724,16 @@ prep_pipe(data_t *data, enum pipe p)
> {
> igt_require_pipe(&data->display, p);
>
> - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> data->degamma_lut_size =
> - igt_pipe_obj_get_prop(&data->display.pipes[p],
> + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> IGT_CRTC_DEGAMMA_LUT_SIZE);
> igt_assert_lt(0, data->degamma_lut_size);
> }
>
> - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
> + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
> data->gamma_lut_size =
> - igt_pipe_obj_get_prop(&data->display.pipes[p],
> + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> IGT_CRTC_GAMMA_LUT_SIZE);
> igt_assert_lt(0, data->gamma_lut_size);
> }
> @@ -746,7 +746,7 @@ static void test_setup(data_t *data, enum pipe p)
> prep_pipe(data, p);
> igt_require_pipe_crc(data->drm_fd);
>
> - pipe = &data->display.pipes[p];
> + pipe = igt_crtc_for_pipe(&data->display, p);
> igt_require(pipe->n_planes >= 0);
>
> data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
> index 143dff43e76b..3ca56138e97d 100644
> --- a/tests/kms_color_helper.c
> +++ b/tests/kms_color_helper.c
> @@ -319,7 +319,7 @@ invalid_lut_sizes(data_t *data, enum pipe p,
> enum igt_atomic_crtc_properties prop, int size)
> {
> igt_display_t *display = &data->display;
> - igt_pipe_t *pipe = &display->pipes[p];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> struct drm_color_lut *lut;
> size_t lut_size = size * sizeof(lut[0]);
>
> @@ -362,7 +362,7 @@ invalid_degamma_lut_sizes(data_t *data, enum pipe p)
> void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
> {
> igt_display_t *display = &data->display;
> - igt_pipe_t *pipe = &display->pipes[p];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> void *ptr;
>
> igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index bb8cbe703622..b3cc2cec4931 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -306,7 +306,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
> static void
> run_test(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> - int n_planes = data->display.pipes[pipe].n_planes;
> + int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> igt_display_reset(&data->display);
>
> if (!opt.user_seed)
> @@ -346,7 +346,7 @@ run_tests_for_pipe(data_t *data)
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> - igt_require(data->display.pipes[pipe].n_planes > 0);
> + igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
> run_test(data, pipe, output);
> }
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index 7ca2ca82c0bd..fe5a63eb0a64 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -215,7 +215,7 @@ static void cursor_disable(data_t *data)
>
> /* do this wait here so it will not need to be added everywhere */
> igt_wait_for_vblank_count(data->drm_fd,
> - data->display.pipes[data->pipe].crtc_offset,
> + igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> data->vblank_wait_count);
> }
>
> @@ -301,7 +301,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
>
> /* Extra vblank wait is because nonblocking cursor ioctl */
> igt_wait_for_vblank_count(data->drm_fd,
> - display->pipes[data->pipe].crtc_offset,
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
> @@ -351,7 +351,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
> */
> if (is_amdgpu_device(data->drm_fd))
> igt_wait_for_vblank_count(data->drm_fd,
> - display->pipes[data->pipe].crtc_offset,
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
> @@ -736,7 +736,7 @@ static void timed_cursor_changes(data_t *data, void (changefunc)(data_t *, enum
>
> /* Extra vblank wait is because nonblocking cursor ioctl */
> igt_wait_for_vblank_count(data->drm_fd,
> - data->display.pipes[data->pipe].crtc_offset,
> + igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc1);
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index 27f861378763..e84dfeb9aefb 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -127,7 +127,7 @@ static void cursor_move(data_t *data, int x, int y, int i)
> (IS_CHERRYVIEW(data->devid) && data->pipe == PIPE_C &&
> x < 0 && x > -data->curw));
> igt_wait_for_vblank(data->drm_fd,
> - display->pipes[data->pipe].crtc_offset);
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> }
>
> #define XSTEP 8
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index ec35992bac6a..566d920124ad 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -289,13 +289,15 @@ static void stress(igt_display_t *display,
> if (pipe < 0) {
> num_crtcs = igt_display_n_crtcs(display);
> for_each_pipe(display, n) {
> - arg.crtc_id = crtc_id[n] = display->pipes[n].crtc_id;
> + arg.crtc_id = crtc_id[n] = igt_crtc_for_pipe(display,
> + n)->crtc_id;
> do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
> }
> } else {
> num_crtcs = 1;
> - if(display->pipes[pipe].valid) {
> - arg.crtc_id = crtc_id[0] = display->pipes[pipe].crtc_id;
> + if(igt_crtc_for_pipe(display, pipe)->valid) {
> + arg.crtc_id = crtc_id[0] = igt_crtc_for_pipe(display,
> + pipe)->crtc_id;
> do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
> }
> }
> @@ -410,7 +412,7 @@ static void set_cursor_hotspot(igt_plane_t *cursor, int hot_x, int hot_y)
> static void populate_cursor_args(igt_display_t *display, enum pipe pipe,
> struct drm_mode_cursor *arg, struct igt_fb *fb)
> {
> - arg->crtc_id = display->pipes[pipe].crtc_id;
> + arg->crtc_id = igt_crtc_for_pipe(display, pipe)->crtc_id;
> arg->flags = DRM_MODE_CURSOR_MOVE;
> arg->x = 128;
> arg->y = 128;
> @@ -468,7 +470,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
>
> static void flip_nonblocking(igt_display_t *display, enum pipe pipe_id, bool atomic, struct igt_fb *fb, void *data)
> {
> - igt_pipe_t *pipe = &display->pipes[pipe_id];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> int ret;
>
> @@ -532,7 +534,7 @@ static void transition_nonblocking(igt_display_t *display, enum pipe pipe_id,
> struct igt_fb *prim_fb, struct igt_fb *argb_fb,
> bool hide_sprite)
> {
> - igt_pipe_t *pipe = &display->pipes[pipe_id];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_t *sprite = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_OVERLAY);
>
> @@ -600,8 +602,8 @@ static void prepare_flip_test(igt_display_t *display,
>
> if (mode == flip_test_atomic_transitions ||
> mode == flip_test_atomic_transitions_varying_size) {
> - igt_require(display->pipes[flip_pipe].n_planes > 1 &&
> - display->pipes[flip_pipe].planes[1].type != DRM_PLANE_TYPE_CURSOR);
> + igt_require(igt_crtc_for_pipe(display, flip_pipe)->n_planes > 1 &&
> + igt_crtc_for_pipe(display, flip_pipe)->planes[1].type != DRM_PLANE_TYPE_CURSOR);
>
> igt_create_color_pattern_fb(display->drm_fd, prim_fb->width, prim_fb->height,
> DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR, .1, .1, .1, argb_fb);
> @@ -633,8 +635,8 @@ static void flip(igt_display_t *display,
>
> if (mode == flip_test_atomic_transitions ||
> mode == flip_test_atomic_transitions_varying_size) {
> - igt_require(igt_pipe_get_plane_type(&display->pipes[flip_pipe],
> - DRM_PLANE_TYPE_OVERLAY));
> + igt_require(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, flip_pipe),
> + DRM_PLANE_TYPE_OVERLAY));
> }
>
> set_fb_on_crtc(display, flip_pipe, output, &fb_info);
> @@ -1289,11 +1291,11 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
> continue;
> }
>
> - if (vbl.crtc_id == display->pipes[pipe].crtc_id) {
> + if (vbl.crtc_id == igt_crtc_for_pipe(display, pipe)->crtc_id) {
> vblank_start = kmstest_get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
> flip_nonblocking(display, pipe, atomic, &fb_info, (void*)(ptrdiff_t)vblank_start);
> } else {
> - igt_assert(vbl.crtc_id == display->pipes[pipe2].crtc_id);
> + igt_assert(vbl.crtc_id == igt_crtc_for_pipe(display, pipe2)->crtc_id);
>
> nloops--;
>
> diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
> index b8b1fa8e555c..a5588904b0d3 100644
> --- a/tests/kms_display_modes.c
> +++ b/tests/kms_display_modes.c
> @@ -103,8 +103,10 @@ static void run_extendedmode_basic(data_t *data,
> igt_create_color_fb(data->drm_fd, mode[1]->hdisplay, mode[1]->vdisplay,
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, 0, 0, 1, &fbs[1]);
>
> - plane[0] = igt_pipe_get_plane_type(&display->pipes[pipe1], DRM_PLANE_TYPE_PRIMARY);
> - plane[1] = igt_pipe_get_plane_type(&display->pipes[pipe2], DRM_PLANE_TYPE_PRIMARY);
> + plane[0] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
> + DRM_PLANE_TYPE_PRIMARY);
> + plane[1] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
> + DRM_PLANE_TYPE_PRIMARY);
>
> igt_plane_set_fb(plane[0], &fbs[0]);
> igt_fb_set_size(&fbs[0], plane[0], mode[0]->hdisplay, mode[0]->vdisplay);
> @@ -157,10 +159,12 @@ static void run_extendedmode_basic(data_t *data,
> igt_output_set_pipe(output1, PIPE_NONE);
> igt_output_set_pipe(output2, PIPE_NONE);
>
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe1],
> - DRM_PLANE_TYPE_PRIMARY), NULL);
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe2],
> - DRM_PLANE_TYPE_PRIMARY), NULL);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
> + DRM_PLANE_TYPE_PRIMARY),
> + NULL);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
> + DRM_PLANE_TYPE_PRIMARY),
> + NULL);
> igt_assert_f(igt_fit_modes_in_bw(display), "Unable to fit modes in bw\n");
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index a4cb004e8e24..102bab1debd1 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -74,7 +74,7 @@ typedef struct {
> /* Prepare test data. */
> static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
> {
> - igt_pipe_t *pipe = &data->display.pipes[p];
> + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, p);
>
> igt_assert(pipe);
>
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index ab0ec47cbfad..45840945d658 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -213,7 +213,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
> igt_display_t *display = &data->display;
>
> data->pipe_id = pipe;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> igt_assert(data->pipe);
>
> igt_display_reset(display);
> diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> index 78c73e72ffa3..2b385d4931f2 100644
> --- a/tests/kms_invalid_mode.c
> +++ b/tests/kms_invalid_mode.c
> @@ -277,7 +277,7 @@ test_output(data_t *data)
>
> kmstest_unset_all_crtcs(data->drm_fd, data->res);
>
> - crtc_id = data->display.pipes[data->pipe].crtc_id;
> + crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
>
> ret = drmModeSetCrtc(data->drm_fd, crtc_id,
> fb.fb_id, 0, 0,
> diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> index 495b9aebba53..df16fc7af78e 100644
> --- a/tests/kms_lease.c
> +++ b/tests/kms_lease.c
> @@ -153,7 +153,7 @@ static int prepare_crtc(data_t *data, bool is_master)
> lease_t *lease = is_master ? &data->master : &data->lease;
> igt_display_t *display = &lease->display;
> igt_output_t *output = connector_id_to_output(display, data->connector_id);
> - enum pipe pipe = display->pipes[data->pipe].pipe;
> + enum pipe pipe = igt_crtc_for_pipe(display, data->pipe)->pipe;
> igt_plane_t *primary;
> int ret;
>
> @@ -179,7 +179,8 @@ static int prepare_crtc(data_t *data, bool is_master)
> if (ret)
> return ret;
>
> - igt_wait_for_vblank(lease->fd, display->pipes[pipe].crtc_offset);
> + igt_wait_for_vblank(lease->fd,
> + igt_crtc_for_pipe(display, pipe)->crtc_offset);
>
> lease->output = output;
> lease->mode = mode;
> @@ -377,7 +378,7 @@ static void page_flip_implicit_plane(data_t *data)
> display = &data->master.display;
>
> igt_wait_for_vblank(data->master.fd,
> - display->pipes[pipe].crtc_offset);
> + igt_crtc_for_pipe(display, pipe)->crtc_offset);
>
> do_or_die(drmModePageFlip(data->lease.fd, data->crtc_id,
> data->master.primary_fb.fb_id,
> @@ -388,7 +389,7 @@ static void page_flip_implicit_plane(data_t *data)
> do_or_die(create_lease(data->master.fd, &mcl, &data->lease.fd));
>
> igt_wait_for_vblank(data->master.fd,
> - display->pipes[pipe].crtc_offset);
> + igt_crtc_for_pipe(display, pipe)->crtc_offset);
>
> igt_assert_eq(drmModePageFlip(data->lease.fd, data->crtc_id,
> data->master.primary_fb.fb_id,
> @@ -714,8 +715,9 @@ static void lease_unleased_crtc(data_t *data)
> for_each_pipe(&data->master.display, p) {
> if (bad_crtc_id != 0)
> break;
> - if (data->master.display.pipes[p].crtc_id != data->crtc_id)
> - bad_crtc_id = data->master.display.pipes[p].crtc_id;
> + if (igt_crtc_for_pipe(&data->master.display, p)->crtc_id != data->crtc_id)
> + bad_crtc_id = igt_crtc_for_pipe(&data->master.display,
> + p)->crtc_id;
> }
>
> /* Give up if there isn't another crtc */
> @@ -895,11 +897,11 @@ static void invalid_create_leases(data_t *data)
> igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
>
> /* no connector, non-universal_plane */
> - object_ids[0] = data->master.display.pipes[0].crtc_id;
> + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
>
> /* sanity check */
> - object_ids[0] = data->master.display.pipes[0].crtc_id;
> + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> object_ids[1] = data->master.display.outputs[0].id;
> mcl.object_count = 2;
> igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
> @@ -910,7 +912,7 @@ static void invalid_create_leases(data_t *data)
> igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
>
> /* sanity check */
> - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> mcl.object_count = 3;
> igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
> @@ -1075,9 +1077,9 @@ static int _create_simple_lease(int master_fd, data_t *data, int expected_ret)
> uint32_t object_ids[3];
> struct drm_mode_create_lease mcl;
>
> - object_ids[0] = data->master.display.pipes[0].crtc_id;
> + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> object_ids[1] = data->master.display.outputs[0].id;
> - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
> mcl.object_count = 3;
> @@ -1165,12 +1167,12 @@ static void implicit_plane_lease(data_t *data)
> struct drm_mode_create_lease mcl;
> struct drm_mode_get_lease mgl;
> int ret;
> - uint32_t cursor_id = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> + uint32_t cursor_id = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> DRM_PLANE_TYPE_CURSOR)->drm_plane->plane_id;
>
> - object_ids[0] = data->master.display.pipes[0].crtc_id;
> + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> object_ids[1] = data->master.display.outputs[0].id;
> - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
> mcl.object_count = 3;
> @@ -1298,11 +1300,12 @@ int igt_main()
>
> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(data.pipe),
> igt_output_name(output)) {
> - data.crtc_id = display->pipes[data.pipe].crtc_id;
> + data.crtc_id = igt_crtc_for_pipe(display,
> + data.pipe)->crtc_id;
> data.connector_id = output->id;
> data.plane_id =
> - igt_pipe_get_plane_type(&data.master.display.pipes[data.pipe],
> - DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.master.display, data.pipe),
> + DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> f->func(&data);
> }
> terminate_lease(data.lease.fd);
> diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
> index 28c71fdec00a..3a1944b48874 100644
> --- a/tests/kms_multipipe_modeset.c
> +++ b/tests/kms_multipipe_modeset.c
> @@ -75,7 +75,7 @@ static void run_test(data_t *data, int valid_outputs)
>
> /* Collect reference CRC by Committing individually on all outputs*/
> for_each_connected_output(display, output) {
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
>
> mode = NULL;
> @@ -100,7 +100,7 @@ static void run_test(data_t *data, int valid_outputs)
> i = 0;
> /* Simultaneously commit on all outputs */
> for_each_connected_output(display, output) {
> - pipe = &display->pipes[i];
> + pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
>
> mode = NULL;
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index ca8f76c8aa27..1699b68ff3d0 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -169,11 +169,13 @@ static void test_read_crc(data_t *data, enum pipe pipe,
>
> pipe_crc = igt_pipe_crc_new_nonblock(data->drm_fd, pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
> - igt_wait_for_vblank(data->drm_fd, display->pipes[pipe].crtc_offset);
> + igt_wait_for_vblank(data->drm_fd,
> + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> igt_pipe_crc_start(pipe_crc);
>
> igt_wait_for_vblank_count(data->drm_fd,
> - display->pipes[pipe].crtc_offset, N_CRCS);
> + igt_crtc_for_pipe(display, pipe)->crtc_offset,
> + N_CRCS);
> n_crcs = igt_pipe_crc_get_crcs(pipe_crc, N_CRCS+1, &crcs);
> igt_pipe_crc_stop(pipe_crc);
> igt_pipe_crc_free(pipe_crc);
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 5f18eac13ac1..84455e77bbb2 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -127,7 +127,7 @@ static color_t blue = { 0.0f, 0.0f, 1.0f };
> */
> static void test_init(data_t *data, enum pipe pipe)
> {
> - igt_require(data->display.pipes[pipe].n_planes > 0);
> + igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
> if (data->pipe_crc)
> igt_pipe_crc_free(data->pipe_crc);
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> @@ -337,7 +337,7 @@ test_plane_position_with_output(data_t *data,
> static void
> test_plane_position(data_t *data, enum pipe pipe)
> {
> - int n_planes = data->display.pipes[pipe].n_planes;
> + int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> igt_output_t *output = data->output;
> igt_crc_t reference_crc;
>
> @@ -522,7 +522,7 @@ static const color_t colors_reduced[] = {
> static void set_legacy_lut(data_t *data, enum pipe pipe,
> uint16_t mask)
> {
> - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> drmModeCrtc *drm_crtc;
> uint16_t *lut;
> int i, lut_size;
> @@ -549,7 +549,7 @@ static void set_legacy_lut(data_t *data, enum pipe pipe,
> static bool set_c8_legacy_lut(data_t *data, enum pipe pipe,
> uint16_t mask)
> {
> - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> drmModeCrtc *drm_crtc;
> uint16_t *r, *g, *b;
> int i, lut_size;
> @@ -793,7 +793,7 @@ restart_round:
> igt_display_t *display = &data->display;
>
> igt_wait_for_vblank(data->drm_fd,
> - display->pipes[pipe].crtc_offset);
> + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> }
> }
>
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index 037a5c1060a2..99ce90616720 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -214,7 +214,8 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe)
> drmModeModeInfo *mode;
> igt_display_t *display = &data->display;
> int w, h;
> - igt_plane_t *primary = igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> + igt_plane_t *primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe),
> + DRM_PLANE_TYPE_PRIMARY);
>
> /* create the pipe_crc object for this pipe */
> igt_pipe_crc_free(data->pipe_crc);
> @@ -387,7 +388,8 @@ static void constant_alpha_mid(data_t *data, enum pipe pipe, igt_plane_t *plane)
> igt_crc_t ref_crc, crc;
>
> if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> + &data->gray_fb);
>
> igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "None");
> igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7fff);
> @@ -412,7 +414,8 @@ static void constant_alpha_max(data_t *data, enum pipe pipe, igt_plane_t *plane)
> igt_crc_t ref_crc, crc;
>
> if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> + &data->gray_fb);
>
> igt_plane_set_fb(plane, &data->argb_fb_100);
> igt_display_commit2(display, COMMIT_ATOMIC);
> @@ -442,7 +445,8 @@ static void alpha_7efc(data_t *data, enum pipe pipe, igt_plane_t *plane)
> igt_crc_t ref_crc = {}, crc = {};
>
> if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> + &data->gray_fb);
>
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_pipe_crc_start(data->pipe_crc);
> @@ -496,7 +500,8 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
>
> /* Set a background color on the primary fb for testing */
> if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> + &data->gray_fb);
>
> igt_require(igt_plane_try_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "Coverage"));
> igt_plane_set_fb(plane, &data->argb_fb_cov_7e);
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 3f9afe674259..7817d6df9f1d 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -94,7 +94,7 @@ static void test_init(data_t *data, enum pipe pipe_id, igt_output_t *output,
> unsigned int flags)
> {
> data->pipe_id = pipe_id;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> data->output = output;
>
> data->mode = igt_output_get_mode(data->output);
> @@ -188,7 +188,9 @@ static void test_cursor_pos(data_t *data, int x, int y, unsigned int flags)
> /* Wait for one more vblank since cursor updates are not
> * synchronized to the same frame on AMD hw */
> if(is_amdgpu_device(data->drm_fd))
> - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[data->pipe_id].crtc_offset, 1);
> + igt_wait_for_vblank_count(data->drm_fd,
> + igt_crtc_for_pipe(&data->display, data->pipe_id)->crtc_offset,
> + 1);
>
> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &test_crc);
> igt_pipe_crc_stop(data->pipe_crc);
> @@ -326,7 +328,7 @@ int igt_main()
> igt_subtest_with_dynamic_f("%s", tests[i].name) {
> for_each_pipe_with_single_output(&data.display, pipe, output) {
> if ((tests[i].flags & TEST_OVERLAY) &&
> - !igt_pipe_get_plane_type(&data.display.pipes[pipe],
> + !igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> DRM_PLANE_TYPE_OVERLAY))
> continue;
>
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 2f1bd16a1b33..0ce12749f7c8 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -403,7 +403,7 @@ static void
> test_plane_position(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t modifier)
> {
> int n_planes = opt.all_planes ?
> - data->display.pipes[pipe].n_planes : DEFAULT_N_PLANES;
> + igt_crtc_for_pipe(&data->display, pipe)->n_planes : DEFAULT_N_PLANES;
>
> if (!opt.user_seed)
> opt.seed = time(NULL);
> @@ -464,7 +464,7 @@ static void test_plane_position_2_display(data_t *data, enum pipe pipe1, enum pi
> color_t blue = { 0.0f, 0.0f, 1.0f };
> igt_crc_t crc1, crc2;
> int n_planes = opt.all_planes ?
> - data->display.pipes[0].n_planes : DEFAULT_N_PLANES;
> + igt_crtc_for_pipe(&data->display, 0)->n_planes : DEFAULT_N_PLANES;
>
> /*
> * Note: We could use the dynamic way of calculating the maximum planes here
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index bdb290b5430e..10b168615226 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -963,7 +963,7 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
> w2 = get_width(mode, sf_plane2);
> h2 = get_height(mode, sf_plane2);
>
> - n_planes = display->pipes[pipe].n_planes;
> + n_planes = igt_crtc_for_pipe(display, pipe)->n_planes;
> igt_require(n_planes >= 2);
>
> switch (test_type) {
> @@ -990,9 +990,9 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
> for (int k = 0; k < n_planes - 1; k += 2) {
> igt_plane_t *p1, *p2;
>
> - p1 = &display->pipes[pipe].planes[k];
> + p1 = &igt_crtc_for_pipe(display, pipe)->planes[k];
> igt_require(p1);
> - p2 = &display->pipes[pipe].planes[k+1];
> + p2 = &igt_crtc_for_pipe(display, pipe)->planes[k+1];
> igt_require(p2);
>
> if (p1->type == DRM_PLANE_TYPE_CURSOR || p2->type == DRM_PLANE_TYPE_CURSOR)
> @@ -1015,7 +1015,7 @@ static void
> test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
> {
> igt_display_t *display = &d->display;
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> int width, height;
> igt_plane_t *plane[3];
> drmModeModeInfo *mode;
> diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> index 64514b4d2676..95bfe293a242 100644
> --- a/tests/kms_properties.c
> +++ b/tests/kms_properties.c
> @@ -291,7 +291,9 @@ static void run_crtc_property_tests(igt_display_t *display, enum pipe pipe, igt_
>
> igt_info("Testing crtc properties on %s (output: %s)\n", kmstest_pipe_name(pipe), output->name);
>
> - test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC, display->pipes[pipe].crtc_id, atomic, false);
> + test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC,
> + igt_crtc_for_pipe(display, pipe)->crtc_id, atomic,
> + false);
>
> cleanup_pipe(display, pipe, output, &fb);
> }
> @@ -482,7 +484,9 @@ static void test_object_invalid_properties(igt_display_t *display,
> enum pipe pipe;
>
> for_each_pipe(display, pipe)
> - test_invalid_properties(display->drm_fd, id, type, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
> + test_invalid_properties(display->drm_fd, id, type,
> + igt_crtc_for_pipe(display, pipe)->crtc_id,
> + DRM_MODE_OBJECT_CRTC, atomic);
>
> for_each_pipe(display, pipe)
> for_each_plane_on_pipe(display, pipe, plane)
> @@ -888,7 +892,9 @@ static void invalid_properties(igt_display_t *display, bool atomic)
> igt_skip_on(!display->is_atomic);
>
> for_each_pipe(display, pipe)
> - test_object_invalid_properties(display, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
> + test_object_invalid_properties(display,
> + igt_crtc_for_pipe(display, pipe)->crtc_id,
> + DRM_MODE_OBJECT_CRTC, atomic);
>
> for_each_pipe(display, pipe)
> for_each_plane_on_pipe(display, pipe, plane)
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 6f10da8fbf7c..d37a14e275f7 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -1353,7 +1353,8 @@ int igt_main_args("", long_opts, help_str, opt_handler, &data)
> igt_display_require_output(&data.display);
>
> for_each_pipe_with_valid_output(&data.display, pipe, output) {
> - igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> + igt_plane_t *primary = &igt_crtc_for_pipe(&data.display,
> + pipe)->planes[0];
>
> test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> break;
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index 46edcc50d2ab..80a586ce62f5 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -123,7 +123,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_commit(display);
>
> igt_wait_for_vblank(fd,
> - display->pipes[data->pipe].crtc_offset);
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> index d6f5eda7d841..003e6ea408e8 100644
> --- a/tests/kms_tiled_display.c
> +++ b/tests/kms_tiled_display.c
> @@ -328,7 +328,7 @@ static data_connector_t *conn_for_crtc(data_t *data, unsigned int crtc_id)
> for (int i = 0; i < data->num_h_tiles; i++) {
> data_connector_t *conn = &data->conns[i];
>
> - if (data->display.pipes[conn->pipe].crtc_id == crtc_id)
> + if (igt_crtc_for_pipe(&data->display, conn->pipe)->crtc_id == crtc_id)
> return conn;
> }
>
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index 47c805cd36cd..a4913ec13819 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -172,10 +172,10 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> * drm_universal_plane_init(), the type enum can get interpreted as a
> * boolean and show up in userspace as the wrong type.
> */
> - for (i = 0; i < display->pipes[pipe].n_planes; i++)
> - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY)
> + for (i = 0; i < igt_crtc_for_pipe(display, pipe)->n_planes; i++)
> + if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_PRIMARY)
> num_primary++;
> - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR)
> + else if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_CURSOR)
> num_cursor++;
>
> igt_warn_on(num_primary != 1);
> @@ -711,7 +711,9 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> * framebuffer.
> */
> if (is_xe_device(data->drm_fd))
> - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 2);
> + igt_wait_for_vblank_count(data->drm_fd,
> + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> + 2);
>
> /* We should be back to the same framebuffer count as when we started */
> count2 = intel_gem_fb_count(data);
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index bce767a2ab83..1803308c56e1 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -144,7 +144,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_commit(display);
>
> igt_wait_for_vblank(fd,
> - display->pipes[data->pipe].crtc_offset);
> + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> @@ -251,7 +251,7 @@ static void crtc_id_subtest(data_t *data, int fd)
> uint64_t val;
> union drm_wait_vblank vbl;
>
> - crtc_id = display->pipes[p].crtc_id;
> + crtc_id = igt_crtc_for_pipe(display, p)->crtc_id;
> if (drmGetCap(display->drm_fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &val) == 0)
> expected_crtc_id = crtc_id;
> else
> diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
> index d21301733b5c..bcb7e00b0b07 100644
> --- a/tools/amd_hdmi_compliance.c
> +++ b/tools/amd_hdmi_compliance.c
> @@ -385,7 +385,7 @@ static void test_init(data_t *data, int conn_id)
> igt_display_t *display = &data->display;
>
> data->pipe_id = PIPE_A;
> - data->pipe = &data->display.pipes[data->pipe_id];
> + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> igt_display_reset(display);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK
2025-12-10 9:38 ` [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK Ville Syrjala
@ 2025-12-10 14:25 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:25 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The igt_wait_for_vblank_count() docs are talking nonsense about
> DRM_IOCTL_WAIT_VBLANK taking some kind of 'pipe' parameter.
> What it actually takes is the original (short-sighted)
> DRM_VBLANK_SECONDARY flag, and the later extension in the
> form of DRM_VBLANK_HIGH_CRTC_MASK.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 9 ---------
> 1 file changed, 9 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 951144bae955..3e7543ae1d88 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -5827,15 +5827,6 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
> * @count: Number of vblanks to wait on
> *
> * Waits for a given number of vertical blank intervals
> - *
> - * In DRM, 'Pipe', as understood by DRM_IOCTL_WAIT_VBLANK,
> - * is actually an offset of crtc in drmModeRes.crtcs
> - * and it has nothing to do with a hardware concept of a pipe.
> - * They can match but don't have to in case of DRM lease or
> - * non-contiguous pipes.
> - *
> - * To make thing clear we are calling DRM_IOCTL_WAIT_VBLANK's 'pipe'
> - * a crtc_offset.
> */
> void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count)
> {
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*()
2025-12-10 9:39 ` [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*() Ville Syrjala
@ 2025-12-10 14:29 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:29 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Raise the abstraction level a bit by passing the entire
> igt_pipe_t to igt_wait_for_vblank*().
>
> One step towards using 'crtcs' instead of 'pipes'.
>
> Done with cocci (with the docs fixed up by hand):
> #include "scripts/iterators.cocci"
>
> @@
> expression FD, PIPE, COUNT;
> @@
> (
> - igt_wait_for_vblank_count(FD, PIPE->crtc_offset, COUNT)
> + igt_wait_for_vblank_count(PIPE, COUNT)
> |
> - igt_wait_for_vblank(FD, PIPE->crtc_offset)
> + igt_wait_for_vblank(PIPE)
> )
>
> @plane@
> igt_display_t *display;
> igt_plane_t *plane;
> @@
> - &display->pipes[plane->pipe->pipe]
> + plane->pipe
>
> @depends on plane@
> expression E;
> identifier DISPLAY;
> @@
> - igt_display_t *DISPLAY = E;
> ... when != DISPLAY;
>
> @@
> typedef igt_pipe_t;
> identifier FD, CRTC_OFFSET, COUNT;
> @@
> igt_wait_for_vblank_count(
> - int FD, int CRTC_OFFSET
> + igt_pipe_t *crtc
> ,int COUNT
> )
> {
> <...
> (
> - FD
> + crtc->display->drm_fd
> |
> - CRTC_OFFSET
> + crtc->crtc_offset
> )
> ...>
> }
>
> @@
> identifier FD, CRTC_OFFSET, COUNT;
> @@
> void igt_wait_for_vblank_count(
> - int FD,
> - int CRTC_OFFSET
> + igt_pipe_t *crtc
> ,int COUNT
> );
>
> @@
> typedef igt_pipe_t;
> identifier FD, CRTC_OFFSET;
> @@
> igt_wait_for_vblank(
> - int FD, int CRTC_OFFSET
> + igt_pipe_t *crtc
> )
> {
> <...
> (
> - FD
> + crtc->display->drm_fd
> |
> - CRTC_OFFSET
> + crtc->crtc_offset
> )
> ...>
> }
>
> @@
> identifier FD, CRTC_OFFSET;
> @@
> void igt_wait_for_vblank(
> - int FD,
> - int CRTC_OFFSET
> + igt_pipe_t *crtc
> );
Sob missing!
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 12 ++++++------
> lib/igt_kms.h | 4 ++--
> tests/amdgpu/amd_ilr.c | 3 +--
> tests/intel/kms_pm_dc.c | 4 +---
> tests/intel/perf_pmu.c | 3 +--
> tests/kms_atomic_transition.c | 6 ++----
> tests/kms_color.c | 24 ++++++++----------------
> tests/kms_cursor_crc.c | 14 +++++---------
> tests/kms_cursor_edge_walk.c | 3 +--
> tests/kms_lease.c | 9 +++------
> tests/kms_pipe_crc_basic.c | 8 +++-----
> tests/kms_plane.c | 3 +--
> tests/kms_plane_cursor.c | 3 +--
> tests/kms_sequence.c | 3 +--
> tests/kms_universal_plane.c | 3 +--
> tests/kms_vblank.c | 3 +--
> 16 files changed, 38 insertions(+), 67 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 3e7543ae1d88..3b71cee61635 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -5823,28 +5823,28 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
> /**
> * igt_wait_for_vblank_count:
> * @drm_fd: A drm file descriptor
> - * @crtc_offset: offset of the crtc in drmModeRes.crtcs
> + * @crtc: the CRTC
> * @count: Number of vblanks to wait on
> *
> * Waits for a given number of vertical blank intervals
> */
> -void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count)
> +void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
> {
> - igt_assert(__igt_vblank_wait(drm_fd, crtc_offset, count) == 0);
> + igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, count) == 0);
> }
>
> /**
> * igt_wait_for_vblank:
> * @drm_fd: A drm file descriptor
> - * @crtc_offset: offset of a crtc in drmModeRes.crtcs
> + * @crtc: the CRTC
> *
> * See #igt_wait_for_vblank_count for more details
> *
> * Waits for 1 vertical blank intervals
> */
> -void igt_wait_for_vblank(int drm_fd, int crtc_offset)
> +void igt_wait_for_vblank(igt_pipe_t *crtc)
> {
> - igt_assert(__igt_vblank_wait(drm_fd, crtc_offset, 1) == 0);
> + igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, 1) == 0);
> }
>
> /**
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index fd3c8448983e..a9d2d9027ae8 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -637,8 +637,8 @@ static inline bool igt_plane_has_rotation(igt_plane_t *plane, igt_rotation_t rot
> }
> const char *igt_plane_rotation_name(igt_rotation_t rotation);
>
> -void igt_wait_for_vblank(int drm_fd, int crtc_offset);
> -void igt_wait_for_vblank_count(int drm_fd, int crtc_offset, int count);
> +void igt_wait_for_vblank(igt_pipe_t *crtc);
> +void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count);
>
> /**
> * igt_output_is_connected:
> diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
> index 680b46763af3..5875dc36d69b 100644
> --- a/tests/amdgpu/amd_ilr.c
> +++ b/tests/amdgpu/amd_ilr.c
> @@ -180,8 +180,7 @@ static void test_ilr_policy(data_t *data, igt_output_t *output)
> /* Secondly check trained BW is sufficient.
> * If BW is insufficient, crc retrieving will timeout
> */
> - igt_wait_for_vblank_count(data->drm_fd,
> - data->pipe->crtc_offset, 10);
> + igt_wait_for_vblank_count(data->pipe, 10);
>
> igt_pipe_crc_collect_crc(data->pipe_crc, &data->crc_dprx);
> crc_str = igt_crc_to_string(&data->crc_dprx);
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index 47b2db268568..8cc260fac0e5 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -697,9 +697,7 @@ static void test_deep_pkgc_state(data_t *data)
> igt_plane_set_fb(primary, &data->fb_rgb);
> igt_display_commit(&data->display);
> /* Wait for the vblank to sync the frame time */
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> - 1);
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, pipe), 1);
> pre_val = read_pkgc_counter(data->debugfs_root_fd);
> /* Add a half-frame delay to ensure the flip occurs when the frame is active. */
> usleep(delay * 0.5);
> diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
> index ef95b50cd1ab..5d96f91a6704 100644
> --- a/tests/intel/perf_pmu.c
> +++ b/tests/intel/perf_pmu.c
> @@ -1065,8 +1065,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>
> igt_display_commit(display);
>
> - igt_wait_for_vblank(fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index ab04b9f711b7..63c7cf9f9f08 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -162,15 +162,13 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> if (!(i & 1))
> - igt_wait_for_vblank(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(&data->display, pipe));
>
> igt_plane_set_fb(primary, (i & 1) ? fb : NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> if (i & 1)
> - igt_wait_for_vblank(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(&data->display, pipe));
>
> igt_plane_set_fb(primary, (i & 1) ? NULL : fb);
> }
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index d7c713a775b0..c68ccafd390a 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -130,8 +130,7 @@ static bool test_pipe_degamma(data_t *data,
> paint_rectangles(data, mode, red_green_blue, &fb);
> igt_plane_set_fb(primary, &fb);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
>
> /*
> @@ -142,8 +141,7 @@ static bool test_pipe_degamma(data_t *data,
> igt_plane_set_fb(primary, &fb);
> set_degamma(data, primary->pipe, degamma_full);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
>
> /*
> @@ -219,8 +217,7 @@ static bool test_pipe_gamma(data_t *data,
> paint_rectangles(data, mode, red_green_blue, &fb);
> igt_plane_set_fb(primary, &fb);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
>
> /*
> @@ -230,8 +227,7 @@ static bool test_pipe_gamma(data_t *data,
> paint_gradient_rectangles(data, mode, red_green_blue, &fb);
> igt_plane_set_fb(primary, &fb);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
>
> /*
> @@ -315,8 +311,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
> paint_rectangles(data, mode, red_green_blue, &fb);
> igt_plane_set_fb(primary, &fb);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
>
> /*
> @@ -332,8 +327,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
> igt_assert_eq(drmModeCrtcSetGamma(data->drm_fd, primary->pipe->crtc_id,
> legacy_lut_size, red_lut, green_lut, blue_lut), 0);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
>
> /*
> @@ -574,8 +568,7 @@ static bool test_pipe_ctm(data_t *data,
> igt_plane_set_fb(primary, &fb);
> set_ctm(primary->pipe, ctm_identity);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_software);
>
> /* With CTM transformation. */
> @@ -583,8 +576,7 @@ static bool test_pipe_ctm(data_t *data,
> igt_plane_set_fb(primary, &fb);
> set_ctm(primary->pipe, ctm_matrix);
> igt_display_commit(&data->display);
> - igt_wait_for_vblank(data->drm_fd,
> - primary->pipe->crtc_offset);
> + igt_wait_for_vblank(primary->pipe);
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc_hardware);
>
> /*
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index fe5a63eb0a64..ff682b93a242 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -214,8 +214,7 @@ static void cursor_disable(data_t *data)
> igt_display_commit(&data->display);
>
> /* do this wait here so it will not need to be added everywhere */
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe),
> data->vblank_wait_count);
> }
>
> @@ -300,8 +299,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
> igt_display_commit(display);
>
> /* Extra vblank wait is because nonblocking cursor ioctl */
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(display, data->pipe),
> data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
> @@ -350,9 +348,8 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
> * synchronized to the same frame on AMD HW
> */
> if (is_amdgpu_device(data->drm_fd))
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> - data->vblank_wait_count);
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(display, data->pipe),
> + data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
> igt_assert_crc_equal(&crc, hwcrc);
> @@ -735,8 +732,7 @@ static void timed_cursor_changes(data_t *data, void (changefunc)(data_t *, enum
> igt_display_commit(&data->display);
>
> /* Extra vblank wait is because nonblocking cursor ioctl */
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe),
> data->vblank_wait_count);
>
> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc1);
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index e84dfeb9aefb..ff8fe3402fe8 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -126,8 +126,7 @@ static void cursor_move(data_t *data, int x, int y, int i)
> igt_assert(drmModeMoveCursor(data->drm_fd, crtc_id, x, y) == 0 ||
> (IS_CHERRYVIEW(data->devid) && data->pipe == PIPE_C &&
> x < 0 && x > -data->curw));
> - igt_wait_for_vblank(data->drm_fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
> }
>
> #define XSTEP 8
> diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> index df16fc7af78e..d2e55ffcf538 100644
> --- a/tests/kms_lease.c
> +++ b/tests/kms_lease.c
> @@ -179,8 +179,7 @@ static int prepare_crtc(data_t *data, bool is_master)
> if (ret)
> return ret;
>
> - igt_wait_for_vblank(lease->fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
>
> lease->output = output;
> lease->mode = mode;
> @@ -377,8 +376,7 @@ static void page_flip_implicit_plane(data_t *data)
>
> display = &data->master.display;
>
> - igt_wait_for_vblank(data->master.fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
>
> do_or_die(drmModePageFlip(data->lease.fd, data->crtc_id,
> data->master.primary_fb.fb_id,
> @@ -388,8 +386,7 @@ static void page_flip_implicit_plane(data_t *data)
> object_ids[mcl.object_count++] = wrong_plane_id;
> do_or_die(create_lease(data->master.fd, &mcl, &data->lease.fd));
>
> - igt_wait_for_vblank(data->master.fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
>
> igt_assert_eq(drmModePageFlip(data->lease.fd, data->crtc_id,
> data->master.primary_fb.fb_id,
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 1699b68ff3d0..0a52b651ee72 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -169,13 +169,11 @@ static void test_read_crc(data_t *data, enum pipe pipe,
>
> pipe_crc = igt_pipe_crc_new_nonblock(data->drm_fd, pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
> - igt_wait_for_vblank(data->drm_fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
> igt_pipe_crc_start(pipe_crc);
>
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset,
> - N_CRCS);
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(display, pipe),
> + N_CRCS);
> n_crcs = igt_pipe_crc_get_crcs(pipe_crc, N_CRCS+1, &crcs);
> igt_pipe_crc_stop(pipe_crc);
> igt_pipe_crc_free(pipe_crc);
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 84455e77bbb2..c8701cf1a07d 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -792,8 +792,7 @@ restart_round:
> if (plane->type == DRM_PLANE_TYPE_CURSOR) {
> igt_display_t *display = &data->display;
>
> - igt_wait_for_vblank(data->drm_fd,
> - igt_crtc_for_pipe(display, pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, pipe));
> }
> }
>
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 7817d6df9f1d..b9aa0deed292 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -188,8 +188,7 @@ static void test_cursor_pos(data_t *data, int x, int y, unsigned int flags)
> /* Wait for one more vblank since cursor updates are not
> * synchronized to the same frame on AMD hw */
> if(is_amdgpu_device(data->drm_fd))
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, data->pipe_id)->crtc_offset,
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, data->pipe_id),
> 1);
>
> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &test_crc);
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index 80a586ce62f5..1d3b98728e15 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -122,8 +122,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>
> igt_display_commit(display);
>
> - igt_wait_for_vblank(fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index a4913ec13819..4f43050791f8 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -711,8 +711,7 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> * framebuffer.
> */
> if (is_xe_device(data->drm_fd))
> - igt_wait_for_vblank_count(data->drm_fd,
> - igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> + igt_wait_for_vblank_count(igt_crtc_for_pipe(&data->display, pipe),
> 2);
>
> /* We should be back to the same framebuffer count as when we started */
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 1803308c56e1..9057905acd67 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -143,8 +143,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>
> igt_display_commit(display);
>
> - igt_wait_for_vblank(fd,
> - igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> + igt_wait_for_vblank(igt_crtc_for_pipe(display, data->pipe));
> }
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 9:39 ` [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc() Ville Syrjala
@ 2025-12-10 14:34 ` Jani Nikula
2025-12-10 14:36 ` Jani Nikula
0 siblings, 1 reply; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:34 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Introduce igt_output_set_crtc() as the intended replacement for
> igt_output_set_pipe().
>
> One step towards using 'crtcs' instead of 'pipes'.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> lib/igt_kms.c | 44 +++++++++++++++++++++++++++++++-------------
> lib/igt_kms.h | 1 +
> 2 files changed, 32 insertions(+), 13 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 3b71cee61635..40c521b3a331 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -5277,31 +5277,35 @@ int igt_output_preferred_vrefresh(igt_output_t *output)
> return 60;
> }
>
> +static const char *igt_crtc_name(igt_pipe_t *crtc)
> +{
> + if (crtc == NULL)
> + return "None";
> +
> + return kmstest_pipe_name(crtc->pipe);
> +}
> +
> /**
> - * igt_output_set_pipe:
> + * igt_output_set_crtc:
> * @output: Target output for which the pipe is being set to
> - * @pipe: Display pipe to set to
> + * @pipe_obj: CRTC to set to
> *
> - * This function sets a @pipe to a specific @output connector by
> - * setting the CRTC_ID property of the @pipe. The pipe
> - * is only activated for all pipes except PIPE_NONE.
> + * This function sets a @crtc to a specific @output connector by
> + * setting the CRTC_ID property of the @crtc.
> */
> -void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
> {
> igt_display_t *display = output->display;
> - igt_pipe_t *old_pipe = NULL, *pipe_obj = NULL;;
> + igt_pipe_t *old_pipe = NULL;
>
> igt_assert(output->name);
>
> if (output->pending_pipe != PIPE_NONE)
> old_pipe = igt_output_get_driving_pipe(output);
>
> - if (pipe != PIPE_NONE)
> - pipe_obj = igt_crtc_for_pipe(display, pipe);
> -
> LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
> - kmstest_pipe_name(pipe));
> - output->pending_pipe = pipe;
> + igt_crtc_name(pipe_obj));
> + output->pending_pipe = pipe_obj ? pipe_obj->pipe : PIPE_NONE;
>
> if (old_pipe) {
> igt_output_t *old_output;
> @@ -5318,7 +5322,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> }
>
> igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
> - pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
> + pipe_obj ? pipe_obj->crtc_id : 0);
>
> igt_output_refresh(output);
>
> @@ -5332,6 +5336,20 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> }
> }
>
> +/**
> + * igt_output_set_pipe:
> + * @output: Target output for which the pipe is being set to
> + * @pipe_obj: Display pipe to set to
> + *
> + * This function sets a @pipe to a specific @output connector by
> + * setting the CRTC_ID property of the @pipe. The pipe
> + * is only activated for all pipes except PIPE_NONE.
> + */
> +void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> +{
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
How does that work for the igt_output_set_pipe(output, PIPE_NONE) calls?
Seems like the idea was to pass NULL here? Or should igt_crtc_for_pipe()
handle PIPE_NONE and return NULL?
> +}
> +
> static
> bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
> igt_output_t *outputs[IGT_MAX_PIPES],
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index a9d2d9027ae8..9ec0f08ada24 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -589,6 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
> drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
> int igt_output_preferred_vrefresh(igt_output_t *output);
> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
> void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 14:34 ` Jani Nikula
@ 2025-12-10 14:36 ` Jani Nikula
2025-12-10 14:38 ` Jani Nikula
0 siblings, 1 reply; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:36 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Introduce igt_output_set_crtc() as the intended replacement for
>> igt_output_set_pipe().
>>
>> One step towards using 'crtcs' instead of 'pipes'.
>>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> ---
>> lib/igt_kms.c | 44 +++++++++++++++++++++++++++++++-------------
>> lib/igt_kms.h | 1 +
>> 2 files changed, 32 insertions(+), 13 deletions(-)
>>
>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
>> index 3b71cee61635..40c521b3a331 100644
>> --- a/lib/igt_kms.c
>> +++ b/lib/igt_kms.c
>> @@ -5277,31 +5277,35 @@ int igt_output_preferred_vrefresh(igt_output_t *output)
>> return 60;
>> }
>>
>> +static const char *igt_crtc_name(igt_pipe_t *crtc)
>> +{
>> + if (crtc == NULL)
>> + return "None";
>> +
>> + return kmstest_pipe_name(crtc->pipe);
>> +}
>> +
>> /**
>> - * igt_output_set_pipe:
>> + * igt_output_set_crtc:
>> * @output: Target output for which the pipe is being set to
>> - * @pipe: Display pipe to set to
>> + * @pipe_obj: CRTC to set to
>> *
>> - * This function sets a @pipe to a specific @output connector by
>> - * setting the CRTC_ID property of the @pipe. The pipe
>> - * is only activated for all pipes except PIPE_NONE.
>> + * This function sets a @crtc to a specific @output connector by
>> + * setting the CRTC_ID property of the @crtc.
>> */
>> -void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
>> {
>> igt_display_t *display = output->display;
>> - igt_pipe_t *old_pipe = NULL, *pipe_obj = NULL;;
>> + igt_pipe_t *old_pipe = NULL;
>>
>> igt_assert(output->name);
>>
>> if (output->pending_pipe != PIPE_NONE)
>> old_pipe = igt_output_get_driving_pipe(output);
>>
>> - if (pipe != PIPE_NONE)
>> - pipe_obj = igt_crtc_for_pipe(display, pipe);
>> -
>> LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
>> - kmstest_pipe_name(pipe));
>> - output->pending_pipe = pipe;
>> + igt_crtc_name(pipe_obj));
>> + output->pending_pipe = pipe_obj ? pipe_obj->pipe : PIPE_NONE;
>>
>> if (old_pipe) {
>> igt_output_t *old_output;
>> @@ -5318,7 +5322,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>> }
>>
>> igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
>> - pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
>> + pipe_obj ? pipe_obj->crtc_id : 0);
>>
>> igt_output_refresh(output);
>>
>> @@ -5332,6 +5336,20 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>> }
>> }
>>
>> +/**
>> + * igt_output_set_pipe:
>> + * @output: Target output for which the pipe is being set to
>> + * @pipe_obj: Display pipe to set to
>> + *
>> + * This function sets a @pipe to a specific @output connector by
>> + * setting the CRTC_ID property of the @pipe. The pipe
>> + * is only activated for all pipes except PIPE_NONE.
>> + */
>> +void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>> +{
>> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> How does that work for the igt_output_set_pipe(output, PIPE_NONE) calls?
> Seems like the idea was to pass NULL here? Or should igt_crtc_for_pipe()
> handle PIPE_NONE and return NULL?
Okay, so it's just this one commit that's busted, as the whole function
is removed in the next patch.
>
>> +}
>> +
>> static
>> bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
>> igt_output_t *outputs[IGT_MAX_PIPES],
>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
>> index a9d2d9027ae8..9ec0f08ada24 100644
>> --- a/lib/igt_kms.h
>> +++ b/lib/igt_kms.h
>> @@ -589,6 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
>> drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
>> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
>> int igt_output_preferred_vrefresh(igt_output_t *output);
>> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
>> void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
>> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
>> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 14:36 ` Jani Nikula
@ 2025-12-10 14:38 ` Jani Nikula
2025-12-10 14:44 ` Jani Nikula
2025-12-10 14:48 ` Ville Syrjälä
0 siblings, 2 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:38 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
>> On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>>> +/**
>>> + * igt_output_set_pipe:
>>> + * @output: Target output for which the pipe is being set to
>>> + * @pipe_obj: Display pipe to set to
>>> + *
>>> + * This function sets a @pipe to a specific @output connector by
>>> + * setting the CRTC_ID property of the @pipe. The pipe
>>> + * is only activated for all pipes except PIPE_NONE.
>>> + */
>>> +void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>>> +{
>>> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>>
>> How does that work for the igt_output_set_pipe(output, PIPE_NONE) calls?
>> Seems like the idea was to pass NULL here? Or should igt_crtc_for_pipe()
>> handle PIPE_NONE and return NULL?
>
> Okay, so it's just this one commit that's busted, as the whole function
> is removed in the next patch.
I think igt_crtc_for_pipe() should handle PIPE_NONE, as there are a
bunch of places in the next patch that pass, say, data->pipe_id to it,
and it's a nightmare to check where all those come from.
>
>>
>>> +}
>>> +
>>> static
>>> bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
>>> igt_output_t *outputs[IGT_MAX_PIPES],
>>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
>>> index a9d2d9027ae8..9ec0f08ada24 100644
>>> --- a/lib/igt_kms.h
>>> +++ b/lib/igt_kms.h
>>> @@ -589,6 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
>>> drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
>>> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
>>> int igt_output_preferred_vrefresh(igt_output_t *output);
>>> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
>>> void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
>>> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
>>> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc()
2025-12-10 9:39 ` [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc() Ville Syrjala
@ 2025-12-10 14:42 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:42 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace all igt_output_set_pipe() uses with igt_output_set_crtc().
> This is one small step towards using 'crtcs' instead of 'pipes'.
>
> The results aren't super pretty as most callers end up doing
> "igt_output_set_crtc(..., igt_crtc_for_pipe(...))" but we'll
> try to clean all that up once all tests get properly weaned
> off 'pipes'.
>
> Done with cocci:
> #include "scripts/iterators.cocci"
>
> @@
> @@
> - igt_output_set_pipe(...) { ... }
>
> @@
> expression OUTPUT, PIPE;
> igt_pipe_t *CRTC;
> igt_plane_t *PLANE;
> @@
> (
> - igt_output_set_pipe(OUTPUT, PIPE_NONE)
> + igt_output_set_crtc(OUTPUT, NULL)
> |
> - igt_output_set_pipe(OUTPUT, PLANE->pipe->pipe)
> + igt_output_set_crtc(OUTPUT, PLANE->pipe)
> |
> - igt_output_set_pipe(OUTPUT, CRTC->pipe)
> + igt_output_set_crtc(OUTPUT, CRTC)
> |
> - igt_output_set_pipe(OUTPUT, PIPE)
> + igt_output_set_crtc(OUTPUT, igt_crtc_for_pipe(OUTPUT->display, PIPE))
> )
>
> @@
> identifier CRTC;
> expression DISPLAY1, DISPLAY2, PIPE;
> @@
> CRTC = igt_crtc_for_pipe(DISPLAY1, PIPE)
> <+...
> - igt_crtc_for_pipe(DISPLAY2, PIPE)
> + CRTC
> ...+>
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
On the condition that igt_crtc_for_pipe() is modified to return NULL for
PIPE_NONE,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> benchmarks/kms_fb_stress.c | 3 +-
> lib/igt_kms.c | 18 +------
> lib/igt_kms.h | 1 -
> tests/amdgpu/amd_abm.c | 6 ++-
> tests/amdgpu/amd_assr.c | 5 +-
> tests/amdgpu/amd_bypass.c | 3 +-
> tests/amdgpu/amd_color.c | 3 +-
> tests/amdgpu/amd_dp_dsc.c | 12 +++--
> tests/amdgpu/amd_freesync_video_mode.c | 5 +-
> tests/amdgpu/amd_hotplug.c | 3 +-
> tests/amdgpu/amd_ilr.c | 5 +-
> tests/amdgpu/amd_link_settings.c | 5 +-
> tests/amdgpu/amd_mall.c | 3 +-
> tests/amdgpu/amd_max_bpc.c | 3 +-
> tests/amdgpu/amd_mem_leak.c | 3 +-
> tests/amdgpu/amd_mode_switch.c | 3 +-
> tests/amdgpu/amd_multidisplay_modeset.c | 5 +-
> tests/amdgpu/amd_odm.c | 6 ++-
> tests/amdgpu/amd_plane.c | 18 ++++---
> tests/amdgpu/amd_psr.c | 23 +++++---
> tests/amdgpu/amd_replay.c | 3 +-
> tests/amdgpu/amd_subvp.c | 3 +-
> tests/chamelium/kms_chamelium_color.c | 16 +++---
> tests/chamelium/kms_chamelium_edid.c | 5 +-
> tests/chamelium/kms_chamelium_helper.c | 11 ++--
> tests/chamelium/kms_chamelium_hpd.c | 8 +--
> .../kms_chamelium_sharpness_filter.c | 10 ++--
> tests/drm_read.c | 3 +-
> tests/intel/gem_eio.c | 3 +-
> tests/intel/gem_exec_reloc.c | 3 +-
> tests/intel/gem_pxp.c | 5 +-
> tests/intel/kms_big_fb.c | 11 ++--
> tests/intel/kms_busy.c | 20 +++----
> tests/intel/kms_ccs.c | 3 +-
> tests/intel/kms_cdclk.c | 15 +++---
> tests/intel/kms_dirtyfb.c | 8 +--
> tests/intel/kms_dp_linktrain_fallback.c | 6 ++-
> tests/intel/kms_draw_crc.c | 3 +-
> tests/intel/kms_dsc.c | 5 +-
> tests/intel/kms_fb_coherency.c | 8 +--
> tests/intel/kms_fbc_dirty_rect.c | 5 +-
> tests/intel/kms_fence_pin_leak.c | 7 +--
> tests/intel/kms_flip_scaled_crc.c | 10 ++--
> tests/intel/kms_flip_tiling.c | 5 +-
> tests/intel/kms_frontbuffer_tracking.c | 24 ++++++---
> tests/intel/kms_joiner.c | 20 ++++---
> tests/intel/kms_joiner_helper.c | 6 ++-
> tests/intel/kms_mmap_write_crc.c | 8 +--
> tests/intel/kms_pipe_b_c_ivb.c | 6 +--
> tests/intel/kms_pipe_stress.c | 2 +-
> tests/intel/kms_pm_backlight.c | 7 +--
> tests/intel/kms_pm_dc.c | 8 +--
> tests/intel/kms_pm_lpsp.c | 7 +--
> tests/intel/kms_pm_rpm.c | 3 +-
> tests/intel/kms_psr.c | 5 +-
> tests/intel/kms_psr2_sf.c | 11 ++--
> tests/intel/kms_psr2_su.c | 8 +--
> tests/intel/kms_psr_stress_test.c | 5 +-
> tests/intel/kms_pwrite_crc.c | 8 +--
> tests/intel/kms_sharpness_filter.c | 5 +-
> tests/intel/perf_pmu.c | 5 +-
> tests/intel/prime_mmap_kms.c | 5 +-
> tests/intel/xe_pat.c | 3 +-
> tests/intel/xe_pxp.c | 8 +--
> tests/kms_async_flips.c | 6 ++-
> tests/kms_atomic.c | 12 ++---
> tests/kms_atomic_interruptible.c | 10 ++--
> tests/kms_atomic_transition.c | 35 +++++++------
> tests/kms_bw.c | 3 +-
> tests/kms_color.c | 23 ++++----
> tests/kms_color_helper.c | 5 +-
> tests/kms_colorop.c | 3 +-
> tests/kms_concurrent.c | 12 +++--
> tests/kms_content_protection.c | 8 +--
> tests/kms_cursor_crc.c | 15 +++---
> tests/kms_cursor_edge_walk.c | 8 +--
> tests/kms_cursor_legacy.c | 52 ++++++++++---------
> tests/kms_debugfs.c | 5 +-
> tests/kms_display_modes.c | 16 +++---
> tests/kms_dither.c | 9 ++--
> tests/kms_feature_discovery.c | 6 ++-
> tests/kms_flip_event_leak.c | 5 +-
> tests/kms_hdr.c | 13 +++--
> tests/kms_invalid_mode.c | 3 +-
> tests/kms_lease.c | 7 +--
> tests/kms_multipipe_modeset.c | 10 ++--
> tests/kms_panel_fitting.c | 6 +--
> tests/kms_pipe_crc_basic.c | 16 +++---
> tests/kms_plane.c | 21 ++++----
> tests/kms_plane_alpha_blend.c | 5 +-
> tests/kms_plane_cursor.c | 6 ++-
> tests/kms_plane_lowres.c | 5 +-
> tests/kms_plane_multiple.c | 20 ++++---
> tests/kms_plane_scaling.c | 32 +++++++-----
> tests/kms_prime.c | 3 +-
> tests/kms_properties.c | 18 ++++---
> tests/kms_rmfb.c | 7 +--
> tests/kms_rotation_crc.c | 13 +++--
> tests/kms_scaling_modes.c | 5 +-
> tests/kms_sequence.c | 8 +--
> tests/kms_tiled_display.c | 6 +--
> tests/kms_universal_plane.c | 42 +++++++--------
> tests/kms_vblank.c | 14 ++---
> tests/kms_vrr.c | 7 +--
> tests/kms_writeback.c | 5 +-
> tests/nouveau_crc.c | 5 +-
> tests/vmwgfx/vmw_prime.c | 8 +--
> tools/amd_hdmi_compliance.c | 3 +-
> tools/intel_pm_rpm.c | 2 +-
> 109 files changed, 574 insertions(+), 412 deletions(-)
>
> diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
> index 49ca5c7239d7..4bc23eb4bbd9 100644
> --- a/benchmarks/kms_fb_stress.c
> +++ b/benchmarks/kms_fb_stress.c
> @@ -166,7 +166,8 @@ int igt_simple_main()
> igt_debug("Selecting pipe %s to %s\n",
> kmstest_pipe_name(pipe),
> igt_output_name(data.wb_output));
> - igt_output_set_pipe(data.wb_output, pipe);
> + igt_output_set_crtc(data.wb_output,
> + igt_crtc_for_pipe(data.wb_output->display, pipe));
> break;
> }
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 40c521b3a331..082b126f8a49 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -3412,7 +3412,7 @@ void igt_modeset_disable_all_outputs(igt_display_t *display)
> for (i = 0; i < display->n_outputs; i++) {
> igt_output_t *output = &display->outputs[i];
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> igt_display_commit2(display, COMMIT_ATOMIC);
> @@ -5336,20 +5336,6 @@ void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
> }
> }
>
> -/**
> - * igt_output_set_pipe:
> - * @output: Target output for which the pipe is being set to
> - * @pipe_obj: Display pipe to set to
> - *
> - * This function sets a @pipe to a specific @output connector by
> - * setting the CRTC_ID property of the @pipe. The pipe
> - * is only activated for all pipes except PIPE_NONE.
> - */
> -void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> -{
> - igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> -}
> -
> static
> bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
> igt_output_t *outputs[IGT_MAX_PIPES],
> @@ -7913,7 +7899,7 @@ void igt_detach_crtc(igt_display_t *display, igt_output_t *output)
> if (igt_get_writeback_fb_id(output) == 0)
> return;
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 9ec0f08ada24..8f257c86d88f 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -590,7 +590,6 @@ drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
> int igt_output_preferred_vrefresh(igt_output_t *output);
> void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
> -void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
> int igt_output_count_plane_type(igt_output_t *output, int plane_type);
> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> index 9be5cfe8efc1..00560ce3ac00 100644
> --- a/tests/amdgpu/amd_abm.c
> +++ b/tests/amdgpu/amd_abm.c
> @@ -146,7 +146,8 @@ static void test_init(data_t *data)
> data->primary =
> igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> @@ -266,7 +267,8 @@ static void set_abm_level(data_t *data, igt_output_t *output, int level)
>
> igt_assert_eq(close(fd), 0);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_plane_set_fb(data->primary, &data->ref_fb);
> igt_display_commit_atomic(&data->display, 0, 0);
> }
> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> index ebd6654ee2a1..976582ade9eb 100644
> --- a/tests/amdgpu/amd_assr.c
> +++ b/tests/amdgpu/amd_assr.c
> @@ -171,7 +171,8 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
> pipe = igt_crtc_for_pipe(&data->display, PIPE_A);
> primary =
> igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> - igt_output_set_pipe(output, PIPE_A);
> + igt_output_set_crtc(output,
> + pipe);
>
> igt_create_fb(data->fd, mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888, 0, &fb);
> @@ -188,7 +189,7 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
>
> igt_plane_set_fb(primary, NULL);
> igt_remove_fb(data->fd, &fb);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
>
> diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
> index 40828fa52b1f..460e69dfa7c1 100644
> --- a/tests/amdgpu/amd_bypass.c
> +++ b/tests/amdgpu/amd_bypass.c
> @@ -92,7 +92,8 @@ static void test_init(data_t *data)
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
> AMDGPU_PIPE_CRC_SOURCE_DPRX);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->width = data->mode->hdisplay;
> data->height = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
> index fcfbe48d1eeb..422b111768c0 100644
> --- a/tests/amdgpu/amd_color.c
> +++ b/tests/amdgpu/amd_color.c
> @@ -196,7 +196,8 @@ static void test_init(data_t *data)
> data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
> index fe40d0901548..b1809b65aa0e 100644
> --- a/tests/amdgpu/amd_dp_dsc.c
> +++ b/tests/amdgpu/amd_dp_dsc.c
> @@ -133,7 +133,8 @@ static void test_dsc_enable(data_t *data)
> DRM_FORMAT_XRGB8888,
> 0,
> &ref_fb);
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &ref_fb);
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
>
> @@ -279,7 +280,8 @@ static void test_dsc_slice_dimensions_change(data_t *data)
> DRM_FORMAT_XRGB8888,
> 0,
> &ref_fb);
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &ref_fb);
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
>
> @@ -369,7 +371,8 @@ static void test_dsc_link_settings(data_t *data)
> DRM_FORMAT_XRGB8888,
> 0,
> &ref_fb[i]);
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &ref_fb[i]);
> }
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
> @@ -489,7 +492,8 @@ static void test_dsc_bpc(data_t *data)
> DRM_FORMAT_XRGB8888,
> 0,
> &ref_fb[i]);
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &ref_fb[i]);
> }
>
> diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
> index 4db975e26347..c1a3e8161304 100644
> --- a/tests/amdgpu/amd_freesync_video_mode.c
> +++ b/tests/amdgpu/amd_freesync_video_mode.c
> @@ -750,7 +750,7 @@ static void init_data(data_t *data, igt_output_t *output)
> static void finish_test(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> igt_plane_set_fb(data->primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_output_override_mode(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> @@ -847,7 +847,8 @@ run_test(data_t *data, uint32_t scene)
> for_each_pipe(&data->display, pipe)
> if (igt_pipe_connector_valid(pipe, output)) {
> igt_display_reset(&data->display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
> mode_transition(data, pipe, output, scene);
> diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
> index d80eb65bd263..71c859799f74 100644
> --- a/tests/amdgpu/amd_hotplug.c
> +++ b/tests/amdgpu/amd_hotplug.c
> @@ -161,7 +161,8 @@ static void test_hotplug_basic(data_t *data, bool suspend)
>
> igt_create_pattern_fb(data->fd, data->w[i], data->h[i],
> DRM_FORMAT_XRGB8888, 0, &ref_fb[i]);
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &ref_fb[i]);
> }
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
> diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
> index 5875dc36d69b..16ef6ffe40f1 100644
> --- a/tests/amdgpu/amd_ilr.c
> +++ b/tests/amdgpu/amd_ilr.c
> @@ -73,7 +73,7 @@ static void set_all_output_pipe_to_none(data_t *data)
> igt_output_t *output;
>
> for_each_connected_output(&data->display, output) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> @@ -103,7 +103,8 @@ static void test_init(data_t *data, igt_output_t *output)
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
> AMDGPU_PIPE_CRC_SOURCE_DPRX);
>
> - igt_output_set_pipe(output, data->pipe_id);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id));
>
> data->primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> }
> diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
> index 6e6037ae5fbc..3ea4168f93ed 100644
> --- a/tests/amdgpu/amd_link_settings.c
> +++ b/tests/amdgpu/amd_link_settings.c
> @@ -75,7 +75,7 @@ static void set_all_output_pipe_to_none(data_t *data)
> igt_output_t *output;
>
> for_each_connected_output(&data->display, output) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> @@ -102,7 +102,8 @@ static void test_init(data_t *data, igt_output_t *output)
>
> data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
>
> - igt_output_set_pipe(output, data->pipe_id);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id));
>
> data->primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> }
> diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
> index 27589b865a53..a1a04d0ea9c3 100644
> --- a/tests/amdgpu/amd_mall.c
> +++ b/tests/amdgpu/amd_mall.c
> @@ -88,7 +88,8 @@ static void test_init(data_t *data)
> data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
> index 9771c67338c7..bb362926c6b9 100644
> --- a/tests/amdgpu/amd_max_bpc.c
> +++ b/tests/amdgpu/amd_max_bpc.c
> @@ -85,7 +85,8 @@ static void test_init(data_t *data)
> data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
> index 1b6b2b730c5b..ef2b59be4a1c 100644
> --- a/tests/amdgpu/amd_mem_leak.c
> +++ b/tests/amdgpu/amd_mem_leak.c
> @@ -67,7 +67,8 @@ static void test_init(data_t *data)
> data->primary =
> igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
> index c443578f5f09..d142873e9372 100644
> --- a/tests/amdgpu/amd_mode_switch.c
> +++ b/tests/amdgpu/amd_mode_switch.c
> @@ -112,7 +112,8 @@ static void run_mode_switch_first_last(data_t *data, int num_pipes)
> DRM_FORMAT_MOD_NONE, 1.f, 0.f,
> 0.f, buffer1[j]);
> }
> - igt_output_set_pipe(output, j);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, j));
> force_output_mode(data, output, kmode);
> igt_plane_set_fb(data->primary[j], buffer1[j]);
> drmModeFreeConnector(conn);
> diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
> index 91455ed1dfb8..94bc99f4143f 100644
> --- a/tests/amdgpu/amd_multidisplay_modeset.c
> +++ b/tests/amdgpu/amd_multidisplay_modeset.c
> @@ -134,7 +134,7 @@ static void set_all_output_pipe_to_none(struct data_t *data)
> igt_output_t *output;
>
> for_each_connected_output(&data->display, output) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> igt_display_commit_atomic(&data->display,
> @@ -329,7 +329,8 @@ static void multiple_display_test(struct data_t *data, enum sub_test test_mode)
> kmode->vdisplay, DRM_FORMAT_XRGB8888,
> 0, (buf + j));
>
> - igt_output_set_pipe(output, j);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, j));
> igt_plane_set_fb(data->primary[j], (buf + j));
> j++;
> }
> diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
> index 483b30e8ac8f..0e0a55396b73 100644
> --- a/tests/amdgpu/amd_odm.c
> +++ b/tests/amdgpu/amd_odm.c
> @@ -77,7 +77,8 @@ static void test_init(struct data *data)
> "ODM Combine isn't supported on HDMI 1.x\n");
>
> data->primary = igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> igt_display_reset(display);
> }
> @@ -121,7 +122,8 @@ static void run_test_odmc(struct data *data, enum odmc_mode m, const drmModeMode
> DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
> &buffer);
>
> - igt_output_set_pipe(data->output, i);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, i));
>
> igt_plane_set_fb(data->primary, &buffer);
>
> diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
> index 0dbac17a6e7f..cb1fcab930e3 100644
> --- a/tests/amdgpu/amd_plane.c
> +++ b/tests/amdgpu/amd_plane.c
> @@ -566,7 +566,8 @@ static void test_multi_mpo_invalid(data_t *data)
> /* Skip test if we don't have 2 overlay planes */
> igt_skip_on(!data->overlay2[0]);
>
> - igt_output_set_pipe(data->output[0], data->pipe_id[0]);
> + igt_output_set_crtc(data->output[0],
> + igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
>
> igt_create_color_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, 1.0, 1.0, 1.0, &fb[0].test_primary);
> igt_create_fb(data->fd, w, h, DRM_FORMAT_NV12, 0, &fb[0].test_overlay);
> @@ -641,7 +642,8 @@ static void test_display_mpo(data_t *data, enum test test, uint32_t format, int
> h = data->h[n] = test_mode_3.vdisplay;
> }
>
> - igt_output_set_pipe(data->output[n], data->pipe_id[n]);
> + igt_output_set_crtc(data->output[n],
> + igt_crtc_for_pipe(data->output[n]->display, data->pipe_id[n]));
>
> igt_create_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, &fb[n].ref_primary);
> igt_create_color_fb(data->fd, w, h, DRM_FORMAT_XRGB8888, 0, 1.0, 1.0, 1.0, &fb[n].ref_primary);
> @@ -728,7 +730,8 @@ static void test_mpo_4k(data_t *data)
> draw_color_alpha(&o_fb, cutout_x, cutout_y, cutout_w, cutout_h,
> 0.00, 0.00, 0.00, 0.00);
>
> - igt_output_set_pipe(data->output[0], data->pipe_id[0]);
> + igt_output_set_crtc(data->output[0],
> + igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
> igt_plane_set_fb(data->primary[0], &r_fb);
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> @@ -793,8 +796,10 @@ static void test_mpo_swizzle_toggle_multihead(data_t *data)
> test_init(data);
>
> /* Initial modeset */
> - igt_output_set_pipe(data->output[0], data->pipe_id[0]);
> - igt_output_set_pipe(data->output[1], data->pipe_id[1]);
> + igt_output_set_crtc(data->output[0],
> + igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
> + igt_output_set_crtc(data->output[1],
> + igt_crtc_for_pipe(data->output[1]->display, data->pipe_id[1]));
> force_output_mode(data, data->output[0], &test_mode_1);
> force_output_mode(data, data->output[1], &test_mode_2);
>
> @@ -862,7 +867,8 @@ static void test_mpo_swizzle_toggle(data_t *data)
> test_init(data);
>
> /* Initial modeset */
> - igt_output_set_pipe(data->output[0], data->pipe_id[0]);
> + igt_output_set_crtc(data->output[0],
> + igt_crtc_for_pipe(data->output[0]->display, data->pipe_id[0]));
> force_output_mode(data, data->output[0], &test_mode_1);
>
> igt_plane_set_fb(data->primary[0], &fb_1920_xb24_linear);
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 789d243f8e86..9071a2e9d780 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -196,7 +196,8 @@ static void test_init(data_t *data)
> data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> @@ -330,7 +331,7 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
> if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)
> continue;
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> }
> @@ -371,7 +372,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
> igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
> .5, .5, .5, &ref_fb);
> igt_plane_set_fb(data->primary, &ref_fb);
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> /*
> @@ -410,7 +412,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
> draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, .5, .5, .5, .0);
> draw_color_alpha(&data->ov_fb[1], 0, 0, pm_w_scale, pm_h_scale, .5, .5, .5, .0);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_display_commit_atomic(&data->display, 0, NULL);
>
> /* multiplane overlay to emulate video playback use case */
> @@ -428,7 +431,8 @@ static void run_check_psr_su_mpo(data_t *data, bool scaling, float scaling_ratio
> igt_plane_set_fb(data->overlay, &data->ov_fb[1]);
> igt_plane_set_size(data->primary, pm_w_scale, pm_h_scale);
> }
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> ret = igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL);
> igt_require(ret == 0);
> @@ -486,7 +490,8 @@ static void panning_rect_fb(data_t *data, igt_fb_t *rect_fb, int rect_w, int rec
> igt_plane_set_fb(data->overlay, &data->ov_fb[i % 2]);
> igt_plane_set_fb(data->primary, rect_fb);
> igt_plane_set_size(data->primary, rect_w, rect_h);
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> ret = igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL);
> igt_require(ret == 0);
> @@ -512,7 +517,8 @@ static void run_check_psr_su_ffu(data_t *data)
> igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
> .5, .5, .5, &ref_fb);
> igt_plane_set_fb(data->primary, &ref_fb);
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> /*
> @@ -649,7 +655,8 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
> igt_plane_set_fb(data->cursor, &data->cs_fb);
> igt_plane_set_position(data->cursor, 0, 0);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> /*
> diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
> index 8b194f797938..38fe80a236f6 100644
> --- a/tests/amdgpu/amd_replay.c
> +++ b/tests/amdgpu/amd_replay.c
> @@ -77,7 +77,8 @@ static void test_init(struct test_data *data)
> data->primary =
> igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> data->w = data->mode->hdisplay;
> data->h = data->mode->vdisplay;
> diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
> index a0a546a3e398..0998a0c960d0 100644
> --- a/tests/amdgpu/amd_subvp.c
> +++ b/tests/amdgpu/amd_subvp.c
> @@ -141,7 +141,8 @@ static void test_subvp(struct data *data)
> 0,
> &rfb);
>
> - igt_output_set_pipe(output, data->pipe_id[i]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_id[i]));
> igt_plane_set_fb(data->primary[i], &rfb);
> igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, 0);
> }
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index 195556c9368c..72c02dbbc339 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -84,7 +84,7 @@ static bool test_pipe_degamma(data_t *data,
>
> degamma_full = generate_table_max(data->degamma_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
>
> /* Create a framebuffer at the size of the output. */
> fb_id = igt_create_fb(data->drm_fd,
> @@ -140,7 +140,7 @@ static bool test_pipe_degamma(data_t *data,
>
> disable_degamma(primary->pipe);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> free_lut(degamma_full);
>
> @@ -173,7 +173,7 @@ static bool test_pipe_gamma(data_t *data,
>
> gamma_full = generate_table_max(data->gamma_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
>
> /* Create a framebuffer at the size of the output. */
> fb_id = igt_create_fb(data->drm_fd,
> @@ -229,7 +229,7 @@ static bool test_pipe_gamma(data_t *data,
>
> disable_gamma(primary->pipe);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> free_lut(gamma_full);
>
> @@ -260,7 +260,7 @@ static bool test_pipe_ctm(data_t *data,
> degamma_linear = generate_table(data->degamma_lut_size, 1.0);
> gamma_linear = generate_table(data->gamma_lut_size, 1.0);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
>
> /* Create a framebuffer at the size of the output. */
> fb_id = igt_create_fb(data->drm_fd,
> @@ -324,7 +324,7 @@ static bool test_pipe_ctm(data_t *data,
> igt_plane_set_fb(primary, NULL);
> disable_degamma(primary->pipe);
> disable_gamma(primary->pipe);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> free_lut(degamma_linear);
> free_lut(gamma_linear);
> @@ -363,7 +363,7 @@ static bool test_pipe_limited_range_ctm(data_t *data,
> degamma_linear = generate_table(data->degamma_lut_size, 1.0);
> gamma_linear = generate_table(data->gamma_lut_size, 1.0);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
>
> /* Create a framebuffer at the size of the output. */
> fb_id0 = igt_create_fb(data->drm_fd,
> @@ -415,7 +415,7 @@ static bool test_pipe_limited_range_ctm(data_t *data,
> IGT_CONNECTOR_BROADCAST_RGB,
> BROADCAST_RGB_FULL);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> /* Verify frame dumps are equal. */
> ret = chamelium_frame_match_or_dump_frame_pair(data->chamelium, port,
> diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
> index 566a4f0ac886..5b1a063fffbe 100644
> --- a/tests/chamelium/kms_chamelium_edid.c
> +++ b/tests/chamelium/kms_chamelium_edid.c
> @@ -303,7 +303,8 @@ static void edid_stress_resolution(chamelium_data_t *data,
> chamelium_create_fb_for_mode(data, &fb, &mode);
> output = chamelium_get_output_for_port(data, port);
> pipe = chamelium_get_pipe_for_output(&data->display, output);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> chamelium_enable_output(data, port, output, &mode, &fb);
>
> /* Capture the screen resolution and verify. */
> @@ -357,7 +358,7 @@ static void edid_resolution_list(chamelium_data_t *data,
>
> output = chamelium_get_output_for_port(data, port);
> pipe = chamelium_get_pipe_for_output(&data->display, output);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> for (i = 0; i < count_modes; ++i)
> igt_debug("#%d %s %uHz\n", i, modes[i].name, modes[i].vrefresh);
> diff --git a/tests/chamelium/kms_chamelium_helper.c b/tests/chamelium/kms_chamelium_helper.c
> index 26c5f87f151b..328ff9292d0d 100644
> --- a/tests/chamelium/kms_chamelium_helper.c
> +++ b/tests/chamelium/kms_chamelium_helper.c
> @@ -150,10 +150,10 @@ igt_output_t *chamelium_prepare_output(chamelium_data_t *data,
> output = chamelium_get_output_for_port(data, port);
>
> /* Refresh pipe to update connected status */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> pipe = chamelium_get_pipe_for_output(display, output);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> return output;
> }
> @@ -207,14 +207,15 @@ enum pipe chamelium_get_pipe_for_output(igt_display_t *display,
> enum pipe pipe;
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> return pipe;
> }
>
> diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
> index d1460533f276..8f13b380a46b 100644
> --- a/tests/chamelium/kms_chamelium_hpd.c
> +++ b/tests/chamelium/kms_chamelium_hpd.c
> @@ -266,7 +266,8 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
> chamelium_create_fb_for_mode(data, &fb, &mode);
> }
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> chamelium_enable_output(data, port, output, &mode, &fb);
> }
>
> @@ -279,7 +280,7 @@ static void test_hotplug(chamelium_data_t *data, struct chamelium_port *port,
> igt_flush_uevents(mon);
>
> if (modeset_mode == TEST_MODESET_ON_OFF) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> }
> @@ -315,7 +316,8 @@ static void test_hotplug_for_each_pipe(chamelium_data_t *data,
> output = chamelium_get_output_for_port(data, port);
>
> /* If pipe is valid for output then set it */
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (intel_pipe_output_combo_valid(&data->display))
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
> index 25e0275630f0..0507ad7ac38a 100644
> --- a/tests/chamelium/kms_chamelium_sharpness_filter.c
> +++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
> @@ -42,10 +42,11 @@ static bool pipe_output_combo_valid(data_t *data, enum pipe pipe)
> {
> bool ret = true;
>
> - igt_output_set_pipe(data->output, pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> ret = false;
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
>
> return ret;
> }
> @@ -102,7 +103,7 @@ static void destroy_frame_dumps(struct chamelium_frame_dump *frames[], int count
> static void cleanup(data_t *data)
> {
> igt_remove_fb(data->drm_fd, &data->fb);
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_output_override_mode(data->output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> @@ -115,7 +116,8 @@ static void test_t(data_t *data, igt_plane_t *primary,
> int height, width;
> bool match[4], match_ok = false;
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> mode = igt_output_get_mode(data->output);
> height = mode->hdisplay;
> diff --git a/tests/drm_read.c b/tests/drm_read.c
> index 151294fa710f..c44e207f7dd8 100644
> --- a/tests/drm_read.c
> +++ b/tests/drm_read.c
> @@ -299,7 +299,8 @@ int igt_main()
> DRM_FORMAT_XRGB8888,
> DRM_FORMAT_MOD_LINEAR, &fb);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), &fb);
> break;
> }
> diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
> index 0d4aa1bd33cb..2191274ae8d3 100644
> --- a/tests/intel/gem_eio.c
> +++ b/tests/intel/gem_eio.c
> @@ -1041,7 +1041,8 @@ static void display_helper(igt_display_t *dpy, int *done)
> if (!output)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> if (fb.width != mode->hdisplay || fb.height != mode->vdisplay) {
> diff --git a/tests/intel/gem_exec_reloc.c b/tests/intel/gem_exec_reloc.c
> index 5b51d7b384bb..eecc201308c2 100644
> --- a/tests/intel/gem_exec_reloc.c
> +++ b/tests/intel/gem_exec_reloc.c
> @@ -1517,7 +1517,8 @@ static void scanout(int i915,
>
> output = igt_get_single_output_for_pipe(dpy, PIPE_A);
> igt_require(output);
> - igt_output_set_pipe(output, PIPE_A);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, PIPE_A));
>
> /*
> * Find where the scanout is in our GTT; on !full-ppgtt this will be
> diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
> index 49edf744f943..9c1d724ac3cc 100644
> --- a/tests/intel/gem_pxp.c
> +++ b/tests/intel/gem_pxp.c
> @@ -1229,7 +1229,8 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
>
> igt_plane_set_fb(plane, &ref_fb);
> igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
> @@ -1248,7 +1249,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> IGT_PIPE_CRC_SOURCE_AUTO);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(pipe->pipe, output));
> - igt_output_set_pipe(output, pipe->pipe);
> + igt_output_set_crtc(output, pipe);
>
> igt_plane_set_fb(plane, &ref_fb);
> igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index 7316547d276d..1ddda65e4ab6 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -536,7 +536,8 @@ static bool test_pipe(data_t *data)
> igt_create_fb(data->drm_fd, width, height,
> data->format, data->modifier, &data->small_fb);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
> @@ -595,7 +596,8 @@ max_hw_stride_async_flip_test(data_t *data)
> igt_info("Using (pipe %s + %s) to run the subtest.\n",
> kmstest_pipe_name(data->pipe), igt_output_name(data->output));
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
>
> @@ -708,7 +710,8 @@ static void test_scanout(data_t *data)
> for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
> igt_display_reset(&data->display);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> @@ -905,7 +908,7 @@ static void test_cleanup(data_t *data)
> return;
>
> igt_pipe_crc_free(data->pipe_crc);
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_remove_fb(data->drm_fd, &data->big_fb);
> igt_remove_fb(data->drm_fd, &data->big_fb_flip[0]);
> igt_remove_fb(data->drm_fd, &data->big_fb_flip[1]);
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index 53ed4b39813b..c38d45dd020d 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -79,7 +79,7 @@ set_fb_on_crtc(igt_display_t *dpy, int pipe,
> drmModeModeInfoPtr mode;
> igt_plane_t *primary;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
> @@ -101,7 +101,7 @@ static void do_cleanup_display(igt_display_t *dpy)
> igt_plane_set_fb(plane, NULL);
>
> for_each_connected_output(dpy, output)
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> }
> @@ -134,7 +134,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
> DRM_MODE_PAGE_FLIP_EVENT, fb));
> else {
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit_atomic(dpy,
> DRM_MODE_ATOMIC_NONBLOCK |
> DRM_MODE_PAGE_FLIP_EVENT |
> @@ -163,7 +163,8 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
> /* Clear old mode blob. */
> igt_pipe_refresh(dpy, pipe, true);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_display_commit2(dpy, COMMIT_ATOMIC);
> }
>
> @@ -287,13 +288,14 @@ static void test_hang(igt_display_t *dpy,
>
> if (modeset) {
> /* Test modeset disable with hang */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_plane_set_fb(primary, &fb[1]);
> test_atomic_commit_hang(dpy, primary, &fb[hang_newfb]);
>
> /* Test modeset enable with hang */
> igt_plane_set_fb(primary, &fb[0]);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> test_atomic_commit_hang(dpy, primary, &fb[!hang_newfb]);
> } else {
> /*
> @@ -339,7 +341,7 @@ test_pageflip_modeset_hang(igt_display_t *dpy,
>
> /* Kill crtc with hung fb */
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_assert(read(dpy->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
> @@ -357,10 +359,10 @@ pipe_output_combo_valid(igt_display_t *dpy,
>
> igt_display_reset(dpy);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(dpy))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
> index 9087c6a38680..6512e206f047 100644
> --- a/tests/intel/kms_ccs.c
> +++ b/tests/intel/kms_ccs.c
> @@ -1153,7 +1153,8 @@ static void test_output(data_t *data, const int testnum)
> for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
> igt_display_reset(&data->display);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> index 3aeaba226cda..441ffa200e64 100644
> --- a/tests/intel/kms_cdclk.c
> +++ b/tests/intel/kms_cdclk.c
> @@ -123,7 +123,7 @@ static void do_cleanup_display(igt_display_t *dpy)
> igt_plane_set_fb(plane, NULL);
>
> for_each_connected_output(dpy, output)
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> }
> @@ -143,7 +143,8 @@ static void test_plane_scaling(data_t *data, enum pipe pipe, igt_output_t *outpu
> do_cleanup_display(display);
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> mode = *igt_output_get_highres_mode(output);
> igt_require_f(is_4k(mode), "Mode >= 4K not found on output %s\n",
> igt_output_name(output));
> @@ -193,7 +194,7 @@ static void test_mode_transition(data_t *data, enum pipe pipe, igt_output_t *out
> do_cleanup_display(display);
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
> mode_lo = *get_lowres_mode(output);
> mode_hi = *igt_output_get_highres_mode(output);
> @@ -292,7 +293,8 @@ static void test_mode_transition_on_all_outputs(data_t *data)
> width = max(width, mode->hdisplay);
> height = max(height, mode->vdisplay);
>
> - igt_output_set_pipe(valid_outputs[i], i);
> + igt_output_set_crtc(valid_outputs[i],
> + igt_crtc_for_pipe(valid_outputs[i]->display, i));
> igt_output_override_mode(valid_outputs[i], &mode_highres[i]);
> }
>
> @@ -325,9 +327,10 @@ static void run_cdclk_test(data_t *data, uint32_t flags)
> enum pipe pipe;
>
> for_each_pipe_with_valid_output(display, pipe, output) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
> index 758d6fd8965d..5697afb2b3e1 100644
> --- a/tests/intel/kms_dirtyfb.c
> +++ b/tests/intel/kms_dirtyfb.c
> @@ -229,7 +229,8 @@ static void prepare(data_t *data)
> {
> igt_plane_t *primary;
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
> @@ -287,7 +288,7 @@ static void cleanup(data_t *data)
>
> igt_pipe_crc_free(data->pipe_crc);
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
>
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> @@ -394,7 +395,8 @@ int igt_main()
> continue;
>
> igt_display_reset(&data.display);
> - igt_output_set_pipe(data.output, data.pipe);
> + igt_output_set_crtc(data.output,
> + igt_crtc_for_pipe(data.output->display, data.pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/intel/kms_dp_linktrain_fallback.c b/tests/intel/kms_dp_linktrain_fallback.c
> index 10c4d9e65ebf..5e6ba922420c 100644
> --- a/tests/intel/kms_dp_linktrain_fallback.c
> +++ b/tests/intel/kms_dp_linktrain_fallback.c
> @@ -103,7 +103,8 @@ static void setup_pipe_on_outputs(data_t *data,
> igt_info("Setting pipe %s on output %s\n",
> kmstest_pipe_name(data->pipe),
> igt_output_name(outputs[i]));
> - igt_output_set_pipe(outputs[i], data->pipe);
> + igt_output_set_crtc(outputs[i],
> + igt_crtc_for_pipe(outputs[i]->display, data->pipe));
> i++;
> }
> }
> @@ -479,7 +480,8 @@ static void test_dsc_sst_fallback(data_t *data)
> DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
> &data->fb);
> igt_output_override_mode(data->output, data->mode);
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> data->primary = igt_output_get_plane_type(data->output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(data->primary, &data->fb);
> diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
> index 020a2ad8674f..6f9786ba2454 100644
> --- a/tests/intel/kms_draw_crc.c
> +++ b/tests/intel/kms_draw_crc.c
> @@ -98,7 +98,8 @@ static void find_modeset_params(void)
> for_each_pipe_with_valid_output(&display, pipe, output) {
> igt_display_reset(&display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&display))
> continue;
>
> diff --git a/tests/intel/kms_dsc.c b/tests/intel/kms_dsc.c
> index 1bb79bbcbbb6..e70cae2524a8 100644
> --- a/tests/intel/kms_dsc.c
> +++ b/tests/intel/kms_dsc.c
> @@ -122,7 +122,7 @@ static void test_cleanup(data_t *data)
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_remove_fb(data->drm_fd, &data->fb_test_pattern);
> }
>
> @@ -164,7 +164,8 @@ static void update_display(data_t *data, uint32_t test_type)
> force_dsc_fractional_bpp_enable(data->drm_fd, data->output);
> }
>
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> igt_skip_on(!igt_plane_has_format_mod(primary, data->plane_format,
> diff --git a/tests/intel/kms_fb_coherency.c b/tests/intel/kms_fb_coherency.c
> index e1344b97bc0a..59bc29d19177 100644
> --- a/tests/intel/kms_fb_coherency.c
> +++ b/tests/intel/kms_fb_coherency.c
> @@ -47,7 +47,8 @@ static void prepare_crtc(data_t *data)
>
> igt_display_reset(display);
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -144,7 +145,7 @@ static void cleanup_crtc(data_t *data)
>
> igt_plane_set_fb(data->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(data->drm_fd, &data->fb[0]);
> @@ -226,7 +227,8 @@ static void select_valid_pipe_output_combo(data_t *data)
> for_each_pipe_with_valid_output(display, data->pipe, data->output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> if (intel_pipe_output_combo_valid(display))
> return;
> }
> diff --git a/tests/intel/kms_fbc_dirty_rect.c b/tests/intel/kms_fbc_dirty_rect.c
> index 06ac749d7a27..e063493ef4f4 100644
> --- a/tests/intel/kms_fbc_dirty_rect.c
> +++ b/tests/intel/kms_fbc_dirty_rect.c
> @@ -397,7 +397,7 @@ static void cleanup(data_t *data)
>
> igt_pipe_crc_free(data->pipe_crc);
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
>
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> @@ -407,7 +407,8 @@ static bool prepare_test(data_t *data)
> igt_display_reset(&data->display);
>
> data->mode = igt_output_get_mode(data->output);
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> diff --git a/tests/intel/kms_fence_pin_leak.c b/tests/intel/kms_fence_pin_leak.c
> index 2e3165300eb8..15ae038d8b08 100644
> --- a/tests/intel/kms_fence_pin_leak.c
> +++ b/tests/intel/kms_fence_pin_leak.c
> @@ -141,7 +141,7 @@ static void run_single_test(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_info("Using (pipe %s + %s) to run the subtest.\n",
> kmstest_pipe_name(pipe), igt_output_name(output));
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> @@ -197,7 +197,7 @@ static void run_single_test(data_t *data, enum pipe pipe, igt_output_t *output)
> }
>
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(data->drm_fd, &fb[1]);
> @@ -215,7 +215,8 @@ static void run_test(data_t *data)
> for_each_pipe_with_valid_output(display, p, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, p);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, p));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> index dd5967c91486..d9452dff0b84 100644
> --- a/tests/intel/kms_flip_scaled_crc.c
> +++ b/tests/intel/kms_flip_scaled_crc.c
> @@ -611,7 +611,7 @@ static void test_flip_to_scaled(data_t *data, uint32_t index,
> if (modetoset)
> igt_output_override_mode(output, modetoset);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> @@ -676,7 +676,7 @@ static void test_flip_to_scaled(data_t *data, uint32_t index,
> clear_lut(data, pipe);
>
> modetoset = NULL;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_plane_set_fb(primary, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
> @@ -750,7 +750,8 @@ int igt_main()
> igt_display_reset(&data.display);
>
> modetoset = find_mode(&data, output);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_output_override_mode(output, modetoset);
>
> if (modetoset && intel_pipe_output_combo_valid(&data.display)) {
> @@ -764,7 +765,8 @@ int igt_main()
> for_each_valid_output_on_pipe(&data.display, pipe, output) {
> igt_display_reset(&data.display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/intel/kms_flip_tiling.c b/tests/intel/kms_flip_tiling.c
> index 9bcaacb826b1..e7ada7740cd2 100644
> --- a/tests/intel/kms_flip_tiling.c
> +++ b/tests/intel/kms_flip_tiling.c
> @@ -176,7 +176,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> /* Clean up. */
> igt_plane_set_fb(primary, NULL);
> pipe_crc_free(data);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_remove_fb(data->drm_fd, &data->fb[0]);
> igt_remove_fb(data->drm_fd, &data->fb[1]);
> @@ -234,7 +234,8 @@ int igt_main()
> igt_display_reset(&data.display);
> pipe_crc_free(&data);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> index 069f03a6c9f1..f2e7c72f6f4c 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -1169,7 +1169,8 @@ static bool find_connector(bool edp_only, bool pipe_a,
> continue;
>
> if (output == forbidden_output || pipe == forbidden_pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_output_override_mode(output, connector_get_mode(output));
>
> continue;
> @@ -1178,7 +1179,8 @@ static bool find_connector(bool edp_only, bool pipe_a,
> if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_output_override_mode(output, connector_get_mode(output));
> if (intel_pipe_output_combo_valid(&drm.display)) {
> *ret_output = output;
> @@ -1480,7 +1482,8 @@ static void __set_prim_plane_for_params(struct modeset_params *params)
> static void __set_mode_for_params(struct modeset_params *params)
> {
> igt_output_override_mode(params->output, ¶ms->mode);
> - igt_output_set_pipe(params->output, params->pipe);
> + igt_output_set_crtc(params->output,
> + igt_crtc_for_pipe(params->output->display, params->pipe));
>
> __set_prim_plane_for_params(params);
> }
> @@ -1939,7 +1942,8 @@ static void init_blue_crc(enum pixel_format format, enum tiling_type tiling)
>
> fill_fb(&blue, COLOR_PRIM_BG);
>
> - igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> + igt_output_set_crtc(prim_mode_params.output,
> + igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
> igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> igt_plane_set_fb(prim_mode_params.primary.plane, &blue);
> igt_display_commit(&drm.display);
> @@ -1994,7 +1998,8 @@ static void init_crcs(enum pixel_format format, enum tiling_type tiling,
> IGT_DRAW_PWRITE : IGT_DRAW_BLT, r);
> }
>
> - igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> + igt_output_set_crtc(prim_mode_params.output,
> + igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
> igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> for (r = 0; r < pattern->n_rects; r++) {
> igt_plane_set_fb(prim_mode_params.primary.plane, &tmp_fbs[r]);
> @@ -2400,8 +2405,10 @@ static void update_modeset_cached_params(enum igt_draw_method method)
> {
> bool found = false;
>
> - igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> - igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
> + igt_output_set_crtc(prim_mode_params.output,
> + igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
> + igt_output_set_crtc(scnd_mode_params.output,
> + igt_crtc_for_pipe(scnd_mode_params.output->display, scnd_mode_params.pipe));
>
> found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
> igt_require_f(found, "No valid mode combo found.\n");
> @@ -2724,7 +2731,8 @@ static void plane_fbc_rte_subtest(const struct test_mode *t)
> do_assertions(ASSERT_FBC_DISABLED | DONT_ASSERT_CRC);
>
> igt_output_override_mode(prim_mode_params.output, &prim_mode_params.mode);
> - igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> + igt_output_set_crtc(prim_mode_params.output,
> + igt_crtc_for_pipe(prim_mode_params.output->display, prim_mode_params.pipe));
>
> wanted_crc = &blue_crcs[t->format].crc;
>
> diff --git a/tests/intel/kms_joiner.c b/tests/intel/kms_joiner.c
> index bf77f6626f5b..c34a73908100 100644
> --- a/tests/intel/kms_joiner.c
> +++ b/tests/intel/kms_joiner.c
> @@ -152,7 +152,7 @@ static enum pipe setup_pipe(data_t *data, igt_output_t *output, enum pipe pipe,
>
> igt_info("Using pipe %s as master and %s slave for %s\n", kmstest_pipe_name(pipe),
> kmstest_pipe_name(pipe + 1), output->name);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> return master_pipe;
> }
> @@ -165,7 +165,8 @@ static void set_joiner_mode(data_t *data, igt_output_t *output, drmModeModeInfo
> igt_info("Committing joiner mode for output %s with mode %dx%d@%d\n",
> output->name, mode->hdisplay, mode->vdisplay, mode->vrefresh);
>
> - igt_output_set_pipe(output, PIPE_A);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, PIPE_A));
> igt_output_override_mode(output, mode);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
> @@ -351,7 +352,8 @@ static void test_invalid_modeset_two_joiner(data_t *data,
> mode = *igt_output_get_mode(output);
> }
>
> - igt_output_set_pipe(output, data->pipe_seq[i + j]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_seq[i + j]));
> igt_info("Assigning pipe %s to %s with mode %dx%d@%d%s",
> kmstest_pipe_name(data->pipe_seq[i + j]),
> igt_output_name(output), mode.hdisplay,
> @@ -398,7 +400,8 @@ static void test_joiner_on_last_pipe(data_t *data, bool force_joiner)
> mode = *igt_output_get_mode(output);
> }
>
> - igt_output_set_pipe(output, data->pipe_seq[data->n_pipes - 1]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_seq[data->n_pipes - 1]));
> igt_info(" Assigning pipe %s to %s with mode %dx%d@%d\n",
> kmstest_pipe_name(data->pipe_seq[data->n_pipes - 1]),
> igt_output_name(output), mode.hdisplay,
> @@ -454,7 +457,8 @@ static void test_ultra_joiner(data_t *data, bool invalid_pipe, bool two_display,
> if (two_display && j != PIPE_A)
> continue;
>
> - igt_output_set_pipe(output, data->pipe_seq[j]);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe_seq[j]));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_create_pattern_fb(data->drm_fd, mode.hdisplay, mode.vdisplay, DRM_FORMAT_XRGB8888,
> @@ -475,7 +479,8 @@ static void test_ultra_joiner(data_t *data, bool invalid_pipe, bool two_display,
>
> mode1 = igt_output_get_mode(non_ultra_joiner_output);
>
> - igt_output_set_pipe(non_ultra_joiner_output, data->pipe_seq[k]);
> + igt_output_set_crtc(non_ultra_joiner_output,
> + igt_crtc_for_pipe(non_ultra_joiner_output->display, data->pipe_seq[k]));
> plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> igt_plane_set_fb(plane, &fb);
> @@ -521,7 +526,8 @@ static void test_basic_max_non_joiner(data_t *data)
>
> for (pipe = 0; pipe < data->n_pipes; pipe++) {
> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_require(max_non_joiner_mode_found(data->drm_fd,
> output->config.connector,
> max_dotclock, &mode));
> diff --git a/tests/intel/kms_joiner_helper.c b/tests/intel/kms_joiner_helper.c
> index a59efcd1217a..7dd87c5c36ea 100644
> --- a/tests/intel/kms_joiner_helper.c
> +++ b/tests/intel/kms_joiner_helper.c
> @@ -168,11 +168,13 @@ bool igt_assign_pipes_for_outputs(int drm_fd,
> out->name);
> return false;
> }
> - igt_output_set_pipe(out, start);
> + igt_output_set_crtc(out,
> + igt_crtc_for_pipe(out->display, start));
> igt_debug("Using pipe %s as master.\n",
> kmstest_pipe_name(start));
> } else
> - igt_output_set_pipe(out, start);
> + igt_output_set_crtc(out,
> + igt_crtc_for_pipe(out->display, start));
>
> for (i = 0; i < needed; i++)
> *used_pipes_mask |= BIT(start + i);
> diff --git a/tests/intel/kms_mmap_write_crc.c b/tests/intel/kms_mmap_write_crc.c
> index ad3dd1b20333..98a3ca4edd99 100644
> --- a/tests/intel/kms_mmap_write_crc.c
> +++ b/tests/intel/kms_mmap_write_crc.c
> @@ -193,7 +193,8 @@ static void prepare_crtc(data_t *data)
> igt_display_reset(display);
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -227,7 +228,7 @@ static void cleanup_crtc(data_t *data)
>
> igt_plane_set_fb(data->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(data->drm_fd, &data->fb[0]);
> @@ -296,7 +297,8 @@ int igt_main_args("n", NULL, NULL, opt_handler, NULL)
> for_each_pipe_with_valid_output(&data.display, pipe, output) {
> igt_display_reset(&data.display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/intel/kms_pipe_b_c_ivb.c b/tests/intel/kms_pipe_b_c_ivb.c
> index 2dde4660e77c..4559c8b9e951 100644
> --- a/tests/intel/kms_pipe_b_c_ivb.c
> +++ b/tests/intel/kms_pipe_b_c_ivb.c
> @@ -102,7 +102,7 @@ disable_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> igt_plane_t *primary;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> primary = igt_output_get_plane(output, 0);
> igt_plane_set_fb(primary, NULL);
> return igt_display_commit(&data->display);
> @@ -116,7 +116,7 @@ set_mode_on_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> struct igt_fb fb;
> int fb_id;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -162,7 +162,7 @@ find_outputs(data_t *data, igt_output_t **output1, igt_output_t **output2)
> if (pipe == PIPE_C && output != *output1 && !*output2)
> *output2 = output;
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> igt_skip_on_f(!*output1 || !*output2, "Not enough connected outputs\n");
> diff --git a/tests/intel/kms_pipe_stress.c b/tests/intel/kms_pipe_stress.c
> index 7d212a07cb75..e8e01556ba25 100644
> --- a/tests/intel/kms_pipe_stress.c
> +++ b/tests/intel/kms_pipe_stress.c
> @@ -343,7 +343,7 @@ static int commit_mode(struct data *data, igt_output_t *output,
> int ret;
>
> igt_output_override_mode(output, mode);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> ret = igt_display_try_commit_atomic(&data->display,
> DRM_MODE_ATOMIC_TEST_ONLY |
> diff --git a/tests/intel/kms_pm_backlight.c b/tests/intel/kms_pm_backlight.c
> index 7d62d0503d51..360887f1772f 100644
> --- a/tests/intel/kms_pm_backlight.c
> +++ b/tests/intel/kms_pm_backlight.c
> @@ -166,7 +166,7 @@ check_suspend(igt_output_t *output)
>
> static void test_cleanup(igt_display_t *display, igt_output_t *output)
> {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> igt_pm_restore_sata_link_power_management();
> }
> @@ -181,9 +181,10 @@ static void test_setup(igt_display_t display, igt_output_t *output)
> igt_display_reset(&display);
>
> for_each_pipe(&display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
> mode = igt_output_get_mode(output);
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index 8cc260fac0e5..5e59ba6e03a3 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -135,7 +135,8 @@ static void set_output_on_pipe_b(data_t *data)
> if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -169,7 +170,8 @@ static void setup_output(data_t *data)
> if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> data->output = output;
> data->mode = igt_output_get_mode(output);
>
> @@ -678,7 +680,7 @@ static void test_deep_pkgc_state(data_t *data)
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> for_each_connector_mode(output) {
> data->mode = &output->config.connector->modes[j__];
> delay = (MSEC / (data->mode->vrefresh));
> diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
> index 07916d42cb85..a8801261dafa 100644
> --- a/tests/intel/kms_pm_lpsp.c
> +++ b/tests/intel/kms_pm_lpsp.c
> @@ -105,7 +105,7 @@ static void screens_disabled_subtest(data_t *data)
>
> for (int i = 0; i < data->display.n_outputs; i++) {
> data->output = &data->display.outputs[i];
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_display_commit(&data->display);
> valid_output++;
> }
> @@ -145,7 +145,7 @@ static void test_cleanup(data_t *data)
> primary = igt_output_get_plane_type(data->output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(data->drm_fd, &data->fb);
> data->output = NULL;
> @@ -156,7 +156,8 @@ static bool test_constraint(data_t *data)
> drmModeModeInfo *mode;
>
> igt_display_reset(&data->display);
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> mode = igt_output_get_mode(data->output);
>
> diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
> index c5948f18ce41..d7d0989b9a67 100644
> --- a/tests/intel/kms_pm_rpm.c
> +++ b/tests/intel/kms_pm_rpm.c
> @@ -1629,7 +1629,8 @@ static void set_prefered_mode(void)
>
> for_each_pipe_with_valid_output(display, pipe, output) {
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (!intel_pipe_output_combo_valid(display))
> continue;
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index 7b93608f3e4a..8bb4b15482ae 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -697,10 +697,11 @@ static enum pipe get_pipe_for_output(igt_display_t *display,
> enum pipe pipe;
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
> index 61a195a45d2a..f42863874e5e 100644
> --- a/tests/intel/kms_psr2_sf.c
> +++ b/tests/intel/kms_psr2_sf.c
> @@ -424,11 +424,12 @@ static void prepare(data_t *data)
> if (data->coexist_feature & FEATURE_DSC) {
> save_force_dsc_en(data->drm_fd, output);
> force_dsc_enable(data->drm_fd, output);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
>
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> if (data->big_fb_test) {
> fb_w = data->big_fb_width;
> @@ -1045,7 +1046,7 @@ static void cleanup(data_t *data)
> if (data->coexist_feature & FEATURE_DSC)
> restore_force_dsc_en();
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> @@ -1082,10 +1083,10 @@ pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
> index fd0963ab7d3d..24318037ea44 100644
> --- a/tests/intel/kms_psr2_su.c
> +++ b/tests/intel/kms_psr2_su.c
> @@ -127,7 +127,8 @@ static void setup_output(data_t *data)
> continue;
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -300,7 +301,7 @@ static int check_psr2_support(data_t *data, enum pipe pipe)
>
> igt_display_reset(display);
> output = data->output;
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> prepare(data, output);
> status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2, output);
> @@ -372,7 +373,8 @@ int igt_main()
> for (i = 0; i < n_pipes; i++) {
> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> igt_output_name(outputs[i])) {
> - igt_output_set_pipe(outputs[i], pipes[i]);
> + igt_output_set_crtc(outputs[i],
> + igt_crtc_for_pipe(outputs[i]->display, pipes[i]));
> if (data.op == FRONTBUFFER &&
> intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
> /*
> diff --git a/tests/intel/kms_psr_stress_test.c b/tests/intel/kms_psr_stress_test.c
> index 8fe4a25d74ff..87016eb94f4f 100644
> --- a/tests/intel/kms_psr_stress_test.c
> +++ b/tests/intel/kms_psr_stress_test.c
> @@ -94,9 +94,10 @@ static void setup_output(data_t *data)
> continue;
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/intel/kms_pwrite_crc.c b/tests/intel/kms_pwrite_crc.c
> index 03944c201f61..d1cd9674381c 100644
> --- a/tests/intel/kms_pwrite_crc.c
> +++ b/tests/intel/kms_pwrite_crc.c
> @@ -124,7 +124,8 @@ static void prepare_crtc(data_t *data)
> drmModeModeInfo *mode;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -158,7 +159,7 @@ static void cleanup_crtc(data_t *data)
>
> igt_plane_set_fb(data->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(data->drm_fd, &data->fb[0]);
> @@ -173,7 +174,8 @@ static void run_test(data_t *data)
> for_each_pipe_with_valid_output(display, data->pipe, data->output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index 3714153276b0..c1242e8d514c 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -445,10 +445,11 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
> continue;
> }
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> continue;
> }
>
> diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
> index 5d96f91a6704..57113981d70a 100644
> --- a/tests/intel/perf_pmu.c
> +++ b/tests/intel/perf_pmu.c
> @@ -1050,7 +1050,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_plane_t *primary;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> /* create and set the primary plane fb */
> mode = igt_output_get_mode(output);
> @@ -1078,7 +1079,7 @@ static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
> }
>
> diff --git a/tests/intel/prime_mmap_kms.c b/tests/intel/prime_mmap_kms.c
> index 37bc174a5c1e..c19c3763fc04 100644
> --- a/tests/intel/prime_mmap_kms.c
> +++ b/tests/intel/prime_mmap_kms.c
> @@ -161,7 +161,7 @@ static void cleanup_crtc(gpu_process_t *gpu)
>
> igt_plane_set_fb(gpu->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(gpu->drm_fd, &gpu->fb);
> @@ -174,7 +174,8 @@ static void prepare_crtc(gpu_process_t *gpu)
> drmModeModeInfo *mode;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, gpu->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, gpu->pipe));
>
> mode = igt_output_get_mode(output);
>
> diff --git a/tests/intel/xe_pat.c b/tests/intel/xe_pat.c
> index 193b63a1d079..2fd3635fdc5c 100644
> --- a/tests/intel/xe_pat.c
> +++ b/tests/intel/xe_pat.c
> @@ -852,7 +852,8 @@ static void display_vs_wb_transient(int fd)
> for_each_pipe_with_valid_output(&display, pipe, output) {
> igt_display_reset(&display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&display))
> continue;
>
> diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
> index 351897e1ce68..b525bff8da0b 100644
> --- a/tests/intel/xe_pxp.c
> +++ b/tests/intel/xe_pxp.c
> @@ -850,7 +850,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
> IGT_PIPE_CRC_SOURCE_AUTO);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(pipe->pipe, output));
> - igt_output_set_pipe(output, pipe->pipe);
> + igt_output_set_crtc(output, pipe);
>
> commit_fb(display, plane, ref_fb, mode);
> igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
> @@ -905,7 +905,8 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
> pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
>
> commit_fb(display, plane, &ref_fb, mode);
>
> @@ -962,7 +963,8 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
> pipe = igt_crtc_for_pipe(display, i);
> plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_require(igt_pipe_connector_valid(i, output));
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
>
> igt_plane_set_fb(plane, &ref_fb);
> igt_fb_set_size(&ref_fb, plane, mode->hdisplay, mode->vdisplay);
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 6762f172c4fa..71570385c32e 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -302,7 +302,8 @@ static void test_init(data_t *data)
> data->crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
> data->refresh_rate = mode->vrefresh;
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> data->plane = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
> if (data->overlay_path)
> @@ -915,7 +916,8 @@ static void run_test(data_t *data, void (*test)(data_t *))
> for_each_pipe_with_valid_output(display, data->pipe, data->output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 01a058673913..236c1d5445e2 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -677,7 +677,7 @@ static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32
> mode->hdisplay, mode->vdisplay,
> format, I915_TILING_NONE, &fb);
> igt_plane_set_fb(data->primary, &fb);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> @@ -696,7 +696,7 @@ static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32
> crtc_get_current_state(data->pipe, old_crtc_values);
>
> igt_plane_set_fb(data->primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>
> @@ -1331,7 +1331,7 @@ static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> drmModeModeInfo *mode;
> igt_display_reset(&data->display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> data->primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> DRM_PLANE_TYPE_PRIMARY);
> @@ -1357,7 +1357,7 @@ static void atomic_clear(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_plane_set_position(plane, 0, 0);
> }
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE);
> igt_remove_fb(data->drm_fd, &data->fb);
> }
> @@ -1376,10 +1376,10 @@ pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
> index 9bce0bf1f829..b519fc635a54 100644
> --- a/tests/kms_atomic_interruptible.c
> +++ b/tests/kms_atomic_interruptible.c
> @@ -85,7 +85,7 @@ static int block_plane(igt_display_t *display, igt_output_t *output, enum plane_
> signal(SIGCONT, SIG_IGN);
>
> if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
> igt_plane_set_fence_fd(plane, sw_sync_timeline_create_fence(timeline, 1));
>
> @@ -130,7 +130,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
> igt_display_reset(display);
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> plane = igt_output_get_plane_type(output, plane_type);
> @@ -301,7 +301,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
>
> igt_plane_set_fb(plane, NULL);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_remove_fb(display->drm_fd, &fb);
> }
> @@ -313,10 +313,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 63c7cf9f9f08..5b8728631a75 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -144,7 +144,7 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_info("Using (pipe %s + %s) to run the subtest.\n",
> kmstest_pipe_name(pipe), igt_output_name(output));
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> mode = igt_output_get_mode(output);
> @@ -584,16 +584,17 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, &data->fbs[0]);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, pipe_obj);
>
> wm_setup_plane(data, pipe, 0, NULL, false);
>
> if (flags & DRM_MODE_ATOMIC_ALLOW_MODESET) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + pipe_obj);
> }
>
> setup_parms(data, pipe, mode, &data->fbs[0], &data->argb_fb, &data->sprite_fb, parms, &iter_max);
> @@ -674,7 +675,8 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> n_enable_planes < pipe_obj->n_planes)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + pipe_obj);
>
> if (!wm_setup_plane(data, pipe, i, parms, fencing))
> continue;
> @@ -683,7 +685,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> wait_for_transition(data, pipe, nonblocking, fencing);
>
> if (type == TRANSITION_MODESET_DISABLE) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> if (!wm_setup_plane(data, pipe, 0, parms, fencing))
> continue;
> @@ -731,7 +733,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output, boo
> if (fencing)
> unprepare_fencing(data, pipe);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> for_each_plane_on_pipe(&data->display, pipe, plane)
> igt_plane_set_fb(plane, NULL);
> @@ -791,7 +793,7 @@ static void unset_output_pipe(igt_display_t *display)
> int i;
>
> for (i = 0; i < display->n_outputs; i++)
> - igt_output_set_pipe(&display->outputs[i], PIPE_NONE);
> + igt_output_set_crtc(&display->outputs[i], NULL);
> }
>
> static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> @@ -841,19 +843,21 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> if (output->pending_pipe != PIPE_NONE)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (intel_pipe_output_combo_valid(&data->display)) {
> mode = igt_output_get_mode(output);
> break;
> } else {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
> }
>
> if (!mode)
> return 0;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_plane_set_fb(plane, fb);
> igt_fb_set_size(fb, plane, mode->hdisplay, mode->vdisplay);
> igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
> @@ -932,7 +936,8 @@ retry:
> if (output->pending_pipe != PIPE_NONE)
> continue;
>
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
> if (intel_pipe_output_combo_valid(&data->display)) {
> mode = igt_output_get_mode(output);
>
> @@ -942,7 +947,7 @@ retry:
>
> break;
> } else {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
> }
>
> @@ -1088,10 +1093,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index a8a094f4d1f1..2622eae89eda 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -223,7 +223,8 @@ static void run_test_linear_tiling(data_t *data, int pipe, const drmModeModeInfo
> DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
> &buffer[i]);
>
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
>
> igt_plane_set_fb(data->primary[i], &buffer[i]);
> igt_info("Assigning pipe %s to output %s with mode %s\n",
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index c68ccafd390a..072d0ad09474 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -100,7 +100,7 @@ static bool test_pipe_degamma(data_t *data,
> degamma_linear = generate_table(data->degamma_lut_size, 1.0);
> degamma_full = generate_table_max(data->degamma_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
> igt_output_override_mode(output, mode);
>
> /* Create a framebuffer at the size of the output. */
> @@ -152,7 +152,7 @@ static bool test_pipe_degamma(data_t *data,
>
> disable_degamma(primary->pipe);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(data->drm_fd, &fb);
> igt_remove_fb(data->drm_fd, &fb_modeset);
> @@ -187,7 +187,7 @@ static bool test_pipe_gamma(data_t *data,
>
> gamma_full = generate_table_max(data->gamma_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
> igt_output_override_mode(output, mode);
>
> /* Create a framebuffer at the size of the output. */
> @@ -238,7 +238,7 @@ static bool test_pipe_gamma(data_t *data,
>
> disable_gamma(primary->pipe);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(data->drm_fd, &fb);
> igt_remove_fb(data->drm_fd, &fb_modeset);
> @@ -281,7 +281,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
> green_lut = malloc(sizeof(uint16_t) * legacy_lut_size);
> blue_lut = malloc(sizeof(uint16_t) * legacy_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
> igt_output_override_mode(output, mode);
>
> /* Create a framebuffer at the size of the output. */
> @@ -345,7 +345,7 @@ static bool test_pipe_legacy_gamma(data_t *data,
> igt_display_commit(&data->display);
>
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(data->drm_fd, &fb);
> igt_remove_fb(data->drm_fd, &fb_modeset);
> @@ -384,7 +384,7 @@ static bool test_pipe_legacy_gamma_reset(data_t *data,
> degamma_linear = generate_table(data->degamma_lut_size, 1.0);
> gamma_zero = generate_table_zero(data->gamma_lut_size);
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
>
> /* Ensure we have a clean state to start with. */
> disable_degamma(primary->pipe);
> @@ -483,7 +483,7 @@ static bool test_pipe_legacy_gamma_reset(data_t *data,
>
> end:
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
>
> free_lut(degamma_linear);
> @@ -516,7 +516,7 @@ static bool test_pipe_ctm(data_t *data,
>
> igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_CTM));
>
> - igt_output_set_pipe(output, primary->pipe->pipe);
> + igt_output_set_crtc(output, primary->pipe);
> igt_output_override_mode(output, mode);
>
> /* Create a framebuffer at the size of the output. */
> @@ -587,7 +587,7 @@ static bool test_pipe_ctm(data_t *data,
>
> disable_ctm(primary->pipe);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(data->drm_fd, &fb);
> igt_remove_fb(data->drm_fd, &fb_modeset);
> @@ -896,7 +896,8 @@ run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
>
> igt_display_reset(&data->display);
> igt_output_set_prop_value(output, IGT_CONNECTOR_MAX_BPC, 10);
> - igt_output_set_pipe(output, p);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, p));
>
> if (is_intel_device(data->drm_fd) &&
> !igt_max_bpc_constraint(&data->display, p, output, 10)) {
> diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
> index 3ca56138e97d..37639a261cd2 100644
> --- a/tests/kms_color_helper.c
> +++ b/tests/kms_color_helper.c
> @@ -28,10 +28,11 @@ bool pipe_output_combo_valid(data_t *data, enum pipe pipe)
> {
> bool ret = true;
>
> - igt_output_set_pipe(data->output, pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> ret = false;
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_colorop.c b/tests/kms_colorop.c
> index 2714312834c1..6bce0ab057bb 100644
> --- a/tests/kms_colorop.c
> +++ b/tests/kms_colorop.c
> @@ -154,7 +154,8 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display, __u32 four
> continue;
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (check_writeback_config(display, output, override_mode, fourcc_in, fourcc_out)) {
> igt_debug("Using connector %u:%s on pipe %d\n",
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index b3cc2cec4931..0c05453496e7 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -97,7 +97,7 @@ static void test_fini(data_t *data, enum pipe pipe, int n_planes,
> }
>
> /* reset the constraint on the pipe */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> free(data->plane);
> @@ -166,7 +166,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> int i;
> int format, modifier;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> p = primary->pipe;
> @@ -283,7 +283,8 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
> const drmModeModeInfo *mode_hi;
> drmModeModeInfo *mode_lo;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> mode_hi = igt_output_get_mode(output);
> mode_lo = get_lowres_mode(data, mode_hi, output);
> @@ -292,7 +293,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
> igt_output_override_mode(output, mode_lo);
> free(mode_lo);
> if (is_amdgpu_device(data->drm_fd))
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> /* switch back to higher resolution */
> @@ -342,7 +343,8 @@ run_tests_for_pipe(data_t *data)
> for_each_valid_output_on_pipe(&data->display, pipe, output) {
> igt_display_reset(&data->display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 20a06ab58071..377bab9a3afb 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -609,7 +609,7 @@ test_fini(igt_output_t *output, enum igt_commit_style commit_style)
> primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data.display, commit_style);
> }
>
> @@ -672,7 +672,8 @@ test_content_protection(enum igt_commit_style commit_style, int content_type)
> }
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -808,7 +809,8 @@ test_content_protection_mst(int content_type)
>
> igt_assert_f(pipe_found, "No valid pipe found for %s\n", output->name);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> prepare_modeset_on_mst_output(output, false);
> dp_mst_outputs++;
> if (output_hdcp_capable(output, content_type))
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index ff682b93a242..24553e1bda09 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -559,7 +559,7 @@ static void cleanup_crtc(data_t *data)
> cairo_surface_destroy(data->surface);
> data->surface = NULL;
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_plane_set_fb(data->primary, NULL);
> igt_display_commit(display);
>
> @@ -578,7 +578,8 @@ static void prepare_crtc(data_t *data, int cursor_w, int cursor_h)
> igt_display_reset(display);
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> /* create and set the primary plane fbs */
> mode = igt_output_get_mode(output);
> @@ -780,7 +781,8 @@ static bool cursor_size_supported(data_t *data, int w, int h)
> h <= data->cursor_max_h);
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> mode = igt_output_get_mode(output);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> @@ -807,7 +809,7 @@ static bool cursor_size_supported(data_t *data, int w, int h)
> igt_plane_set_fb(cursor, NULL);
>
> igt_remove_fb(data->drm_fd, &primary_fb);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret == 0;
> }
> @@ -884,12 +886,13 @@ static bool valid_pipe_output_combo(data_t *data)
> igt_display_t *display = &data->display;
>
> igt_display_reset(display);
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> if (intel_pipe_output_combo_valid(display))
> ret = true;
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index ff8fe3402fe8..d77787e51b97 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -266,7 +266,8 @@ static void prepare_crtc(data_t *data)
> cleanup_crtc(data);
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> mode = igt_output_get_mode(data->output);
> igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> @@ -399,11 +400,12 @@ int igt_main_args("", long_opts, help_str, opt_handler, &data)
> continue;
>
> igt_display_reset(&data.display);
> - igt_output_set_pipe(data.output, data.pipe);
> + igt_output_set_crtc(data.output,
> + igt_crtc_for_pipe(data.output->display, data.pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> - igt_output_set_pipe(data.output, PIPE_NONE);
> + igt_output_set_crtc(data.output, NULL);
>
> igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(data.pipe),
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 566d920124ad..509cff1cf335 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -256,8 +256,8 @@ static void override_output_modes(igt_display_t *display,
> bool found = igt_override_all_active_output_modes_to_fit_bw(display);
> igt_require_f(found, "No valid mode combo found.\n");
>
> - igt_output_set_pipe(output1, PIPE_NONE);
> - igt_output_set_pipe(output2, PIPE_NONE);
> + igt_output_set_crtc(output1, NULL);
> + igt_output_set_crtc(output2, NULL);
> }
>
> static void stress(igt_display_t *display,
> @@ -373,7 +373,7 @@ static void set_fb_on_crtc(igt_display_t *display, enum pipe pipe,
> drmModeModeInfoPtr mode;
> igt_plane_t *primary;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> igt_create_pattern_fb(display->drm_fd,
> @@ -442,7 +442,8 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
> if((*output)->pending_pipe != PIPE_NONE)
> continue;
>
> - igt_output_set_pipe(*output, pipe);
> + igt_output_set_crtc(*output,
> + igt_crtc_for_pipe((*output)->display, pipe));
> if (intel_pipe_output_combo_valid(display)) {
> found = true;
>
> @@ -453,7 +454,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
> }
> break;
> }
> - igt_output_set_pipe(*output, PIPE_NONE);
> + igt_output_set_crtc(*output, NULL);
> }
> if (found)
> break;
> @@ -707,11 +708,11 @@ static void flip(igt_display_t *display,
> igt_plane_set_fb(cursor, NULL);
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> if (flip_pipe != cursor_pipe) {
> igt_plane_set_fb(igt_output_get_plane_type(output2, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> - igt_output_set_pipe(output2, PIPE_NONE);
> + igt_output_set_crtc(output2, NULL);
> }
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> @@ -873,7 +874,7 @@ static void basic_flip_cursor(igt_display_t *display,
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1041,7 +1042,7 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1080,7 +1081,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
> * Start disabled. No way around it, since the first atomic
> * commit may be unreliable with amount of events sent.
> */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> while (loops--) {
> @@ -1097,7 +1098,8 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
> * works as intended. It should block until the modeset completes.
> */
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> igt_plane_set_fb(cursor, NULL);
> igt_display_commit_atomic(display, flags, NULL);
>
> @@ -1113,7 +1115,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
> igt_ignore_warn(read(display->drm_fd, &vbl, sizeof(vbl)));
> igt_reset_timeout();
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit_atomic(display, flags, NULL);
>
> igt_assert_eq(0, poll(&pfd, 1, 0));
> @@ -1132,7 +1134,7 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
>
> igt_plane_set_fb(primary, NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1225,7 +1227,7 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
> DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT;
>
> /* Disable pipe2 */
> - igt_output_set_pipe(output2, PIPE_NONE);
> + igt_output_set_crtc(output2, NULL);
> igt_display_commit_atomic(display, flags, NULL);
> enabled = false;
>
> @@ -1255,7 +1257,8 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
>
> /* Commit page flip and modeset simultaneously. */
> igt_plane_set_fb(plane, &fb_info);
> - igt_output_set_pipe(output2, enabled ? PIPE_NONE : pipe2);
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, enabled ? PIPE_NONE : pipe2));
> enabled = !enabled;
>
> wait_for_modeset(display, flags, 5, "Scheduling modeset");
> @@ -1303,7 +1306,8 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
> vblank_start = kmstest_get_vblank(display->drm_fd, pipe2, DRM_VBLANK_NEXTONMISS);
> flip_nonblocking(display, pipe2, atomic, &fb2_info, (void*)(ptrdiff_t)vblank_start);
> } else {
> - igt_output_set_pipe(output2, enabled ? PIPE_NONE : pipe2);
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, enabled ? PIPE_NONE : pipe2));
>
> igt_set_timeout(1, "Scheduling modeset\n");
> do {
> @@ -1329,8 +1333,8 @@ done:
> NULL);
> igt_plane_set_fb(cursor, NULL);
> igt_plane_set_fb(cursor2, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> - igt_output_set_pipe(output2, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> + igt_output_set_crtc(output2, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1439,7 +1443,7 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1569,8 +1573,8 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
> NULL);
> igt_plane_set_fb(cursors[0], NULL);
> igt_plane_set_fb(cursors[1], NULL);
> - igt_output_set_pipe(outputs[0], PIPE_NONE);
> - igt_output_set_pipe(outputs[1], PIPE_NONE);
> + igt_output_set_crtc(outputs[0], NULL);
> + igt_output_set_crtc(outputs[1], NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info[0]);
> @@ -1644,7 +1648,7 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY),
> NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info);
> @@ -1755,7 +1759,7 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
> /* Clean-up */
> igt_plane_set_fb(plane_primary, NULL);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(display->drm_fd, &fb_info[1]);
> @@ -1820,7 +1824,7 @@ static void modeset_atomic_cursor_hotspot(igt_display_t *display)
> /* Clean-up */
> set_cursor_hotspot(cursor, init_hot_x, init_hot_y);
> igt_plane_set_fb(cursor, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> igt_remove_fb(display->drm_fd, &cursor_fb);
> diff --git a/tests/kms_debugfs.c b/tests/kms_debugfs.c
> index e77c91afff9f..8cdb020fe482 100644
> --- a/tests/kms_debugfs.c
> +++ b/tests/kms_debugfs.c
> @@ -48,7 +48,8 @@ static void igt_display_all_on(igt_display_t *display)
> if (output->pending_pipe != PIPE_NONE)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> mode = igt_output_get_mode(output);
> igt_create_pattern_fb(display->drm_fd,
> @@ -83,7 +84,7 @@ static void igt_display_all_off(igt_display_t *display)
> igt_plane_t *plane;
>
> for_each_connected_output(display, output)
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> for_each_pipe(display, pipe)
> for_each_plane_on_pipe(display, pipe, plane)
> diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
> index a5588904b0d3..818ebf32c2f0 100644
> --- a/tests/kms_display_modes.c
> +++ b/tests/kms_display_modes.c
> @@ -87,8 +87,10 @@ static void run_extendedmode_basic(data_t *data,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output1, pipe1);
> - igt_output_set_pipe(output2, pipe2);
> + igt_output_set_crtc(output1,
> + igt_crtc_for_pipe(output1->display, pipe1));
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, pipe2));
>
> mode[0] = igt_output_get_mode(output1);
> mode[1] = igt_output_get_mode(output2);
> @@ -156,8 +158,8 @@ static void run_extendedmode_basic(data_t *data,
> igt_pipe_crc_free(pipe_crc[0]);
> igt_pipe_crc_free(pipe_crc[1]);
>
> - igt_output_set_pipe(output1, PIPE_NONE);
> - igt_output_set_pipe(output2, PIPE_NONE);
> + igt_output_set_crtc(output1, NULL);
> + igt_output_set_crtc(output2, NULL);
>
> igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
> DRM_PLANE_TYPE_PRIMARY),
> @@ -203,8 +205,10 @@ static void run_extendedmode_test(data_t *data) {
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output1, pipe1);
> - igt_output_set_pipe(output2, pipe2);
> + igt_output_set_crtc(output1,
> + igt_crtc_for_pipe(output1->display, pipe1));
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, pipe2));
>
> if (!intel_pipe_output_combo_valid(display))
> continue;
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 102bab1debd1..3731b7d4b4ea 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -81,7 +81,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
> data->primary =
> igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
>
> - igt_output_set_pipe(output, p);
> + igt_output_set_crtc(output, pipe);
> }
>
> /* Returns the current state of dithering from the crtc debugfs. */
> @@ -168,7 +168,7 @@ static void test_dithering(data_t *data, enum pipe pipe,
> cleanup:
> igt_output_set_prop_value(output, IGT_CONNECTOR_MAX_BPC, bpc);
> igt_plane_set_fb(data->primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> igt_remove_fb(data->drm_fd, &data->fb);
>
> @@ -218,10 +218,11 @@ run_dither_test(data_t *data, int fb_bpc, int fb_format, int output_bpc)
> }
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/kms_feature_discovery.c b/tests/kms_feature_discovery.c
> index a0615a113f1c..da80ecf66855 100644
> --- a/tests/kms_feature_discovery.c
> +++ b/tests/kms_feature_discovery.c
> @@ -100,7 +100,8 @@ int igt_main() {
> for_each_pipe(&display, pipe) {
> for_each_valid_output_on_pipe(&display, pipe, output) {
> if (output->pending_pipe == PIPE_NONE) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> output_count++;
> break;
> }
> @@ -108,7 +109,8 @@ int igt_main() {
> }
>
> for (int i = 0; i < display.n_outputs; i++) {
> - igt_output_set_pipe(&display.outputs[i], PIPE_NONE);
> + igt_output_set_crtc(&display.outputs[i],
> + NULL);
> }
> }
>
> diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
> index eafda2110a39..ce8993ccb681 100644
> --- a/tests/kms_flip_event_leak.c
> +++ b/tests/kms_flip_event_leak.c
> @@ -97,7 +97,7 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_device_set_master(data->drm_fd);
>
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
>
> igt_remove_fb(data->drm_fd, &fb[0]);
> @@ -121,7 +121,8 @@ int igt_main()
> for_each_pipe_with_valid_output(&data.display, pipe, output) {
> igt_display_reset(&data.display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index 45840945d658..e6092dbfce99 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -230,7 +230,8 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
> data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_output_set_prop_value(data->output, IGT_CONNECTOR_MAX_BPC, 10);
>
> data->w = data->mode->hdisplay;
> @@ -333,9 +334,10 @@ static void test_bpc_switch(data_t *data, uint32_t flags)
> }
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> @@ -741,9 +743,10 @@ static void test_hdr(data_t *data, uint32_t flags)
> }
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> index 2b385d4931f2..a3d52deafd7f 100644
> --- a/tests/kms_invalid_mode.c
> +++ b/tests/kms_invalid_mode.c
> @@ -359,7 +359,8 @@ int igt_main()
> for_each_pipe_with_valid_output(&data.display, pipe, output) {
> igt_display_reset(&data.display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> index d2e55ffcf538..4111a26b4c8b 100644
> --- a/tests/kms_lease.c
> +++ b/tests/kms_lease.c
> @@ -161,7 +161,7 @@ static int prepare_crtc(data_t *data, bool is_master)
> return -ENOENT;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> /* create and set the primary plane fb */
> mode = igt_output_get_mode(output);
> @@ -196,7 +196,7 @@ static void cleanup_crtc(lease_t *lease, igt_output_t *output)
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
> }
>
> @@ -1291,7 +1291,8 @@ int igt_main()
> for_each_pipe_with_valid_output(display, data.pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, data.pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data.pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
> index 3a1944b48874..7ce142f44fd4 100644
> --- a/tests/kms_multipipe_modeset.c
> +++ b/tests/kms_multipipe_modeset.c
> @@ -64,7 +64,7 @@ static void run_test(data_t *data, int valid_outputs)
> mode = igt_output_get_mode(output);
> igt_assert(mode);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> width = max(width, mode->hdisplay);
> height = max(height, mode->vdisplay);
> @@ -83,7 +83,8 @@ static void run_test(data_t *data, int valid_outputs)
> pipe_crcs[i] = igt_pipe_crc_new(display->drm_fd, i,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
> mode = igt_output_get_mode(output);
> igt_assert(mode);
>
> @@ -93,7 +94,7 @@ static void run_test(data_t *data, int valid_outputs)
>
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_pipe_crc_collect_crc(pipe_crcs[i], &ref_crcs[i]);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> i++;
> }
>
> @@ -105,7 +106,8 @@ static void run_test(data_t *data, int valid_outputs)
>
> mode = NULL;
>
> - igt_output_set_pipe(output, i);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, i));
> mode = igt_output_get_mode(output);
> igt_assert(mode);
>
> diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
> index 14cebf384d91..9bfb7d3f1356 100644
> --- a/tests/kms_panel_fitting.c
> +++ b/tests/kms_panel_fitting.c
> @@ -74,7 +74,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
> igt_display_t *display = &data->display;
>
> igt_output_override_mode(output, mode);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> /* before allocating, free if any older fb */
> igt_remove_fb(data->drm_fd, &data->fb1);
> @@ -109,7 +109,7 @@ test_panel_fitting_legacy(data_t *d, igt_display_t *display,
> drmModeModeInfo *mode, native_mode;
> bool is_plane_scaling_active = true;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> native_mode = *mode;
> @@ -202,7 +202,7 @@ test_panel_fitting_fastset(igt_display_t *display, const enum pipe pipe, igt_out
>
> mode = *igt_output_get_mode(output);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 0a52b651ee72..c74c0a02ae2f 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -138,7 +138,7 @@ static void test_read_crc(data_t *data, enum pipe pipe,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> @@ -219,7 +219,7 @@ static void test_read_crc(data_t *data, enum pipe pipe,
> }
>
> /* Clean-up */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_plane_set_fb(primary, NULL);
> igt_display_commit(display);
> }
> @@ -245,7 +245,7 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
> struct igt_fb fb0, fb1;
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -282,7 +282,7 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
> /* Clean-up */
> igt_pipe_crc_free(pipe_crc);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(data->drm_fd, &fb0);
> @@ -302,7 +302,7 @@ static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> igt_create_color_fb(data->drm_fd,
> @@ -330,7 +330,7 @@ static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
> /* Clean-up */
> igt_pipe_crc_free(pipe_crc);
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
> igt_remove_fb(data->drm_fd, &data->fb);
> }
> @@ -342,10 +342,10 @@ static bool pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index c8701cf1a07d..535ce84d3074 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -194,7 +194,7 @@ test_grab_crc(data_t *data, igt_output_t *output, enum pipe pipe,
> char *crc_str;
> int ret;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane(output, 0);
>
> @@ -271,7 +271,7 @@ test_plane_position_with_output(data_t *data,
> igt_debug("Testing connector %s using pipe %s plane %d\n", igt_output_name(output),
> kmstest_pipe_name(pipe), plane);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> @@ -327,7 +327,7 @@ test_plane_position_with_output(data_t *data,
> igt_plane_set_fb(sprite, NULL);
>
> /* reset the constraint on the pipe */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(data->drm_fd, &primary_fb);
> @@ -407,7 +407,7 @@ test_plane_panning_with_output(data_t *data,
> drmModeModeInfo *mode;
> igt_crc_t crc;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> primary = igt_output_get_plane(output, 0);
> @@ -436,7 +436,7 @@ test_plane_panning_with_output(data_t *data,
> igt_plane_set_fb(primary, NULL);
>
> /* reset states to neutral values, assumed by other tests */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_fb_set_position(&primary_fb, primary, 0, 0);
> igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> @@ -1215,7 +1215,7 @@ test_pixel_formats(data_t *data, enum pipe pipe)
> igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, &primary_fb);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, &primary_fb);
>
> @@ -1235,7 +1235,7 @@ test_pixel_formats(data_t *data, enum pipe pipe)
> set_legacy_lut(data, pipe, 0xffff);
>
> igt_plane_set_fb(primary, NULL);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> igt_remove_fb(data->drm_fd, &primary_fb);
> @@ -1264,7 +1264,7 @@ static void test_planar_settings(data_t *data)
> output = igt_get_single_output_for_pipe(&data->display, pipe);
> igt_require(output);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> igt_display_commit_atomic(&data->display,
> @@ -1347,11 +1347,12 @@ static void run_test(data_t *data, void (*test)(data_t *, enum pipe))
> for_each_pipe_with_single_output(&data->display, pipe, data->output) {
> igt_display_reset(&data->display);
>
> - igt_output_set_pipe(data->output, pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> test(data, pipe);
>
> if (is_pipe_limit_reached(++count))
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index 99ce90616720..cfb67861086a 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -578,7 +578,7 @@ static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t *
> break;
> }
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> @@ -705,7 +705,8 @@ static void run_subtests(data_t *data)
>
> igt_display_reset(&data->display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
>
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index b9aa0deed292..03fdb847d8c9 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -276,7 +276,8 @@ static void test_cursor(data_t *data, int size, unsigned int flags)
> DRM_FORMAT_MOD_LINEAR, 1.0, 0.0, 1.0, &data->cfb);
>
> igt_plane_set_fb(data->primary, &data->pfb);
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> test_cursor_spots(data, size, flags);
> @@ -333,7 +334,8 @@ int igt_main()
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index 5dac21ea6def..4b4b4b4597f3 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -283,7 +283,7 @@ static void test_cleanup(data_t *data)
> {
> igt_pipe_crc_free(data->pipe_crc);
>
> - igt_output_set_pipe(data->output, PIPE_NONE);
> + igt_output_set_crtc(data->output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
>
> @@ -301,7 +301,8 @@ static void run_test(data_t *data, uint64_t modifier)
> data->output = output;
>
> igt_display_reset(&data->display);
> - igt_output_set_pipe(data->output, data->pipe);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe));
>
> if (!intel_pipe_output_combo_valid(&data->display))
> continue;
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 0ce12749f7c8..79af0d93a370 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -120,7 +120,7 @@ static void test_init(data_t *data, enum pipe pipe, int n_planes)
> static void test_fini(data_t *data, igt_output_t *output, int n_planes)
> {
> /* reset the constraint on the pipe */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_pipe_crc_free(data->pipe_crc1);
> data->pipe_crc1 = NULL;
> @@ -143,7 +143,7 @@ get_reference_crc(data_t *data, igt_output_t *output, enum pipe pipe, igt_pipe_c
> int ret;
>
> igt_display_reset(&data->display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> plane[primary->index] = primary;
> @@ -212,7 +212,8 @@ prepare_planes(data_t *data, enum pipe pipe_id, color_t *color, igt_plane_t **pl
> int i;
> int* suffle;
>
> - igt_output_set_pipe(output, pipe_id);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe_id));
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> pipe = primary->pipe;
>
> @@ -357,7 +358,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
> for_each_plane_on_pipe(&data->display, pipe, plane)
> igt_plane_set_fb(plane, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> for (int x = 0; x < c; x++)
> @@ -387,7 +388,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
> for_each_plane_on_pipe(&data->display, pipe, plane)
> igt_plane_set_fb(plane, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> for (int x = 0; x < c; x++)
> @@ -527,8 +528,10 @@ static void run_2_display_test(data_t *data, uint64_t modifier, const char *name
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output1, pipe1);
> - igt_output_set_pipe(output2, pipe2);
> + igt_output_set_crtc(output1,
> + igt_crtc_for_pipe(output1->display, pipe1));
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, pipe2));
>
> if (!intel_pipe_output_combo_valid(display))
> continue;
> @@ -559,7 +562,8 @@ static void run_test(data_t *data, uint64_t modifier, const char *name)
> for_each_pipe_with_valid_output(display, pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 10b168615226..25adadb87bf8 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -726,7 +726,7 @@ test_scaler_with_modifier_pipe(data_t *d,
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> for_each_plane_on_pipe(display, pipe, plane) {
> if (plane->type == DRM_PLANE_TYPE_CURSOR)
> @@ -766,7 +766,7 @@ test_scaler_with_rotation_pipe(data_t *d,
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> for_each_plane_on_pipe(display, pipe, plane) {
> if (plane->type == DRM_PLANE_TYPE_CURSOR)
> @@ -804,7 +804,7 @@ test_scaler_with_pixel_format_pipe(data_t *d, double sf_plane,
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> for_each_plane_on_pipe(display, pipe, plane) {
> struct igt_vec tested_formats;
> @@ -854,7 +854,8 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
> if((*output)->pending_pipe != PIPE_NONE)
> continue;
>
> - igt_output_set_pipe(*output, pipe);
> + igt_output_set_crtc(*output,
> + igt_crtc_for_pipe((*output)->display, pipe));
> if (intel_pipe_output_combo_valid(display)) {
> found = true;
>
> @@ -865,7 +866,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
> }
> break;
> }
> - igt_output_set_pipe(*output, PIPE_NONE);
> + igt_output_set_crtc(*output, NULL);
> }
> if (found)
> break;
> @@ -952,7 +953,7 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> for_each_connector_mode(output) {
> mode = &output->config.connector->modes[j__];
> igt_output_override_mode(output, mode);
> @@ -1023,7 +1024,7 @@ test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, pipe_obj);
>
> width = height = 20;
> mode = igt_output_get_mode(output);
> @@ -1095,8 +1096,10 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
> kmstest_pipe_name(pipe1), igt_output_name(output1),
> kmstest_pipe_name(pipe2), igt_output_name(output2));
>
> - igt_output_set_pipe(output1, pipe1);
> - igt_output_set_pipe(output2, pipe2);
> + igt_output_set_crtc(output1,
> + igt_crtc_for_pipe(output1->display, pipe1));
> + igt_output_set_crtc(output2,
> + igt_crtc_for_pipe(output2->display, pipe2));
>
> igt_require(get_num_scalers(display, pipe1) >= 2);
> igt_require(get_num_scalers(display, pipe2) >= 2);
> @@ -1184,7 +1187,8 @@ static void invalid_parameter_tests(data_t *d)
> output = igt_get_single_output_for_pipe(&d->display, pipe);
> igt_require(output);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> igt_require(get_num_scalers(&d->display, pipe) >= 1);
> @@ -1219,7 +1223,7 @@ static void invalid_parameter_tests(data_t *d)
>
> igt_fixture() {
> igt_remove_fb(d->drm_fd, &fb);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
> }
>
> @@ -1281,7 +1285,7 @@ static void intel_max_source_size_test(data_t *d, enum pipe pipe, igt_output_t *
>
> cleanup_crtc(d);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> /*
> * Need to get the mode again, because it may have changed
> @@ -1323,10 +1327,10 @@ pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_prime.c b/tests/kms_prime.c
> index b4469d83339b..f443e9838a2b 100644
> --- a/tests/kms_prime.c
> +++ b/tests/kms_prime.c
> @@ -124,7 +124,8 @@ static igt_output_t *setup_display(int importer_fd, igt_display_t *display,
> for_each_pipe_with_valid_output(display, *pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, *pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, *pipe));
> if (intel_pipe_output_combo_valid(display)) {
> found = true;
> break;
> diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> index 95bfe293a242..62e936bc5e51 100644
> --- a/tests/kms_properties.c
> +++ b/tests/kms_properties.c
> @@ -80,7 +80,7 @@ static void prepare_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *o
> igt_create_pattern_fb(display->drm_fd, mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, fb);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
>
> @@ -94,7 +94,7 @@ static void cleanup_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *o
> for_each_plane_on_pipe(display, pipe, plane)
> igt_plane_set_fb(plane, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>
> @@ -328,7 +328,8 @@ static void colorop_properties(igt_display_t *display, bool atomic)
> for_each_valid_output_on_pipe(display, pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -352,7 +353,8 @@ static void plane_properties(igt_display_t *display, bool atomic)
> for_each_pipe_with_single_output(display, pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -371,7 +373,8 @@ static void crtc_properties(igt_display_t *display, bool atomic)
> for_each_pipe_with_single_output(display, pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -393,9 +396,10 @@ static void connector_properties(igt_display_t *display, bool atomic)
> for_each_pipe(display, pipe) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
> index b5b041857c7a..4726d4745d58 100644
> --- a/tests/kms_rmfb.c
> +++ b/tests/kms_rmfb.c
> @@ -85,7 +85,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
> int num_active_planes = 0;
>
> igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -167,7 +167,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
> drmModeFreePlane(planeres);
> }
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> static void
> @@ -180,7 +180,8 @@ run_rmfb_test(struct rmfb_data *data, bool reopen)
> for_each_pipe_with_single_output(display, pipe, output) {
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index d37a14e275f7..c0642a389121 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -299,7 +299,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
>
> cleanup_crtc(data);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> igt_require(intel_pipe_output_combo_valid(display));
>
> igt_plane_set_rotation(plane, IGT_ROTATION_0);
> @@ -609,7 +609,8 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -647,7 +648,8 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
> break;
> pipe_count++;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> plane = igt_output_get_plane_type(output, plane_type);
> igt_require(plane_rotation_requirements(data, plane));
> @@ -940,7 +942,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> @@ -1079,7 +1082,7 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> lastroundirotation = 0;
> lastroundjrotation = 0;
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
> data->pipe_crc = NULL;
>
> diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
> index 4edefe4ec5b1..588513750257 100644
> --- a/tests/kms_scaling_modes.c
> +++ b/tests/kms_scaling_modes.c
> @@ -62,7 +62,7 @@ static void test_scaling_mode_on_output(igt_display_t *display, const enum pipe
> struct igt_fb red, blue;
> int ret;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = *igt_output_get_mode(output);
>
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> @@ -121,7 +121,8 @@ static void test_scaling_mode(data_t *data, uint32_t flags)
> continue;
> }
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> continue;
>
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index 1d3b98728e15..cfeec133de58 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -105,7 +105,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_reset(&data->display);
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> /* create and set the primary plane fb */
> mode = igt_output_get_mode(output);
> @@ -135,7 +136,7 @@ static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> }
>
> @@ -311,7 +312,8 @@ int igt_main()
> for_each_pipe_with_valid_output(&data.display, p, output) {
> igt_display_reset(&data.display);
>
> - igt_output_set_pipe(output, p);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, p));
> if (!intel_pipe_output_combo_valid(&data.display))
> continue;
>
> diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> index 003e6ea408e8..b63b03c0cd51 100644
> --- a/tests/kms_tiled_display.c
> +++ b/tests/kms_tiled_display.c
> @@ -198,7 +198,7 @@ static void test_cleanup(data_t *data)
> for (count = 0; count < data->num_h_tiles; count++) {
> if (conns[count].output) {
> reset_plane(conns[count].output);
> - igt_output_set_pipe(conns[count].output, PIPE_NONE);
> + igt_output_set_crtc(conns[count].output, NULL);
> }
> }
> igt_remove_fb(data->drm_fd, &data->fb_test_pattern);
> @@ -250,8 +250,8 @@ static void setup_mode(data_t *data)
> conns[count].pipe = pipe;
> conns[count].output = output;
>
> - igt_output_set_pipe(conns[count].output,
> - conns[count].pipe);
> + igt_output_set_crtc(conns[count].output,
> + igt_crtc_for_pipe(conns[count].output->display, conns[count].pipe));
> break;
> }
> }
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index 4f43050791f8..aa5927cdf726 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -99,7 +99,7 @@ functional_test_init(functional_test_t *test, igt_output_t *output, enum pipe pi
> test->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> IGT_PIPE_CRC_SOURCE_AUTO);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> @@ -136,7 +136,7 @@ functional_test_fini(functional_test_t *test, igt_output_t *output)
> igt_remove_fb(test->data->drm_fd, &test->red_fb);
> igt_remove_fb(test->data->drm_fd, &test->yellow_fb);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&test->data->display, COMMIT_LEGACY);
> }
>
> @@ -254,14 +254,14 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7);
>
> /* Step 11: Disable primary plane */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_plane_set_fb(primary, NULL);
> igt_display_commit2(display, COMMIT_UNIVERSAL);
>
> /* Step 12: Legacy modeset to yellow FB (CRC 8) */
> igt_plane_set_fb(primary, &test.yellow_fb);
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> igt_display_commit2(display, COMMIT_LEGACY);
> igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8);
>
> @@ -349,7 +349,7 @@ sanity_test_init(sanity_test_t *test, igt_output_t *output, enum pipe pipe)
> data_t *data = test->data;
> drmModeModeInfo *mode;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> @@ -383,7 +383,7 @@ sanity_test_fini(sanity_test_t *test, igt_output_t *output)
> igt_remove_fb(test->data->drm_fd, &test->undersized_fb);
> igt_remove_fb(test->data->drm_fd, &test->blue_fb);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&test->data->display, COMMIT_LEGACY);
> }
>
> @@ -402,7 +402,7 @@ sanity_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> int i, ret;
> int expect = 0;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> sanity_test_init(&test, output, pipe);
> @@ -492,7 +492,7 @@ pageflip_test_init(pageflip_test_t *test, igt_output_t *output, enum pipe pipe)
> data_t *data = test->data;
> drmModeModeInfo *mode;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> @@ -513,7 +513,7 @@ pageflip_test_fini(pageflip_test_t *test, igt_output_t *output)
> igt_remove_fb(test->data->drm_fd, &test->red_fb);
> igt_remove_fb(test->data->drm_fd, &test->blue_fb);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&test->data->display, COMMIT_LEGACY);
> }
>
> @@ -528,7 +528,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> fd_set fds;
> int ret = 0;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> pageflip_test_init(&test, output, pipe);
>
> @@ -539,7 +539,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_display_commit2(&data->display, COMMIT_LEGACY);
>
> /* Disable the primary plane */
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> igt_plane_set_fb(primary, NULL);
> igt_display_commit2(&data->display, COMMIT_UNIVERSAL);
> @@ -550,7 +550,7 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> * Note that crtc->primary->fb = NULL causes flip to return EBUSY for
> * historical reasons...
> */
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> igt_assert(drmModePageFlip(data->drm_fd, output->config.crtc->crtc_id,
> test.red_fb.fb_id, 0, NULL) == -EBUSY);
>
> @@ -565,12 +565,12 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> * completes, which we don't have a good way to specifically test for,
> * but at least we can make sure that nothing blows up.
> */
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> igt_assert(drmModePageFlip(data->drm_fd, output->config.crtc->crtc_id,
> test.red_fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT,
> &test) == 0);
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
> igt_plane_set_fb(primary, NULL);
> igt_display_commit2(&data->display, COMMIT_UNIVERSAL);
> @@ -600,7 +600,7 @@ cursor_leak_test_fini(data_t *data,
> for (i = 0; i < 10; i++)
> igt_remove_fb(data->drm_fd, &curs[i]);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> }
>
> static int
> @@ -642,7 +642,7 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_require(display->has_cursor_plane);
> igt_require_intel(data->drm_fd);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> mode = igt_output_get_mode(output);
>
> /* Count GEM framebuffers before creating our cursor FB's */
> @@ -726,7 +726,7 @@ gen9_test_init(gen9_test_t *test, igt_output_t *output, enum pipe pipe)
> data_t *data = test->data;
> drmModeModeInfo *mode;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> mode = igt_output_get_mode(output);
> test->w = mode->hdisplay / 2;
> @@ -761,7 +761,7 @@ gen9_test_fini(gen9_test_t *test, igt_output_t *output)
> igt_remove_fb(test->data->drm_fd, &test->smallred_fb);
> igt_remove_fb(test->data->drm_fd, &test->smallblue_fb);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(&test->data->display, COMMIT_LEGACY);
> }
>
> @@ -777,7 +777,7 @@ pageflip_win_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>
> int ret = 0;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>
> gen9_test_init(&test, output, pipe);
>
> @@ -820,10 +820,10 @@ pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 9057905acd67..ed72c3576784 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -129,7 +129,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_reset(display);
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
>
> /* create and set the primary plane fb */
> mode = igt_output_get_mode(output);
> @@ -148,7 +149,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> igt_remove_fb(fd, &data->primary_fb);
> }
> @@ -231,10 +232,10 @@ pipe_output_combo_valid(igt_display_t *display,
>
> igt_display_reset(display);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> if (!intel_pipe_output_combo_valid(display))
> ret = false;
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
>
> return ret;
> }
> @@ -420,7 +421,7 @@ static void vblank_ts_cont(data_t *data, int fd, int nchildren)
> }
>
> if (data->flags & MODESET) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> }
>
> @@ -445,7 +446,8 @@ static void vblank_ts_cont(data_t *data, int fd, int nchildren)
> }
>
> if (data->flags & MODESET) {
> - igt_output_set_pipe(output, data->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, data->pipe));
> igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> }
>
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index 4f4d7667c7d2..0e54672a7d83 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -973,7 +973,7 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> if (data->primary)
> igt_plane_set_fb(data->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_output_override_mode(output, NULL);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> @@ -1093,10 +1093,11 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
> continue;
>
> for_each_pipe(&data->display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (!intel_pipe_output_combo_valid(&data->display)) {
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> continue;
> }
>
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index 3760cdc6814f..0b968baa260a 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -170,7 +170,8 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display)
> continue;
>
> for_each_pipe(display, pipe) {
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, pipe));
>
> if (data.custom_mode)
> override_mode = data.user_mode;
> @@ -201,7 +202,7 @@ static void cleanup_writeback(igt_display_t *display, igt_output_t *output)
> to_user_pointer(NULL));
> igt_output_set_writeback_fb(output, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> diff --git a/tests/nouveau_crc.c b/tests/nouveau_crc.c
> index bf913cf13ad4..7887ff409e9e 100644
> --- a/tests/nouveau_crc.c
> +++ b/tests/nouveau_crc.c
> @@ -344,7 +344,7 @@ int igt_main()
> * one
> */
> if (data.output) {
> - igt_output_set_pipe(data.output, PIPE_NONE);
> + igt_output_set_crtc(data.output, NULL);
> igt_display_commit(&data.display);
> }
>
> @@ -354,7 +354,8 @@ int igt_main()
> /* None of these tests need to perform modesets, just page flips. So running
> * display setup here is fine
> */
> - igt_output_set_pipe(data.output, pipe);
> + igt_output_set_crtc(data.output,
> + igt_crtc_for_pipe(data.output->display, pipe));
> data.primary = igt_output_get_plane(data.output, 0);
> igt_create_color_fb(data.drm_fd,
> data.mode->hdisplay,
> diff --git a/tests/vmwgfx/vmw_prime.c b/tests/vmwgfx/vmw_prime.c
> index dd1e40cec14e..5f704089b146 100644
> --- a/tests/vmwgfx/vmw_prime.c
> +++ b/tests/vmwgfx/vmw_prime.c
> @@ -185,7 +185,7 @@ static void cleanup_crtc(struct gpu_process_t *gpu)
>
> igt_plane_set_fb(gpu->primary, NULL);
>
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(display);
>
> igt_remove_fb(gpu->mdevice.drm_fd, &gpu->fb);
> @@ -203,7 +203,8 @@ static void prepare_crtc(struct gpu_process_t *gpu)
> int ret;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, gpu->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, gpu->pipe));
>
> mode = igt_output_get_mode(output);
>
> @@ -229,7 +230,8 @@ static void prepare_crtc_surface(struct gpu_process_t *gpu)
> int prime_fd;
>
> /* select the pipe we want to use */
> - igt_output_set_pipe(output, gpu->pipe);
> + igt_output_set_crtc(output,
> + igt_crtc_for_pipe(output->display, gpu->pipe));
>
> mode = igt_output_get_mode(output);
>
> diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
> index bcb7e00b0b07..a94370178847 100644
> --- a/tools/amd_hdmi_compliance.c
> +++ b/tools/amd_hdmi_compliance.c
> @@ -409,7 +409,8 @@ static void test_init(data_t *data, int conn_id)
> data->primary =
> igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
>
> - igt_output_set_pipe(data->output, data->pipe_id);
> + igt_output_set_crtc(data->output,
> + igt_crtc_for_pipe(data->output->display, data->pipe_id));
>
> if (data->timeout_seconds > 0) {
> struct sigaction sa;
> diff --git a/tools/intel_pm_rpm.c b/tools/intel_pm_rpm.c
> index c1cc54b82ad2..940107314190 100644
> --- a/tools/intel_pm_rpm.c
> +++ b/tools/intel_pm_rpm.c
> @@ -76,7 +76,7 @@ static void disable_all_displays(data_t *data)
>
> for (int i = 0; i < data->display.n_outputs; i++) {
> output = &data->display.outputs[i];
> - igt_output_set_pipe(output, PIPE_NONE);
> + igt_output_set_crtc(output, NULL);
> igt_display_commit(&data->display);
> }
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t
2025-12-10 9:39 ` [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t Ville Syrjala
@ 2025-12-10 14:43 ` Jani Nikula
0 siblings, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:43 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Move towards using 'crtcs' instead of 'pipes' by renaming
> igt_pipe_t to igt_crtc_t.
>
> Done with sed:
> $ find -type f -name \*.[ch] -exec sed -i -e 's/struct igt_pipe/struct igt_crtc/g' -e 's/igt_pipe_t/igt_crtc_t/g' {} +
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> lib/igt_kms.c | 108 +++++++++---------
> lib/igt_kms.h | 44 +++----
> tests/amdgpu/amd_abm.c | 2 +-
> tests/amdgpu/amd_assr.c | 2 +-
> tests/amdgpu/amd_bypass.c | 2 +-
> tests/amdgpu/amd_color.c | 2 +-
> tests/amdgpu/amd_dp_dsc.c | 2 +-
> tests/amdgpu/amd_hotplug.c | 2 +-
> tests/amdgpu/amd_ilr.c | 2 +-
> tests/amdgpu/amd_link_settings.c | 2 +-
> tests/amdgpu/amd_mall.c | 2 +-
> tests/amdgpu/amd_max_bpc.c | 2 +-
> tests/amdgpu/amd_mem_leak.c | 2 +-
> tests/amdgpu/amd_multidisplay_modeset.c | 2 +-
> tests/amdgpu/amd_odm.c | 2 +-
> tests/amdgpu/amd_plane.c | 2 +-
> tests/amdgpu/amd_psr.c | 2 +-
> tests/amdgpu/amd_replay.c | 2 +-
> tests/amdgpu/amd_subvp.c | 2 +-
> tests/chamelium/kms_chamelium_color.c | 2 +-
> .../kms_chamelium_sharpness_filter.c | 2 +-
> tests/intel/gem_pxp.c | 2 +-
> tests/intel/kms_big_fb.c | 4 +-
> tests/intel/kms_cdclk.c | 2 +-
> tests/intel/kms_flip_scaled_crc.c | 4 +-
> tests/intel/kms_sharpness_filter.c | 4 +-
> tests/intel/xe_pxp.c | 6 +-
> tests/kms_atomic.c | 10 +-
> tests/kms_atomic_transition.c | 4 +-
> tests/kms_bw.c | 2 +-
> tests/kms_color.c | 2 +-
> tests/kms_color_helper.c | 18 +--
> tests/kms_color_helper.h | 14 +--
> tests/kms_concurrent.c | 2 +-
> tests/kms_cursor_legacy.c | 4 +-
> tests/kms_dither.c | 2 +-
> tests/kms_hdr.c | 2 +-
> tests/kms_multipipe_modeset.c | 2 +-
> tests/kms_plane.c | 4 +-
> tests/kms_plane_cursor.c | 2 +-
> tests/kms_plane_multiple.c | 2 +-
> tests/kms_plane_scaling.c | 2 +-
> tools/amd_hdmi_compliance.c | 2 +-
> 43 files changed, 143 insertions(+), 143 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 082b126f8a49..ba8cc6b8163c 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -964,7 +964,7 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output,
> }
>
> static void
> -igt_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,
> +igt_fill_pipe_props(igt_display_t *display, igt_crtc_t *pipe,
> int num_crtc_props, const char * const crtc_prop_names[])
> {
> drmModeObjectPropertiesPtr props;
> @@ -993,7 +993,7 @@ igt_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,
> drmModeFreeObjectProperties(props);
> }
>
> -static igt_plane_t *igt_get_assigned_primary(igt_output_t *output, igt_pipe_t *pipe)
> +static igt_plane_t *igt_get_assigned_primary(igt_output_t *output, igt_crtc_t *pipe)
> {
> int drm_fd = output->display->drm_fd;
> drmModeModeInfo *mode;
> @@ -2657,7 +2657,7 @@ void igt_output_refresh(igt_output_t *output)
> static int
> igt_plane_set_property(igt_plane_t *plane, uint32_t prop_id, uint64_t value)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> return drmModeObjectSetProperty(display->drm_fd, plane->drm_plane->plane_id,
> @@ -2741,7 +2741,7 @@ static void igt_plane_reset(igt_plane_t *plane)
> plane->gem_handle = 0;
> }
>
> -static void igt_pipe_reset(igt_pipe_t *pipe)
> +static void igt_pipe_reset(igt_crtc_t *pipe)
> {
> igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, 0);
> igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 0);
> @@ -2839,7 +2839,7 @@ void igt_display_reset(igt_display_t *display)
> display->first_commit = true;
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> for_each_plane_on_pipe(display, pipe, plane)
> @@ -2877,7 +2877,7 @@ void igt_require_pipe(igt_display_t *display, enum pipe pipe)
>
> /* Get crtc mask for a pipe using crtc id */
> static int
> -__get_crtc_mask_for_pipe(drmModeRes *resources, igt_pipe_t *pipe)
> +__get_crtc_mask_for_pipe(drmModeRes *resources, igt_crtc_t *pipe)
> {
> int offset;
>
> @@ -3013,7 +3013,7 @@ void igt_display_reset_outputs(igt_display_t *display)
> igt_display_reset(display);
>
> for_each_pipe(display, i) {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
> igt_output_t *output;
>
> if (!igt_pipe_has_valid_output(display, i))
> @@ -3108,12 +3108,12 @@ void igt_display_require(igt_display_t *display, int drm_fd)
>
> display->n_pipes = IGT_MAX_PIPES;
> display->pipes = calloc(igt_display_n_crtcs(display),
> - sizeof(igt_pipe_t));
> + sizeof(igt_crtc_t));
> igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n",
> igt_display_n_crtcs(display));
>
> for (i = 0; i < resources->count_crtcs; i++) {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int pipe_enum = (is_intel_dev)?
> __intel_get_pipe_from_crtc_id(drm_fd,
> resources->crtcs[i], i) : i;
> @@ -3156,7 +3156,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> display->n_colorops = 0;
>
> for_each_pipe(display, i) {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
> igt_plane_t *plane;
> int p = 1, crtc_mask = 0;
> int j, type;
> @@ -3419,7 +3419,7 @@ void igt_modeset_disable_all_outputs(igt_display_t *display)
>
> }
>
> -static void igt_pipe_fini(igt_pipe_t *pipe)
> +static void igt_pipe_fini(igt_crtc_t *pipe)
> {
> free(pipe->planes);
> pipe->planes = NULL;
> @@ -3512,7 +3512,7 @@ report_dup:
> }
> }
>
> -static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> +static igt_crtc_t *igt_output_get_driving_pipe(igt_output_t *output)
> {
> igt_display_t *display = output->display;
> enum pipe pipe;
> @@ -3535,7 +3535,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> return igt_crtc_for_pipe(display, pipe);
> }
>
> -static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
> +static igt_plane_t *igt_pipe_get_plane(igt_crtc_t *pipe, int plane_idx)
> {
> igt_require_f(plane_idx >= 0 && plane_idx < pipe->n_planes,
> "Valid pipe->planes plane_idx not found, plane_idx=%d n_planes=%d",
> @@ -3554,7 +3554,7 @@ static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
> *
> * Returns: A #igt_plane_t structure that matches the requested plane type
> */
> -igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
> +igt_plane_t *igt_pipe_get_plane_type(igt_crtc_t *pipe, int plane_type)
> {
> int i, plane_idx = -1;
>
> @@ -3590,7 +3590,7 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
> *
> * Returns: The number of planes that match the requested plane type
> */
> -int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type)
> +int igt_pipe_count_plane_type(igt_crtc_t *pipe, int plane_type)
> {
> int i, count = 0;
>
> @@ -3611,7 +3611,7 @@ int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type)
> *
> * Returns: The @index th plane that matches the requested plane type
> */
> -igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
> +igt_plane_t *igt_pipe_get_plane_type_index(igt_crtc_t *pipe, int plane_type,
> int index)
> {
> int i, type_index = 0;
> @@ -3658,7 +3658,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
>
> for (i = 0; i < igt_display_n_crtcs(display); i++) {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, i);
> if (pipe->valid)
> full_pipe_mask |= (1 << i);
> }
> @@ -3735,7 +3735,7 @@ igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe p
> return chosen_outputs[pipe];
> }
>
> -static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)
> +static igt_output_t *igt_pipe_get_output(igt_crtc_t *pipe)
> {
> igt_display_t *display = pipe->display;
> int i;
> @@ -3762,7 +3762,7 @@ static uint32_t igt_plane_get_fb_id(igt_plane_t *plane)
> }
>
> static bool
> -igt_atomic_ignore_plane_prop(igt_pipe_t *pipe, uint32_t prop)
> +igt_atomic_ignore_plane_prop(igt_crtc_t *pipe, uint32_t prop)
> {
> igt_display_t *display = pipe->display;
>
> @@ -3781,7 +3781,7 @@ igt_atomic_ignore_plane_prop(igt_pipe_t *pipe, uint32_t prop)
> * Add position and fb changes of a plane to the atomic property set
> */
> static void
> -igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe,
> +igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_crtc_t *pipe,
> drmModeAtomicReq *req)
> {
> igt_display_t *display = pipe->display;
> @@ -3823,7 +3823,7 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe,
> * Add colorop properties
> */
> static void
> -igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_pipe_t *pipe,
> +igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_crtc_t *pipe,
> drmModeAtomicReq *req)
> {
> igt_display_t *display = pipe->display;
> @@ -3882,7 +3882,7 @@ igt_atomic_prepare_colorop_commit(igt_colorop_t *colorop, igt_pipe_t *pipe,
> * tests that expect a specific error code).
> */
> static int igt_drm_plane_commit(igt_plane_t *plane,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> bool fail_on_error)
> {
> igt_display_t *display = pipe->display;
> @@ -3986,7 +3986,7 @@ static int igt_drm_plane_commit(igt_plane_t *plane,
> * code).
> */
> static int igt_cursor_commit_legacy(igt_plane_t *cursor,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> bool fail_on_error)
> {
> igt_display_t *display = pipe->display;
> @@ -4037,7 +4037,7 @@ static int igt_cursor_commit_legacy(igt_plane_t *cursor,
> * (setmode).
> */
> static int igt_primary_plane_commit_legacy(igt_plane_t *primary,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> bool fail_on_error)
> {
> struct igt_display *display = primary->pipe->display;
> @@ -4105,7 +4105,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,
> }
>
> static int igt_plane_fixup_rotation(igt_plane_t *plane,
> - igt_pipe_t *pipe)
> + igt_crtc_t *pipe)
> {
> int ret;
>
> @@ -4152,7 +4152,7 @@ static int igt_plane_fixup_rotation(igt_plane_t *plane,
> * which API is used to do the programming.
> */
> static int igt_plane_commit(igt_plane_t *plane,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> enum igt_commit_style s,
> bool fail_on_error)
> {
> @@ -4196,7 +4196,7 @@ static bool is_atomic_prop(enum igt_atomic_crtc_properties prop)
> * further programming will take place, which may result in some changes
> * taking effect and others not taking effect.
> */
> -static int igt_pipe_commit(igt_pipe_t *pipe,
> +static int igt_pipe_commit(igt_crtc_t *pipe,
> enum igt_commit_style s,
> bool fail_on_error)
> {
> @@ -4663,7 +4663,7 @@ igt_output_replace_prop_blob(igt_output_t *output, enum igt_atomic_connector_pro
> * is a blob, the blob id is returned. This can be passed
> * to drmModeGetPropertyBlob() to get the contents of the blob.
> */
> -uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> +uint64_t igt_pipe_obj_get_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
> {
> igt_assert(igt_pipe_obj_has_prop(pipe, prop));
>
> @@ -4680,7 +4680,7 @@ uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
> * Returns: False if the given @pipe_obj doesn't have the enum @prop or
> * failed to set the enum property @val else True.
> */
> -bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe_obj,
> +bool igt_pipe_obj_try_prop_enum(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop,
> const char *val)
> {
> @@ -4706,7 +4706,7 @@ bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe_obj,
> * This function tries to set given enum property @prop value @val to
> * the given @pipe_obj, and terminate the execution if its failed.
> */
> -void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe_obj,
> +void igt_pipe_obj_set_prop_enum(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop,
> const char *val)
> {
> @@ -4730,7 +4730,7 @@ void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe_obj,
> * it works better with legacy commit.
> */
> void
> -igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, const void *ptr, size_t length)
> +igt_pipe_obj_replace_prop_blob(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop, const void *ptr, size_t length)
> {
> igt_display_t *display = pipe->display;
> uint64_t *blob = &pipe->values[prop];
> @@ -4751,7 +4751,7 @@ igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
> /*
> * Add crtc property changes to the atomic property set
> */
> -static void igt_atomic_prepare_crtc_commit(igt_pipe_t *pipe_obj, drmModeAtomicReq *req)
> +static void igt_atomic_prepare_crtc_commit(igt_crtc_t *pipe_obj, drmModeAtomicReq *req)
> {
> int i;
>
> @@ -4815,7 +4815,7 @@ static int igt_atomic_commit(igt_display_t *display, uint32_t flags, void *user_
> req = drmModeAtomicAlloc();
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> /*
> @@ -4866,7 +4866,7 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)
> enum pipe pipe;
>
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> igt_plane_t *plane;
>
> if (s == COMMIT_ATOMIC) {
> @@ -4969,7 +4969,7 @@ static int do_display_commit(igt_display_t *display,
> ret = igt_atomic_commit(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> } else {
> for_each_pipe(display, pipe) {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display,
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display,
> pipe);
>
> ret = igt_pipe_commit(pipe_obj, s, fail_on_error);
> @@ -5244,7 +5244,7 @@ drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output)
> */
> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode)
> {
> - igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
> + igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
>
> if (mode)
> output->override_mode = *mode;
> @@ -5277,7 +5277,7 @@ int igt_output_preferred_vrefresh(igt_output_t *output)
> return 60;
> }
>
> -static const char *igt_crtc_name(igt_pipe_t *crtc)
> +static const char *igt_crtc_name(igt_crtc_t *crtc)
> {
> if (crtc == NULL)
> return "None";
> @@ -5293,10 +5293,10 @@ static const char *igt_crtc_name(igt_pipe_t *crtc)
> * This function sets a @crtc to a specific @output connector by
> * setting the CRTC_ID property of the @crtc.
> */
> -void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj)
> +void igt_output_set_crtc(igt_output_t *output, igt_crtc_t *pipe_obj)
> {
> igt_display_t *display = output->display;
> - igt_pipe_t *old_pipe = NULL;
> + igt_crtc_t *old_pipe = NULL;
>
> igt_assert(output->name);
>
> @@ -5456,7 +5456,7 @@ bool igt_fit_modes_in_bw(igt_display_t *display)
> */
> void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
> {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
>
> if (force && display->is_atomic) {
> igt_output_t *output = igt_pipe_get_output(pipe_obj);
> @@ -5481,7 +5481,7 @@ void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
> */
> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx)
> {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
>
> pipe = igt_output_get_driving_pipe(output);
> igt_assert(pipe);
> @@ -5501,7 +5501,7 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx)
> */
> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
> {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
>
> pipe = igt_output_get_driving_pipe(output);
> igt_assert(pipe);
> @@ -5520,7 +5520,7 @@ igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
> */
> int igt_output_count_plane_type(igt_output_t *output, int plane_type)
> {
> - igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
> + igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
> igt_assert(pipe);
>
> return igt_pipe_count_plane_type(pipe, plane_type);
> @@ -5539,7 +5539,7 @@ int igt_output_count_plane_type(igt_output_t *output, int plane_type)
> igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
> int plane_type, int index)
> {
> - igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
> + igt_crtc_t *pipe = igt_output_get_driving_pipe(output);
> igt_assert(pipe);
>
> return igt_pipe_get_plane_type_index(pipe, plane_type, index);
> @@ -5557,7 +5557,7 @@ igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
> */
> void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: plane_set_fb(%d)\n", kmstest_pipe_name(pipe->pipe),
> @@ -5631,7 +5631,7 @@ void igt_plane_set_fence_fd(igt_plane_t *plane, int fence_fd)
> * @plane: Target plane pointer
> * @pipe: The pipe to assign the plane to
> */
> -void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe)
> +void igt_plane_set_pipe(igt_plane_t *plane, igt_crtc_t *pipe)
> {
> /*
> * HACK: Point the global plane back to the local plane.
> @@ -5653,7 +5653,7 @@ void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe)
> */
> void igt_plane_set_position(igt_plane_t *plane, int x, int y)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: plane_set_position(%d,%d)\n",
> @@ -5675,7 +5675,7 @@ void igt_plane_set_position(igt_plane_t *plane, int x, int y)
> */
> void igt_plane_set_size(igt_plane_t *plane, int w, int h)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: plane_set_size (%dx%d)\n",
> @@ -5698,7 +5698,7 @@ void igt_plane_set_size(igt_plane_t *plane, int w, int h)
> void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,
> uint32_t x, uint32_t y)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: fb_set_position(%d,%d)\n",
> @@ -5722,7 +5722,7 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,
> void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,
> uint32_t w, uint32_t h)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: fb_set_size(%dx%d)\n",
> @@ -5765,7 +5765,7 @@ const char *igt_plane_rotation_name(igt_rotation_t rotation)
> */
> void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)
> {
> - igt_pipe_t *pipe = plane->pipe;
> + igt_crtc_t *pipe = plane->pipe;
> igt_display_t *display = pipe->display;
>
> LOG(display, "%s.%d: plane_set_rotation(%s°)\n",
> @@ -5782,7 +5782,7 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)
> * Marks this pipe for requesting an out fence at the next atomic commit
> * will contain the fd number of the out fence created by KMS.
> */
> -void igt_pipe_request_out_fence(igt_pipe_t *pipe)
> +void igt_pipe_request_out_fence(igt_crtc_t *pipe)
> {
> igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)&pipe->out_fence_fd);
> }
> @@ -5832,7 +5832,7 @@ static int __igt_vblank_wait(int drm_fd, int crtc_offset, int count)
> *
> * Waits for a given number of vertical blank intervals
> */
> -void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
> +void igt_wait_for_vblank_count(igt_crtc_t *crtc, int count)
> {
> igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, count) == 0);
> }
> @@ -5846,7 +5846,7 @@ void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count)
> *
> * Waits for 1 vertical blank intervals
> */
> -void igt_wait_for_vblank(igt_pipe_t *crtc)
> +void igt_wait_for_vblank(igt_crtc_t *crtc)
> {
> igt_assert(__igt_vblank_wait(crtc->display->drm_fd, crtc->crtc_offset, 1) == 0);
> }
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 8f257c86d88f..a8bb356c2d49 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -379,7 +379,7 @@ extern const char * const igt_plane_prop_names[];
> extern const char * const igt_colorop_prop_names[];
>
> typedef struct igt_display igt_display_t;
> -typedef struct igt_pipe igt_pipe_t;
> +typedef struct igt_crtc igt_crtc_t;
> typedef uint32_t igt_fixed_t; /* 16.16 fixed point */
>
> #define IGT_NUM_PLANE_COLOR_PIPELINES 4
> @@ -425,7 +425,7 @@ typedef struct igt_colorop {
>
> typedef struct igt_plane {
> /*< private >*/
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> struct igt_plane *ref;
> int index;
> /* capabilities */
> @@ -473,7 +473,7 @@ typedef struct igt_plane {
> * DRM_IOCTL_WAIT_VBLANK notion of pipe is confusing and we are using
> * crtc_offset instead (refer people to #igt_wait_for_vblank_count)
> */
> -struct igt_pipe {
> +struct igt_crtc {
> igt_display_t *display;
> /* ID of a hardware pipe */
> enum pipe pipe;
> @@ -535,7 +535,7 @@ struct igt_display {
> igt_output_t *outputs;
> igt_plane_t *planes;
> igt_colorop_t *colorops;
> - igt_pipe_t *pipes;
> + igt_crtc_t *pipes;
> bool has_cursor_plane;
> bool is_atomic;
> bool has_virt_cursor_plane;
> @@ -578,7 +578,7 @@ void igt_display_require_output(igt_display_t *display);
> void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> int igt_display_n_crtcs(igt_display_t *display);
>
> -static inline igt_pipe_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
> +static inline igt_crtc_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
> {
> return &display->pipes[pipe];
> }
> @@ -589,7 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
> drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
> int igt_output_preferred_vrefresh(igt_output_t *output);
> -void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
> +void igt_output_set_crtc(igt_output_t *output, igt_crtc_t *pipe_obj);
> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
> int igt_output_count_plane_type(igt_output_t *output, int plane_type);
> @@ -602,18 +602,18 @@ drmModeModeInfo *igt_std_1024_mode_get(int vrefresh);
> void igt_output_set_writeback_fb(igt_output_t *output, struct igt_fb *fb);
> void igt_modeset_disable_all_outputs(igt_display_t *display);
>
> -igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type);
> -int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type);
> -igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
> +igt_plane_t *igt_pipe_get_plane_type(igt_crtc_t *pipe, int plane_type);
> +int igt_pipe_count_plane_type(igt_crtc_t *pipe, int plane_type);
> +igt_plane_t *igt_pipe_get_plane_type_index(igt_crtc_t *pipe, int plane_type,
> int index);
> bool output_is_internal_panel(igt_output_t *output);
> igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe);
>
> -void igt_pipe_request_out_fence(igt_pipe_t *pipe);
> +void igt_pipe_request_out_fence(igt_crtc_t *pipe);
>
> void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb);
> void igt_plane_set_fence_fd(igt_plane_t *plane, int fence_fd);
> -void igt_plane_set_pipe(igt_plane_t *plane, igt_pipe_t *pipe);
> +void igt_plane_set_pipe(igt_plane_t *plane, igt_crtc_t *pipe);
> void igt_plane_set_position(igt_plane_t *plane, int x, int y);
> void igt_plane_set_size(igt_plane_t *plane, int w, int h);
> void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation);
> @@ -637,8 +637,8 @@ static inline bool igt_plane_has_rotation(igt_plane_t *plane, igt_rotation_t rot
> }
> const char *igt_plane_rotation_name(igt_rotation_t rotation);
>
> -void igt_wait_for_vblank(igt_pipe_t *crtc);
> -void igt_wait_for_vblank_count(igt_pipe_t *crtc, int count);
> +void igt_wait_for_vblank(igt_crtc_t *crtc);
> +void igt_wait_for_vblank_count(igt_crtc_t *crtc, int count);
>
> /**
> * igt_output_is_connected:
> @@ -1043,12 +1043,12 @@ extern void igt_output_replace_prop_blob(igt_output_t *output,
> * Returns: True if the property is supported, otherwise false.
> */
> static inline bool
> -igt_pipe_obj_has_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> +igt_pipe_obj_has_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
> {
> return pipe->props[prop];
> }
>
> -uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop);
> +uint64_t igt_pipe_obj_get_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop);
>
> /**
> * igt_pipe_obj_is_prop_changed:
> @@ -1057,7 +1057,7 @@ uint64_t igt_pipe_obj_get_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties
> *
> * Check whether a given @prop changed for the @pipe_obj.
> */
> -static inline bool igt_pipe_obj_is_prop_changed(igt_pipe_t *pipe_obj,
> +static inline bool igt_pipe_obj_is_prop_changed(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop)
> {
> return pipe_obj->changed & (1 << prop);
> @@ -1085,7 +1085,7 @@ static inline bool igt_pipe_is_prop_changed(igt_display_t *display,
> *
> * Sets the given @prop for the @pipe_obj.
> */
> -static inline void igt_pipe_obj_set_prop_changed(igt_pipe_t *pipe_obj,
> +static inline void igt_pipe_obj_set_prop_changed(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop)
> {
> pipe_obj->changed |= 1 << prop;
> @@ -1098,7 +1098,7 @@ static inline void igt_pipe_obj_set_prop_changed(igt_pipe_t *pipe_obj,
> *
> * Clears the given @prop for the @pipe_obj.
> */
> -static inline void igt_pipe_obj_clear_prop_changed(igt_pipe_t *pipe_obj,
> +static inline void igt_pipe_obj_clear_prop_changed(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop)
> {
> pipe_obj->changed &= ~(1 << prop);
> @@ -1112,7 +1112,7 @@ static inline void igt_pipe_obj_clear_prop_changed(igt_pipe_t *pipe_obj,
> *
> * Sets the given @prop with the @value for the @pipe_obj.
> */
> -static inline void igt_pipe_obj_set_prop_value(igt_pipe_t *pipe_obj,
> +static inline void igt_pipe_obj_set_prop_value(igt_crtc_t *pipe_obj,
> enum igt_atomic_crtc_properties prop,
> uint64_t value)
> {
> @@ -1137,14 +1137,14 @@ static inline void igt_pipe_set_prop_value(igt_display_t *display,
> value);
> }
>
> -extern bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe,
> +extern bool igt_pipe_obj_try_prop_enum(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> const char *val);
>
> -extern void igt_pipe_obj_set_prop_enum(igt_pipe_t *pipe,
> +extern void igt_pipe_obj_set_prop_enum(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> const char *val);
> -extern void igt_pipe_obj_replace_prop_blob(igt_pipe_t *pipe,
> +extern void igt_pipe_obj_replace_prop_blob(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> const void *ptr, size_t length);
> void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force);
> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> index 00560ce3ac00..6d6fce320467 100644
> --- a/tests/amdgpu/amd_abm.c
> +++ b/tests/amdgpu/amd_abm.c
> @@ -42,7 +42,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int drm_fd;
> drmModeModeInfo *mode;
> enum pipe pipe_id;
> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> index 976582ade9eb..8ab409164283 100644
> --- a/tests/amdgpu/amd_assr.c
> +++ b/tests/amdgpu/amd_assr.c
> @@ -160,7 +160,7 @@ static bool get_internal_display_flag(data_t *data, igt_output_t *output)
> static void present_visual_pattern(data_t *data, igt_output_t *output)
> {
> igt_plane_t *primary;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> drmModeModeInfo *mode;
> igt_fb_t fb;
> cairo_t *cr;
> diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
> index 460e69dfa7c1..7f768ea4e209 100644
> --- a/tests/amdgpu/amd_bypass.c
> +++ b/tests/amdgpu/amd_bypass.c
> @@ -35,7 +35,7 @@ typedef struct {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_crc_t crc_fb;
> igt_crc_t crc_dprx;
> diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
> index 422b111768c0..9631fc34d9f4 100644
> --- a/tests/amdgpu/amd_color.c
> +++ b/tests/amdgpu/amd_color.c
> @@ -42,7 +42,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> drmModeModeInfo *mode;
> enum pipe pipe_id;
> diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
> index b1809b65aa0e..11d77c6e9f4a 100644
> --- a/tests/amdgpu/amd_dp_dsc.c
> +++ b/tests/amdgpu/amd_dp_dsc.c
> @@ -36,7 +36,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary[MAX_PIPES];
> igt_output_t *output[MAX_PIPES];
> - igt_pipe_t *pipe[MAX_PIPES];
> + igt_crtc_t *pipe[MAX_PIPES];
> igt_pipe_crc_t *pipe_crc[MAX_PIPES];
> drmModeModeInfo mode[MAX_PIPES];
> enum pipe pipe_id[MAX_PIPES];
> diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
> index 71c859799f74..e2982f755d46 100644
> --- a/tests/amdgpu/amd_hotplug.c
> +++ b/tests/amdgpu/amd_hotplug.c
> @@ -39,7 +39,7 @@ typedef struct data {
> igt_plane_t *overlay[MAX_PIPES];
> igt_plane_t *cursor[MAX_PIPES];
> igt_output_t *output[MAX_PIPES];
> - igt_pipe_t *pipe[MAX_PIPES];
> + igt_crtc_t *pipe[MAX_PIPES];
> igt_pipe_crc_t *pipe_crc[MAX_PIPES];
> drmModeModeInfo mode[MAX_PIPES];
> enum pipe pipe_id[MAX_PIPES];
> diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
> index 16ef6ffe40f1..f1db9649c4e8 100644
> --- a/tests/amdgpu/amd_ilr.c
> +++ b/tests/amdgpu/amd_ilr.c
> @@ -41,7 +41,7 @@ typedef struct {
> igt_plane_t *primary;
> igt_output_t *output;
> igt_fb_t fb;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_crc_t crc_dprx;
> enum pipe pipe_id;
> diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
> index 3ea4168f93ed..d042eb58d656 100644
> --- a/tests/amdgpu/amd_link_settings.c
> +++ b/tests/amdgpu/amd_link_settings.c
> @@ -30,7 +30,7 @@ typedef struct
> igt_plane_t *primary;
> igt_output_t *output;
> igt_fb_t fb;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> enum pipe pipe_id;
> int connector_type;
> int w, h;
> diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
> index a1a04d0ea9c3..5364cf797163 100644
> --- a/tests/amdgpu/amd_mall.c
> +++ b/tests/amdgpu/amd_mall.c
> @@ -39,7 +39,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> drmModeModeInfo *mode;
> enum pipe pipe_id;
> diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
> index bb362926c6b9..9abf7abd3800 100644
> --- a/tests/amdgpu/amd_max_bpc.c
> +++ b/tests/amdgpu/amd_max_bpc.c
> @@ -30,7 +30,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_pipe_crc_t *pipe_crc_dither;
> drmModeModeInfo *mode;
> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
> index ef2b59be4a1c..68fbe5f4167f 100644
> --- a/tests/amdgpu/amd_mem_leak.c
> +++ b/tests/amdgpu/amd_mem_leak.c
> @@ -32,7 +32,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> drmModeModeInfo *mode;
> enum pipe pipe_id;
> int fd;
> diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
> index 94bc99f4143f..a35eeb7ab9d4 100644
> --- a/tests/amdgpu/amd_multidisplay_modeset.c
> +++ b/tests/amdgpu/amd_multidisplay_modeset.c
> @@ -153,7 +153,7 @@ static void test_init(struct data_t *data)
>
> for_each_pipe(display, i) {
> igt_output_t *output;
> - igt_pipe_t *pipes;
> + igt_crtc_t *pipes;
>
> /* For each valid pipe, get one connected display.
> * This will let displays connected to MST hub be
> diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
> index 0e0a55396b73..3decc7d805e0 100644
> --- a/tests/amdgpu/amd_odm.c
> +++ b/tests/amdgpu/amd_odm.c
> @@ -23,7 +23,7 @@ struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> drmModeModeInfoPtr mode;
> enum pipe pipe_id;
> int fd;
> diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
> index cb1fcab930e3..53fb6a12f558 100644
> --- a/tests/amdgpu/amd_plane.c
> +++ b/tests/amdgpu/amd_plane.c
> @@ -44,7 +44,7 @@ typedef struct data {
> igt_plane_t *overlay[MAX_PIPES];
> igt_plane_t *overlay2[MAX_PIPES];
> igt_output_t *output[MAX_PIPES];
> - igt_pipe_t *pipe[MAX_PIPES];
> + igt_crtc_t *pipe[MAX_PIPES];
> igt_pipe_crc_t *pipe_crc[MAX_PIPES];
> drmModeModeInfo mode[MAX_PIPES];
> enum pipe pipe_id[MAX_PIPES];
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 9071a2e9d780..c66dcf1ef39d 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -56,7 +56,7 @@ typedef struct data {
> igt_plane_t *cursor;
> igt_plane_t *overlay;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_fb_t ov_fb[2];
> igt_fb_t pm_fb[2];
> diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
> index 38fe80a236f6..3104c436a326 100644
> --- a/tests/amdgpu/amd_replay.c
> +++ b/tests/amdgpu/amd_replay.c
> @@ -21,7 +21,7 @@ struct test_data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> drmModeModeInfo *mode;
> igt_fb_t ref_fb;
> igt_fb_t ref_fb2;
> diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
> index 0998a0c960d0..66114d36a8af 100644
> --- a/tests/amdgpu/amd_subvp.c
> +++ b/tests/amdgpu/amd_subvp.c
> @@ -16,7 +16,7 @@ struct data {
> igt_display_t display;
> igt_plane_t *primary[IGT_MAX_PIPES];
> igt_output_t *output[IGT_MAX_PIPES];
> - igt_pipe_t *pipe[IGT_MAX_PIPES];
> + igt_crtc_t *pipe[IGT_MAX_PIPES];
> igt_pipe_crc_t *pipe_crc[IGT_MAX_PIPES];
> drmModeModeInfo mode[IGT_MAX_PIPES];
> enum pipe pipe_id[IGT_MAX_PIPES];
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index 72c02dbbc339..2512f7b7e049 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -450,7 +450,7 @@ prep_pipe(data_t *data, enum pipe p)
>
> static int test_setup(data_t *data, enum pipe p)
> {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int i = 0;
>
> igt_display_reset(&data->display);
> diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
> index 0507ad7ac38a..6f161660b043 100644
> --- a/tests/chamelium/kms_chamelium_sharpness_filter.c
> +++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
> @@ -177,7 +177,7 @@ static void test_t(data_t *data, igt_plane_t *primary,
>
> static int test_setup(data_t *data, enum pipe p)
> {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int i = 0;
>
> igt_display_reset(&data->display);
> diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
> index 9c1d724ac3cc..31a872e4b559 100644
> --- a/tests/intel/gem_pxp.c
> +++ b/tests/intel/gem_pxp.c
> @@ -1204,7 +1204,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> drmModeModeInfo *mode;
> igt_fb_t ref_fb, protected_fb;
> igt_plane_t *plane;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_crc_t ref_crc, new_crc;
> int width = 0, height = 0, i = 0, ret;
> diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> index 1ddda65e4ab6..8a9ed8042d89 100644
> --- a/tests/intel/kms_big_fb.c
> +++ b/tests/intel/kms_big_fb.c
> @@ -375,7 +375,7 @@ static void prep_fb(data_t *data)
>
> static void set_c8_lut(data_t *data)
> {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> struct drm_color_lut *lut;
> int i, lut_size = 256;
>
> @@ -396,7 +396,7 @@ static void set_c8_lut(data_t *data)
>
> static void unset_lut(data_t *data)
> {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
>
> igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, NULL, 0);
> }
> diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> index 441ffa200e64..a9c4dda98f2c 100644
> --- a/tests/intel/kms_cdclk.c
> +++ b/tests/intel/kms_cdclk.c
> @@ -237,7 +237,7 @@ static void set_mode(data_t *data, int count, drmModeModeInfo *mode,
> igt_output_t **valid_outputs, struct igt_fb fb)
> {
> igt_display_t *display = &data->display;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_plane_t *plane;
>
> for (int i = 0; i < count; i++) {
> diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> index d9452dff0b84..5ffa357e08c8 100644
> --- a/tests/intel/kms_flip_scaled_crc.c
> +++ b/tests/intel/kms_flip_scaled_crc.c
> @@ -537,7 +537,7 @@ static void free_fbs(data_t *data)
>
> static void set_lut(data_t *data, enum pipe pipe)
> {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> struct drm_color_lut *lut;
> drmModeCrtc *drm_crtc;
> int i, lut_size;
> @@ -569,7 +569,7 @@ static void set_lut(data_t *data, enum pipe pipe)
>
> static void clear_lut(data_t *data, enum pipe pipe)
> {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
>
> igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
> }
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index c1242e8d514c..06ceb640a976 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -157,7 +157,7 @@ typedef struct {
> bool limited;
> enum pipe pipe_id;
> struct igt_fb fb[4];
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_display_t display;
> igt_output_t *output;
> igt_plane_t *plane[4];
> @@ -417,7 +417,7 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
> cleanup(data);
> }
>
> -static bool has_sharpness_filter(igt_pipe_t *pipe)
> +static bool has_sharpness_filter(igt_crtc_t *pipe)
> {
> return igt_pipe_obj_has_prop(pipe, IGT_CRTC_SHARPNESS_STRENGTH);
> }
> diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
> index b525bff8da0b..967130f26f32 100644
> --- a/tests/intel/xe_pxp.c
> +++ b/tests/intel/xe_pxp.c
> @@ -839,7 +839,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
> igt_output_t *output;
> drmModeModeInfo *mode;
> igt_plane_t *plane;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> igt_crc_t ref_crc, new_crc;
>
> @@ -881,7 +881,7 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
> drmModeModeInfo *mode;
> igt_fb_t ref_fb, pxp_fb;
> igt_plane_t *plane;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int width = 0, height = 0, i = 0;
> uint32_t q;
> uint32_t vm;
> @@ -938,7 +938,7 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
> drmModeModeInfo *mode;
> igt_fb_t ref_fb, pxp_fb;
> igt_plane_t *plane;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int width = 0, height = 0, i = 0;
> uint32_t q;
> uint32_t vm;
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 236c1d5445e2..58d57cafecce 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -113,7 +113,7 @@ static bool all_pipes = false;
> typedef struct {
> igt_display_t display;
> igt_plane_t *primary;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> int drm_fd;
> igt_fb_t fb;
> } data_t;
> @@ -222,7 +222,7 @@ static bool crtc_filter(enum igt_atomic_crtc_properties prop)
> return true;
> }
>
> -static void crtc_get_current_state(igt_pipe_t *pipe, uint64_t *values)
> +static void crtc_get_current_state(igt_crtc_t *pipe, uint64_t *values)
> {
> int i;
>
> @@ -236,7 +236,7 @@ static void crtc_get_current_state(igt_pipe_t *pipe, uint64_t *values)
> }
> }
>
> -static void crtc_check_current_state(igt_pipe_t *pipe,
> +static void crtc_check_current_state(igt_crtc_t *pipe,
> const uint64_t *pipe_values,
> const uint64_t *primary_values,
> enum kms_atomic_check_relax relax)
> @@ -307,7 +307,7 @@ static void crtc_check_current_state(igt_pipe_t *pipe,
> drmModeFreePropertyBlob(mode_prop);
> }
>
> -static void crtc_commit(igt_pipe_t *pipe, igt_plane_t *plane,
> +static void crtc_commit(igt_crtc_t *pipe, igt_plane_t *plane,
> enum igt_commit_style s,
> enum kms_atomic_check_relax relax)
> {
> @@ -317,7 +317,7 @@ static void crtc_commit(igt_pipe_t *pipe, igt_plane_t *plane,
> plane_check_current_state(plane, plane->values, relax);
> }
>
> -static void crtc_commit_atomic_flags_err(igt_pipe_t *pipe, igt_plane_t *plane,
> +static void crtc_commit_atomic_flags_err(igt_crtc_t *pipe, igt_plane_t *plane,
> unsigned flags,
> enum kms_atomic_check_relax relax,
> int err)
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 5b8728631a75..4631d54725db 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -556,7 +556,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> {
> drmModeModeInfo *mode, override_mode;
> igt_plane_t *plane;
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> uint32_t iter_max, i;
> struct plane_parms parms[pipe_obj->n_planes];
> unsigned flags = 0;
> @@ -921,7 +921,7 @@ retry:
> DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, .5, .5, .5, &data->fbs[1]);
>
> for_each_pipe(&data->display, i) {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, i);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, i);
> igt_plane_t *plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> drmModeModeInfo *mode = NULL;
>
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 2622eae89eda..44b3c6ddf04c 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -67,7 +67,7 @@ typedef struct data {
> igt_plane_t *primary[IGT_MAX_PIPES];
> igt_output_t *output[IGT_MAX_PIPES];
> igt_output_t *connected_output[IGT_MAX_PIPES];
> - igt_pipe_t *pipe[IGT_MAX_PIPES];
> + igt_crtc_t *pipe[IGT_MAX_PIPES];
> igt_pipe_crc_t *pipe_crc[IGT_MAX_PIPES];
> drmModeModeInfo mode[IGT_MAX_PIPES];
> enum pipe pipe_id[IGT_MAX_PIPES];
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index 072d0ad09474..9a259d8d3072 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -733,7 +733,7 @@ prep_pipe(data_t *data, enum pipe p)
>
> static void test_setup(data_t *data, enum pipe p)
> {
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
>
> prep_pipe(data, p);
> igt_require_pipe_crc(data->drm_fd);
> diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
> index 37639a261cd2..9e68ef334f91 100644
> --- a/tests/kms_color_helper.c
> +++ b/tests/kms_color_helper.c
> @@ -220,7 +220,7 @@ struct drm_color_lut *coeffs_to_lut(data_t *data,
> }
>
> void set_degamma(data_t *data,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> const gamma_lut_t *gamma)
> {
> size_t size = sizeof(struct drm_color_lut) * gamma->size;
> @@ -233,7 +233,7 @@ void set_degamma(data_t *data,
> }
>
> void set_gamma(data_t *data,
> - igt_pipe_t *pipe, const gamma_lut_t *gamma)
> + igt_crtc_t *pipe, const gamma_lut_t *gamma)
> {
> size_t size = sizeof(struct drm_color_lut) * gamma->size;
> struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
> @@ -244,7 +244,7 @@ void set_gamma(data_t *data,
> free(lut);
> }
>
> -void set_ctm(igt_pipe_t *pipe, const double *coefficients)
> +void set_ctm(igt_crtc_t *pipe, const double *coefficients)
> {
> struct drm_color_ctm ctm;
> int i;
> @@ -264,14 +264,14 @@ void set_ctm(igt_pipe_t *pipe, const double *coefficients)
> igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_CTM, &ctm, sizeof(ctm));
> }
>
> -void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> +void disable_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
> {
> if (igt_pipe_obj_has_prop(pipe, prop))
> igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
> }
>
> drmModePropertyBlobPtr
> -get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> +get_blob(data_t *data, igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop)
> {
> uint64_t prop_value;
>
> @@ -284,7 +284,7 @@ get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> }
>
> int
> -pipe_set_property_blob_id(igt_pipe_t *pipe,
> +pipe_set_property_blob_id(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> uint32_t blob_id)
> {
> @@ -304,7 +304,7 @@ pipe_set_property_blob_id(igt_pipe_t *pipe,
> }
>
> int
> -pipe_set_property_blob(igt_pipe_t *pipe,
> +pipe_set_property_blob(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> void *ptr, size_t length)
> {
> @@ -320,7 +320,7 @@ invalid_lut_sizes(data_t *data, enum pipe p,
> enum igt_atomic_crtc_properties prop, int size)
> {
> igt_display_t *display = &data->display;
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, p);
> struct drm_color_lut *lut;
> size_t lut_size = size * sizeof(lut[0]);
>
> @@ -363,7 +363,7 @@ invalid_degamma_lut_sizes(data_t *data, enum pipe p)
> void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
> {
> igt_display_t *display = &data->display;
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, p);
> void *ptr;
>
> igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
> diff --git a/tests/kms_color_helper.h b/tests/kms_color_helper.h
> index 23463b944b6f..fb9c3b3aa6b1 100644
> --- a/tests/kms_color_helper.h
> +++ b/tests/kms_color_helper.h
> @@ -90,25 +90,25 @@ struct drm_color_lut *coeffs_to_lut(data_t *data,
> uint32_t color_depth,
> int off);
> void set_degamma(data_t *data,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> const gamma_lut_t *gamma);
> void set_gamma(data_t *data,
> - igt_pipe_t *pipe,
> + igt_crtc_t *pipe,
> const gamma_lut_t *gamma);
> -void set_ctm(igt_pipe_t *pipe, const double *coefficients);
> -void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop);
> +void set_ctm(igt_crtc_t *pipe, const double *coefficients);
> +void disable_prop(igt_crtc_t *pipe, enum igt_atomic_crtc_properties prop);
>
> #define disable_degamma(pipe) disable_prop(pipe, IGT_CRTC_DEGAMMA_LUT)
> #define disable_gamma(pipe) disable_prop(pipe, IGT_CRTC_GAMMA_LUT)
> #define disable_ctm(pipe) disable_prop(pipe, IGT_CRTC_CTM)
>
> -drmModePropertyBlobPtr get_blob(data_t *data, igt_pipe_t *pipe,
> +drmModePropertyBlobPtr get_blob(data_t *data, igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop);
> bool crc_equal(igt_crc_t *a, igt_crc_t *b);
> -int pipe_set_property_blob_id(igt_pipe_t *pipe,
> +int pipe_set_property_blob_id(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> uint32_t blob_id);
> -int pipe_set_property_blob(igt_pipe_t *pipe,
> +int pipe_set_property_blob(igt_crtc_t *pipe,
> enum igt_atomic_crtc_properties prop,
> void *ptr, size_t length);
> void invalid_gamma_lut_sizes(data_t *data, enum pipe p);
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index 0c05453496e7..4ef8e0f56339 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -158,7 +158,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> igt_output_t *output)
> {
> drmModeModeInfo *mode;
> - igt_pipe_t *p;
> + igt_crtc_t *p;
> igt_plane_t *primary;
> int *x;
> int *y;
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 509cff1cf335..7171e565cd51 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -471,7 +471,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
>
> static void flip_nonblocking(igt_display_t *display, enum pipe pipe_id, bool atomic, struct igt_fb *fb, void *data)
> {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> int ret;
>
> @@ -535,7 +535,7 @@ static void transition_nonblocking(igt_display_t *display, enum pipe pipe_id,
> struct igt_fb *prim_fb, struct igt_fb *argb_fb,
> bool hide_sprite)
> {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> igt_plane_t *sprite = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_OVERLAY);
>
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 3731b7d4b4ea..f79fbb2cb2f3 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -74,7 +74,7 @@ typedef struct {
> /* Prepare test data. */
> static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
> {
> - igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, p);
> + igt_crtc_t *pipe = igt_crtc_for_pipe(&data->display, p);
>
> igt_assert(pipe);
>
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index e6092dbfce99..39f2e860d7cb 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -111,7 +111,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> drmModeModeInfo *mode;
> enum pipe pipe_id;
> diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
> index 7ce142f44fd4..663e95db81b3 100644
> --- a/tests/kms_multipipe_modeset.c
> +++ b/tests/kms_multipipe_modeset.c
> @@ -55,7 +55,7 @@ static void run_test(data_t *data, int valid_outputs)
> igt_crc_t ref_crcs[IGT_MAX_PIPES], new_crcs[IGT_MAX_PIPES];
> igt_display_t *display = &data->display;
> uint16_t width = 0, height = 0;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_plane_t *plane;
> drmModeModeInfo *mode;
> int i = 0;
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 535ce84d3074..2c083f4b7da9 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -522,7 +522,7 @@ static const color_t colors_reduced[] = {
> static void set_legacy_lut(data_t *data, enum pipe pipe,
> uint16_t mask)
> {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> drmModeCrtc *drm_crtc;
> uint16_t *lut;
> int i, lut_size;
> @@ -549,7 +549,7 @@ static void set_legacy_lut(data_t *data, enum pipe pipe,
> static bool set_c8_legacy_lut(data_t *data, enum pipe pipe,
> uint16_t mask)
> {
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> drmModeCrtc *drm_crtc;
> uint16_t *r, *g, *b;
> int i, lut_size;
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 03fdb847d8c9..8b172794bc88 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -75,7 +75,7 @@ typedef struct data {
> igt_plane_t *overlay;
> igt_plane_t *cursor;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_pipe_crc_t *pipe_crc;
> drmModeModeInfo *mode;
> igt_fb_t ref_fb;
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 79af0d93a370..342eb7b293da 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -204,7 +204,7 @@ prepare_planes(data_t *data, enum pipe pipe_id, color_t *color, igt_plane_t **pl
> uint64_t modifier, int max_planes, igt_output_t *output, igt_fb_t *fb)
> {
> drmModeModeInfo *mode;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> igt_plane_t *primary;
> int *x;
> int *y;
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 25adadb87bf8..3ba709dd2cd0 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -1016,7 +1016,7 @@ static void
> test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
> {
> igt_display_t *display = &d->display;
> - igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> + igt_crtc_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> int width, height;
> igt_plane_t *plane[3];
> drmModeModeInfo *mode;
> diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
> index a94370178847..6becc646d20a 100644
> --- a/tools/amd_hdmi_compliance.c
> +++ b/tools/amd_hdmi_compliance.c
> @@ -33,7 +33,7 @@ typedef struct data {
> igt_display_t display;
> igt_plane_t *primary;
> igt_output_t *output;
> - igt_pipe_t *pipe;
> + igt_crtc_t *pipe;
> enum pipe pipe_id;
> bool use_virtual_connector;
> int timeout_seconds;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 14:38 ` Jani Nikula
@ 2025-12-10 14:44 ` Jani Nikula
2025-12-10 14:48 ` Ville Syrjälä
1 sibling, 0 replies; 30+ messages in thread
From: Jani Nikula @ 2025-12-10 14:44 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
>> On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
>>> On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>>>> +/**
>>>> + * igt_output_set_pipe:
>>>> + * @output: Target output for which the pipe is being set to
>>>> + * @pipe_obj: Display pipe to set to
>>>> + *
>>>> + * This function sets a @pipe to a specific @output connector by
>>>> + * setting the CRTC_ID property of the @pipe. The pipe
>>>> + * is only activated for all pipes except PIPE_NONE.
>>>> + */
>>>> +void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
>>>> +{
>>>> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
>>>
>>> How does that work for the igt_output_set_pipe(output, PIPE_NONE) calls?
>>> Seems like the idea was to pass NULL here? Or should igt_crtc_for_pipe()
>>> handle PIPE_NONE and return NULL?
>>
>> Okay, so it's just this one commit that's busted, as the whole function
>> is removed in the next patch.
>
> I think igt_crtc_for_pipe() should handle PIPE_NONE, as there are a
> bunch of places in the next patch that pass, say, data->pipe_id to it,
> and it's a nightmare to check where all those come from.
Finishing my monologue:
On the condition that igt_crtc_for_pipe() is modified to return NULL for
PIPE_NONE,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc()
2025-12-10 14:38 ` Jani Nikula
2025-12-10 14:44 ` Jani Nikula
@ 2025-12-10 14:48 ` Ville Syrjälä
1 sibling, 0 replies; 30+ messages in thread
From: Ville Syrjälä @ 2025-12-10 14:48 UTC (permalink / raw)
To: Jani Nikula; +Cc: igt-dev
On Wed, Dec 10, 2025 at 04:38:38PM +0200, Jani Nikula wrote:
> On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
> > On Wed, 10 Dec 2025, Jani Nikula <jani.nikula@intel.com> wrote:
> >> On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >>> +/**
> >>> + * igt_output_set_pipe:
> >>> + * @output: Target output for which the pipe is being set to
> >>> + * @pipe_obj: Display pipe to set to
> >>> + *
> >>> + * This function sets a @pipe to a specific @output connector by
> >>> + * setting the CRTC_ID property of the @pipe. The pipe
> >>> + * is only activated for all pipes except PIPE_NONE.
> >>> + */
> >>> +void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> >>> +{
> >>> + igt_output_set_crtc(output, igt_crtc_for_pipe(output->display, pipe));
> >>
> >> How does that work for the igt_output_set_pipe(output, PIPE_NONE) calls?
> >> Seems like the idea was to pass NULL here? Or should igt_crtc_for_pipe()
> >> handle PIPE_NONE and return NULL?
> >
> > Okay, so it's just this one commit that's busted, as the whole function
> > is removed in the next patch.
>
> I think igt_crtc_for_pipe() should handle PIPE_NONE, as there are a
> bunch of places in the next patch that pass, say, data->pipe_id to it,
> and it's a nightmare to check where all those come from.
Ack. I thought I did that already, but apparently not.
>
> >
> >>
> >>> +}
> >>> +
> >>> static
> >>> bool __override_all_active_output_modes_to_fit_bw(igt_display_t *display,
> >>> igt_output_t *outputs[IGT_MAX_PIPES],
> >>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> >>> index a9d2d9027ae8..9ec0f08ada24 100644
> >>> --- a/lib/igt_kms.h
> >>> +++ b/lib/igt_kms.h
> >>> @@ -589,6 +589,7 @@ drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
> >>> drmModeModeInfo *igt_output_get_lowres_mode(igt_output_t *output);
> >>> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
> >>> int igt_output_preferred_vrefresh(igt_output_t *output);
> >>> +void igt_output_set_crtc(igt_output_t *output, igt_pipe_t *pipe_obj);
> >>> void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
> >>> igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
> >>> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH i-g-t v2 04/10] lib/kms: Introduce igt_crtc_for_pipe()
2025-12-10 9:38 ` [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe() Ville Syrjala
2025-12-10 14:23 ` Jani Nikula
@ 2025-12-10 17:16 ` Ville Syrjala
1 sibling, 0 replies; 30+ messages in thread
From: Ville Syrjala @ 2025-12-10 17:16 UTC (permalink / raw)
To: igt-dev; +Cc: Jani Nikula
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Start weaning everyone off from poking inside display->pipes[]
by hand. Introduce igt_crtc_for_pipe() as the preferred method
for getting the correct crtc.
Done by hand because this needs to be used in a few messy macros
that cocci doesn't like.
v2: Deal with PIPE_NONE (Jani)
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
lib/igt_kms.h | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 6e7cf112b1e2..aa0a8496fbff 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -578,6 +578,14 @@ void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
int igt_display_n_crtcs(igt_display_t *display);
+static inline igt_pipe_t *igt_crtc_for_pipe(igt_display_t *display, enum pipe pipe)
+{
+ if (pipe == PIPE_NONE)
+ return NULL;
+
+ return &display->pipes[pipe];
+}
+
const char *igt_output_name(igt_output_t *output);
drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
drmModeModeInfo *igt_output_get_highres_mode(igt_output_t *output);
@@ -726,7 +734,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*/
#define for_each_pipe(display, pipe) \
for_each_pipe_static(pipe) \
- for_each_if((display)->pipes[(pipe)].valid)
+ for_each_if(igt_crtc_for_pipe((display), (pipe))->valid)
/**
* for_each_pipe_with_valid_output:
@@ -745,7 +753,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
for (int con__ = (pipe) = 0; \
assert(igt_can_fail()), (pipe) < igt_display_n_crtcs(display) && con__ < (display)->n_outputs; \
con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
- for_each_if((display)->pipes[pipe].valid) \
+ for_each_if(igt_crtc_for_pipe((display), (pipe))->valid) \
for_each_if ((((output) = &(display)->outputs[con__]), \
igt_pipe_connector_valid((pipe), (output))))
@@ -793,8 +801,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
* If there are no valid planes for this pipe, nothing happens.
*/
#define for_each_plane_on_pipe(display, pipe, plane) \
- for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(pipe)].planes[j__], \
- j__ < (display)->pipes[(pipe)].n_planes; j__++)
+ for (int j__ = 0; assert(igt_can_fail()), \
+ (plane) = &igt_crtc_for_pipe((display), (pipe))->planes[j__], \
+ j__ < igt_crtc_for_pipe((display), (pipe))->n_planes; j__++)
/**
* for_each_connector_mode:
--
2.51.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* ✗ Xe.CI.Full: failure for lib/kms: Move towards using 'crtcs' instead of 'pipes'
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
` (11 preceding siblings ...)
2025-12-10 14:12 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-12-10 19:49 ` Patchwork
12 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-12-10 19:49 UTC (permalink / raw)
To: Ville Syrjala; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 44391 bytes --]
== Series Details ==
Series: lib/kms: Move towards using 'crtcs' instead of 'pipes'
URL : https://patchwork.freedesktop.org/series/158749/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8662_FULL -> XEIGTPW_14182_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with XEIGTPW_14182_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_14182_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 2)
------------------------------
Missing (2): shard-dg2-set2 shard-adlp
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_14182_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-bmg: [PASS][1] -> [CRASH][2] +1 other test crash
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-3/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_pcode_probe_early:
- shard-lnl: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-2/igt@xe_fault_injection@inject-fault-probe-function-xe_pcode_probe_early.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_fault_injection@inject-fault-probe-function-xe_pcode_probe_early.html
* igt@xe_pxp@pxp-stale-queue-post-suspend:
- shard-lnl: [PASS][5] -> [ABORT][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-4/igt@xe_pxp@pxp-stale-queue-post-suspend.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_pxp@pxp-stale-queue-post-suspend.html
#### Warnings ####
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-bmg: [SKIP][7] ([Intel XE#5624]) -> [SKIP][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
- shard-lnl: [SKIP][9] ([Intel XE#5624]) -> [SKIP][10]
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-1/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
Known issues
------------
Here are the changes found in XEIGTPW_14182_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2233])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-lnl: NOTRUN -> [FAIL][12] ([Intel XE#6676]) +2 other tests fail
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-3/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
- shard-lnl: [PASS][13] -> [FAIL][14] ([Intel XE#5993])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2327]) +6 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#1407]) +2 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#1124]) +13 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#610])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#1124]) +2 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p:
- shard-bmg: [PASS][20] -> [SKIP][21] ([Intel XE#367])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
* igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2314] / [Intel XE#2894])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#2191])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-1/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-2-displays-2560x1440p:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#367]) +2 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#2887]) +15 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-c-dp-2:
- shard-bmg: [PASS][26] -> [FAIL][27] ([Intel XE#6173]) +3 other tests fail
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-c-dp-2.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-c-dp-2.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#3432])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#2887]) +5 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_cdclk@plane-scaling:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2724])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2325]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_edid@dp-edid-resolution-list:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#2252]) +5 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_chamelium_edid@dp-edid-resolution-list.html
* igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#373])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
* igt@kms_content_protection@atomic:
- shard-bmg: NOTRUN -> [FAIL][35] ([Intel XE#1178]) +1 other test fail
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic-dpms:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#3278])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-3/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2390])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_cursor_crc@cursor-random-32x32:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#2320]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_cursor_crc@cursor-random-32x32.html
* igt@kms_cursor_crc@cursor-sliding-128x42:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#1424])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-3/igt@kms_cursor_crc@cursor-sliding-128x42.html
* igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#309])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#323])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2286])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#4331])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2244]) +3 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#2244]) +1 other test skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_flip@2x-dpms-vs-vblank-race:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#1421]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_flip@2x-dpms-vs-vblank-race.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-bmg: [PASS][47] -> [DMESG-WARN][48] ([Intel XE#5208] / [Intel XE#6766])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@ac-dp2-hdmi-a3:
- shard-bmg: [PASS][49] -> [DMESG-WARN][50] ([Intel XE#6766]) +1 other test dmesg-warn
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@ac-dp2-hdmi-a3.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@ac-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-suspend:
- shard-bmg: [PASS][51] -> [INCOMPLETE][52] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_flip@flip-vs-suspend.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#1397] / [Intel XE#1745])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#1397])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#2293]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [FAIL][56] ([Intel XE#3106] / [Intel XE#4683]) +1 other test fail
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#2293] / [Intel XE#2380]) +3 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#2311]) +29 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#4141]) +18 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#6312])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#651]) +2 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#656]) +10 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#2313]) +28 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_hdr@bpc-switch:
- shard-bmg: NOTRUN -> [ABORT][64] ([Intel XE#6740]) +3 other tests abort
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_hdr@bpc-switch.html
* igt@kms_plane@plane-panning-bottom-right-suspend:
- shard-bmg: NOTRUN -> [DMESG-FAIL][65] ([Intel XE#6576]) +1 other test dmesg-fail
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_plane@plane-panning-bottom-right-suspend.html
* igt@kms_plane_multiple@2x-tiling-yf:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#5021])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-yf.html
* igt@kms_pm_dc@dc6-psr:
- shard-lnl: [PASS][67] -> [FAIL][68] ([Intel XE#718]) +3 other tests fail
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-4/igt@kms_pm_dc@dc6-psr.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#1406] / [Intel XE#2893] / [Intel XE#4608])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#1406] / [Intel XE#4608]) +1 other test skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#1406] / [Intel XE#2893])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#1406] / [Intel XE#1489]) +5 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html
* igt@kms_psr@fbc-pr-cursor-plane-onoff:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#1406]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@kms_psr@fbc-pr-cursor-plane-onoff.html
* igt@kms_psr@fbc-psr2-cursor-plane-move:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +10 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_psr@fbc-psr2-cursor-plane-move.html
* igt@kms_psr@fbc-psr2-sprite-blt@edp-1:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#1406] / [Intel XE#4609])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-1/igt@kms_psr@fbc-psr2-sprite-blt@edp-1.html
* igt@kms_rotation_crc@primary-x-tiled-reflect-x-0:
- shard-lnl: NOTRUN -> [FAIL][77] ([Intel XE#4689])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@kms_rotation_crc@primary-x-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#2330])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#3414] / [Intel XE#3904])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_vrr@flip-basic:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#1499]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@kms_vrr@flip-basic.html
* igt@kms_vrr@lobf:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#2168])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_vrr@lobf.html
* igt@kms_vrr@max-min:
- shard-lnl: [PASS][82] -> [FAIL][83] ([Intel XE#4227]) +1 other test fail
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-2/igt@kms_vrr@max-min.html
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-3/igt@kms_vrr@max-min.html
* igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
- shard-lnl: [PASS][84] -> [FAIL][85] ([Intel XE#2142]) +1 other test fail
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-8/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-3/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
* igt@xe_eudebug@attach-debug-metadata:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#4837]) +8 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@xe_eudebug@attach-debug-metadata.html
* igt@xe_eudebug_online@pagefault-one-of-many:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#6665])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_eudebug_online@pagefault-one-of-many.html
- shard-bmg: NOTRUN -> [SKIP][88] ([Intel XE#6665])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_eudebug_online@pagefault-one-of-many.html
* igt@xe_eudebug_online@pagefault-write-stress:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#6665] / [Intel XE#6681])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_eudebug_online@pagefault-write-stress.html
* igt@xe_eudebug_online@preempt-breakpoint:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#4837] / [Intel XE#6665])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_eudebug_online@preempt-breakpoint.html
* igt@xe_eudebug_online@writes-caching-vram-bb-sram-target-vram:
- shard-bmg: NOTRUN -> [SKIP][91] ([Intel XE#4837] / [Intel XE#6665]) +4 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-6/igt@xe_eudebug_online@writes-caching-vram-bb-sram-target-vram.html
* igt@xe_evict@evict-beng-cm-threads-small-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#688]) +1 other test skip
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_evict@evict-beng-cm-threads-small-multi-vm.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#2322]) +8 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-6/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#1392]) +2 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-5/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
* igt@xe_exec_sip_eudebug@wait-writesip-nodebug:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#4837]) +2 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@xe_exec_sip_eudebug@wait-writesip-nodebug.html
* igt@xe_exec_system_allocator@many-64k-mmap-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#5007])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_exec_system_allocator@many-64k-mmap-huge-nomemset.html
* igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#4943]) +24 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html
* igt@xe_exec_system_allocator@many-mmap-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#4943]) +2 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@xe_exec_system_allocator@many-mmap-huge-nomemset.html
* igt@xe_media_fill@media-fill:
- shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#2459] / [Intel XE#2596])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@xe_media_fill@media-fill.html
* igt@xe_module_load@force-load:
- shard-bmg: NOTRUN -> [SKIP][100] ([Intel XE#2457])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_module_load@force-load.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0:
- shard-lnl: [PASS][101] -> [FAIL][102] ([Intel XE#6251]) +2 other tests fail
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
* igt@xe_pxp@display-pxp-fb:
- shard-bmg: NOTRUN -> [SKIP][103] ([Intel XE#4733]) +2 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_pxp@display-pxp-fb.html
* igt@xe_query@multigpu-query-invalid-cs-cycles:
- shard-bmg: NOTRUN -> [SKIP][104] ([Intel XE#944]) +3 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@xe_query@multigpu-query-invalid-cs-cycles.html
- shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#944])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@xe_query@multigpu-query-invalid-cs-cycles.html
* igt@xe_survivability@i2c-functionality:
- shard-lnl: NOTRUN -> [SKIP][106] ([Intel XE#6529])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-4/igt@xe_survivability@i2c-functionality.html
#### Possible fixes ####
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-bmg: [FAIL][107] ([Intel XE#4367]) -> [PASS][108]
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-6/igt@kms_dp_linktrain_fallback@dp-fallback.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_dp_linktrain_fallback@dp-fallback.html
* igt@kms_flip@plain-flip-fb-recreate-interruptible@b-hdmi-a3:
- shard-bmg: [DMESG-FAIL][109] ([Intel XE#5545]) -> [PASS][110] +1 other test pass
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_flip@plain-flip-fb-recreate-interruptible@b-hdmi-a3.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_flip@plain-flip-fb-recreate-interruptible@b-hdmi-a3.html
* igt@kms_pm_rpm@i2c:
- shard-bmg: [FAIL][111] ([Intel XE#5099]) -> [PASS][112]
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-6/igt@kms_pm_rpm@i2c.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@kms_pm_rpm@i2c.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-bmg: [SKIP][113] ([Intel XE#6693]) -> [PASS][114]
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_pm_rpm@modeset-non-lpsp.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@testdisplay:
- shard-bmg: [ABORT][115] ([Intel XE#6740]) -> [PASS][116]
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-5/igt@testdisplay.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-4/igt@testdisplay.html
* igt@xe_exec_fault_mode@once-userptr-invalidate-prefetch:
- shard-bmg: [SKIP][117] ([Intel XE#6557] / [Intel XE#6703]) -> [PASS][118] +2 other tests pass
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@xe_exec_fault_mode@once-userptr-invalidate-prefetch.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@xe_exec_fault_mode@once-userptr-invalidate-prefetch.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma:
- shard-lnl: [FAIL][119] ([Intel XE#5625]) -> [PASS][120]
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
* igt@xe_exec_system_allocator@process-many-stride-mmap:
- shard-bmg: [ABORT][121] ([Intel XE#3970]) -> [PASS][122]
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-4/igt@xe_exec_system_allocator@process-many-stride-mmap.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@xe_exec_system_allocator@process-many-stride-mmap.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0:
- shard-lnl: [FAIL][123] ([Intel XE#6251]) -> [PASS][124]
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0.html
* igt@xe_pmu@engine-activity-multi-client:
- shard-bmg: [SKIP][125] ([Intel XE#6703]) -> [PASS][126] +30 other tests pass
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@xe_pmu@engine-activity-multi-client.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@xe_pmu@engine-activity-multi-client.html
#### Warnings ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear:
- shard-lnl: [FAIL][127] ([Intel XE#6676]) -> [FAIL][128] ([Intel XE#5993] / [Intel XE#6676])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs:
- shard-bmg: [SKIP][129] ([Intel XE#6703]) -> [SKIP][130] ([Intel XE#2887]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-bmg: [SKIP][131] ([Intel XE#6703]) -> [SKIP][132] ([Intel XE#2252])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][133] ([Intel XE#4633]) -> [FAIL][134] ([Intel XE#6715])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render:
- shard-bmg: [SKIP][135] ([Intel XE#6703]) -> [SKIP][136] ([Intel XE#4141]) +1 other test skip
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][137] ([Intel XE#6703]) -> [SKIP][138] ([Intel XE#2313])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [ABORT][139] ([Intel XE#6740]) -> [SKIP][140] ([Intel XE#1503])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_hdr@invalid-hdr.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-bmg: [SKIP][141] ([Intel XE#6703]) -> [SKIP][142] ([Intel XE#2501])
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf:
- shard-bmg: [SKIP][143] ([Intel XE#1406] / [Intel XE#6703]) -> [SKIP][144] ([Intel XE#1406] / [Intel XE#1489])
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-bmg: [SKIP][145] ([Intel XE#1406] / [Intel XE#6703]) -> [SKIP][146] ([Intel XE#1406] / [Intel XE#2414])
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][147] ([Intel XE#2426]) -> [FAIL][148] ([Intel XE#1729])
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern.html
* igt@xe_exec_system_allocator@threads-many-execqueues-mmap-huge-nomemset:
- shard-bmg: [SKIP][149] ([Intel XE#6703]) -> [SKIP][150] ([Intel XE#4943]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8662/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-execqueues-mmap-huge-nomemset.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/shard-bmg-5/igt@xe_exec_system_allocator@threads-many-execqueues-mmap-huge-nomemset.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2459
[Intel XE#2501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2501
[Intel XE#2596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2596
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3106]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3106
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4367
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4683]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4683
[Intel XE#4689]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4689
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5099]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5099
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5624]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5624
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#6173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6173
[Intel XE#6251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6251
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6529]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6529
[Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6576]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6576
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6676]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6676
[Intel XE#6681]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6681
[Intel XE#6693]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6693
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6715]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6715
[Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
[Intel XE#6766]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6766
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_8662 -> IGTPW_14182
* Linux: xe-4211-12271f632915efe0c5d4171b9c0e90f57ecdfe01 -> xe-4215-2a9deeb5c3fd4dddbed361f10b26ce567072a985
IGTPW_14182: 14182
IGT_8662: 9410b6926f317e8bf824502394e09ee8753ff65e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4211-12271f632915efe0c5d4171b9c0e90f57ecdfe01: 12271f632915efe0c5d4171b9c0e90f57ecdfe01
xe-4215-2a9deeb5c3fd4dddbed361f10b26ce567072a985: 2a9deeb5c3fd4dddbed361f10b26ce567072a985
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14182/index.html
[-- Attachment #2: Type: text/html, Size: 50770 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere
2025-12-10 14:25 ` Jani Nikula
@ 2025-12-12 15:32 ` Ville Syrjälä
0 siblings, 0 replies; 30+ messages in thread
From: Ville Syrjälä @ 2025-12-12 15:32 UTC (permalink / raw)
To: Jani Nikula; +Cc: igt-dev
On Wed, Dec 10, 2025 at 04:25:10PM +0200, Jani Nikula wrote:
> On Wed, 10 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Replace all the naked display->pipes[] stuff with igt_crtc_for_pipe().
> >
> > One step towards using 'crtcs' instead of 'pipes'.
> >
> > Done with cocci:
> > #include "scripts/iterators.cocci"
> >
> > @@
> > expression D, P;
> > identifier M;
> > @@
> > (
> > - D.pipes[P].M
> > + igt_crtc_for_pipe(&D, P)->M
> > |
> > - D->pipes[P].M
> > + igt_crtc_for_pipe(D, P)->M
> > |
> > - &D.pipes[P]
> > + igt_crtc_for_pipe(&D, P)
> > |
> > - &D->pipes[P]
> > + igt_crtc_for_pipe(D, P)
> > |
> > - D->pipes[P]
> > + XXX
>
> Is that just to catch any remaining references that didn't match the
> earlier ones?
Yeah, that was probably it.
>
> > )
> >
> > @@
> > expression display, pipe;
> > @@
> > igt_crtc_for_pipe(...)
> > {
> > <...
> > - igt_crtc_for_pipe(display, pipe)
> > + &display->pipes[pipe]
> > ...>
> > }
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> I'm guessing most of these places shouldn't be using pipe to begin with,
> but that's for another patch. This is nice cleanup.
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> > ---
> > lib/igt_kms.c | 38 ++++++++++---------
> > lib/igt_kms.h | 6 ++-
> > tests/amdgpu/amd_abm.c | 2 +-
> > tests/amdgpu/amd_assr.c | 2 +-
> > tests/amdgpu/amd_bypass.c | 2 +-
> > tests/amdgpu/amd_color.c | 2 +-
> > tests/amdgpu/amd_dp_dsc.c | 3 +-
> > tests/amdgpu/amd_hotplug.c | 3 +-
> > tests/amdgpu/amd_ilr.c | 2 +-
> > tests/amdgpu/amd_link_settings.c | 2 +-
> > tests/amdgpu/amd_mall.c | 2 +-
> > tests/amdgpu/amd_max_bpc.c | 2 +-
> > tests/amdgpu/amd_mem_leak.c | 2 +-
> > tests/amdgpu/amd_mode_switch.c | 4 +-
> > tests/amdgpu/amd_multidisplay_modeset.c | 6 +--
> > tests/amdgpu/amd_odm.c | 2 +-
> > tests/amdgpu/amd_plane.c | 2 +-
> > tests/amdgpu/amd_psr.c | 2 +-
> > tests/amdgpu/amd_replay.c | 2 +-
> > tests/amdgpu/amd_subvp.c | 3 +-
> > tests/chamelium/kms_chamelium_color.c | 10 ++---
> > .../kms_chamelium_sharpness_filter.c | 4 +-
> > tests/intel/gem_eio.c | 2 +-
> > tests/intel/gem_pxp.c | 4 +-
> > tests/intel/kms_big_fb.c | 6 +--
> > tests/intel/kms_busy.c | 6 +--
> > tests/intel/kms_cdclk.c | 2 +-
> > tests/intel/kms_flip_scaled_crc.c | 4 +-
> > tests/intel/kms_frontbuffer_tracking.c | 16 +++++---
> > tests/intel/kms_joiner_helper.c | 2 +-
> > tests/intel/kms_pipe_stress.c | 10 +++--
> > tests/intel/kms_pm_dc.c | 4 +-
> > tests/intel/kms_sharpness_filter.c | 2 +-
> > tests/intel/perf_pmu.c | 2 +-
> > tests/intel/xe_pxp.c | 6 +--
> > tests/kms_async_flips.c | 2 +-
> > tests/kms_atomic.c | 18 +++++----
> > tests/kms_atomic_transition.c | 33 ++++++++--------
> > tests/kms_bw.c | 3 +-
> > tests/kms_color.c | 10 ++---
> > tests/kms_color_helper.c | 4 +-
> > tests/kms_concurrent.c | 4 +-
> > tests/kms_cursor_crc.c | 8 ++--
> > tests/kms_cursor_edge_walk.c | 2 +-
> > tests/kms_cursor_legacy.c | 26 +++++++------
> > tests/kms_display_modes.c | 16 +++++---
> > tests/kms_dither.c | 2 +-
> > tests/kms_hdr.c | 2 +-
> > tests/kms_invalid_mode.c | 2 +-
> > tests/kms_lease.c | 37 +++++++++---------
> > tests/kms_multipipe_modeset.c | 4 +-
> > tests/kms_pipe_crc_basic.c | 6 ++-
> > tests/kms_plane.c | 10 ++---
> > tests/kms_plane_alpha_blend.c | 15 +++++---
> > tests/kms_plane_cursor.c | 8 ++--
> > tests/kms_plane_multiple.c | 4 +-
> > tests/kms_plane_scaling.c | 8 ++--
> > tests/kms_properties.c | 12 ++++--
> > tests/kms_rotation_crc.c | 3 +-
> > tests/kms_sequence.c | 2 +-
> > tests/kms_tiled_display.c | 2 +-
> > tests/kms_universal_plane.c | 10 +++--
> > tests/kms_vblank.c | 4 +-
> > tools/amd_hdmi_compliance.c | 2 +-
> > 64 files changed, 239 insertions(+), 189 deletions(-)
> >
> > diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> > index a6bc41fb357d..951144bae955 100644
> > --- a/lib/igt_kms.c
> > +++ b/lib/igt_kms.c
> > @@ -2839,7 +2839,7 @@ void igt_display_reset(igt_display_t *display)
> > display->first_commit = true;
> >
> > for_each_pipe(display, pipe) {
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> > igt_plane_t *plane;
> >
> > for_each_plane_on_pipe(display, pipe, plane)
> > @@ -2870,7 +2870,7 @@ static void igt_fill_display_format_mod(igt_display_t *display);
> > */
> > void igt_require_pipe(igt_display_t *display, enum pipe pipe)
> > {
> > - igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !display->pipes[pipe].valid,
> > + igt_skip_on_f(pipe >= igt_display_n_crtcs(display) || !igt_crtc_for_pipe(display, pipe)->valid,
> > "Pipe %s does not exist\n",
> > kmstest_pipe_name(pipe));
> > }
> > @@ -3013,7 +3013,7 @@ void igt_display_reset_outputs(igt_display_t *display)
> > igt_display_reset(display);
> >
> > for_each_pipe(display, i) {
> > - igt_pipe_t *pipe = &display->pipes[i];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> > igt_output_t *output;
> >
> > if (!igt_pipe_has_valid_output(display, i))
> > @@ -3118,7 +3118,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> > __intel_get_pipe_from_crtc_id(drm_fd,
> > resources->crtcs[i], i) : i;
> >
> > - pipe = &display->pipes[pipe_enum];
> > + pipe = igt_crtc_for_pipe(display, pipe_enum);
> > pipe->pipe = pipe_enum;
> >
> > pipe->valid = true;
> > @@ -3156,7 +3156,7 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> > display->n_colorops = 0;
> >
> > for_each_pipe(display, i) {
> > - igt_pipe_t *pipe = &display->pipes[i];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> > igt_plane_t *plane;
> > int p = 1, crtc_mask = 0;
> > int j, type;
> > @@ -3461,7 +3461,7 @@ void igt_display_fini(igt_display_t *display)
> > }
> >
> > for (i = 0; i < igt_display_n_crtcs(display); i++)
> > - igt_pipe_fini(&display->pipes[i]);
> > + igt_pipe_fini(igt_crtc_for_pipe(display, i));
> >
> > for (i = 0; i < display->n_outputs; i++)
> > igt_output_fini(&display->outputs[i]);
> > @@ -3532,7 +3532,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> >
> > igt_assert(pipe >= 0 && pipe < igt_display_n_crtcs(display));
> >
> > - return &display->pipes[pipe];
> > + return igt_crtc_for_pipe(display, pipe);
> > }
> >
> > static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
> > @@ -3658,7 +3658,7 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t
> > sizeof(*chosen_outputs) * igt_display_n_crtcs(display));
> >
> > for (i = 0; i < igt_display_n_crtcs(display); i++) {
> > - igt_pipe_t *pipe = &display->pipes[i];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, i);
> > if (pipe->valid)
> > full_pipe_mask |= (1 << i);
> > }
> > @@ -4815,7 +4815,7 @@ static int igt_atomic_commit(igt_display_t *display, uint32_t flags, void *user_
> > req = drmModeAtomicAlloc();
> >
> > for_each_pipe(display, pipe) {
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> > igt_plane_t *plane;
> >
> > /*
> > @@ -4866,7 +4866,7 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)
> > enum pipe pipe;
> >
> > for_each_pipe(display, pipe) {
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> > igt_plane_t *plane;
> >
> > if (s == COMMIT_ATOMIC) {
> > @@ -4969,7 +4969,8 @@ static int do_display_commit(igt_display_t *display,
> > ret = igt_atomic_commit(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > } else {
> > for_each_pipe(display, pipe) {
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display,
> > + pipe);
> >
> > ret = igt_pipe_commit(pipe_obj, s, fail_on_error);
> > if (ret)
> > @@ -5296,7 +5297,7 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> > old_pipe = igt_output_get_driving_pipe(output);
> >
> > if (pipe != PIPE_NONE)
> > - pipe_obj = &display->pipes[pipe];
> > + pipe_obj = igt_crtc_for_pipe(display, pipe);
> >
> > LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
> > kmstest_pipe_name(pipe));
> > @@ -5316,7 +5317,8 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> > }
> > }
> >
> > - igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID, pipe == PIPE_NONE ? 0 : display->pipes[pipe].crtc_id);
> > + igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID,
> > + pipe == PIPE_NONE ? 0 : igt_crtc_for_pipe(display, pipe)->crtc_id);
> >
> > igt_output_refresh(output);
> >
> > @@ -5450,7 +5452,7 @@ bool igt_fit_modes_in_bw(igt_display_t *display)
> > */
> > void igt_pipe_refresh(igt_display_t *display, enum pipe pipe, bool force)
> > {
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> >
> > if (force && display->is_atomic) {
> > igt_output_t *output = igt_pipe_get_output(pipe_obj);
> > @@ -7196,9 +7198,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
> > }
> > }
> >
> > - if (!display->pipes[pipes[i].idx + 1].valid) {
> > + if (!igt_crtc_for_pipe(display, pipes[i].idx + 1)->valid) {
> > igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
> > - kmstest_pipe_name(display->pipes[pipes[i].idx + 1].pipe));
> > + kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i].idx + 1)->pipe));
> > return false;
> > }
> >
> > @@ -7218,9 +7220,9 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
> > max_dotclock, pipes[i - 1].force_joiner ? "Yes" : "No");
> > kmstest_dump_mode(pipes[i - 1].mode);
> >
> > - if (!display->pipes[pipes[i - 1].idx + 1].valid) {
> > + if (!igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->valid) {
> > igt_info("Consecutive pipe-%s: Fused-off, couldn't be used as a Bigjoiner Secondary.\n",
> > - kmstest_pipe_name(display->pipes[pipes[i - 1].idx + 1].pipe));
> > + kmstest_pipe_name(igt_crtc_for_pipe(display, pipes[i - 1].idx + 1)->pipe));
> > return false;
> > }
> >
> > diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> > index 5bb5c2cac19c..fd3c8448983e 100644
> > --- a/lib/igt_kms.h
> > +++ b/lib/igt_kms.h
> > @@ -1074,7 +1074,8 @@ static inline bool igt_pipe_is_prop_changed(igt_display_t *display,
> > enum pipe pipe,
> > enum igt_atomic_crtc_properties prop)
> > {
> > - return igt_pipe_obj_is_prop_changed(&display->pipes[pipe], prop);
> > + return igt_pipe_obj_is_prop_changed(igt_crtc_for_pipe(display, pipe),
> > + prop);
> > }
> >
> > /**
> > @@ -1132,7 +1133,8 @@ static inline void igt_pipe_set_prop_value(igt_display_t *display,
> > enum igt_atomic_crtc_properties prop,
> > uint64_t value)
> > {
> > - igt_pipe_obj_set_prop_value(&display->pipes[pipe], prop, value);
> > + igt_pipe_obj_set_prop_value(igt_crtc_for_pipe(display, pipe), prop,
> > + value);
> > }
> >
> > extern bool igt_pipe_obj_try_prop_enum(igt_pipe_t *pipe,
> > diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> > index 84677fef80d6..9be5cfe8efc1 100644
> > --- a/tests/amdgpu/amd_abm.c
> > +++ b/tests/amdgpu/amd_abm.c
> > @@ -131,7 +131,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> > index 8a42baa0ba86..ebd6654ee2a1 100644
> > --- a/tests/amdgpu/amd_assr.c
> > +++ b/tests/amdgpu/amd_assr.c
> > @@ -168,7 +168,7 @@ static void present_visual_pattern(data_t *data, igt_output_t *output)
> > mode = igt_output_get_mode(output);
> > igt_assert(mode);
> >
> > - pipe = &data->display.pipes[PIPE_A];
> > + pipe = igt_crtc_for_pipe(&data->display, PIPE_A);
> > primary =
> > igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > igt_output_set_pipe(output, PIPE_A);
> > diff --git a/tests/amdgpu/amd_bypass.c b/tests/amdgpu/amd_bypass.c
> > index a3fc39c50a51..40828fa52b1f 100644
> > --- a/tests/amdgpu/amd_bypass.c
> > +++ b/tests/amdgpu/amd_bypass.c
> > @@ -65,7 +65,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_color.c b/tests/amdgpu/amd_color.c
> > index 917d30b20a47..fcfbe48d1eeb 100644
> > --- a/tests/amdgpu/amd_color.c
> > +++ b/tests/amdgpu/amd_color.c
> > @@ -180,7 +180,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_dp_dsc.c b/tests/amdgpu/amd_dp_dsc.c
> > index 788ff911691d..fe40d0901548 100644
> > --- a/tests/amdgpu/amd_dp_dsc.c
> > +++ b/tests/amdgpu/amd_dp_dsc.c
> > @@ -65,7 +65,8 @@ static void test_init(data_t *data)
> >
> > for_each_pipe(display, i) {
> > data->pipe_id[i] = PIPE_A + i;
> > - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> > + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> > + data->pipe_id[i]);
> > data->primary[i] = igt_pipe_get_plane_type(
> > data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> > data->pipe_crc[i] =
> > diff --git a/tests/amdgpu/amd_hotplug.c b/tests/amdgpu/amd_hotplug.c
> > index 8d875a5b888f..d80eb65bd263 100644
> > --- a/tests/amdgpu/amd_hotplug.c
> > +++ b/tests/amdgpu/amd_hotplug.c
> > @@ -55,7 +55,8 @@ static void test_init(data_t *data)
> >
> > for_each_pipe(display, i) {
> > data->pipe_id[i] = PIPE_A + i;
> > - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> > + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> > + data->pipe_id[i]);
> > data->primary[i] = igt_pipe_get_plane_type(
> > data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> > data->overlay[i] = igt_pipe_get_plane_type_index(
> > diff --git a/tests/amdgpu/amd_ilr.c b/tests/amdgpu/amd_ilr.c
> > index 5767d4ac4c11..680b46763af3 100644
> > --- a/tests/amdgpu/amd_ilr.c
> > +++ b/tests/amdgpu/amd_ilr.c
> > @@ -98,7 +98,7 @@ static void test_init(data_t *data, igt_output_t *output)
> >
> > igt_require(data->pipe_id != PIPE_NONE);
> >
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
> > AMDGPU_PIPE_CRC_SOURCE_DPRX);
> > diff --git a/tests/amdgpu/amd_link_settings.c b/tests/amdgpu/amd_link_settings.c
> > index fb83f3c13932..6e6037ae5fbc 100644
> > --- a/tests/amdgpu/amd_link_settings.c
> > +++ b/tests/amdgpu/amd_link_settings.c
> > @@ -100,7 +100,7 @@ static void test_init(data_t *data, igt_output_t *output)
> >
> > igt_require(data->pipe_id != PIPE_NONE);
> >
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_output_set_pipe(output, data->pipe_id);
> >
> > diff --git a/tests/amdgpu/amd_mall.c b/tests/amdgpu/amd_mall.c
> > index a3e82a33f8f9..27589b865a53 100644
> > --- a/tests/amdgpu/amd_mall.c
> > +++ b/tests/amdgpu/amd_mall.c
> > @@ -62,7 +62,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_max_bpc.c b/tests/amdgpu/amd_max_bpc.c
> > index 869a3e5c52b7..9771c67338c7 100644
> > --- a/tests/amdgpu/amd_max_bpc.c
> > +++ b/tests/amdgpu/amd_max_bpc.c
> > @@ -56,7 +56,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
> > index 9863ec78d143..1b6b2b730c5b 100644
> > --- a/tests/amdgpu/amd_mem_leak.c
> > +++ b/tests/amdgpu/amd_mem_leak.c
> > @@ -47,7 +47,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_mode_switch.c b/tests/amdgpu/amd_mode_switch.c
> > index 8b6b93d68df7..c443578f5f09 100644
> > --- a/tests/amdgpu/amd_mode_switch.c
> > +++ b/tests/amdgpu/amd_mode_switch.c
> > @@ -41,8 +41,8 @@ static void test_init(data_t *data)
> > for_each_pipe(display, i) {
> > igt_output_t *output = &display->outputs[i];
> >
> > - data->primary[i] = igt_pipe_get_plane_type(
> > - &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
> > + data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
> > + DRM_PLANE_TYPE_PRIMARY);
> >
> > data->output[i] = output;
> > }
> > diff --git a/tests/amdgpu/amd_multidisplay_modeset.c b/tests/amdgpu/amd_multidisplay_modeset.c
> > index 4e97438ad978..91455ed1dfb8 100644
> > --- a/tests/amdgpu/amd_multidisplay_modeset.c
> > +++ b/tests/amdgpu/amd_multidisplay_modeset.c
> > @@ -160,9 +160,9 @@ static void test_init(struct data_t *data)
> > * tested
> > */
> > output = igt_get_single_output_for_pipe(display, i);
> > - pipes = &display->pipes[i];
> > - data->primary[i] = igt_pipe_get_plane_type(
> > - &data->display.pipes[i], DRM_PLANE_TYPE_PRIMARY);
> > + pipes = igt_crtc_for_pipe(display, i);
> > + data->primary[i] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, i),
> > + DRM_PLANE_TYPE_PRIMARY);
> > data->output[i] = output;
> >
> > /* dp rx crc only available for eDP, SST DP, MST DP */
> > diff --git a/tests/amdgpu/amd_odm.c b/tests/amdgpu/amd_odm.c
> > index 101c89e60e4e..483b30e8ac8f 100644
> > --- a/tests/amdgpu/amd_odm.c
> > +++ b/tests/amdgpu/amd_odm.c
> > @@ -49,7 +49,7 @@ static void test_init(struct data *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_plane.c b/tests/amdgpu/amd_plane.c
> > index ad7d921d2aa3..0dbac17a6e7f 100644
> > --- a/tests/amdgpu/amd_plane.c
> > +++ b/tests/amdgpu/amd_plane.c
> > @@ -156,7 +156,7 @@ static void test_init(data_t *data)
> >
> > for_each_pipe(display, i) {
> > data->pipe_id[i] = PIPE_A + i;
> > - data->pipe[i] = &display->pipes[data->pipe_id[i]];
> > + data->pipe[i] = igt_crtc_for_pipe(display, data->pipe_id[i]);
> > data->primary[i] = igt_pipe_get_plane_type(
> > data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> > data->overlay[i] = igt_pipe_get_plane_type_index(
> > diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> > index 040c39f0abdb..789d243f8e86 100644
> > --- a/tests/amdgpu/amd_psr.c
> > +++ b/tests/amdgpu/amd_psr.c
> > @@ -172,7 +172,7 @@ static void test_init(data_t *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_replay.c b/tests/amdgpu/amd_replay.c
> > index d06f56df233c..8b194f797938 100644
> > --- a/tests/amdgpu/amd_replay.c
> > +++ b/tests/amdgpu/amd_replay.c
> > @@ -62,7 +62,7 @@ static void test_init(struct test_data *data)
> >
> > /* It doesn't matter which pipe we choose on amdpgu. */
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
> >
> > diff --git a/tests/amdgpu/amd_subvp.c b/tests/amdgpu/amd_subvp.c
> > index fca9d6036ca2..a0a546a3e398 100644
> > --- a/tests/amdgpu/amd_subvp.c
> > +++ b/tests/amdgpu/amd_subvp.c
> > @@ -65,7 +65,8 @@ static void test_init(struct data *data)
> >
> > for_each_pipe(display, i) {
> > data->pipe_id[i] = PIPE_A + i;
> > - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> > + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> > + data->pipe_id[i]);
> > data->primary[i] = igt_pipe_get_plane_type(data->pipe[i],
> > DRM_PLANE_TYPE_PRIMARY);
> > data->pipe_crc[i] = igt_pipe_crc_new(data->fd,
> > diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> > index fd4f2aad46d6..195556c9368c 100644
> > --- a/tests/chamelium/kms_chamelium_color.c
> > +++ b/tests/chamelium/kms_chamelium_color.c
> > @@ -433,16 +433,16 @@ prep_pipe(data_t *data, enum pipe p)
> > {
> > igt_require_pipe(&data->display, p);
> >
> > - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> > + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> > data->degamma_lut_size =
> > - igt_pipe_obj_get_prop(&data->display.pipes[p],
> > + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> > IGT_CRTC_DEGAMMA_LUT_SIZE);
> > igt_assert_lt(0, data->degamma_lut_size);
> > }
> >
> > - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
> > + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
> > data->gamma_lut_size =
> > - igt_pipe_obj_get_prop(&data->display.pipes[p],
> > + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> > IGT_CRTC_GAMMA_LUT_SIZE);
> > igt_assert_lt(0, data->gamma_lut_size);
> > }
> > @@ -456,7 +456,7 @@ static int test_setup(data_t *data, enum pipe p)
> > igt_display_reset(&data->display);
> > prep_pipe(data, p);
> >
> > - pipe = &data->display.pipes[p];
> > + pipe = igt_crtc_for_pipe(&data->display, p);
> > igt_require(pipe->n_planes >= 0);
> >
> > data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > diff --git a/tests/chamelium/kms_chamelium_sharpness_filter.c b/tests/chamelium/kms_chamelium_sharpness_filter.c
> > index 014532d5c6b8..25e0275630f0 100644
> > --- a/tests/chamelium/kms_chamelium_sharpness_filter.c
> > +++ b/tests/chamelium/kms_chamelium_sharpness_filter.c
> > @@ -180,7 +180,7 @@ static int test_setup(data_t *data, enum pipe p)
> >
> > igt_display_reset(&data->display);
> >
> > - pipe = &data->display.pipes[p];
> > + pipe = igt_crtc_for_pipe(&data->display, p);
> > igt_require(pipe->n_planes >= 0);
> >
> > data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > @@ -217,7 +217,7 @@ static void test_sharpness_filter(data_t *data, enum pipe p)
> > int port_idx = test_setup(data, p);
> >
> > igt_require(port_idx >= 0);
> > - igt_require(igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_SHARPNESS_STRENGTH));
> > + igt_require(igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_SHARPNESS_STRENGTH));
> >
> > if (!pipe_output_combo_valid(data, p))
> > return;
> > diff --git a/tests/intel/gem_eio.c b/tests/intel/gem_eio.c
> > index 5f58cfe699a4..0d4aa1bd33cb 100644
> > --- a/tests/intel/gem_eio.c
> > +++ b/tests/intel/gem_eio.c
> > @@ -1035,7 +1035,7 @@ static void display_helper(igt_display_t *dpy, int *done)
> > int pipe;
> >
> > pipe = rand() % igt_display_n_crtcs(dpy);
> > - if (!dpy->pipes[pipe].valid)
> > + if (!igt_crtc_for_pipe(dpy, pipe)->valid)
> > continue;
> > output = igt_get_single_output_for_pipe(dpy, pipe);
> > if (!output)
> > diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c
> > index b80b7d33ee6c..49edf744f943 100644
> > --- a/tests/intel/gem_pxp.c
> > +++ b/tests/intel/gem_pxp.c
> > @@ -1226,7 +1226,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> > /* Do a modeset on all outputs */
> > for_each_connected_output(display, output) {
> > mode = igt_output_get_mode(output);
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > igt_require(igt_pipe_connector_valid(i, output));
> > igt_output_set_pipe(output, i);
> > @@ -1243,7 +1243,7 @@ static void test_display_protected_crc(int i915, igt_display_t *display)
> >
> > for_each_connected_output(display, output) {
> > mode = igt_output_get_mode(output);
> > - pipe = &display->pipes[output->pending_pipe];
> > + pipe = igt_crtc_for_pipe(display, output->pending_pipe);
> > pipe_crc = igt_pipe_crc_new(i915, pipe->pipe,
> > IGT_PIPE_CRC_SOURCE_AUTO);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > diff --git a/tests/intel/kms_big_fb.c b/tests/intel/kms_big_fb.c
> > index 686c6772ef4b..7316547d276d 100644
> > --- a/tests/intel/kms_big_fb.c
> > +++ b/tests/intel/kms_big_fb.c
> > @@ -375,7 +375,7 @@ static void prep_fb(data_t *data)
> >
> > static void set_c8_lut(data_t *data)
> > {
> > - igt_pipe_t *pipe = &data->display.pipes[data->pipe];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> > struct drm_color_lut *lut;
> > int i, lut_size = 256;
> >
> > @@ -396,7 +396,7 @@ static void set_c8_lut(data_t *data)
> >
> > static void unset_lut(data_t *data)
> > {
> > - igt_pipe_t *pipe = &data->display.pipes[data->pipe];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, data->pipe);
> >
> > igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, NULL, 0);
> > }
> > @@ -517,7 +517,7 @@ static bool test_pipe(data_t *data)
> > kmstest_pipe_name(data->pipe), igt_output_name(data->output));
> >
> > if (data->format == DRM_FORMAT_C8 &&
> > - !igt_pipe_obj_has_prop(&data->display.pipes[data->pipe],
> > + !igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, data->pipe),
> > IGT_CRTC_GAMMA_LUT))
> > return false;
> >
> > diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> > index b2eb418db1fa..53ed4b39813b 100644
> > --- a/tests/intel/kms_busy.c
> > +++ b/tests/intel/kms_busy.c
> > @@ -130,7 +130,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
> > igt_assert(gem_bo_busy(dpy->drm_fd, fb->gem_handle));
> > if (!modeset)
> > do_or_die(drmModePageFlip(dpy->drm_fd,
> > - dpy->pipes[pipe].crtc_id, fb->fb_id,
> > + igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb->fb_id,
> > DRM_MODE_PAGE_FLIP_EVENT, fb));
> > else {
> > igt_plane_set_fb(igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY), fb);
> > @@ -204,7 +204,7 @@ static void test_flip(igt_display_t *dpy, int pipe,
> > struct drm_event_vblank ev;
> >
> > do_or_die(drmModePageFlip(dpy->drm_fd,
> > - dpy->pipes[pipe].crtc_id,
> > + igt_crtc_for_pipe(dpy, pipe)->crtc_id,
> > fb[warmup[i]].fb_id,
> > DRM_MODE_PAGE_FLIP_EVENT,
> > &fb[warmup[i]]));
> > @@ -335,7 +335,7 @@ test_pageflip_modeset_hang(igt_display_t *dpy,
> > .dependency = fb.gem_handle,
> > .flags = IGT_SPIN_NO_PREEMPTION);
> >
> > - do_or_die(drmModePageFlip(dpy->drm_fd, dpy->pipes[pipe].crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
> > + do_or_die(drmModePageFlip(dpy->drm_fd, igt_crtc_for_pipe(dpy, pipe)->crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb));
> >
> > /* Kill crtc with hung fb */
> > igt_plane_set_fb(primary, NULL);
> > diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
> > index 8238b89582ee..3aeaba226cda 100644
> > --- a/tests/intel/kms_cdclk.c
> > +++ b/tests/intel/kms_cdclk.c
> > @@ -240,7 +240,7 @@ static void set_mode(data_t *data, int count, drmModeModeInfo *mode,
> > igt_plane_t *plane;
> >
> > for (int i = 0; i < count; i++) {
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> >
> > igt_output_override_mode(valid_outputs[i], &mode[i]);
> > diff --git a/tests/intel/kms_flip_scaled_crc.c b/tests/intel/kms_flip_scaled_crc.c
> > index f057b5070bcb..dd5967c91486 100644
> > --- a/tests/intel/kms_flip_scaled_crc.c
> > +++ b/tests/intel/kms_flip_scaled_crc.c
> > @@ -537,7 +537,7 @@ static void free_fbs(data_t *data)
> >
> > static void set_lut(data_t *data, enum pipe pipe)
> > {
> > - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> > struct drm_color_lut *lut;
> > drmModeCrtc *drm_crtc;
> > int i, lut_size;
> > @@ -569,7 +569,7 @@ static void set_lut(data_t *data, enum pipe pipe)
> >
> > static void clear_lut(data_t *data, enum pipe pipe)
> > {
> > - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> >
> > igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
> > }
> > diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
> > index c32f9c582e86..069f03a6c9f1 100644
> > --- a/tests/intel/kms_frontbuffer_tracking.c
> > +++ b/tests/intel/kms_frontbuffer_tracking.c
> > @@ -1110,21 +1110,24 @@ static void init_mode_params(struct modeset_params *params,
> > params->output = output;
> > params->mode = *mode;
> >
> > - params->primary.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> > + params->primary.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> > params->primary.fb = NULL;
> > params->primary.x = 0;
> > params->primary.y = 0;
> > params->primary.w = mode->hdisplay;
> > params->primary.h = mode->vdisplay;
> >
> > - params->cursor.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> > + params->cursor.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> > + DRM_PLANE_TYPE_CURSOR);
> > params->cursor.fb = NULL;
> > params->cursor.x = 0;
> > params->cursor.y = 0;
> > params->cursor.w = 64;
> > params->cursor.h = 64;
> >
> > - params->sprite.plane = igt_pipe_get_plane_type(&drm.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> > + params->sprite.plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&drm.display, pipe),
> > + DRM_PLANE_TYPE_OVERLAY);
> > igt_require(params->sprite.plane);
> > params->sprite.fb = NULL;
> > params->sprite.x = 0;
> > @@ -3112,7 +3115,8 @@ static void page_flip_for_params(struct modeset_params *params,
> >
> > switch (type) {
> > case FLIP_PAGEFLIP:
> > - rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id,
> > + rc = drmModePageFlip(drm.fd,
> > + igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
> > params->primary.fb->fb_id,
> > DRM_MODE_PAGE_FLIP_EVENT, NULL);
> > igt_assert_eq(rc, 0);
> > @@ -3724,7 +3728,9 @@ static void stridechange_subtest(const struct test_mode *t)
> > * Try to set a new stride. with the page flip api. This is allowed
> > * with the atomic page flip helper, but not with the legacy page flip.
> > */
> > - rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id, new_fb->fb_id, 0, NULL);
> > + rc = drmModePageFlip(drm.fd,
> > + igt_crtc_for_pipe(&drm.display, params->pipe)->crtc_id,
> > + new_fb->fb_id, 0, NULL);
> > igt_assert(rc == -EINVAL || rc == 0);
> > do_assertions(rc ? 0 : DONT_ASSERT_FBC_STATUS);
> > }
> > diff --git a/tests/intel/kms_joiner_helper.c b/tests/intel/kms_joiner_helper.c
> > index d2a3117fec26..a59efcd1217a 100644
> > --- a/tests/intel/kms_joiner_helper.c
> > +++ b/tests/intel/kms_joiner_helper.c
> > @@ -105,7 +105,7 @@ void igt_set_all_master_pipes_for_platform(igt_display_t *display, uint32_t *mas
> >
> > *master_pipes = 0;
> > for (pipe = PIPE_A; pipe < IGT_MAX_PIPES - 1; pipe++) {
> > - if (display->pipes[pipe].valid && display->pipes[pipe + 1].valid) {
> > + if (igt_crtc_for_pipe(display, pipe)->valid && igt_crtc_for_pipe(display, pipe + 1)->valid) {
> > *master_pipes |= BIT(pipe);
> > igt_info("Found master pipe %s\n", kmstest_pipe_name(pipe));
> > }
> > diff --git a/tests/intel/kms_pipe_stress.c b/tests/intel/kms_pipe_stress.c
> > index 282288f8e943..7d212a07cb75 100644
> > --- a/tests/intel/kms_pipe_stress.c
> > +++ b/tests/intel/kms_pipe_stress.c
> > @@ -588,8 +588,8 @@ static void stress_pipes(struct data *data, struct timespec *start,
> > if (!data->highest_mode[pipe])
> > continue;
> >
> > - igt_assert_f(data->display.pipes[pipe].n_planes < MAX_PLANES,
> > - "Currently we don't support more than %d planes!",
> > + igt_assert_f(igt_crtc_for_pipe(&data->display, pipe)->n_planes < MAX_PLANES,
> > + "Currently we don't support more than %d planes!",
> > MAX_PLANES);
> >
> > ret = pipe_stress(data, output, pipe,
> > @@ -748,7 +748,8 @@ static void destroy_framebuffers(struct data *data)
> >
> > for (j = 0; j < MAX_PLANES; j++) {
> > if (data->fb[i * MAX_PLANES + j].fb_id) {
> > - igt_plane_set_fb(&data->display.pipes[i].planes[j], NULL);
> > + igt_plane_set_fb(&igt_crtc_for_pipe(&data->display, i)->planes[j],
> > + NULL);
> > igt_remove_fb(data->display.drm_fd, &data->fb[i * MAX_PLANES + j]);
> > data->fb[i * MAX_PLANES + j].fb_id = 0;
> > }
> > @@ -812,7 +813,8 @@ static void prepare_test(struct data *data)
> > data->pipe_crc[i] = NULL;
> >
> > if (data->num_planes[i] == -1)
> > - data->num_planes[i] = data->display.pipes[i].n_planes;
> > + data->num_planes[i] = igt_crtc_for_pipe(&data->display,
> > + i)->n_planes;
> >
> > igt_info("Max number of planes is %d for pipe %d\n",
> > data->num_planes[i], i);
> > diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> > index dbdd7b3e3eaa..47b2db268568 100644
> > --- a/tests/intel/kms_pm_dc.c
> > +++ b/tests/intel/kms_pm_dc.c
> > @@ -697,7 +697,9 @@ static void test_deep_pkgc_state(data_t *data)
> > igt_plane_set_fb(primary, &data->fb_rgb);
> > igt_display_commit(&data->display);
> > /* Wait for the vblank to sync the frame time */
> > - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
> > + igt_wait_for_vblank_count(data->drm_fd,
> > + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> > + 1);
> > pre_val = read_pkgc_counter(data->debugfs_root_fd);
> > /* Add a half-frame delay to ensure the flip occurs when the frame is active. */
> > usleep(delay * 0.5);
> > diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> > index 41a42c60868a..3714153276b0 100644
> > --- a/tests/intel/kms_sharpness_filter.c
> > +++ b/tests/intel/kms_sharpness_filter.c
> > @@ -436,7 +436,7 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
> >
> > data->output = output;
> > data->pipe_id = pipe;
> > - data->pipe = &display->pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(display, data->pipe_id);
> > data->mode = igt_output_get_mode(data->output);
> >
> > if (!has_sharpness_filter(data->pipe)) {
> > diff --git a/tests/intel/perf_pmu.c b/tests/intel/perf_pmu.c
> > index 8fd5ace40b07..ef95b50cd1ab 100644
> > --- a/tests/intel/perf_pmu.c
> > +++ b/tests/intel/perf_pmu.c
> > @@ -1066,7 +1066,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> > igt_display_commit(display);
> >
> > igt_wait_for_vblank(fd,
> > - display->pipes[data->pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> > }
> >
> > static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> > diff --git a/tests/intel/xe_pxp.c b/tests/intel/xe_pxp.c
> > index c6274bf616bf..351897e1ce68 100644
> > --- a/tests/intel/xe_pxp.c
> > +++ b/tests/intel/xe_pxp.c
> > @@ -845,7 +845,7 @@ static void compare_crcs(int fd, igt_display_t *display, igt_fb_t *ref_fb, igt_f
> >
> > for_each_connected_output(display, output) {
> > mode = igt_output_get_mode(output);
> > - pipe = &display->pipes[output->pending_pipe];
> > + pipe = igt_crtc_for_pipe(display, output->pending_pipe);
> > pipe_crc = igt_pipe_crc_new(fd, pipe->pipe,
> > IGT_PIPE_CRC_SOURCE_AUTO);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > @@ -902,7 +902,7 @@ static void test_display_pxp_fb(int fd, igt_display_t *display)
> > /* Do a modeset on all outputs */
> > for_each_connected_output(display, output) {
> > mode = igt_output_get_mode(output);
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > igt_require(igt_pipe_connector_valid(i, output));
> > igt_output_set_pipe(output, i);
> > @@ -959,7 +959,7 @@ static void test_display_black_pxp_fb(int fd, igt_display_t *display)
> > /* Do a modeset on all outputs */
> > for_each_connected_output(display, output) {
> > mode = igt_output_get_mode(output);
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > igt_require(igt_pipe_connector_valid(i, output));
> > igt_output_set_pipe(output, i);
> > diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> > index 6b2da0013b25..6762f172c4fa 100644
> > --- a/tests/kms_async_flips.c
> > +++ b/tests/kms_async_flips.c
> > @@ -299,7 +299,7 @@ static void test_init(data_t *data)
> >
> > mode = igt_output_get_mode(data->output);
> >
> > - data->crtc_id = data->display.pipes[data->pipe].crtc_id;
> > + data->crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
> > data->refresh_rate = mode->vrefresh;
> >
> > igt_output_set_pipe(data->output, data->pipe);
> > diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> > index d25528e65fa5..01a058673913 100644
> > --- a/tests/kms_atomic.c
> > +++ b/tests/kms_atomic.c
> > @@ -488,7 +488,7 @@ plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_p
> > int zpos;
> > igt_plane_t *temp;
> >
> > - temp = &data->display.pipes[pipe].planes[k];
> > + temp = &igt_crtc_for_pipe(&data->display, pipe)->planes[k];
> >
> > if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS))
> > continue;
> > @@ -1333,8 +1333,9 @@ static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output)
> > igt_display_reset(&data->display);
> > igt_output_set_pipe(output, pipe);
> >
> > - data->primary = igt_pipe_get_plane_type(&data->display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> > - data->pipe = &data->display.pipes[pipe];
> > + data->primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> > + data->pipe = igt_crtc_for_pipe(&data->display, pipe);
> > mode = igt_output_get_mode(output);
> >
> > igt_create_pattern_fb(data->drm_fd,
> > @@ -1418,7 +1419,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> > igt_subtest_with_dynamic("plane-overlay-legacy") {
> > for_each_pipe_with_single_output(&data.display, pipe, output) {
> > igt_plane_t *overlay =
> > - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> > + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> > + DRM_PLANE_TYPE_OVERLAY);
> > uint32_t format = plane_get_igt_format(overlay);
> >
> > if (!pipe_output_combo_valid(&data.display, pipe, output))
> > @@ -1456,7 +1458,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> > igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") {
> > for_each_pipe_with_single_output(&data.display, pipe, output) {
> > igt_plane_t *overlay =
> > - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY);
> > + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> > + DRM_PLANE_TYPE_OVERLAY);
> >
> > if (!pipe_output_combo_valid(&data.display, pipe, output))
> > continue;
> > @@ -1483,7 +1486,7 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> > "only higher zpos planes cover the lower zpos ones.");
> > igt_subtest_with_dynamic("plane-immutable-zpos") {
> > for_each_pipe_with_single_output(&data.display, pipe, output) {
> > - int n_planes = data.display.pipes[pipe].n_planes;
> > + int n_planes = igt_crtc_for_pipe(&data.display, pipe)->n_planes;
> >
> > if (!pipe_output_combo_valid(&data.display, pipe, output))
> > continue;
> > @@ -1527,7 +1530,8 @@ int igt_main_args("e", NULL, help_str, opt_handler, NULL)
> > igt_subtest_with_dynamic("plane-cursor-legacy") {
> > for_each_pipe_with_single_output(&data.display, pipe, output) {
> > igt_plane_t *cursor =
> > - igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR);
> > + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> > + DRM_PLANE_TYPE_CURSOR);
> >
> > if (!pipe_output_combo_valid(&data.display, pipe, output))
> > continue;
> > diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> > index 18f79136c30f..ab04b9f711b7 100644
> > --- a/tests/kms_atomic_transition.c
> > +++ b/tests/kms_atomic_transition.c
> > @@ -163,14 +163,14 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
> >
> > if (!(i & 1))
> > igt_wait_for_vblank(data->drm_fd,
> > - data->display.pipes[pipe].crtc_offset);
> > + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
> >
> > igt_plane_set_fb(primary, (i & 1) ? fb : NULL);
> > igt_display_commit2(&data->display, COMMIT_ATOMIC);
> >
> > if (i & 1)
> > igt_wait_for_vblank(data->drm_fd,
> > - data->display.pipes[pipe].crtc_offset);
> > + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset);
> >
> > igt_plane_set_fb(primary, (i & 1) ? NULL : fb);
> > }
> > @@ -327,7 +327,7 @@ static void setup_parms(data_t *data, enum pipe pipe,
> > uint64_t cursor_width, cursor_height;
> > unsigned sprite_width, sprite_height, prev_w, prev_h;
> > bool max_sprite_width, max_sprite_height, alpha = true;
> > - uint32_t n_planes = data->display.pipes[pipe].n_planes;
> > + uint32_t n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> > uint32_t n_overlays = 0, overlays[n_planes];
> > igt_plane_t *plane;
> > uint32_t iter_mask = 3;
> > @@ -438,7 +438,8 @@ static void setup_parms(data_t *data, enum pipe pipe,
> > igt_assert_f(n_planes >= 3, "No planes left to proceed with!");
> > if (n_overlays > 0) {
> > uint32_t plane_to_remove = hars_petruska_f54_1_random_unsafe_max(n_overlays);
> > - removed_plane = &data->display.pipes[pipe].planes[overlays[plane_to_remove]];
> > + removed_plane = &igt_crtc_for_pipe(&data->display,
> > + pipe)->planes[overlays[plane_to_remove]];
> > igt_plane_set_fb(removed_plane, NULL);
> > while (plane_to_remove < (n_overlays - 1)) {
> > overlays[plane_to_remove] = overlays[plane_to_remove + 1];
> > @@ -479,7 +480,7 @@ static void prepare_fencing(data_t *data, enum pipe pipe)
> >
> > igt_require_sw_sync();
> >
> > - n_planes = data->display.pipes[pipe].n_planes;
> > + n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> > timeline = calloc(n_planes, sizeof(*timeline));
> > igt_assert_f(timeline != NULL, "Failed to allocate memory for timelines\n");
> > thread = calloc(n_planes, sizeof(*thread));
> > @@ -510,7 +511,7 @@ static void unprepare_fencing(data_t *data, enum pipe pipe)
> > static void atomic_commit(data_t *data_v, enum pipe pipe, unsigned int flags, void *data, bool fencing)
> > {
> > if (fencing)
> > - igt_pipe_request_out_fence(&data_v->display.pipes[pipe]);
> > + igt_pipe_request_out_fence(igt_crtc_for_pipe(&data_v->display, pipe));
> >
> > igt_display_commit_atomic(&data_v->display, flags, data);
> > }
> > @@ -528,7 +529,7 @@ static int fd_completed(int fd)
> > static void wait_for_transition(data_t *data, enum pipe pipe, bool nonblocking, bool fencing)
> > {
> > if (fencing) {
> > - int fence_fd = data->display.pipes[pipe].out_fence_fd;
> > + int fence_fd = igt_crtc_for_pipe(&data->display, pipe)->out_fence_fd;
> >
> > if (!nonblocking)
> > igt_assert(fd_completed(fence_fd));
> > @@ -557,7 +558,7 @@ run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> > {
> > drmModeModeInfo *mode, override_mode;
> > igt_plane_t *plane;
> > - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> > uint32_t iter_max, i;
> > struct plane_parms parms[pipe_obj->n_planes];
> > unsigned flags = 0;
> > @@ -804,8 +805,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> > unset_output_pipe(&data->display);
> >
> > for_each_pipe(&data->display, pipe) {
> > - igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
> > - DRM_PLANE_TYPE_PRIMARY);
> > + igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> >
> > enum pipe old_pipe = plane->ref->pipe->pipe;
> >
> > @@ -814,8 +815,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> > * currently is holding the plane
> > */
> > if (old_pipe != pipe) {
> > - igt_plane_t *old_plane = igt_pipe_get_plane_type(&data->display.pipes[old_pipe],
> > - DRM_PLANE_TYPE_PRIMARY);
> > + igt_plane_t *old_plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, old_pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> >
> > igt_plane_set_fb(old_plane, NULL);
> > igt_display_commit2(&data->display, COMMIT_ATOMIC);
> > @@ -823,8 +824,8 @@ static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> > }
> >
> > for_each_pipe(&data->display, pipe) {
> > - igt_plane_t *plane = igt_pipe_get_plane_type(&data->display.pipes[pipe],
> > - DRM_PLANE_TYPE_PRIMARY);
> > + igt_plane_t *plane = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->display, pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> > drmModeModeInfo *mode = NULL;
> >
> > if (!(mask & (1 << pipe))) {
> > @@ -918,7 +919,7 @@ retry:
> > DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, .5, .5, .5, &data->fbs[1]);
> >
> > for_each_pipe(&data->display, i) {
> > - igt_pipe_t *pipe = &data->display.pipes[i];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, i);
> > igt_plane_t *plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > drmModeModeInfo *mode = NULL;
> >
> > @@ -953,7 +954,7 @@ retry:
> > igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
> >
> > if (fencing)
> > - igt_pipe_request_out_fence(&data->display.pipes[i]);
> > + igt_pipe_request_out_fence(igt_crtc_for_pipe(&data->display, i));
> > } else {
> > igt_plane_set_fb(plane, NULL);
> > }
> > diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> > index 9100dd329e30..a8a094f4d1f1 100644
> > --- a/tests/kms_bw.c
> > +++ b/tests/kms_bw.c
> > @@ -125,7 +125,8 @@ static void test_init(data_t *data, bool physical)
> >
> > for_each_pipe(display, i) {
> > data->pipe_id[i] = i;
> > - data->pipe[i] = &data->display.pipes[data->pipe_id[i]];
> > + data->pipe[i] = igt_crtc_for_pipe(&data->display,
> > + data->pipe_id[i]);
> > data->primary[i] = igt_pipe_get_plane_type(
> > data->pipe[i], DRM_PLANE_TYPE_PRIMARY);
> > data->pipe_crc[i] =
> > diff --git a/tests/kms_color.c b/tests/kms_color.c
> > index b3f3a34a559c..d7c713a775b0 100644
> > --- a/tests/kms_color.c
> > +++ b/tests/kms_color.c
> > @@ -724,16 +724,16 @@ prep_pipe(data_t *data, enum pipe p)
> > {
> > igt_require_pipe(&data->display, p);
> >
> > - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> > + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_DEGAMMA_LUT_SIZE)) {
> > data->degamma_lut_size =
> > - igt_pipe_obj_get_prop(&data->display.pipes[p],
> > + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> > IGT_CRTC_DEGAMMA_LUT_SIZE);
> > igt_assert_lt(0, data->degamma_lut_size);
> > }
> >
> > - if (igt_pipe_obj_has_prop(&data->display.pipes[p], IGT_CRTC_GAMMA_LUT_SIZE)) {
> > + if (igt_pipe_obj_has_prop(igt_crtc_for_pipe(&data->display, p), IGT_CRTC_GAMMA_LUT_SIZE)) {
> > data->gamma_lut_size =
> > - igt_pipe_obj_get_prop(&data->display.pipes[p],
> > + igt_pipe_obj_get_prop(igt_crtc_for_pipe(&data->display, p),
> > IGT_CRTC_GAMMA_LUT_SIZE);
> > igt_assert_lt(0, data->gamma_lut_size);
> > }
> > @@ -746,7 +746,7 @@ static void test_setup(data_t *data, enum pipe p)
> > prep_pipe(data, p);
> > igt_require_pipe_crc(data->drm_fd);
> >
> > - pipe = &data->display.pipes[p];
> > + pipe = igt_crtc_for_pipe(&data->display, p);
> > igt_require(pipe->n_planes >= 0);
> >
> > data->primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
> > index 143dff43e76b..3ca56138e97d 100644
> > --- a/tests/kms_color_helper.c
> > +++ b/tests/kms_color_helper.c
> > @@ -319,7 +319,7 @@ invalid_lut_sizes(data_t *data, enum pipe p,
> > enum igt_atomic_crtc_properties prop, int size)
> > {
> > igt_display_t *display = &data->display;
> > - igt_pipe_t *pipe = &display->pipes[p];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> > struct drm_color_lut *lut;
> > size_t lut_size = size * sizeof(lut[0]);
> >
> > @@ -362,7 +362,7 @@ invalid_degamma_lut_sizes(data_t *data, enum pipe p)
> > void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
> > {
> > igt_display_t *display = &data->display;
> > - igt_pipe_t *pipe = &display->pipes[p];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, p);
> > void *ptr;
> >
> > igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
> > diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> > index bb8cbe703622..b3cc2cec4931 100644
> > --- a/tests/kms_concurrent.c
> > +++ b/tests/kms_concurrent.c
> > @@ -306,7 +306,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
> > static void
> > run_test(data_t *data, enum pipe pipe, igt_output_t *output)
> > {
> > - int n_planes = data->display.pipes[pipe].n_planes;
> > + int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> > igt_display_reset(&data->display);
> >
> > if (!opt.user_seed)
> > @@ -346,7 +346,7 @@ run_tests_for_pipe(data_t *data)
> > if (!intel_pipe_output_combo_valid(&data->display))
> > continue;
> >
> > - igt_require(data->display.pipes[pipe].n_planes > 0);
> > + igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
> > igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
> > run_test(data, pipe, output);
> > }
> > diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> > index 7ca2ca82c0bd..fe5a63eb0a64 100644
> > --- a/tests/kms_cursor_crc.c
> > +++ b/tests/kms_cursor_crc.c
> > @@ -215,7 +215,7 @@ static void cursor_disable(data_t *data)
> >
> > /* do this wait here so it will not need to be added everywhere */
> > igt_wait_for_vblank_count(data->drm_fd,
> > - data->display.pipes[data->pipe].crtc_offset,
> > + igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> > data->vblank_wait_count);
> > }
> >
> > @@ -301,7 +301,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
> >
> > /* Extra vblank wait is because nonblocking cursor ioctl */
> > igt_wait_for_vblank_count(data->drm_fd,
> > - display->pipes[data->pipe].crtc_offset,
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> > data->vblank_wait_count);
> >
> > igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
> > @@ -351,7 +351,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
> > */
> > if (is_amdgpu_device(data->drm_fd))
> > igt_wait_for_vblank_count(data->drm_fd,
> > - display->pipes[data->pipe].crtc_offset,
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset,
> > data->vblank_wait_count);
> >
> > igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
> > @@ -736,7 +736,7 @@ static void timed_cursor_changes(data_t *data, void (changefunc)(data_t *, enum
> >
> > /* Extra vblank wait is because nonblocking cursor ioctl */
> > igt_wait_for_vblank_count(data->drm_fd,
> > - data->display.pipes[data->pipe].crtc_offset,
> > + igt_crtc_for_pipe(&data->display, data->pipe)->crtc_offset,
> > data->vblank_wait_count);
> >
> > igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc1);
> > diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> > index 27f861378763..e84dfeb9aefb 100644
> > --- a/tests/kms_cursor_edge_walk.c
> > +++ b/tests/kms_cursor_edge_walk.c
> > @@ -127,7 +127,7 @@ static void cursor_move(data_t *data, int x, int y, int i)
> > (IS_CHERRYVIEW(data->devid) && data->pipe == PIPE_C &&
> > x < 0 && x > -data->curw));
> > igt_wait_for_vblank(data->drm_fd,
> > - display->pipes[data->pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> > }
> >
> > #define XSTEP 8
> > diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> > index ec35992bac6a..566d920124ad 100644
> > --- a/tests/kms_cursor_legacy.c
> > +++ b/tests/kms_cursor_legacy.c
> > @@ -289,13 +289,15 @@ static void stress(igt_display_t *display,
> > if (pipe < 0) {
> > num_crtcs = igt_display_n_crtcs(display);
> > for_each_pipe(display, n) {
> > - arg.crtc_id = crtc_id[n] = display->pipes[n].crtc_id;
> > + arg.crtc_id = crtc_id[n] = igt_crtc_for_pipe(display,
> > + n)->crtc_id;
> > do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
> > }
> > } else {
> > num_crtcs = 1;
> > - if(display->pipes[pipe].valid) {
> > - arg.crtc_id = crtc_id[0] = display->pipes[pipe].crtc_id;
> > + if(igt_crtc_for_pipe(display, pipe)->valid) {
> > + arg.crtc_id = crtc_id[0] = igt_crtc_for_pipe(display,
> > + pipe)->crtc_id;
> > do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg);
> > }
> > }
> > @@ -410,7 +412,7 @@ static void set_cursor_hotspot(igt_plane_t *cursor, int hot_x, int hot_y)
> > static void populate_cursor_args(igt_display_t *display, enum pipe pipe,
> > struct drm_mode_cursor *arg, struct igt_fb *fb)
> > {
> > - arg->crtc_id = display->pipes[pipe].crtc_id;
> > + arg->crtc_id = igt_crtc_for_pipe(display, pipe)->crtc_id;
> > arg->flags = DRM_MODE_CURSOR_MOVE;
> > arg->x = 128;
> > arg->y = 128;
> > @@ -468,7 +470,7 @@ find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
> >
> > static void flip_nonblocking(igt_display_t *display, enum pipe pipe_id, bool atomic, struct igt_fb *fb, void *data)
> > {
> > - igt_pipe_t *pipe = &display->pipes[pipe_id];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> > igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > int ret;
> >
> > @@ -532,7 +534,7 @@ static void transition_nonblocking(igt_display_t *display, enum pipe pipe_id,
> > struct igt_fb *prim_fb, struct igt_fb *argb_fb,
> > bool hide_sprite)
> > {
> > - igt_pipe_t *pipe = &display->pipes[pipe_id];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(display, pipe_id);
> > igt_plane_t *primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> > igt_plane_t *sprite = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_OVERLAY);
> >
> > @@ -600,8 +602,8 @@ static void prepare_flip_test(igt_display_t *display,
> >
> > if (mode == flip_test_atomic_transitions ||
> > mode == flip_test_atomic_transitions_varying_size) {
> > - igt_require(display->pipes[flip_pipe].n_planes > 1 &&
> > - display->pipes[flip_pipe].planes[1].type != DRM_PLANE_TYPE_CURSOR);
> > + igt_require(igt_crtc_for_pipe(display, flip_pipe)->n_planes > 1 &&
> > + igt_crtc_for_pipe(display, flip_pipe)->planes[1].type != DRM_PLANE_TYPE_CURSOR);
> >
> > igt_create_color_pattern_fb(display->drm_fd, prim_fb->width, prim_fb->height,
> > DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR, .1, .1, .1, argb_fb);
> > @@ -633,8 +635,8 @@ static void flip(igt_display_t *display,
> >
> > if (mode == flip_test_atomic_transitions ||
> > mode == flip_test_atomic_transitions_varying_size) {
> > - igt_require(igt_pipe_get_plane_type(&display->pipes[flip_pipe],
> > - DRM_PLANE_TYPE_OVERLAY));
> > + igt_require(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, flip_pipe),
> > + DRM_PLANE_TYPE_OVERLAY));
> > }
> >
> > set_fb_on_crtc(display, flip_pipe, output, &fb_info);
> > @@ -1289,11 +1291,11 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
> > continue;
> > }
> >
> > - if (vbl.crtc_id == display->pipes[pipe].crtc_id) {
> > + if (vbl.crtc_id == igt_crtc_for_pipe(display, pipe)->crtc_id) {
> > vblank_start = kmstest_get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
> > flip_nonblocking(display, pipe, atomic, &fb_info, (void*)(ptrdiff_t)vblank_start);
> > } else {
> > - igt_assert(vbl.crtc_id == display->pipes[pipe2].crtc_id);
> > + igt_assert(vbl.crtc_id == igt_crtc_for_pipe(display, pipe2)->crtc_id);
> >
> > nloops--;
> >
> > diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
> > index b8b1fa8e555c..a5588904b0d3 100644
> > --- a/tests/kms_display_modes.c
> > +++ b/tests/kms_display_modes.c
> > @@ -103,8 +103,10 @@ static void run_extendedmode_basic(data_t *data,
> > igt_create_color_fb(data->drm_fd, mode[1]->hdisplay, mode[1]->vdisplay,
> > DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, 0, 0, 1, &fbs[1]);
> >
> > - plane[0] = igt_pipe_get_plane_type(&display->pipes[pipe1], DRM_PLANE_TYPE_PRIMARY);
> > - plane[1] = igt_pipe_get_plane_type(&display->pipes[pipe2], DRM_PLANE_TYPE_PRIMARY);
> > + plane[0] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
> > + DRM_PLANE_TYPE_PRIMARY);
> > + plane[1] = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
> > + DRM_PLANE_TYPE_PRIMARY);
> >
> > igt_plane_set_fb(plane[0], &fbs[0]);
> > igt_fb_set_size(&fbs[0], plane[0], mode[0]->hdisplay, mode[0]->vdisplay);
> > @@ -157,10 +159,12 @@ static void run_extendedmode_basic(data_t *data,
> > igt_output_set_pipe(output1, PIPE_NONE);
> > igt_output_set_pipe(output2, PIPE_NONE);
> >
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe1],
> > - DRM_PLANE_TYPE_PRIMARY), NULL);
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe2],
> > - DRM_PLANE_TYPE_PRIMARY), NULL);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe1),
> > + DRM_PLANE_TYPE_PRIMARY),
> > + NULL);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe2),
> > + DRM_PLANE_TYPE_PRIMARY),
> > + NULL);
> > igt_assert_f(igt_fit_modes_in_bw(display), "Unable to fit modes in bw\n");
> > igt_display_commit2(display, COMMIT_ATOMIC);
> >
> > diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> > index a4cb004e8e24..102bab1debd1 100644
> > --- a/tests/kms_dither.c
> > +++ b/tests/kms_dither.c
> > @@ -74,7 +74,7 @@ typedef struct {
> > /* Prepare test data. */
> > static void prepare_test(data_t *data, igt_output_t *output, enum pipe p)
> > {
> > - igt_pipe_t *pipe = &data->display.pipes[p];
> > + igt_pipe_t *pipe = igt_crtc_for_pipe(&data->display, p);
> >
> > igt_assert(pipe);
> >
> > diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> > index ab0ec47cbfad..45840945d658 100644
> > --- a/tests/kms_hdr.c
> > +++ b/tests/kms_hdr.c
> > @@ -213,7 +213,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
> > igt_display_t *display = &data->display;
> >
> > data->pipe_id = pipe;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> > igt_assert(data->pipe);
> >
> > igt_display_reset(display);
> > diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> > index 78c73e72ffa3..2b385d4931f2 100644
> > --- a/tests/kms_invalid_mode.c
> > +++ b/tests/kms_invalid_mode.c
> > @@ -277,7 +277,7 @@ test_output(data_t *data)
> >
> > kmstest_unset_all_crtcs(data->drm_fd, data->res);
> >
> > - crtc_id = data->display.pipes[data->pipe].crtc_id;
> > + crtc_id = igt_crtc_for_pipe(&data->display, data->pipe)->crtc_id;
> >
> > ret = drmModeSetCrtc(data->drm_fd, crtc_id,
> > fb.fb_id, 0, 0,
> > diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> > index 495b9aebba53..df16fc7af78e 100644
> > --- a/tests/kms_lease.c
> > +++ b/tests/kms_lease.c
> > @@ -153,7 +153,7 @@ static int prepare_crtc(data_t *data, bool is_master)
> > lease_t *lease = is_master ? &data->master : &data->lease;
> > igt_display_t *display = &lease->display;
> > igt_output_t *output = connector_id_to_output(display, data->connector_id);
> > - enum pipe pipe = display->pipes[data->pipe].pipe;
> > + enum pipe pipe = igt_crtc_for_pipe(display, data->pipe)->pipe;
> > igt_plane_t *primary;
> > int ret;
> >
> > @@ -179,7 +179,8 @@ static int prepare_crtc(data_t *data, bool is_master)
> > if (ret)
> > return ret;
> >
> > - igt_wait_for_vblank(lease->fd, display->pipes[pipe].crtc_offset);
> > + igt_wait_for_vblank(lease->fd,
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> >
> > lease->output = output;
> > lease->mode = mode;
> > @@ -377,7 +378,7 @@ static void page_flip_implicit_plane(data_t *data)
> > display = &data->master.display;
> >
> > igt_wait_for_vblank(data->master.fd,
> > - display->pipes[pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> >
> > do_or_die(drmModePageFlip(data->lease.fd, data->crtc_id,
> > data->master.primary_fb.fb_id,
> > @@ -388,7 +389,7 @@ static void page_flip_implicit_plane(data_t *data)
> > do_or_die(create_lease(data->master.fd, &mcl, &data->lease.fd));
> >
> > igt_wait_for_vblank(data->master.fd,
> > - display->pipes[pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> >
> > igt_assert_eq(drmModePageFlip(data->lease.fd, data->crtc_id,
> > data->master.primary_fb.fb_id,
> > @@ -714,8 +715,9 @@ static void lease_unleased_crtc(data_t *data)
> > for_each_pipe(&data->master.display, p) {
> > if (bad_crtc_id != 0)
> > break;
> > - if (data->master.display.pipes[p].crtc_id != data->crtc_id)
> > - bad_crtc_id = data->master.display.pipes[p].crtc_id;
> > + if (igt_crtc_for_pipe(&data->master.display, p)->crtc_id != data->crtc_id)
> > + bad_crtc_id = igt_crtc_for_pipe(&data->master.display,
> > + p)->crtc_id;
> > }
> >
> > /* Give up if there isn't another crtc */
> > @@ -895,11 +897,11 @@ static void invalid_create_leases(data_t *data)
> > igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
> >
> > /* no connector, non-universal_plane */
> > - object_ids[0] = data->master.display.pipes[0].crtc_id;
> > + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> > igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
> >
> > /* sanity check */
> > - object_ids[0] = data->master.display.pipes[0].crtc_id;
> > + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> > object_ids[1] = data->master.display.outputs[0].id;
> > mcl.object_count = 2;
> > igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
> > @@ -910,7 +912,7 @@ static void invalid_create_leases(data_t *data)
> > igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), -EINVAL);
> >
> > /* sanity check */
> > - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> > + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> > DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> > mcl.object_count = 3;
> > igt_assert_eq(create_lease(data->master.fd, &mcl, NULL), 0);
> > @@ -1075,9 +1077,9 @@ static int _create_simple_lease(int master_fd, data_t *data, int expected_ret)
> > uint32_t object_ids[3];
> > struct drm_mode_create_lease mcl;
> >
> > - object_ids[0] = data->master.display.pipes[0].crtc_id;
> > + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> > object_ids[1] = data->master.display.outputs[0].id;
> > - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> > + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> > DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> > mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
> > mcl.object_count = 3;
> > @@ -1165,12 +1167,12 @@ static void implicit_plane_lease(data_t *data)
> > struct drm_mode_create_lease mcl;
> > struct drm_mode_get_lease mgl;
> > int ret;
> > - uint32_t cursor_id = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> > + uint32_t cursor_id = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> > DRM_PLANE_TYPE_CURSOR)->drm_plane->plane_id;
> >
> > - object_ids[0] = data->master.display.pipes[0].crtc_id;
> > + object_ids[0] = igt_crtc_for_pipe(&data->master.display, 0)->crtc_id;
> > object_ids[1] = data->master.display.outputs[0].id;
> > - object_ids[2] = igt_pipe_get_plane_type(&data->master.display.pipes[0],
> > + object_ids[2] = igt_pipe_get_plane_type(igt_crtc_for_pipe(&data->master.display, 0),
> > DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> > mcl.object_ids = (uint64_t) (uintptr_t) object_ids;
> > mcl.object_count = 3;
> > @@ -1298,11 +1300,12 @@ int igt_main()
> >
> > igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(data.pipe),
> > igt_output_name(output)) {
> > - data.crtc_id = display->pipes[data.pipe].crtc_id;
> > + data.crtc_id = igt_crtc_for_pipe(display,
> > + data.pipe)->crtc_id;
> > data.connector_id = output->id;
> > data.plane_id =
> > - igt_pipe_get_plane_type(&data.master.display.pipes[data.pipe],
> > - DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> > + igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.master.display, data.pipe),
> > + DRM_PLANE_TYPE_PRIMARY)->drm_plane->plane_id;
> > f->func(&data);
> > }
> > terminate_lease(data.lease.fd);
> > diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
> > index 28c71fdec00a..3a1944b48874 100644
> > --- a/tests/kms_multipipe_modeset.c
> > +++ b/tests/kms_multipipe_modeset.c
> > @@ -75,7 +75,7 @@ static void run_test(data_t *data, int valid_outputs)
> >
> > /* Collect reference CRC by Committing individually on all outputs*/
> > for_each_connected_output(display, output) {
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> >
> > mode = NULL;
> > @@ -100,7 +100,7 @@ static void run_test(data_t *data, int valid_outputs)
> > i = 0;
> > /* Simultaneously commit on all outputs */
> > for_each_connected_output(display, output) {
> > - pipe = &display->pipes[i];
> > + pipe = igt_crtc_for_pipe(display, i);
> > plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
> >
> > mode = NULL;
> > diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> > index ca8f76c8aa27..1699b68ff3d0 100644
> > --- a/tests/kms_pipe_crc_basic.c
> > +++ b/tests/kms_pipe_crc_basic.c
> > @@ -169,11 +169,13 @@ static void test_read_crc(data_t *data, enum pipe pipe,
> >
> > pipe_crc = igt_pipe_crc_new_nonblock(data->drm_fd, pipe,
> > IGT_PIPE_CRC_SOURCE_AUTO);
> > - igt_wait_for_vblank(data->drm_fd, display->pipes[pipe].crtc_offset);
> > + igt_wait_for_vblank(data->drm_fd,
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> > igt_pipe_crc_start(pipe_crc);
> >
> > igt_wait_for_vblank_count(data->drm_fd,
> > - display->pipes[pipe].crtc_offset, N_CRCS);
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset,
> > + N_CRCS);
> > n_crcs = igt_pipe_crc_get_crcs(pipe_crc, N_CRCS+1, &crcs);
> > igt_pipe_crc_stop(pipe_crc);
> > igt_pipe_crc_free(pipe_crc);
> > diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> > index 5f18eac13ac1..84455e77bbb2 100644
> > --- a/tests/kms_plane.c
> > +++ b/tests/kms_plane.c
> > @@ -127,7 +127,7 @@ static color_t blue = { 0.0f, 0.0f, 1.0f };
> > */
> > static void test_init(data_t *data, enum pipe pipe)
> > {
> > - igt_require(data->display.pipes[pipe].n_planes > 0);
> > + igt_require(igt_crtc_for_pipe(&data->display, pipe)->n_planes > 0);
> > if (data->pipe_crc)
> > igt_pipe_crc_free(data->pipe_crc);
> > data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> > @@ -337,7 +337,7 @@ test_plane_position_with_output(data_t *data,
> > static void
> > test_plane_position(data_t *data, enum pipe pipe)
> > {
> > - int n_planes = data->display.pipes[pipe].n_planes;
> > + int n_planes = igt_crtc_for_pipe(&data->display, pipe)->n_planes;
> > igt_output_t *output = data->output;
> > igt_crc_t reference_crc;
> >
> > @@ -522,7 +522,7 @@ static const color_t colors_reduced[] = {
> > static void set_legacy_lut(data_t *data, enum pipe pipe,
> > uint16_t mask)
> > {
> > - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> > drmModeCrtc *drm_crtc;
> > uint16_t *lut;
> > int i, lut_size;
> > @@ -549,7 +549,7 @@ static void set_legacy_lut(data_t *data, enum pipe pipe,
> > static bool set_c8_legacy_lut(data_t *data, enum pipe pipe,
> > uint16_t mask)
> > {
> > - igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(&data->display, pipe);
> > drmModeCrtc *drm_crtc;
> > uint16_t *r, *g, *b;
> > int i, lut_size;
> > @@ -793,7 +793,7 @@ restart_round:
> > igt_display_t *display = &data->display;
> >
> > igt_wait_for_vblank(data->drm_fd,
> > - display->pipes[pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, pipe)->crtc_offset);
> > }
> > }
> >
> > diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> > index 037a5c1060a2..99ce90616720 100644
> > --- a/tests/kms_plane_alpha_blend.c
> > +++ b/tests/kms_plane_alpha_blend.c
> > @@ -214,7 +214,8 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe)
> > drmModeModeInfo *mode;
> > igt_display_t *display = &data->display;
> > int w, h;
> > - igt_plane_t *primary = igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY);
> > + igt_plane_t *primary = igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe),
> > + DRM_PLANE_TYPE_PRIMARY);
> >
> > /* create the pipe_crc object for this pipe */
> > igt_pipe_crc_free(data->pipe_crc);
> > @@ -387,7 +388,8 @@ static void constant_alpha_mid(data_t *data, enum pipe pipe, igt_plane_t *plane)
> > igt_crc_t ref_crc, crc;
> >
> > if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> > + &data->gray_fb);
> >
> > igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "None");
> > igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7fff);
> > @@ -412,7 +414,8 @@ static void constant_alpha_max(data_t *data, enum pipe pipe, igt_plane_t *plane)
> > igt_crc_t ref_crc, crc;
> >
> > if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> > + &data->gray_fb);
> >
> > igt_plane_set_fb(plane, &data->argb_fb_100);
> > igt_display_commit2(display, COMMIT_ATOMIC);
> > @@ -442,7 +445,8 @@ static void alpha_7efc(data_t *data, enum pipe pipe, igt_plane_t *plane)
> > igt_crc_t ref_crc = {}, crc = {};
> >
> > if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> > + &data->gray_fb);
> >
> > igt_display_commit2(display, COMMIT_ATOMIC);
> > igt_pipe_crc_start(data->pipe_crc);
> > @@ -496,7 +500,8 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
> >
> > /* Set a background color on the primary fb for testing */
> > if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> > - igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> > + igt_plane_set_fb(igt_pipe_get_plane_type(igt_crtc_for_pipe(display, pipe), DRM_PLANE_TYPE_PRIMARY),
> > + &data->gray_fb);
> >
> > igt_require(igt_plane_try_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "Coverage"));
> > igt_plane_set_fb(plane, &data->argb_fb_cov_7e);
> > diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> > index 3f9afe674259..7817d6df9f1d 100644
> > --- a/tests/kms_plane_cursor.c
> > +++ b/tests/kms_plane_cursor.c
> > @@ -94,7 +94,7 @@ static void test_init(data_t *data, enum pipe pipe_id, igt_output_t *output,
> > unsigned int flags)
> > {
> > data->pipe_id = pipe_id;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> > data->output = output;
> >
> > data->mode = igt_output_get_mode(data->output);
> > @@ -188,7 +188,9 @@ static void test_cursor_pos(data_t *data, int x, int y, unsigned int flags)
> > /* Wait for one more vblank since cursor updates are not
> > * synchronized to the same frame on AMD hw */
> > if(is_amdgpu_device(data->drm_fd))
> > - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[data->pipe_id].crtc_offset, 1);
> > + igt_wait_for_vblank_count(data->drm_fd,
> > + igt_crtc_for_pipe(&data->display, data->pipe_id)->crtc_offset,
> > + 1);
> >
> > igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &test_crc);
> > igt_pipe_crc_stop(data->pipe_crc);
> > @@ -326,7 +328,7 @@ int igt_main()
> > igt_subtest_with_dynamic_f("%s", tests[i].name) {
> > for_each_pipe_with_single_output(&data.display, pipe, output) {
> > if ((tests[i].flags & TEST_OVERLAY) &&
> > - !igt_pipe_get_plane_type(&data.display.pipes[pipe],
> > + !igt_pipe_get_plane_type(igt_crtc_for_pipe(&data.display, pipe),
> > DRM_PLANE_TYPE_OVERLAY))
> > continue;
> >
> > diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> > index 2f1bd16a1b33..0ce12749f7c8 100644
> > --- a/tests/kms_plane_multiple.c
> > +++ b/tests/kms_plane_multiple.c
> > @@ -403,7 +403,7 @@ static void
> > test_plane_position(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t modifier)
> > {
> > int n_planes = opt.all_planes ?
> > - data->display.pipes[pipe].n_planes : DEFAULT_N_PLANES;
> > + igt_crtc_for_pipe(&data->display, pipe)->n_planes : DEFAULT_N_PLANES;
> >
> > if (!opt.user_seed)
> > opt.seed = time(NULL);
> > @@ -464,7 +464,7 @@ static void test_plane_position_2_display(data_t *data, enum pipe pipe1, enum pi
> > color_t blue = { 0.0f, 0.0f, 1.0f };
> > igt_crc_t crc1, crc2;
> > int n_planes = opt.all_planes ?
> > - data->display.pipes[0].n_planes : DEFAULT_N_PLANES;
> > + igt_crtc_for_pipe(&data->display, 0)->n_planes : DEFAULT_N_PLANES;
> >
> > /*
> > * Note: We could use the dynamic way of calculating the maximum planes here
> > diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> > index bdb290b5430e..10b168615226 100644
> > --- a/tests/kms_plane_scaling.c
> > +++ b/tests/kms_plane_scaling.c
> > @@ -963,7 +963,7 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
> > w2 = get_width(mode, sf_plane2);
> > h2 = get_height(mode, sf_plane2);
> >
> > - n_planes = display->pipes[pipe].n_planes;
> > + n_planes = igt_crtc_for_pipe(display, pipe)->n_planes;
> > igt_require(n_planes >= 2);
> >
> > switch (test_type) {
> > @@ -990,9 +990,9 @@ test_planes_scaling_combo(data_t *d, double sf_plane1,
> > for (int k = 0; k < n_planes - 1; k += 2) {
> > igt_plane_t *p1, *p2;
> >
> > - p1 = &display->pipes[pipe].planes[k];
> > + p1 = &igt_crtc_for_pipe(display, pipe)->planes[k];
> > igt_require(p1);
> > - p2 = &display->pipes[pipe].planes[k+1];
> > + p2 = &igt_crtc_for_pipe(display, pipe)->planes[k+1];
> > igt_require(p2);
> >
> > if (p1->type == DRM_PLANE_TYPE_CURSOR || p2->type == DRM_PLANE_TYPE_CURSOR)
> > @@ -1015,7 +1015,7 @@ static void
> > test_invalid_num_scalers(data_t *d, enum pipe pipe, igt_output_t *output)
> > {
> > igt_display_t *display = &d->display;
> > - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> > + igt_pipe_t *pipe_obj = igt_crtc_for_pipe(display, pipe);
> > int width, height;
> > igt_plane_t *plane[3];
> > drmModeModeInfo *mode;
> > diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> > index 64514b4d2676..95bfe293a242 100644
> > --- a/tests/kms_properties.c
> > +++ b/tests/kms_properties.c
> > @@ -291,7 +291,9 @@ static void run_crtc_property_tests(igt_display_t *display, enum pipe pipe, igt_
> >
> > igt_info("Testing crtc properties on %s (output: %s)\n", kmstest_pipe_name(pipe), output->name);
> >
> > - test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC, display->pipes[pipe].crtc_id, atomic, false);
> > + test_properties(display->drm_fd, DRM_MODE_OBJECT_CRTC,
> > + igt_crtc_for_pipe(display, pipe)->crtc_id, atomic,
> > + false);
> >
> > cleanup_pipe(display, pipe, output, &fb);
> > }
> > @@ -482,7 +484,9 @@ static void test_object_invalid_properties(igt_display_t *display,
> > enum pipe pipe;
> >
> > for_each_pipe(display, pipe)
> > - test_invalid_properties(display->drm_fd, id, type, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
> > + test_invalid_properties(display->drm_fd, id, type,
> > + igt_crtc_for_pipe(display, pipe)->crtc_id,
> > + DRM_MODE_OBJECT_CRTC, atomic);
> >
> > for_each_pipe(display, pipe)
> > for_each_plane_on_pipe(display, pipe, plane)
> > @@ -888,7 +892,9 @@ static void invalid_properties(igt_display_t *display, bool atomic)
> > igt_skip_on(!display->is_atomic);
> >
> > for_each_pipe(display, pipe)
> > - test_object_invalid_properties(display, display->pipes[pipe].crtc_id, DRM_MODE_OBJECT_CRTC, atomic);
> > + test_object_invalid_properties(display,
> > + igt_crtc_for_pipe(display, pipe)->crtc_id,
> > + DRM_MODE_OBJECT_CRTC, atomic);
> >
> > for_each_pipe(display, pipe)
> > for_each_plane_on_pipe(display, pipe, plane)
> > diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> > index 6f10da8fbf7c..d37a14e275f7 100644
> > --- a/tests/kms_rotation_crc.c
> > +++ b/tests/kms_rotation_crc.c
> > @@ -1353,7 +1353,8 @@ int igt_main_args("", long_opts, help_str, opt_handler, &data)
> > igt_display_require_output(&data.display);
> >
> > for_each_pipe_with_valid_output(&data.display, pipe, output) {
> > - igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> > + igt_plane_t *primary = &igt_crtc_for_pipe(&data.display,
> > + pipe)->planes[0];
> >
> > test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> > break;
> > diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> > index 46edcc50d2ab..80a586ce62f5 100644
> > --- a/tests/kms_sequence.c
> > +++ b/tests/kms_sequence.c
> > @@ -123,7 +123,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> > igt_display_commit(display);
> >
> > igt_wait_for_vblank(fd,
> > - display->pipes[data->pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> > }
> >
> > static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> > diff --git a/tests/kms_tiled_display.c b/tests/kms_tiled_display.c
> > index d6f5eda7d841..003e6ea408e8 100644
> > --- a/tests/kms_tiled_display.c
> > +++ b/tests/kms_tiled_display.c
> > @@ -328,7 +328,7 @@ static data_connector_t *conn_for_crtc(data_t *data, unsigned int crtc_id)
> > for (int i = 0; i < data->num_h_tiles; i++) {
> > data_connector_t *conn = &data->conns[i];
> >
> > - if (data->display.pipes[conn->pipe].crtc_id == crtc_id)
> > + if (igt_crtc_for_pipe(&data->display, conn->pipe)->crtc_id == crtc_id)
> > return conn;
> > }
> >
> > diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> > index 47c805cd36cd..a4913ec13819 100644
> > --- a/tests/kms_universal_plane.c
> > +++ b/tests/kms_universal_plane.c
> > @@ -172,10 +172,10 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> > * drm_universal_plane_init(), the type enum can get interpreted as a
> > * boolean and show up in userspace as the wrong type.
> > */
> > - for (i = 0; i < display->pipes[pipe].n_planes; i++)
> > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY)
> > + for (i = 0; i < igt_crtc_for_pipe(display, pipe)->n_planes; i++)
> > + if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_PRIMARY)
> > num_primary++;
> > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR)
> > + else if (igt_crtc_for_pipe(display, pipe)->planes[i].type == DRM_PLANE_TYPE_CURSOR)
> > num_cursor++;
> >
> > igt_warn_on(num_primary != 1);
> > @@ -711,7 +711,9 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
> > * framebuffer.
> > */
> > if (is_xe_device(data->drm_fd))
> > - igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 2);
> > + igt_wait_for_vblank_count(data->drm_fd,
> > + igt_crtc_for_pipe(&data->display, pipe)->crtc_offset,
> > + 2);
> >
> > /* We should be back to the same framebuffer count as when we started */
> > count2 = intel_gem_fb_count(data);
> > diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> > index bce767a2ab83..1803308c56e1 100644
> > --- a/tests/kms_vblank.c
> > +++ b/tests/kms_vblank.c
> > @@ -144,7 +144,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> > igt_display_commit(display);
> >
> > igt_wait_for_vblank(fd,
> > - display->pipes[data->pipe].crtc_offset);
> > + igt_crtc_for_pipe(display, data->pipe)->crtc_offset);
> > }
> >
> > static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> > @@ -251,7 +251,7 @@ static void crtc_id_subtest(data_t *data, int fd)
> > uint64_t val;
> > union drm_wait_vblank vbl;
> >
> > - crtc_id = display->pipes[p].crtc_id;
> > + crtc_id = igt_crtc_for_pipe(display, p)->crtc_id;
> > if (drmGetCap(display->drm_fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &val) == 0)
> > expected_crtc_id = crtc_id;
> > else
> > diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c
> > index d21301733b5c..bcb7e00b0b07 100644
> > --- a/tools/amd_hdmi_compliance.c
> > +++ b/tools/amd_hdmi_compliance.c
> > @@ -385,7 +385,7 @@ static void test_init(data_t *data, int conn_id)
> > igt_display_t *display = &data->display;
> >
> > data->pipe_id = PIPE_A;
> > - data->pipe = &data->display.pipes[data->pipe_id];
> > + data->pipe = igt_crtc_for_pipe(&data->display, data->pipe_id);
> >
> > igt_display_reset(display);
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2025-12-12 15:32 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-10 9:38 [PATCH i-g-t 00/10] lib/kms: Move towards using 'crtcs' instead of 'pipes' Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 01/10] tests/intel/kms_dp_linktrain_fallback: Reduce side effects in igt_output_set_pipe() args Ville Syrjala
2025-12-10 14:21 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 02/10] lib/kms: Introduce igt_display_n_crtcs() Ville Syrjala
2025-12-10 14:21 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 03/10] lib/kms: Use igt_display_n_crtcs() everywhere Ville Syrjala
2025-12-10 14:22 ` Jani Nikula
2025-12-10 9:38 ` [PATCH i-g-t 04/10] lib/kms: Introduce igt_crtc_for_pipe() Ville Syrjala
2025-12-10 14:23 ` Jani Nikula
2025-12-10 17:16 ` [PATCH i-g-t v2 " Ville Syrjala
2025-12-10 9:38 ` [PATCH i-g-t 05/10] lib/kms: Use igt_crtc_for_pipe() everywhere Ville Syrjala
2025-12-10 14:25 ` Jani Nikula
2025-12-12 15:32 ` Ville Syrjälä
2025-12-10 9:38 ` [PATCH i-g-t 06/10] lib/kms: Remove tall tales about 'pipe' in DRM_IOCTL_WAIT_VBLANK Ville Syrjala
2025-12-10 14:25 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 07/10] lib/kms: Pass the entire igt_pipe_t to igt_wait_for_vblank*() Ville Syrjala
2025-12-10 14:29 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 08/10] lib/kms: Introduce igt_output_set_crtc() Ville Syrjala
2025-12-10 14:34 ` Jani Nikula
2025-12-10 14:36 ` Jani Nikula
2025-12-10 14:38 ` Jani Nikula
2025-12-10 14:44 ` Jani Nikula
2025-12-10 14:48 ` Ville Syrjälä
2025-12-10 9:39 ` [PATCH i-g-t 09/10] lib/kms: Replace igt_output_set_pipe() with igt_output_set_crtc() Ville Syrjala
2025-12-10 14:42 ` Jani Nikula
2025-12-10 9:39 ` [PATCH i-g-t 10/10] lib/kms: Rename igt_pipe_t to igt_crtc_t Ville Syrjala
2025-12-10 14:43 ` Jani Nikula
2025-12-10 13:34 ` ✓ Xe.CI.BAT: success for lib/kms: Move towards using 'crtcs' instead of 'pipes' Patchwork
2025-12-10 14:12 ` ✗ i915.CI.BAT: failure " Patchwork
2025-12-10 19:49 ` ✗ Xe.CI.Full: " Patchwork
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).