* [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe
@ 2020-03-18 14:41 Mohammed Khajapasha
2020-03-18 15:44 ` [igt-dev] ✓ Fi.CI.BAT: success for test/kms: Use bare number of crtc index to get a pipe (rev2) Patchwork
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Mohammed Khajapasha @ 2020-03-18 14:41 UTC (permalink / raw)
To: igt-dev, jani.nikula, ville.syrjala, anshuman.gupta; +Cc: kishore.kunche
In non-continous pipe display,
1. if PIPE_B,C is disabled in kernel, PIPE_A & PIPE_D
get registered with 0,1 indexes in display pipes[] array
and kmstest_pipe_name() always prints PIPE_B for enum pipe 1
which is actually PIPE_D in kernel.
2. And in kernel the possible_crtc bit map is based on
crtc index and for PIPE_D second least bit set in possible_crtc,
macro for_each_pipe_with_valid_output() with enum pipe index
always assumes PIPE_B for second least bit in possible_crtc
but it is PIPE_D in kernel.
To avoid this using bare number of crtc index
to get a pipe from display->pipes[] array to support
non-continuous pipe display.
This is a sample change to review on usage of bare number of
crtc index for each pipe, based upon the review the patch series
https://patchwork.freedesktop.org/series/74431/
will be updated with this change.
changes since v1:
* Updated the change with IGT_MAX_PIPES (Petri)
Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
---
lib/igt_kms.c | 22 ++--
lib/igt_kms.h | 26 ++---
tests/kms_atomic_transition.c | 194 +++++++++++++++++-----------------
3 files changed, 120 insertions(+), 122 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 849aa346..c2c35c07 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2255,7 +2255,7 @@ report_dup:
static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
{
igt_display_t *display = output->display;
- enum pipe pipe;
+ int idx;
if (output->pending_pipe == PIPE_NONE) {
/*
@@ -2267,12 +2267,12 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
* Otherwise, return the pending pipe (ie the pipe that should
* drive this output after the commit()
*/
- pipe = output->pending_pipe;
+ idx = output->pending_pipe;
}
- igt_assert(pipe >= 0 && pipe < display->n_pipes);
+ igt_assert(idx >= 0 && idx < display->n_pipes);
- return &display->pipes[pipe];
+ return &display->pipes[idx];
}
static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
@@ -3660,13 +3660,13 @@ void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode)
/*
* igt_output_set_pipe:
* @output: Target output for which the pipe is being set to
- * @pipe: Display pipe to set to
+ * @idx: Index for a Display pipe to be set
*
* 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)
+void igt_output_set_pipe(igt_output_t *output, int idx)
{
igt_display_t *display = output->display;
igt_pipe_t *old_pipe = NULL, *pipe_obj = NULL;;
@@ -3676,12 +3676,12 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
if (output->pending_pipe != PIPE_NONE)
old_pipe = igt_output_get_driving_pipe(output);
- if (pipe != PIPE_NONE)
- pipe_obj = &display->pipes[pipe];
+ if (idx != PIPE_NONE)
+ pipe_obj = &display->pipes[idx];
LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
- kmstest_pipe_name(pipe));
- output->pending_pipe = pipe;
+ kmstest_pipe_name(display->pipes[idx].pipe));
+ output->pending_pipe = idx;
if (old_pipe) {
igt_output_t *old_output;
@@ -3697,7 +3697,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 : display->pipes[pipe].crtc_id);
+ igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID, idx == PIPE_NONE ? 0 : display->pipes[idx].crtc_id);
igt_output_refresh(output);
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index b534ae64..bcef88b6 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -362,7 +362,7 @@ typedef struct {
struct kmstest_connector_config config;
char *name;
bool force_reprobe;
- enum pipe pending_pipe;
+ int pending_pipe;
bool use_override_mode;
drmModeModeInfo override_mode;
@@ -415,7 +415,7 @@ void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
const char *igt_output_name(igt_output_t *output);
drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
-void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
+void igt_output_set_pipe(igt_output_t *output, int idx);
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);
@@ -467,9 +467,9 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*
* Checks whether the given pipe and output can be used together.
*/
-#define igt_pipe_connector_valid(pipe, output) \
+#define igt_pipe_connector_valid(idx, output) \
(igt_output_is_connected((output)) && \
- (output->config.valid_crtc_idx_mask & (1 << (pipe))))
+ (output->config.valid_crtc_idx_mask & (1 << (idx))))
#define for_each_if(condition) if (!(condition)) {} else
@@ -517,7 +517,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
/**
* for_each_pipe_with_valid_output:
* @display: a pointer to an #igt_display_t structure
- * @pipe: The pipe for which this @pipe / @output combination is valid.
+ * @idx: The CRTC index for which this @pipe / @output combination is valid.
* @output: The output for which this @pipe / @output combination is valid.
*
* This for loop is called over all connected outputs. This function
@@ -527,12 +527,12 @@ static inline bool igt_output_is_connected(igt_output_t *output)
* for_each_pipe_with_single_output(), if you only need an
* output for a single pipe, use igt_get_single_output_for_pipe().
*/
-#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; \
- con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
+#define for_each_pipe_with_valid_output(display, idx, output) \
+ for (int con__ = (idx) = 0; \
+ assert(igt_can_fail()), (idx) < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
+ con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (idx = idx + 1, 0)) \
for_each_if ((((output) = &(display)->outputs[con__]), \
- igt_pipe_connector_valid((pipe), (output))))
+ igt_pipe_connector_valid((idx), (output))))
igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
igt_output_t **chosen_outputs);
@@ -568,9 +568,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
for_each_connected_output((display), (output)) \
for_each_if (igt_pipe_connector_valid((pipe), (output)))
-#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__++)
+#define for_each_plane_on_pipe(display, idx, plane) \
+ for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(idx)].planes[j__], \
+ j__ < (display)->pipes[(idx)].n_planes; j__++)
#define IGT_FIXED(i,f) ((i) << 16 | (f))
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 44f01109..f5e97089 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -51,7 +51,7 @@ pthread_t *thread;
int *seqno;
static void
-run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
+run_primary_test(igt_display_t *display, int idx, igt_output_t *output)
{
drmModeModeInfo *mode;
igt_plane_t *primary;
@@ -59,7 +59,7 @@ run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
int i, ret;
unsigned flags = DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_pipe(output, idx);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
mode = igt_output_get_mode(output);
@@ -77,13 +77,13 @@ run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
igt_display_commit2(display, COMMIT_ATOMIC);
if (!(i & 1))
- igt_wait_for_vblank(display->drm_fd, pipe);
+ igt_wait_for_vblank(display->drm_fd, idx);
igt_plane_set_fb(primary, (i & 1) ? &fb : NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
if (i & 1)
- igt_wait_for_vblank(display->drm_fd, pipe);
+ igt_wait_for_vblank(display->drm_fd, idx);
igt_plane_set_fb(primary, (i & 1) ? NULL : &fb);
}
@@ -119,7 +119,7 @@ static void configure_fencing(igt_plane_t *plane)
}
static int
-wm_setup_plane(igt_display_t *display, enum pipe pipe,
+wm_setup_plane(igt_display_t *display, int idx,
uint32_t mask, struct plane_parms *parms, bool fencing)
{
igt_plane_t *plane;
@@ -130,7 +130,7 @@ wm_setup_plane(igt_display_t *display, enum pipe pipe,
* because most of the modeset operations must be fast
* later on.
*/
- for_each_plane_on_pipe(display, pipe, plane) {
+ for_each_plane_on_pipe(display, idx, plane) {
int i = plane->index;
if (!mask || !(parms[i].mask & mask)) {
@@ -171,13 +171,13 @@ enum transition_type {
TRANSITION_MODESET_DISABLE,
};
-static void set_sprite_wh(igt_display_t *display, enum pipe pipe,
+static void set_sprite_wh(igt_display_t *display, int idx,
struct plane_parms *parms, struct igt_fb *sprite_fb,
bool alpha, unsigned w, unsigned h)
{
igt_plane_t *plane;
- for_each_plane_on_pipe(display, pipe, plane) {
+ for_each_plane_on_pipe(display, idx, plane) {
int i = plane->index;
if (plane->type == DRM_PLANE_TYPE_PRIMARY ||
@@ -203,7 +203,7 @@ static void set_sprite_wh(igt_display_t *display, enum pipe pipe,
#define is_atomic_check_plane_size_errno(errno) \
(errno == -EINVAL)
-static void setup_parms(igt_display_t *display, enum pipe pipe,
+static void setup_parms(igt_display_t *display, int idx,
const drmModeModeInfo *mode,
struct igt_fb *primary_fb,
struct igt_fb *argb_fb,
@@ -214,7 +214,7 @@ static void setup_parms(igt_display_t *display, 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 = display->pipes[pipe].n_planes;
+ uint32_t n_planes = display->pipes[idx].n_planes;
uint32_t n_overlays = 0, overlays[n_planes];
igt_plane_t *plane;
uint32_t iter_mask = 3;
@@ -227,7 +227,7 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
if (cursor_height >= mode->vdisplay)
cursor_height = mode->vdisplay;
- for_each_plane_on_pipe(display, pipe, plane) {
+ for_each_plane_on_pipe(display, idx, plane) {
int i = plane->index;
if (plane->type == DRM_PLANE_TYPE_PRIMARY) {
@@ -293,10 +293,10 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
while (!max_sprite_width && !max_sprite_height) {
int ret;
- set_sprite_wh(display, pipe, parms, sprite_fb,
+ set_sprite_wh(display, idx, parms, sprite_fb,
alpha, sprite_width, sprite_height);
- wm_setup_plane(display, pipe, (1 << n_planes) - 1, parms, false);
+ wm_setup_plane(display, idx, (1 << n_planes) - 1, parms, false);
ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
igt_assert(!is_atomic_check_failure_errno(ret));
@@ -325,7 +325,7 @@ static void setup_parms(igt_display_t *display, 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 = &display->pipes[pipe].planes[overlays[plane_to_remove]];
+ removed_plane = &display->pipes[idx].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];
@@ -351,22 +351,22 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
max_sprite_height = true;
}
- set_sprite_wh(display, pipe, parms, sprite_fb,
+ set_sprite_wh(display, idx, parms, sprite_fb,
alpha, sprite_width, sprite_height);
igt_info("Running test on pipe %s with resolution %dx%d and sprite size %dx%d alpha %i\n",
- kmstest_pipe_name(pipe), mode->hdisplay, mode->vdisplay,
+ kmstest_pipe_name(display->pipes[idx].pipe), mode->hdisplay, mode->vdisplay,
sprite_width, sprite_height, alpha);
}
-static void prepare_fencing(igt_display_t *display, enum pipe pipe)
+static void prepare_fencing(igt_display_t *display, int idx)
{
igt_plane_t *plane;
int n_planes;
igt_require_sw_sync();
- n_planes = display->pipes[pipe].n_planes;
+ n_planes = display->pipes[idx].n_planes;
timeline = calloc(sizeof(*timeline), n_planes);
igt_assert_f(timeline != NULL, "Failed to allocate memory for timelines\n");
thread = calloc(sizeof(*thread), n_planes);
@@ -374,15 +374,15 @@ static void prepare_fencing(igt_display_t *display, enum pipe pipe)
seqno = calloc(sizeof(*seqno), n_planes);
igt_assert_f(seqno != NULL, "Failed to allocate memory for seqno\n");
- for_each_plane_on_pipe(display, pipe, plane)
+ for_each_plane_on_pipe(display, idx, plane)
timeline[plane->index] = sw_sync_timeline_create();
}
-static void unprepare_fencing(igt_display_t *display, enum pipe pipe)
+static void unprepare_fencing(igt_display_t *display, int idx)
{
igt_plane_t *plane;
- for_each_plane_on_pipe(display, pipe, plane)
+ for_each_plane_on_pipe(display, idx, plane)
close(timeline[plane->index]);
free(timeline);
@@ -390,10 +390,10 @@ static void unprepare_fencing(igt_display_t *display, enum pipe pipe)
free(seqno);
}
-static void atomic_commit(igt_display_t *display, enum pipe pipe, unsigned int flags, void *data, bool fencing)
+static void atomic_commit(igt_display_t *display, int idx, unsigned int flags, void *data, bool fencing)
{
if (fencing)
- igt_pipe_request_out_fence(&display->pipes[pipe]);
+ igt_pipe_request_out_fence(&display->pipes[idx]);
igt_display_commit_atomic(display, flags, data);
}
@@ -408,10 +408,10 @@ static int fd_completed(int fd)
return ret;
}
-static void wait_for_transition(igt_display_t *display, enum pipe pipe, bool nonblocking, bool fencing)
+static void wait_for_transition(igt_display_t *display, int idx, bool nonblocking, bool fencing)
{
if (fencing) {
- int fence_fd = display->pipes[pipe].out_fence_fd;
+ int fence_fd = display->pipes[idx].out_fence_fd;
if (!nonblocking)
igt_assert(fd_completed(fence_fd));
@@ -435,20 +435,20 @@ static void wait_for_transition(igt_display_t *display, enum pipe pipe, bool non
* so test this and make sure it works.
*/
static void
-run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output,
+run_transition_test(igt_display_t *display, int idx, igt_output_t *output,
enum transition_type type, bool nonblocking, bool fencing)
{
struct igt_fb fb, argb_fb, sprite_fb;
drmModeModeInfo *mode, override_mode;
igt_plane_t *plane;
- igt_pipe_t *pipe_obj = &display->pipes[pipe];
+ igt_pipe_t *pipe_obj = &display->pipes[idx];
uint32_t iter_max, i;
struct plane_parms parms[pipe_obj->n_planes];
unsigned flags = 0;
int ret;
if (fencing)
- prepare_fencing(display, pipe);
+ prepare_fencing(display, idx);
else
flags |= DRM_MODE_PAGE_FLIP_EVENT;
@@ -466,21 +466,21 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
igt_create_fb(display->drm_fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, &fb);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_pipe(output, idx);
- wm_setup_plane(display, pipe, 0, NULL, false);
+ wm_setup_plane(display, idx, 0, NULL, false);
if (flags & DRM_MODE_ATOMIC_ALLOW_MODESET) {
igt_output_set_pipe(output, PIPE_NONE);
igt_display_commit2(display, COMMIT_ATOMIC);
- igt_output_set_pipe(output, pipe);
+ igt_output_set_pipe(output, idx);
}
igt_display_commit2(display, COMMIT_ATOMIC);
- setup_parms(display, pipe, mode, &fb, &argb_fb, &sprite_fb, parms, &iter_max);
+ setup_parms(display, idx, mode, &fb, &argb_fb, &sprite_fb, parms, &iter_max);
/*
* In some configurations the tests may not run to completion with all
@@ -488,7 +488,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
* planes to fix this
*/
while (1) {
- wm_setup_plane(display, pipe, iter_max - 1, parms, false);
+ wm_setup_plane(display, idx, iter_max - 1, parms, false);
if (fencing)
igt_pipe_request_out_fence(pipe_obj);
@@ -500,7 +500,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
break;
ret = 0;
- for_each_plane_on_pipe(display, pipe, plane) {
+ for_each_plane_on_pipe(display, idx, plane) {
i = plane->index;
if (plane->type == DRM_PLANE_TYPE_PRIMARY ||
@@ -522,16 +522,16 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
if (type == TRANSITION_AFTER_FREE) {
int fence_fd = -1;
- wm_setup_plane(display, pipe, 0, parms, fencing);
+ wm_setup_plane(display, idx, 0, parms, fencing);
- atomic_commit(display, pipe, flags, (void *)(unsigned long)0, fencing);
+ atomic_commit(display, idx, flags, (void *)(unsigned long)0, fencing);
if (fencing) {
fence_fd = pipe_obj->out_fence_fd;
pipe_obj->out_fence_fd = -1;
}
/* force planes to be part of commit */
- for_each_plane_on_pipe(display, pipe, plane) {
+ for_each_plane_on_pipe(display, idx, plane) {
if (parms[plane->index].mask)
igt_plane_set_position(plane, 0, 0);
}
@@ -543,7 +543,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
close(fence_fd);
} else {
igt_assert(fd_completed(display->drm_fd));
- wait_for_transition(display, pipe, false, fencing);
+ wait_for_transition(display, idx, false, fencing);
}
goto cleanup;
}
@@ -556,22 +556,22 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
n_enable_planes < pipe_obj->n_planes)
continue;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_pipe(output, idx);
- if (!wm_setup_plane(display, pipe, i, parms, fencing))
+ if (!wm_setup_plane(display, idx, i, parms, fencing))
continue;
- atomic_commit(display, pipe, flags, (void *)(unsigned long)i, fencing);
- wait_for_transition(display, pipe, nonblocking, fencing);
+ atomic_commit(display, idx, flags, (void *)(unsigned long)i, fencing);
+ wait_for_transition(display, idx, nonblocking, fencing);
if (type == TRANSITION_MODESET_DISABLE) {
igt_output_set_pipe(output, PIPE_NONE);
- if (!wm_setup_plane(display, pipe, 0, parms, fencing))
+ if (!wm_setup_plane(display, idx, 0, parms, fencing))
continue;
- atomic_commit(display, pipe, flags, (void *) 0UL, fencing);
- wait_for_transition(display, pipe, nonblocking, fencing);
+ atomic_commit(display, idx, flags, (void *) 0UL, fencing);
+ wait_for_transition(display, idx, nonblocking, fencing);
} else {
uint32_t j;
@@ -584,34 +584,34 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
n_enable_planes < pipe_obj->n_planes)
continue;
- if (!wm_setup_plane(display, pipe, j, parms, fencing))
+ if (!wm_setup_plane(display, idx, j, parms, fencing))
continue;
if (type >= TRANSITION_MODESET)
igt_output_override_mode(output, &override_mode);
- atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
- wait_for_transition(display, pipe, nonblocking, fencing);
+ atomic_commit(display, idx, flags, (void *)(unsigned long) j, fencing);
+ wait_for_transition(display, idx, nonblocking, fencing);
- if (!wm_setup_plane(display, pipe, i, parms, fencing))
+ if (!wm_setup_plane(display, idx, i, parms, fencing))
continue;
if (type >= TRANSITION_MODESET)
igt_output_override_mode(output, NULL);
- atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
- wait_for_transition(display, pipe, nonblocking, fencing);
+ atomic_commit(display, idx, flags, (void *)(unsigned long) i, fencing);
+ wait_for_transition(display, idx, nonblocking, fencing);
}
}
}
cleanup:
if (fencing)
- unprepare_fencing(display, pipe);
+ unprepare_fencing(display, idx);
igt_output_set_pipe(output, PIPE_NONE);
- for_each_plane_on_pipe(display, pipe, plane)
+ for_each_plane_on_pipe(display, idx, plane)
igt_plane_set_fb(plane, NULL);
igt_display_commit2(display, COMMIT_ATOMIC);
@@ -662,29 +662,29 @@ static void commit_display(igt_display_t *display, unsigned event_mask, bool non
static unsigned set_combinations(igt_display_t *display, unsigned mask, struct igt_fb *fb)
{
igt_output_t *output;
- enum pipe pipe;
+ int idx = 0;
unsigned event_mask = 0;
for_each_connected_output(display, output)
igt_output_set_pipe(output, PIPE_NONE);
- for_each_pipe(display, pipe) {
- igt_plane_t *plane = igt_pipe_get_plane_type(&display->pipes[pipe],
+ for_each_pipe(display, idx) {
+ igt_plane_t *plane = igt_pipe_get_plane_type(&display->pipes[idx],
DRM_PLANE_TYPE_PRIMARY);
drmModeModeInfo *mode = NULL;
- if (!(mask & (1 << pipe))) {
- if (igt_pipe_is_prop_changed(display, pipe, IGT_CRTC_ACTIVE)) {
- event_mask |= 1 << pipe;
+ if (!(mask & (1 << idx))) {
+ if (igt_pipe_is_prop_changed(display, idx, IGT_CRTC_ACTIVE)) {
+ event_mask |= 1 << idx;
igt_plane_set_fb(plane, NULL);
}
continue;
}
- event_mask |= 1 << pipe;
+ event_mask |= 1 << idx;
- for_each_valid_output_on_pipe(display, pipe, output) {
+ for_each_valid_output_on_pipe(display, idx, output) {
if (output->pending_pipe != PIPE_NONE)
continue;
@@ -695,7 +695,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct i
if (!mode)
return 0;
- igt_output_set_pipe(output, pipe);
+ igt_output_set_pipe(output, idx);
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);
@@ -706,14 +706,14 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct i
static void refresh_primaries(igt_display_t *display, int mask)
{
- enum pipe pipe;
+ int idx;
igt_plane_t *plane;
- for_each_pipe(display, pipe) {
- if (!((1 << pipe) & mask))
+ for_each_pipe(display, idx) {
+ if (!((1 << idx) & mask))
continue;
- for_each_plane_on_pipe(display, pipe, plane)
+ for_each_plane_on_pipe(display, idx, plane)
if (plane->type == DRM_PLANE_TYPE_PRIMARY)
igt_plane_set_position(plane, 0, 0);
}
@@ -862,20 +862,20 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
{
igt_output_t *outputs[IGT_MAX_PIPES] = {};
int num_outputs = 0;
- enum pipe pipe;
+ int idx;
- for_each_pipe(display, pipe) {
+ for_each_pipe(display, idx) {
igt_output_t *output;
- for_each_valid_output_on_pipe(display, pipe, output) {
+ for_each_valid_output_on_pipe(display, idx, output) {
int i;
- for (i = pipe - 1; i >= 0; i--)
+ for (i = idx - 1; i >= 0; i--)
if (outputs[i] == output)
break;
if (i < 0) {
- outputs[pipe] = output;
+ outputs[idx] = output;
num_outputs++;
break;
}
@@ -906,8 +906,7 @@ igt_main
{
igt_display_t display;
igt_output_t *output;
- enum pipe pipe;
- int i;
+ int i, idx = 0;
igt_fixture {
display.drm_fd = drm_open_driver_master(DRIVER_ANY);
@@ -921,32 +920,31 @@ igt_main
}
igt_subtest("plane-primary-toggle-with-vblank-wait")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_primary_test(&display, pipe, output);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_primary_test(&display, idx, output);
igt_subtest("plane-all-transition")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false);
-
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_PLANES, false, false);
igt_subtest("plane-all-transition-fencing")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_PLANES, false, true);
igt_subtest("plane-all-transition-nonblocking")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_PLANES, true, false);
igt_subtest("plane-all-transition-nonblocking-fencing")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_PLANES, true, true);
igt_subtest("plane-use-after-nonblocking-unbind")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, false);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_AFTER_FREE, true, false);
igt_subtest("plane-use-after-nonblocking-unbind-fencing")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_AFTER_FREE, true, true);
/*
* Test modeset cases on internal panels separately with a reduced
@@ -954,26 +952,26 @@ igt_main
* panels with long power cycle delays.
*/
igt_subtest("plane-all-modeset-transition")
- for_each_pipe_with_valid_output(&display, pipe, output) {
+ for_each_pipe_with_valid_output(&display, idx, output) {
if (output_is_internal_panel(output))
continue;
- run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+ run_transition_test(&display, idx, output, TRANSITION_MODESET, false, false);
}
igt_subtest("plane-all-modeset-transition-fencing")
- for_each_pipe_with_valid_output(&display, pipe, output) {
+ for_each_pipe_with_valid_output(&display, idx, output) {
if (output_is_internal_panel(output))
continue;
- run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+ run_transition_test(&display, idx, output, TRANSITION_MODESET, false, true);
}
igt_subtest("plane-all-modeset-transition-internal-panels") {
int tested = 0;
- for_each_pipe_with_valid_output(&display, pipe, output) {
+ for_each_pipe_with_valid_output(&display, idx, output) {
if (!output_is_internal_panel(output))
continue;
- run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
+ run_transition_test(&display, idx, output, TRANSITION_MODESET_FAST, false, false);
tested++;
}
igt_skip_on_f(!tested, "No output with internal panel found\n");
@@ -982,18 +980,18 @@ igt_main
igt_subtest("plane-all-modeset-transition-fencing-internal-panels") {
int tested = 0;
- for_each_pipe_with_valid_output(&display, pipe, output) {
+ for_each_pipe_with_valid_output(&display, idx, output) {
if (!output_is_internal_panel(output))
continue;
- run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
+ run_transition_test(&display, idx, output, TRANSITION_MODESET_FAST, false, true);
tested++;
}
igt_skip_on_f(!tested, "No output with internal panel found\n");
}
igt_subtest("plane-toggle-modeset-transition")
- for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
+ for_each_pipe_with_valid_output(&display, idx, output)
+ run_transition_test(&display, idx, output, TRANSITION_MODESET_DISABLE, false, false);
for (i = 1; i <= IGT_MAX_PIPES; i++) {
igt_subtest_f("%ix-modeset-transitions", i)
--
2.24.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for test/kms: Use bare number of crtc index to get a pipe (rev2)
2020-03-18 14:41 [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Mohammed Khajapasha
@ 2020-03-18 15:44 ` Patchwork
2020-03-18 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-03-24 10:20 ` [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Jani Nikula
2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-03-18 15:44 UTC (permalink / raw)
To: Mohammed Khajapasha; +Cc: igt-dev
== Series Details ==
Series: test/kms: Use bare number of crtc index to get a pipe (rev2)
URL : https://patchwork.freedesktop.org/series/74833/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8148 -> IGTPW_4321
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/index.html
Known issues
------------
Here are the changes found in IGTPW_4321 that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@kms_flip@basic-flip-vs-wf_vblank:
- fi-bwr-2160: [FAIL][1] -> [PASS][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank.html
Participating hosts (36 -> 42)
------------------------------
Additional (9): fi-glk-dsi fi-kbl-7500u fi-gdg-551 fi-cfl-8109u fi-elk-e7500 fi-bsw-kefka fi-kbl-7560u fi-skl-6600u fi-snb-2600
Missing (3): fi-ctg-p8600 fi-byt-clapper fi-bsw-cyan
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5522 -> IGTPW_4321
CI-20190529: 20190529
CI_DRM_8148: 461a6f2c7c0296c282114ac8c0e63536e9f7d095 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_4321: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/index.html
IGT_5522: bd2b01af69c9720d54e68a8702a23e4ff3637746 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for test/kms: Use bare number of crtc index to get a pipe (rev2)
2020-03-18 14:41 [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Mohammed Khajapasha
2020-03-18 15:44 ` [igt-dev] ✓ Fi.CI.BAT: success for test/kms: Use bare number of crtc index to get a pipe (rev2) Patchwork
@ 2020-03-18 19:04 ` Patchwork
2020-03-24 10:20 ` [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Jani Nikula
2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-03-18 19:04 UTC (permalink / raw)
To: Mohammed Khajapasha; +Cc: igt-dev
== Series Details ==
Series: test/kms: Use bare number of crtc index to get a pipe (rev2)
URL : https://patchwork.freedesktop.org/series/74833/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_8148_full -> IGTPW_4321_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_4321_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_4321_full, please notify your bug team 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_4321/index.html
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_4321_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
- shard-iclb: [PASS][1] -> [CRASH][2] +19 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb7/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
* igt@kms_color@pipe-c-ctm-0-5:
- shard-glk: [PASS][3] -> [CRASH][4] +6 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk3/igt@kms_color@pipe-c-ctm-0-5.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk7/igt@kms_color@pipe-c-ctm-0-5.html
* igt@kms_mmap_write_crc@main:
- shard-kbl: [PASS][5] -> [CRASH][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl1/igt@kms_mmap_write_crc@main.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl1/igt@kms_mmap_write_crc@main.html
* igt@kms_universal_plane@universal-plane-pipe-b-functional:
- shard-hsw: [PASS][7] -> [CRASH][8] +2 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-hsw1/igt@kms_universal_plane@universal-plane-pipe-b-functional.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-hsw1/igt@kms_universal_plane@universal-plane-pipe-b-functional.html
* igt@kms_universal_plane@universal-plane-pipe-b-sanity:
- shard-tglb: [PASS][9] -> [CRASH][10] +31 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-tglb8/igt@kms_universal_plane@universal-plane-pipe-b-sanity.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-tglb5/igt@kms_universal_plane@universal-plane-pipe-b-sanity.html
#### Warnings ####
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
- shard-glk: [TIMEOUT][11] ([i915#1320]) -> [CRASH][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-iclb: [SKIP][13] ([fdo#110725] / [fdo#111614]) -> [CRASH][14] +3 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb8/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb1/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-90:
- shard-tglb: [SKIP][15] ([fdo#111614]) -> [CRASH][16] +1 similar issue
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-tglb6/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-tglb5/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
* igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm:
- shard-iclb: [SKIP][17] ([fdo#109278]) -> [CRASH][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb3/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb1/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
Known issues
------------
Here are the changes found in IGTPW_4321_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#112080]) +13 similar issues
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb2/igt@gem_busy@busy-vcs1.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb6/igt@gem_busy@busy-vcs1.html
* igt@gem_ctx_persistence@close-replace-race:
- shard-kbl: [PASS][21] -> [INCOMPLETE][22] ([i915#1402])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl6/igt@gem_ctx_persistence@close-replace-race.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl3/igt@gem_ctx_persistence@close-replace-race.html
- shard-apl: [PASS][23] -> [INCOMPLETE][24] ([fdo#103927] / [i915#1402])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-apl4/igt@gem_ctx_persistence@close-replace-race.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl1/igt@gem_ctx_persistence@close-replace-race.html
* igt@gem_exec_schedule@pi-shared-iova-bsd:
- shard-iclb: [PASS][25] -> [SKIP][26] ([i915#677]) +1 similar issue
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb3/igt@gem_exec_schedule@pi-shared-iova-bsd.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb4/igt@gem_exec_schedule@pi-shared-iova-bsd.html
* igt@gem_exec_schedule@preempt-queue-chain-bsd:
- shard-iclb: [PASS][27] -> [SKIP][28] ([fdo#112146]) +2 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb3/igt@gem_exec_schedule@preempt-queue-chain-bsd.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb2/igt@gem_exec_schedule@preempt-queue-chain-bsd.html
* igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-glk: [PASS][29] -> [FAIL][30] ([i915#644])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk8/igt@gem_ppgtt@flink-and-close-vma-leak.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk9/igt@gem_ppgtt@flink-and-close-vma-leak.html
- shard-kbl: [PASS][31] -> [FAIL][32] ([i915#644])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl6/igt@gem_ppgtt@flink-and-close-vma-leak.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl4/igt@gem_ppgtt@flink-and-close-vma-leak.html
* igt@i915_selftest@live@execlists:
- shard-apl: [PASS][33] -> [INCOMPLETE][34] ([fdo#103927] / [i915#656])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-apl2/igt@i915_selftest@live@execlists.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl4/igt@i915_selftest@live@execlists.html
* igt@kms_color@pipe-b-ctm-max:
- shard-iclb: [PASS][35] -> [CRASH][36] ([i915#1149])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb5/igt@kms_color@pipe-b-ctm-max.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb7/igt@kms_color@pipe-b-ctm-max.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-apl: [PASS][37] -> [DMESG-WARN][38] ([i915#180]) +1 similar issue
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-apl3/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl2/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-glk: [PASS][39] -> [FAIL][40] ([i915#72])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@cursor-vs-flip-toggle:
- shard-hsw: [PASS][41] -> [FAIL][42] ([i915#57])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-hsw5/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-hsw5/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
* igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [PASS][43] -> [SKIP][44] ([fdo#109349])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb3/igt@kms_dp_dsc@basic-dsc-enable-edp.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-kbl: [PASS][45] -> [DMESG-WARN][46] ([i915#180]) +1 similar issue
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-glk: [PASS][47] -> [FAIL][48] ([i915#899])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk4/igt@kms_plane_lowres@pipe-a-tiling-x.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk6/igt@kms_plane_lowres@pipe-a-tiling-x.html
* igt@kms_psr@psr2_primary_mmap_cpu:
- shard-iclb: [PASS][49] -> [SKIP][50] ([fdo#109441]) +2 similar issues
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb5/igt@kms_psr@psr2_primary_mmap_cpu.html
* igt@prime_busy@hang-bsd2:
- shard-iclb: [PASS][51] -> [SKIP][52] ([fdo#109276]) +17 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb2/igt@prime_busy@hang-bsd2.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb6/igt@prime_busy@hang-bsd2.html
#### Possible fixes ####
* igt@gem_ctx_isolation@rcs0-s3:
- shard-apl: [DMESG-WARN][53] ([i915#180]) -> [PASS][54] +3 similar issues
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-apl6/igt@gem_ctx_isolation@rcs0-s3.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl1/igt@gem_ctx_isolation@rcs0-s3.html
* igt@gem_ctx_shared@exec-single-timeline-bsd:
- shard-iclb: [SKIP][55] ([fdo#110841]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb6/igt@gem_ctx_shared@exec-single-timeline-bsd.html
* igt@gem_exec_schedule@implicit-both-bsd2:
- shard-iclb: [SKIP][57] ([fdo#109276] / [i915#677]) -> [PASS][58] +1 similar issue
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb8/igt@gem_exec_schedule@implicit-both-bsd2.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb1/igt@gem_exec_schedule@implicit-both-bsd2.html
* igt@gem_exec_schedule@pi-common-bsd1:
- shard-iclb: [SKIP][59] ([fdo#109276]) -> [PASS][60] +9 similar issues
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb3/igt@gem_exec_schedule@pi-common-bsd1.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb2/igt@gem_exec_schedule@pi-common-bsd1.html
* igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [SKIP][61] ([i915#677]) -> [PASS][62] +2 similar issues
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb4/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb7/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
* igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [SKIP][63] ([fdo#112146]) -> [PASS][64] +5 similar issues
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb1/igt@gem_exec_schedule@preempt-other-chain-bsd.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb5/igt@gem_exec_schedule@preempt-other-chain-bsd.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-snb: [DMESG-WARN][65] ([fdo#111870] / [i915#478]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-snb4/igt@gem_userptr_blits@dmabuf-sync.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-snb2/igt@gem_userptr_blits@dmabuf-sync.html
- shard-hsw: [DMESG-WARN][67] ([fdo#111870]) -> [PASS][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-hsw1/igt@gem_userptr_blits@dmabuf-sync.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-hsw5/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_workarounds@suspend-resume-context:
- shard-kbl: [DMESG-WARN][69] ([i915#180]) -> [PASS][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl6/igt@gem_workarounds@suspend-resume-context.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl3/igt@gem_workarounds@suspend-resume-context.html
* igt@i915_pm_rpm@system-suspend-modeset:
- shard-kbl: [INCOMPLETE][71] ([i915#151] / [i915#155]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl3/igt@i915_pm_rpm@system-suspend-modeset.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl7/igt@i915_pm_rpm@system-suspend-modeset.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-glk: [FAIL][73] ([i915#79]) -> [PASS][74]
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk5/igt@kms_flip@flip-vs-expired-vblank.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk3/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_psr2_su@page_flip:
- shard-iclb: [SKIP][75] ([fdo#109642] / [fdo#111068]) -> [PASS][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb8/igt@kms_psr2_su@page_flip.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb2/igt@kms_psr2_su@page_flip.html
* igt@kms_psr@psr2_primary_page_flip:
- shard-iclb: [SKIP][77] ([fdo#109441]) -> [PASS][78] +2 similar issues
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb6/igt@kms_psr@psr2_primary_page_flip.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html
* igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm:
- shard-tglb: [SKIP][79] ([fdo#112015]) -> [PASS][80]
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-tglb1/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-tglb8/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
- shard-hsw: [SKIP][81] ([fdo#109271]) -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-hsw2/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-hsw2/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
- shard-glk: [SKIP][83] ([fdo#109271]) -> [PASS][84]
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-glk4/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-glk2/igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm.html
* igt@perf_pmu@busy-check-all-vcs1:
- shard-iclb: [SKIP][85] ([fdo#112080]) -> [PASS][86] +10 similar issues
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb3/igt@perf_pmu@busy-check-all-vcs1.html
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb2/igt@perf_pmu@busy-check-all-vcs1.html
#### Warnings ####
* igt@kms_color@pipe-c-ctm-0-75:
- shard-tglb: [FAIL][87] ([i915#1149] / [i915#315]) -> [CRASH][88] ([i915#1149]) +1 similar issue
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-tglb2/igt@kms_color@pipe-c-ctm-0-75.html
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-tglb1/igt@kms_color@pipe-c-ctm-0-75.html
- shard-iclb: [FAIL][89] ([i915#1149] / [i915#315]) -> [CRASH][90] ([i915#1149])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-iclb6/igt@kms_color@pipe-c-ctm-0-75.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-iclb7/igt@kms_color@pipe-c-ctm-0-75.html
* igt@runner@aborted:
- shard-kbl: [FAIL][91] ([i915#92]) -> ([FAIL][92], [FAIL][93]) ([i915#1389] / [i915#1402] / [i915#92])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-kbl3/igt@runner@aborted.html
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl3/igt@runner@aborted.html
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-kbl4/igt@runner@aborted.html
- shard-apl: [FAIL][94] ([fdo#103927]) -> ([FAIL][95], [FAIL][96], [FAIL][97]) ([fdo#103927] / [i915#1402] / [i915#529])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8148/shard-apl8/igt@runner@aborted.html
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl1/igt@runner@aborted.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl4/igt@runner@aborted.html
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/shard-apl8/igt@runner@aborted.html
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725
[fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
[fdo#112015]: https://bugs.freedesktop.org/show_bug.cgi?id=112015
[fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
[fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
[i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
[i915#1320]: https://gitlab.freedesktop.org/drm/intel/issues/1320
[i915#1389]: https://gitlab.freedesktop.org/drm/intel/issues/1389
[i915#1402]: https://gitlab.freedesktop.org/drm/intel/issues/1402
[i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151
[i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
[i915#478]: https://gitlab.freedesktop.org/drm/intel/issues/478
[i915#529]: https://gitlab.freedesktop.org/drm/intel/issues/529
[i915#57]: https://gitlab.freedesktop.org/drm/intel/issues/57
[i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
[i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656
[i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
[i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#899]: https://gitlab.freedesktop.org/drm/intel/issues/899
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
Participating hosts (10 -> 8)
------------------------------
Missing (2): pig-skl-6260u pig-glk-j5005
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5522 -> IGTPW_4321
* Piglit: piglit_4509 -> None
CI-20190529: 20190529
CI_DRM_8148: 461a6f2c7c0296c282114ac8c0e63536e9f7d095 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_4321: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/index.html
IGT_5522: bd2b01af69c9720d54e68a8702a23e4ff3637746 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4321/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe
2020-03-18 14:41 [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Mohammed Khajapasha
2020-03-18 15:44 ` [igt-dev] ✓ Fi.CI.BAT: success for test/kms: Use bare number of crtc index to get a pipe (rev2) Patchwork
2020-03-18 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2020-03-24 10:20 ` Jani Nikula
2 siblings, 0 replies; 4+ messages in thread
From: Jani Nikula @ 2020-03-24 10:20 UTC (permalink / raw)
To: Mohammed Khajapasha, igt-dev, ville.syrjala, anshuman.gupta
Cc: kishore.kunche
On Wed, 18 Mar 2020, Mohammed Khajapasha <mohammed.khajapasha@intel.com> wrote:
> In non-continous pipe display,
> 1. if PIPE_B,C is disabled in kernel, PIPE_A & PIPE_D
> get registered with 0,1 indexes in display pipes[] array
> and kmstest_pipe_name() always prints PIPE_B for enum pipe 1
> which is actually PIPE_D in kernel.
> 2. And in kernel the possible_crtc bit map is based on
> crtc index and for PIPE_D second least bit set in possible_crtc,
> macro for_each_pipe_with_valid_output() with enum pipe index
> always assumes PIPE_B for second least bit in possible_crtc
> but it is PIPE_D in kernel.
>
> To avoid this using bare number of crtc index
> to get a pipe from display->pipes[] array to support
> non-continuous pipe display.
>
> This is a sample change to review on usage of bare number of
> crtc index for each pipe, based upon the review the patch series
> https://patchwork.freedesktop.org/series/74431/
> will be updated with this change.
[Apparently I first replied to a version sent privately and not to the
list.]
I'm afraid it's not enough to keep the codebase consistent.
Like, what's the point of changing enum pipe pipe to int idx, if you're
still going to use it with functions and macros that are named after
pipe?
I think Ville mentioned we should be talking about crtcs.
I know it's not an easy task, but the whole point here is not to make
quick and dirty changes, but to ensure we still have a readable codebase
and there is no confusion between what is a pipe and what is a crtc (or
crtc index).
BR,
Jani.
>
> changes since v1:
> * Updated the change with IGT_MAX_PIPES (Petri)
>
> Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> ---
> lib/igt_kms.c | 22 ++--
> lib/igt_kms.h | 26 ++---
> tests/kms_atomic_transition.c | 194 +++++++++++++++++-----------------
> 3 files changed, 120 insertions(+), 122 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 849aa346..c2c35c07 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2255,7 +2255,7 @@ report_dup:
> static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> {
> igt_display_t *display = output->display;
> - enum pipe pipe;
> + int idx;
>
> if (output->pending_pipe == PIPE_NONE) {
> /*
> @@ -2267,12 +2267,12 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)
> * Otherwise, return the pending pipe (ie the pipe that should
> * drive this output after the commit()
> */
> - pipe = output->pending_pipe;
> + idx = output->pending_pipe;
> }
>
> - igt_assert(pipe >= 0 && pipe < display->n_pipes);
> + igt_assert(idx >= 0 && idx < display->n_pipes);
>
> - return &display->pipes[pipe];
> + return &display->pipes[idx];
> }
>
> static igt_plane_t *igt_pipe_get_plane(igt_pipe_t *pipe, int plane_idx)
> @@ -3660,13 +3660,13 @@ void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode)
> /*
> * igt_output_set_pipe:
> * @output: Target output for which the pipe is being set to
> - * @pipe: Display pipe to set to
> + * @idx: Index for a Display pipe to be set
> *
> * 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)
> +void igt_output_set_pipe(igt_output_t *output, int idx)
> {
> igt_display_t *display = output->display;
> igt_pipe_t *old_pipe = NULL, *pipe_obj = NULL;;
> @@ -3676,12 +3676,12 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)
> if (output->pending_pipe != PIPE_NONE)
> old_pipe = igt_output_get_driving_pipe(output);
>
> - if (pipe != PIPE_NONE)
> - pipe_obj = &display->pipes[pipe];
> + if (idx != PIPE_NONE)
> + pipe_obj = &display->pipes[idx];
>
> LOG(display, "%s: set_pipe(%s)\n", igt_output_name(output),
> - kmstest_pipe_name(pipe));
> - output->pending_pipe = pipe;
> + kmstest_pipe_name(display->pipes[idx].pipe));
> + output->pending_pipe = idx;
>
> if (old_pipe) {
> igt_output_t *old_output;
> @@ -3697,7 +3697,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 : display->pipes[pipe].crtc_id);
> + igt_output_set_prop_value(output, IGT_CONNECTOR_CRTC_ID, idx == PIPE_NONE ? 0 : display->pipes[idx].crtc_id);
>
> igt_output_refresh(output);
>
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index b534ae64..bcef88b6 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -362,7 +362,7 @@ typedef struct {
> struct kmstest_connector_config config;
> char *name;
> bool force_reprobe;
> - enum pipe pending_pipe;
> + int pending_pipe;
> bool use_override_mode;
> drmModeModeInfo override_mode;
>
> @@ -415,7 +415,7 @@ void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> const char *igt_output_name(igt_output_t *output);
> drmModeModeInfo *igt_output_get_mode(igt_output_t *output);
> void igt_output_override_mode(igt_output_t *output, const drmModeModeInfo *mode);
> -void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
> +void igt_output_set_pipe(igt_output_t *output, int idx);
> 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);
> @@ -467,9 +467,9 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> *
> * Checks whether the given pipe and output can be used together.
> */
> -#define igt_pipe_connector_valid(pipe, output) \
> +#define igt_pipe_connector_valid(idx, output) \
> (igt_output_is_connected((output)) && \
> - (output->config.valid_crtc_idx_mask & (1 << (pipe))))
> + (output->config.valid_crtc_idx_mask & (1 << (idx))))
>
> #define for_each_if(condition) if (!(condition)) {} else
>
> @@ -517,7 +517,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> /**
> * for_each_pipe_with_valid_output:
> * @display: a pointer to an #igt_display_t structure
> - * @pipe: The pipe for which this @pipe / @output combination is valid.
> + * @idx: The CRTC index for which this @pipe / @output combination is valid.
> * @output: The output for which this @pipe / @output combination is valid.
> *
> * This for loop is called over all connected outputs. This function
> @@ -527,12 +527,12 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> * for_each_pipe_with_single_output(), if you only need an
> * output for a single pipe, use igt_get_single_output_for_pipe().
> */
> -#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; \
> - con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
> +#define for_each_pipe_with_valid_output(display, idx, output) \
> + for (int con__ = (idx) = 0; \
> + assert(igt_can_fail()), (idx) < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
> + con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (idx = idx + 1, 0)) \
> for_each_if ((((output) = &(display)->outputs[con__]), \
> - igt_pipe_connector_valid((pipe), (output))))
> + igt_pipe_connector_valid((idx), (output))))
>
> igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
> igt_output_t **chosen_outputs);
> @@ -568,9 +568,9 @@ igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
> for_each_connected_output((display), (output)) \
> for_each_if (igt_pipe_connector_valid((pipe), (output)))
>
> -#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__++)
> +#define for_each_plane_on_pipe(display, idx, plane) \
> + for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(idx)].planes[j__], \
> + j__ < (display)->pipes[(idx)].n_planes; j__++)
>
> #define IGT_FIXED(i,f) ((i) << 16 | (f))
>
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 44f01109..f5e97089 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -51,7 +51,7 @@ pthread_t *thread;
> int *seqno;
>
> static void
> -run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
> +run_primary_test(igt_display_t *display, int idx, igt_output_t *output)
> {
> drmModeModeInfo *mode;
> igt_plane_t *primary;
> @@ -59,7 +59,7 @@ run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
> int i, ret;
> unsigned flags = DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_pipe(output, idx);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> mode = igt_output_get_mode(output);
> @@ -77,13 +77,13 @@ run_primary_test(igt_display_t *display, enum pipe pipe, igt_output_t *output)
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> if (!(i & 1))
> - igt_wait_for_vblank(display->drm_fd, pipe);
> + igt_wait_for_vblank(display->drm_fd, idx);
>
> igt_plane_set_fb(primary, (i & 1) ? &fb : NULL);
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> if (i & 1)
> - igt_wait_for_vblank(display->drm_fd, pipe);
> + igt_wait_for_vblank(display->drm_fd, idx);
>
> igt_plane_set_fb(primary, (i & 1) ? NULL : &fb);
> }
> @@ -119,7 +119,7 @@ static void configure_fencing(igt_plane_t *plane)
> }
>
> static int
> -wm_setup_plane(igt_display_t *display, enum pipe pipe,
> +wm_setup_plane(igt_display_t *display, int idx,
> uint32_t mask, struct plane_parms *parms, bool fencing)
> {
> igt_plane_t *plane;
> @@ -130,7 +130,7 @@ wm_setup_plane(igt_display_t *display, enum pipe pipe,
> * because most of the modeset operations must be fast
> * later on.
> */
> - for_each_plane_on_pipe(display, pipe, plane) {
> + for_each_plane_on_pipe(display, idx, plane) {
> int i = plane->index;
>
> if (!mask || !(parms[i].mask & mask)) {
> @@ -171,13 +171,13 @@ enum transition_type {
> TRANSITION_MODESET_DISABLE,
> };
>
> -static void set_sprite_wh(igt_display_t *display, enum pipe pipe,
> +static void set_sprite_wh(igt_display_t *display, int idx,
> struct plane_parms *parms, struct igt_fb *sprite_fb,
> bool alpha, unsigned w, unsigned h)
> {
> igt_plane_t *plane;
>
> - for_each_plane_on_pipe(display, pipe, plane) {
> + for_each_plane_on_pipe(display, idx, plane) {
> int i = plane->index;
>
> if (plane->type == DRM_PLANE_TYPE_PRIMARY ||
> @@ -203,7 +203,7 @@ static void set_sprite_wh(igt_display_t *display, enum pipe pipe,
> #define is_atomic_check_plane_size_errno(errno) \
> (errno == -EINVAL)
>
> -static void setup_parms(igt_display_t *display, enum pipe pipe,
> +static void setup_parms(igt_display_t *display, int idx,
> const drmModeModeInfo *mode,
> struct igt_fb *primary_fb,
> struct igt_fb *argb_fb,
> @@ -214,7 +214,7 @@ static void setup_parms(igt_display_t *display, 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 = display->pipes[pipe].n_planes;
> + uint32_t n_planes = display->pipes[idx].n_planes;
> uint32_t n_overlays = 0, overlays[n_planes];
> igt_plane_t *plane;
> uint32_t iter_mask = 3;
> @@ -227,7 +227,7 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
> if (cursor_height >= mode->vdisplay)
> cursor_height = mode->vdisplay;
>
> - for_each_plane_on_pipe(display, pipe, plane) {
> + for_each_plane_on_pipe(display, idx, plane) {
> int i = plane->index;
>
> if (plane->type == DRM_PLANE_TYPE_PRIMARY) {
> @@ -293,10 +293,10 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
> while (!max_sprite_width && !max_sprite_height) {
> int ret;
>
> - set_sprite_wh(display, pipe, parms, sprite_fb,
> + set_sprite_wh(display, idx, parms, sprite_fb,
> alpha, sprite_width, sprite_height);
>
> - wm_setup_plane(display, pipe, (1 << n_planes) - 1, parms, false);
> + wm_setup_plane(display, idx, (1 << n_planes) - 1, parms, false);
> ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> igt_assert(!is_atomic_check_failure_errno(ret));
>
> @@ -325,7 +325,7 @@ static void setup_parms(igt_display_t *display, 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 = &display->pipes[pipe].planes[overlays[plane_to_remove]];
> + removed_plane = &display->pipes[idx].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];
> @@ -351,22 +351,22 @@ static void setup_parms(igt_display_t *display, enum pipe pipe,
> max_sprite_height = true;
> }
>
> - set_sprite_wh(display, pipe, parms, sprite_fb,
> + set_sprite_wh(display, idx, parms, sprite_fb,
> alpha, sprite_width, sprite_height);
>
> igt_info("Running test on pipe %s with resolution %dx%d and sprite size %dx%d alpha %i\n",
> - kmstest_pipe_name(pipe), mode->hdisplay, mode->vdisplay,
> + kmstest_pipe_name(display->pipes[idx].pipe), mode->hdisplay, mode->vdisplay,
> sprite_width, sprite_height, alpha);
> }
>
> -static void prepare_fencing(igt_display_t *display, enum pipe pipe)
> +static void prepare_fencing(igt_display_t *display, int idx)
> {
> igt_plane_t *plane;
> int n_planes;
>
> igt_require_sw_sync();
>
> - n_planes = display->pipes[pipe].n_planes;
> + n_planes = display->pipes[idx].n_planes;
> timeline = calloc(sizeof(*timeline), n_planes);
> igt_assert_f(timeline != NULL, "Failed to allocate memory for timelines\n");
> thread = calloc(sizeof(*thread), n_planes);
> @@ -374,15 +374,15 @@ static void prepare_fencing(igt_display_t *display, enum pipe pipe)
> seqno = calloc(sizeof(*seqno), n_planes);
> igt_assert_f(seqno != NULL, "Failed to allocate memory for seqno\n");
>
> - for_each_plane_on_pipe(display, pipe, plane)
> + for_each_plane_on_pipe(display, idx, plane)
> timeline[plane->index] = sw_sync_timeline_create();
> }
>
> -static void unprepare_fencing(igt_display_t *display, enum pipe pipe)
> +static void unprepare_fencing(igt_display_t *display, int idx)
> {
> igt_plane_t *plane;
>
> - for_each_plane_on_pipe(display, pipe, plane)
> + for_each_plane_on_pipe(display, idx, plane)
> close(timeline[plane->index]);
>
> free(timeline);
> @@ -390,10 +390,10 @@ static void unprepare_fencing(igt_display_t *display, enum pipe pipe)
> free(seqno);
> }
>
> -static void atomic_commit(igt_display_t *display, enum pipe pipe, unsigned int flags, void *data, bool fencing)
> +static void atomic_commit(igt_display_t *display, int idx, unsigned int flags, void *data, bool fencing)
> {
> if (fencing)
> - igt_pipe_request_out_fence(&display->pipes[pipe]);
> + igt_pipe_request_out_fence(&display->pipes[idx]);
>
> igt_display_commit_atomic(display, flags, data);
> }
> @@ -408,10 +408,10 @@ static int fd_completed(int fd)
> return ret;
> }
>
> -static void wait_for_transition(igt_display_t *display, enum pipe pipe, bool nonblocking, bool fencing)
> +static void wait_for_transition(igt_display_t *display, int idx, bool nonblocking, bool fencing)
> {
> if (fencing) {
> - int fence_fd = display->pipes[pipe].out_fence_fd;
> + int fence_fd = display->pipes[idx].out_fence_fd;
>
> if (!nonblocking)
> igt_assert(fd_completed(fence_fd));
> @@ -435,20 +435,20 @@ static void wait_for_transition(igt_display_t *display, enum pipe pipe, bool non
> * so test this and make sure it works.
> */
> static void
> -run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output,
> +run_transition_test(igt_display_t *display, int idx, igt_output_t *output,
> enum transition_type type, bool nonblocking, bool fencing)
> {
> struct igt_fb fb, argb_fb, sprite_fb;
> drmModeModeInfo *mode, override_mode;
> igt_plane_t *plane;
> - igt_pipe_t *pipe_obj = &display->pipes[pipe];
> + igt_pipe_t *pipe_obj = &display->pipes[idx];
> uint32_t iter_max, i;
> struct plane_parms parms[pipe_obj->n_planes];
> unsigned flags = 0;
> int ret;
>
> if (fencing)
> - prepare_fencing(display, pipe);
> + prepare_fencing(display, idx);
> else
> flags |= DRM_MODE_PAGE_FLIP_EVENT;
>
> @@ -466,21 +466,21 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> igt_create_fb(display->drm_fd, mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, &fb);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_pipe(output, idx);
>
> - wm_setup_plane(display, pipe, 0, NULL, false);
> + wm_setup_plane(display, idx, 0, NULL, false);
>
> if (flags & DRM_MODE_ATOMIC_ALLOW_MODESET) {
> igt_output_set_pipe(output, PIPE_NONE);
>
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_pipe(output, idx);
> }
>
> igt_display_commit2(display, COMMIT_ATOMIC);
>
> - setup_parms(display, pipe, mode, &fb, &argb_fb, &sprite_fb, parms, &iter_max);
> + setup_parms(display, idx, mode, &fb, &argb_fb, &sprite_fb, parms, &iter_max);
>
> /*
> * In some configurations the tests may not run to completion with all
> @@ -488,7 +488,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> * planes to fix this
> */
> while (1) {
> - wm_setup_plane(display, pipe, iter_max - 1, parms, false);
> + wm_setup_plane(display, idx, iter_max - 1, parms, false);
>
> if (fencing)
> igt_pipe_request_out_fence(pipe_obj);
> @@ -500,7 +500,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> break;
>
> ret = 0;
> - for_each_plane_on_pipe(display, pipe, plane) {
> + for_each_plane_on_pipe(display, idx, plane) {
> i = plane->index;
>
> if (plane->type == DRM_PLANE_TYPE_PRIMARY ||
> @@ -522,16 +522,16 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> if (type == TRANSITION_AFTER_FREE) {
> int fence_fd = -1;
>
> - wm_setup_plane(display, pipe, 0, parms, fencing);
> + wm_setup_plane(display, idx, 0, parms, fencing);
>
> - atomic_commit(display, pipe, flags, (void *)(unsigned long)0, fencing);
> + atomic_commit(display, idx, flags, (void *)(unsigned long)0, fencing);
> if (fencing) {
> fence_fd = pipe_obj->out_fence_fd;
> pipe_obj->out_fence_fd = -1;
> }
>
> /* force planes to be part of commit */
> - for_each_plane_on_pipe(display, pipe, plane) {
> + for_each_plane_on_pipe(display, idx, plane) {
> if (parms[plane->index].mask)
> igt_plane_set_position(plane, 0, 0);
> }
> @@ -543,7 +543,7 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> close(fence_fd);
> } else {
> igt_assert(fd_completed(display->drm_fd));
> - wait_for_transition(display, pipe, false, fencing);
> + wait_for_transition(display, idx, false, fencing);
> }
> goto cleanup;
> }
> @@ -556,22 +556,22 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> n_enable_planes < pipe_obj->n_planes)
> continue;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_pipe(output, idx);
>
> - if (!wm_setup_plane(display, pipe, i, parms, fencing))
> + if (!wm_setup_plane(display, idx, i, parms, fencing))
> continue;
>
> - atomic_commit(display, pipe, flags, (void *)(unsigned long)i, fencing);
> - wait_for_transition(display, pipe, nonblocking, fencing);
> + atomic_commit(display, idx, flags, (void *)(unsigned long)i, fencing);
> + wait_for_transition(display, idx, nonblocking, fencing);
>
> if (type == TRANSITION_MODESET_DISABLE) {
> igt_output_set_pipe(output, PIPE_NONE);
>
> - if (!wm_setup_plane(display, pipe, 0, parms, fencing))
> + if (!wm_setup_plane(display, idx, 0, parms, fencing))
> continue;
>
> - atomic_commit(display, pipe, flags, (void *) 0UL, fencing);
> - wait_for_transition(display, pipe, nonblocking, fencing);
> + atomic_commit(display, idx, flags, (void *) 0UL, fencing);
> + wait_for_transition(display, idx, nonblocking, fencing);
> } else {
> uint32_t j;
>
> @@ -584,34 +584,34 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> n_enable_planes < pipe_obj->n_planes)
> continue;
>
> - if (!wm_setup_plane(display, pipe, j, parms, fencing))
> + if (!wm_setup_plane(display, idx, j, parms, fencing))
> continue;
>
> if (type >= TRANSITION_MODESET)
> igt_output_override_mode(output, &override_mode);
>
> - atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
> - wait_for_transition(display, pipe, nonblocking, fencing);
> + atomic_commit(display, idx, flags, (void *)(unsigned long) j, fencing);
> + wait_for_transition(display, idx, nonblocking, fencing);
>
> - if (!wm_setup_plane(display, pipe, i, parms, fencing))
> + if (!wm_setup_plane(display, idx, i, parms, fencing))
> continue;
>
> if (type >= TRANSITION_MODESET)
> igt_output_override_mode(output, NULL);
>
> - atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
> - wait_for_transition(display, pipe, nonblocking, fencing);
> + atomic_commit(display, idx, flags, (void *)(unsigned long) i, fencing);
> + wait_for_transition(display, idx, nonblocking, fencing);
> }
> }
> }
>
> cleanup:
> if (fencing)
> - unprepare_fencing(display, pipe);
> + unprepare_fencing(display, idx);
>
> igt_output_set_pipe(output, PIPE_NONE);
>
> - for_each_plane_on_pipe(display, pipe, plane)
> + for_each_plane_on_pipe(display, idx, plane)
> igt_plane_set_fb(plane, NULL);
>
> igt_display_commit2(display, COMMIT_ATOMIC);
> @@ -662,29 +662,29 @@ static void commit_display(igt_display_t *display, unsigned event_mask, bool non
> static unsigned set_combinations(igt_display_t *display, unsigned mask, struct igt_fb *fb)
> {
> igt_output_t *output;
> - enum pipe pipe;
> + int idx = 0;
> unsigned event_mask = 0;
>
> for_each_connected_output(display, output)
> igt_output_set_pipe(output, PIPE_NONE);
>
> - for_each_pipe(display, pipe) {
> - igt_plane_t *plane = igt_pipe_get_plane_type(&display->pipes[pipe],
> + for_each_pipe(display, idx) {
> + igt_plane_t *plane = igt_pipe_get_plane_type(&display->pipes[idx],
> DRM_PLANE_TYPE_PRIMARY);
> drmModeModeInfo *mode = NULL;
>
> - if (!(mask & (1 << pipe))) {
> - if (igt_pipe_is_prop_changed(display, pipe, IGT_CRTC_ACTIVE)) {
> - event_mask |= 1 << pipe;
> + if (!(mask & (1 << idx))) {
> + if (igt_pipe_is_prop_changed(display, idx, IGT_CRTC_ACTIVE)) {
> + event_mask |= 1 << idx;
> igt_plane_set_fb(plane, NULL);
> }
>
> continue;
> }
>
> - event_mask |= 1 << pipe;
> + event_mask |= 1 << idx;
>
> - for_each_valid_output_on_pipe(display, pipe, output) {
> + for_each_valid_output_on_pipe(display, idx, output) {
> if (output->pending_pipe != PIPE_NONE)
> continue;
>
> @@ -695,7 +695,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct i
> if (!mode)
> return 0;
>
> - igt_output_set_pipe(output, pipe);
> + igt_output_set_pipe(output, idx);
> 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);
> @@ -706,14 +706,14 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct i
>
> static void refresh_primaries(igt_display_t *display, int mask)
> {
> - enum pipe pipe;
> + int idx;
> igt_plane_t *plane;
>
> - for_each_pipe(display, pipe) {
> - if (!((1 << pipe) & mask))
> + for_each_pipe(display, idx) {
> + if (!((1 << idx) & mask))
> continue;
>
> - for_each_plane_on_pipe(display, pipe, plane)
> + for_each_plane_on_pipe(display, idx, plane)
> if (plane->type == DRM_PLANE_TYPE_PRIMARY)
> igt_plane_set_position(plane, 0, 0);
> }
> @@ -862,20 +862,20 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
> {
> igt_output_t *outputs[IGT_MAX_PIPES] = {};
> int num_outputs = 0;
> - enum pipe pipe;
> + int idx;
>
> - for_each_pipe(display, pipe) {
> + for_each_pipe(display, idx) {
> igt_output_t *output;
>
> - for_each_valid_output_on_pipe(display, pipe, output) {
> + for_each_valid_output_on_pipe(display, idx, output) {
> int i;
>
> - for (i = pipe - 1; i >= 0; i--)
> + for (i = idx - 1; i >= 0; i--)
> if (outputs[i] == output)
> break;
>
> if (i < 0) {
> - outputs[pipe] = output;
> + outputs[idx] = output;
> num_outputs++;
> break;
> }
> @@ -906,8 +906,7 @@ igt_main
> {
> igt_display_t display;
> igt_output_t *output;
> - enum pipe pipe;
> - int i;
> + int i, idx = 0;
>
> igt_fixture {
> display.drm_fd = drm_open_driver_master(DRIVER_ANY);
> @@ -921,32 +920,31 @@ igt_main
> }
>
> igt_subtest("plane-primary-toggle-with-vblank-wait")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_primary_test(&display, pipe, output);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_primary_test(&display, idx, output);
>
> igt_subtest("plane-all-transition")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false);
> -
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_PLANES, false, false);
> igt_subtest("plane-all-transition-fencing")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_PLANES, false, true);
>
> igt_subtest("plane-all-transition-nonblocking")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_PLANES, true, false);
>
> igt_subtest("plane-all-transition-nonblocking-fencing")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_PLANES, true, true);
>
> igt_subtest("plane-use-after-nonblocking-unbind")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, false);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_AFTER_FREE, true, false);
>
> igt_subtest("plane-use-after-nonblocking-unbind-fencing")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_AFTER_FREE, true, true);
>
> /*
> * Test modeset cases on internal panels separately with a reduced
> @@ -954,26 +952,26 @@ igt_main
> * panels with long power cycle delays.
> */
> igt_subtest("plane-all-modeset-transition")
> - for_each_pipe_with_valid_output(&display, pipe, output) {
> + for_each_pipe_with_valid_output(&display, idx, output) {
> if (output_is_internal_panel(output))
> continue;
> - run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
> + run_transition_test(&display, idx, output, TRANSITION_MODESET, false, false);
> }
>
> igt_subtest("plane-all-modeset-transition-fencing")
> - for_each_pipe_with_valid_output(&display, pipe, output) {
> + for_each_pipe_with_valid_output(&display, idx, output) {
> if (output_is_internal_panel(output))
> continue;
> - run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
> + run_transition_test(&display, idx, output, TRANSITION_MODESET, false, true);
> }
>
> igt_subtest("plane-all-modeset-transition-internal-panels") {
> int tested = 0;
>
> - for_each_pipe_with_valid_output(&display, pipe, output) {
> + for_each_pipe_with_valid_output(&display, idx, output) {
> if (!output_is_internal_panel(output))
> continue;
> - run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
> + run_transition_test(&display, idx, output, TRANSITION_MODESET_FAST, false, false);
> tested++;
> }
> igt_skip_on_f(!tested, "No output with internal panel found\n");
> @@ -982,18 +980,18 @@ igt_main
> igt_subtest("plane-all-modeset-transition-fencing-internal-panels") {
> int tested = 0;
>
> - for_each_pipe_with_valid_output(&display, pipe, output) {
> + for_each_pipe_with_valid_output(&display, idx, output) {
> if (!output_is_internal_panel(output))
> continue;
> - run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
> + run_transition_test(&display, idx, output, TRANSITION_MODESET_FAST, false, true);
> tested++;
> }
> igt_skip_on_f(!tested, "No output with internal panel found\n");
> }
>
> igt_subtest("plane-toggle-modeset-transition")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> - run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
> + for_each_pipe_with_valid_output(&display, idx, output)
> + run_transition_test(&display, idx, output, TRANSITION_MODESET_DISABLE, false, false);
>
> for (i = 1; i <= IGT_MAX_PIPES; i++) {
> igt_subtest_f("%ix-modeset-transitions", i)
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-03-24 10:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-18 14:41 [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Mohammed Khajapasha
2020-03-18 15:44 ` [igt-dev] ✓ Fi.CI.BAT: success for test/kms: Use bare number of crtc index to get a pipe (rev2) Patchwork
2020-03-18 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-03-24 10:20 ` [igt-dev] [RFC V2 i-g-t] test/kms: Use bare number of crtc index to get a pipe Jani Nikula
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox