[Intel-gfx] [PATCH i-g-t 3/4] tests/chamelium: Only initialize igt_display once
Lyude Paul
lyude at redhat.com
Sat Nov 18 00:05:37 UTC 2017
Reviewed-by: Lyude Paul <lyude at redhat.com>
On Thu, 2017-11-16 at 13:45 +0100, Maarten Lankhorst wrote:
> Instead of first calling kmstest_unset_all_crtcs, and calling
> igt_display_init for each test, use igt_display_reset to reset
> igt_display between tests, and use atomic commit to disable all
> unused crtcs in enable_output().
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> ---
> tests/chamelium.c | 45 ++++++++++++---------------------------------
> 1 file changed, 12 insertions(+), 33 deletions(-)
>
> diff --git a/tests/chamelium.c b/tests/chamelium.c
> index d4a185e76873..8855a8300049 100644
> --- a/tests/chamelium.c
> +++ b/tests/chamelium.c
> @@ -33,6 +33,7 @@
> typedef struct {
> struct chamelium *chamelium;
> struct chamelium_port **ports;
> + igt_display_t display;
> int port_count;
>
> int drm_fd;
> @@ -409,9 +410,9 @@ test_suspend_resume_edid_change(data_t *data, struct
> chamelium_port *port,
>
> static igt_output_t *
> prepare_output(data_t *data,
> - igt_display_t *display,
> struct chamelium_port *port)
> {
> + igt_display_t *display = &data->display;
> igt_output_t *output;
> drmModeRes *res;
> drmModeConnector *connector =
> @@ -420,7 +421,6 @@ prepare_output(data_t *data,
> bool found = false;
>
> igt_assert(res = drmModeGetResources(data->drm_fd));
> - kmstest_unset_all_crtcs(data->drm_fd, res);
>
> /* The chamelium's default EDID has a lot of resolutions, way more
> then
> * we need to test
> @@ -430,11 +430,9 @@ prepare_output(data_t *data,
> chamelium_plug(data->chamelium, port);
> wait_for_connector(data, port, DRM_MODE_CONNECTED);
>
> - igt_display_init(display, data->drm_fd);
> - output = igt_output_from_connector(display, connector);
> + igt_display_reset(display);
>
> - igt_assert(kmstest_probe_connector_config(
> - data->drm_fd, connector->connector_id, ~0, &output-
> >config));
> + output = igt_output_from_connector(display, connector);
>
> for_each_pipe(display, pipe) {
> if (!igt_pipe_connector_valid(pipe, output))
> @@ -477,7 +475,7 @@ enable_output(data_t *data,
> igt_pipe_obj_replace_prop_blob(primary->pipe, IGT_CRTC_GAMMA_LUT,
> NULL, 0);
> igt_pipe_obj_replace_prop_blob(primary->pipe, IGT_CRTC_CTM, NULL,
> 0);
>
> - igt_display_commit(display);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> if (chamelium_port_get_type(port) == DRM_MODE_CONNECTOR_VGA)
> usleep(250000);
> @@ -485,25 +483,10 @@ enable_output(data_t *data,
> drmModeFreeConnector(connector);
> }
>
> -static void
> -disable_output(data_t *data,
> - struct chamelium_port *port,
> - igt_output_t *output)
> -{
> - igt_display_t *display = output->display;
> - igt_plane_t *primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> - igt_assert(primary);
> -
> - /* Disable the display */
> - igt_plane_set_fb(primary, NULL);
> - igt_display_commit(display);
> -}
> -
> static void
> test_display_crc(data_t *data, struct chamelium_port *port, int count,
> bool fast)
> {
> - igt_display_t display;
> igt_output_t *output;
> igt_plane_t *primary;
> igt_crc_t *crc;
> @@ -517,7 +500,7 @@ test_display_crc(data_t *data, struct chamelium_port
> *port, int count,
>
> reset_state(data, port);
>
> - output = prepare_output(data, &display, port);
> + output = prepare_output(data, port);
> connector = chamelium_port_get_connector(data->chamelium, port,
> false);
> primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_assert(primary);
> @@ -561,18 +544,15 @@ test_display_crc(data_t *data, struct chamelium_port
> *port, int count,
> free(expected_crc);
> free(crc);
>
> - disable_output(data, port, output);
> igt_remove_fb(data->drm_fd, &fb);
> }
>
> drmModeFreeConnector(connector);
> - igt_display_fini(&display);
> }
>
> static void
> test_display_frame_dump(data_t *data, struct chamelium_port *port)
> {
> - igt_display_t display;
> igt_output_t *output;
> igt_plane_t *primary;
> struct igt_fb fb;
> @@ -583,7 +563,7 @@ test_display_frame_dump(data_t *data, struct
> chamelium_port *port)
>
> reset_state(data, port);
>
> - output = prepare_output(data, &display, port);
> + output = prepare_output(data, port);
> connector = chamelium_port_get_connector(data->chamelium, port,
> false);
> primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_assert(primary);
> @@ -608,18 +588,15 @@ test_display_frame_dump(data_t *data, struct
> chamelium_port *port)
> chamelium_destroy_frame_dump(frame);
> }
>
> - disable_output(data, port, output);
> igt_remove_fb(data->drm_fd, &fb);
> }
>
> drmModeFreeConnector(connector);
> - igt_display_fini(&display);
> }
>
> static void
> test_analog_frame_dump(data_t *data, struct chamelium_port *port)
> {
> - igt_display_t display;
> igt_output_t *output;
> igt_plane_t *primary;
> struct igt_fb fb;
> @@ -631,7 +608,7 @@ test_analog_frame_dump(data_t *data, struct
> chamelium_port *port)
>
> reset_state(data, port);
>
> - output = prepare_output(data, &display, port);
> + output = prepare_output(data, port);
> connector = chamelium_port_get_connector(data->chamelium, port,
> false);
> primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_assert(primary);
> @@ -666,12 +643,10 @@ test_analog_frame_dump(data_t *data, struct
> chamelium_port *port)
>
> chamelium_destroy_frame_dump(frame);
>
> - disable_output(data, port, output);
> igt_remove_fb(data->drm_fd, &fb);
> }
>
> drmModeFreeConnector(connector);
> - igt_display_fini(&display);
> }
>
> static void
> @@ -773,6 +748,9 @@ igt_main
>
> /* So fbcon doesn't try to reprobe things itself */
> kmstest_set_vt_graphics_mode();
> +
> + igt_display_init(&data.display, data.drm_fd);
> + igt_require(data.display.is_atomic);
> }
>
> igt_subtest_group {
> @@ -952,6 +930,7 @@ igt_main
> }
>
> igt_fixture {
> + igt_display_fini(&data.display);
> close(data.drm_fd);
> }
> }
More information about the Intel-gfx
mailing list