[PATCH i-g-t v1 2/3] tests/kms_3d: Convert to subtest
Karthik B S
karthik.b.s at intel.com
Tue Aug 26 08:00:20 UTC 2025
On 8/19/2025 9:20 PM, Kamil Konieczny wrote:
> Convert this test to have one basic subtest. This will allow it
> to have a proper cleanup at end. Also while at this, fix code
> style and avoid comparision to bool.
>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
Reviewed-by: Karthik B S <karthik.b.s at intel.com>
> ---
> tests/kms_3d.c | 133 ++++++++++++++++++++++++++-----------------------
> 1 file changed, 71 insertions(+), 62 deletions(-)
>
> diff --git a/tests/kms_3d.c b/tests/kms_3d.c
> index 31242c5f5..f9734ba38 100644
> --- a/tests/kms_3d.c
> +++ b/tests/kms_3d.c
> @@ -34,13 +34,13 @@
> #include "xe/xe_query.h"
>
> /**
> - * SUBTEST:
> - * Description: Tests 3D mode setting.
> + * SUBTEST: basic
> + * Description: Tests basic 3D mode setting.
> */
>
> IGT_TEST_DESCRIPTION("Tests 3D mode setting.");
>
> -igt_simple_main
> +igt_main
> {
> int drm_fd;
> drmModeRes *res;
> @@ -48,84 +48,93 @@ igt_simple_main
> const struct edid *edid;
> int mode_count, connector_id;
>
> - drm_fd = drm_open_driver_master(DRIVER_ANY);
> + igt_fixture {
> + drm_fd = drm_open_driver_master(DRIVER_ANY);
>
> - res = drmModeGetResources(drm_fd);
> - igt_require(res);
> + res = drmModeGetResources(drm_fd);
> + igt_require(res);
> + }
>
> - igt_assert_f(drmSetClientCap(drm_fd, DRM_CLIENT_CAP_STEREO_3D, 1) >= 0,
> - "Failed to enable STEREO_3D capability.\n");
> + igt_subtest("basic") {
> + igt_assert_f(drmSetClientCap(drm_fd, DRM_CLIENT_CAP_STEREO_3D, 1) >= 0,
> + "Failed to enable STEREO_3D capability.\n");
> +
> + /* find an hdmi connector */
> + for (int i = 0; i < res->count_connectors; i++) {
> + connector = drmModeGetConnectorCurrent(drm_fd, res->connectors[i]);
> + if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)
> + break;
> + drmModeFreeConnector(connector);
> + connector = NULL;
> + }
>
> - /* find an hdmi connector */
> - for (int i = 0; i < res->count_connectors; i++) {
> - connector = drmModeGetConnectorCurrent(drm_fd, res->connectors[i]);
> - if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)
> - break;
> - drmModeFreeConnector(connector);
> - connector = NULL;
> - }
> - igt_require_f(connector, "No HDMI connector found.\n");
> + igt_require_f(connector, "No HDMI connector found.\n");
>
> - kmstest_unset_all_crtcs(drm_fd, res);
> + kmstest_unset_all_crtcs(drm_fd, res);
>
> - edid = igt_kms_get_3d_edid();
> + edid = igt_kms_get_3d_edid();
>
> - kmstest_force_edid(drm_fd, connector, edid);
> - if (!kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_ON))
> - igt_skip("Could not force connector on\n");
> + kmstest_force_edid(drm_fd, connector, edid);
> + if (!kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_ON))
> + igt_skip("Could not force connector on\n");
>
> - connector_id = connector->connector_id;
> + connector_id = connector->connector_id;
>
> - /* check for 3D modes */
> - mode_count = 0;
> - connector = drmModeGetConnectorCurrent(drm_fd, connector_id);
> - for (int i = 0; i < connector->count_modes; i++) {
> - if (connector->modes[i].flags & DRM_MODE_FLAG_3D_MASK)
> - mode_count++;
> - }
> + /* check for 3D modes */
> + mode_count = 0;
> + connector = drmModeGetConnectorCurrent(drm_fd, connector_id);
> + for (int i = 0; i < connector->count_modes; i++) {
> + if (connector->modes[i].flags & DRM_MODE_FLAG_3D_MASK)
> + mode_count++;
> + }
>
> - igt_assert_f(mode_count, "3D modes not detected.\n");
> + igt_assert_f(mode_count, "3D modes not detected.\n");
>
> - /* set 3D modes */
> - igt_info("Testing:\n");
> - for (int i = 0; i < connector->count_modes; i++) {
> - int fb_id;
> - struct kmstest_connector_config config;
> - int crtc_mask = -1;
> - int ret;
> + /* set 3D modes */
> + igt_info("Testing:\n");
> + for (int i = 0; i < connector->count_modes; i++) {
> + int fb_id;
> + struct kmstest_connector_config config;
> + int crtc_mask = -1;
> + int ret;
>
> - if (!(connector->modes[i].flags & DRM_MODE_FLAG_3D_MASK))
> - continue;
> + if (!(connector->modes[i].flags & DRM_MODE_FLAG_3D_MASK))
> + continue;
>
> - /* create a configuration */
> - ret = kmstest_get_connector_config(drm_fd, connector_id,
> - crtc_mask, &config);
> - if (ret != true) {
> - igt_info("Error creating configuration for:\n ");
> - kmstest_dump_mode(&connector->modes[i]);
> + /* create a configuration */
> + ret = kmstest_get_connector_config(drm_fd, connector_id,
> + crtc_mask, &config);
> + if (!ret) {
> + igt_info("Error creating configuration for:\n ");
> + kmstest_dump_mode(&connector->modes[i]);
>
> - continue;
> - }
> + continue;
> + }
>
> - igt_info(" ");
> - kmstest_dump_mode(&connector->modes[i]);
> + igt_info(" ");
> + kmstest_dump_mode(&connector->modes[i]);
>
> - /* create stereo framebuffer */
> - fb_id = igt_create_stereo_fb(drm_fd, &connector->modes[i],
> - igt_bpp_depth_to_drm_format(32, 24),
> - DRM_FORMAT_MOD_LINEAR);
> + /* create stereo framebuffer */
> + fb_id = igt_create_stereo_fb(drm_fd, &connector->modes[i],
> + igt_bpp_depth_to_drm_format(32, 24),
> + DRM_FORMAT_MOD_LINEAR);
>
> - ret = drmModeSetCrtc(drm_fd, config.crtc->crtc_id, fb_id, 0, 0,
> - &connector->connector_id, 1,
> - &connector->modes[i]);
> + ret = drmModeSetCrtc(drm_fd, config.crtc->crtc_id, fb_id, 0, 0,
> + &connector->connector_id, 1,
> + &connector->modes[i]);
>
> - igt_assert(ret == 0);
> + igt_assert(ret == 0);
> + }
> }
>
> - kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_UNSPECIFIED);
> - kmstest_force_edid(drm_fd, connector, NULL);
> + igt_fixture {
> + if (connector) {
> + kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_UNSPECIFIED);
> + kmstest_force_edid(drm_fd, connector, NULL);
>
> - drmModeFreeConnector(connector);
> + drmModeFreeConnector(connector);
> + }
>
> - drm_close_driver(drm_fd);
> + drm_close_driver(drm_fd);
> + }
> }
More information about the igt-dev
mailing list