Reviewed-by: Mika Kahola <mika.kahola@xxxxxxxxx> On Thu, 2017-10-19 at 13:15 +0200, Maarten Lankhorst wrote: > igt_pipe_refresh was added for the forked helper, we could just call > it > from the fork to prevent races against MODE_ID. > > The static 1024x768 mode is allocated on the stack and returned, > which will > result in a garbage mode. Make the fallback mode global to prevent > this. > > igt_output_set_pipe is unneeded, override_mode is enough to force the > right mode. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103342 > --- > tests/kms_concurrent.c | 43 ++++++++++++++++++++------------------ > ----- > 1 file changed, 20 insertions(+), 23 deletions(-) > > diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c > index 7f44c596b4c4..3b2e601505c4 100644 > --- a/tests/kms_concurrent.c > +++ b/tests/kms_concurrent.c > @@ -91,8 +91,6 @@ static void test_fini(data_t *data, enum pipe pipe, > int n_planes, > { > int i; > > - igt_pipe_refresh(&data->display, pipe, true); > - > for (i = 0; i < n_planes; i++) { > igt_plane_t *plane = data->plane[i]; > > @@ -228,6 +226,8 @@ test_plane_position_with_output(data_t *data, > enum pipe pipe, igt_output_t *outp > bool loop_forever = opt.iterations == LOOP_FOREVER ? true : > false; > int max_planes = data->display.pipes[pipe].n_planes; > > + igt_pipe_refresh(&data->display, pipe, true); > + > i = 0; > while (i < iterations || loop_forever) { > prepare_planes(data, pipe, max_planes, output); > @@ -237,27 +237,28 @@ test_plane_position_with_output(data_t *data, > enum pipe pipe, igt_output_t *outp > } > } > > +static drmModeModeInfo std_1024_mode = { > + .clock = 65000, > + .hdisplay = 1024, > + .hsync_start = 1048, > + .hsync_end = 1184, > + .htotal = 1344, > + .hskew = 0, > + .vdisplay = 768, > + .vsync_start = 771, > + .vsync_end = 777, > + .vtotal = 806, > + .vscan = 0, > + .vrefresh = 60, > + .flags = 0xA, > + .type = 0x40, > + .name = "Custom 1024x768", > +}; > + > static drmModeModeInfo * > get_lowres_mode(data_t *data, drmModeModeInfo *mode_default, > igt_output_t *output) > { > - drmModeModeInfo std_1024_mode = { > - .clock = 65000, > - .hdisplay = 1024, > - .hsync_start = 1048, > - .hsync_end = 1184, > - .htotal = 1344, > - .hskew = 0, > - .vdisplay = 768, > - .vsync_start = 771, > - .vsync_end = 777, > - .vtotal = 806, > - .vscan = 0, > - .vrefresh = 60, > - .flags = 0xA, > - .type = 0x40, > - .name = "Custom 1024x768", > - }; > drmModeModeInfo *mode = &std_1024_mode; > drmModeConnector *connector = output->config.connector; > int limit = mode_default->vdisplay - SIZE_PLANE; > @@ -292,19 +293,15 @@ test_resolution_with_output(data_t *data, enum > pipe pipe, igt_output_t *output) > > i = 0; > while (i < iterations || loop_forever) { > - igt_pipe_refresh(&data->display, pipe, true); > - > mode_hi = igt_output_get_mode(output); > mode_lo = get_lowres_mode(data, mode_hi, output); > > /* switch to lower resolution */ > igt_output_override_mode(output, mode_lo); > - igt_output_set_pipe(output, pipe); > igt_display_commit2(&data->display, COMMIT_ATOMIC); > > /* switch back to higher resolution */ > igt_output_override_mode(output, NULL); > - igt_output_set_pipe(output, pipe); > igt_display_commit2(&data->display, COMMIT_ATOMIC); > > i++; -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx