Speeds up testcases except for those where we want to exercise the
probing itself.

Note this blew up and I ragequit after a few more regressions
uncovered in a chain, so this isn't all that well-tested really :(

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
---
 configure.ac                     |  2 +-
 lib/igt_kms.c                    | 10 ++++++++--
 tests/kms_3d.c                   |  4 ++--
 tests/kms_draw_crc.c             |  4 ++--
 tests/kms_fbcon_fbt.c            |  2 +-
 tests/kms_flip.c                 |  2 +-
 tests/kms_force_connector.c      | 22 +++++++++++++---------
 tests/kms_frontbuffer_tracking.c |  2 +-
 tests/kms_setmode.c              |  2 +-
 tests/pm_lpsp.c                  |  2 +-
 tests/pm_rpm.c                   |  4 +++-
 tests/testdisplay.c              |  3 ++-
 12 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/configure.ac b/configure.ac
index 3770b2fc8a59..1db39bcce2c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -85,7 +85,7 @@ if test "x$GCC" = "xyes"; then
 fi
 AC_SUBST(ASSEMBLER_WARN_CFLAGS)
 
-PKG_CHECK_MODULES(DRM, [libdrm_intel >= 2.4.55 libdrm])
+PKG_CHECK_MODULES(DRM, [libdrm_intel >= 2.4.61 libdrm])
 PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
 PKG_CHECK_MODULES(OVERLAY_XVLIB, [xv x11 xext dri2proto >= 2.6], 
enable_overlay_xvlib=yes, enable_overlay_xvlib=no)
 PKG_CHECK_MODULES(OVERLAY_XLIB, [cairo-xlib dri2proto >= 2.6], 
enable_overlay_xlib=yes, enable_overlay_xlib=no)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 0bb16b4e73b2..591b520a3a77 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -393,6 +393,7 @@ bool kmstest_force_connector(int drm_fd, drmModeConnector 
*connector,
        char *path, **tmp;
        const char *value;
        int debugfs_fd, ret, len;
+       drmModeConnector *temp;
        uint32_t devid;
 
        devid = intel_get_drm_devid(drm_fd);
@@ -459,6 +460,11 @@ bool kmstest_force_connector(int drm_fd, drmModeConnector 
*connector,
 
        igt_install_exit_handler(reset_connectors_at_exit);
 
+       /* To allow callers to always use GetConnectorCurrent we need to force a
+        * redetection here. */
+       temp = drmModeGetConnector(drm_fd, connector->connector_id);
+       drmModeFreeConnector(temp);
+
        igt_assert(ret != -1);
        return (ret == -1) ? false : true;
 }
@@ -556,7 +562,7 @@ bool kmstest_get_connector_config(int drm_fd, uint32_t 
connector_id,
        }
 
        /* First, find the connector & mode */
-       connector = drmModeGetConnector(drm_fd, connector_id);
+       connector = drmModeGetConnectorCurrent(drm_fd, connector_id);
        if (!connector)
                goto err2;
 
@@ -1963,7 +1969,7 @@ void igt_enable_connectors(void)
 
        for (int i = 0; i < res->count_connectors; i++) {
 
-               c = drmModeGetConnector(drm_fd, res->connectors[i]);
+               c = drmModeGetConnectorCurrent(drm_fd, res->connectors[i]);
 
                /* don't attempt to force connectors that are already connected
                 */
diff --git a/tests/kms_3d.c b/tests/kms_3d.c
index 76f0b25e8a35..3f1304e605c1 100644
--- a/tests/kms_3d.c
+++ b/tests/kms_3d.c
@@ -45,7 +45,7 @@ igt_simple_main
        /* find an hdmi connector */
        for (int i = 0; i < res->count_connectors; i++) {
 
-               connector = drmModeGetConnector(drm_fd, res->connectors[i]);
+               connector = drmModeGetConnectorCurrent(drm_fd, 
res->connectors[i]);
 
                if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA &&
                    connector->connection == DRM_MODE_DISCONNECTED)
@@ -68,7 +68,7 @@ igt_simple_main
 
        /* check for 3D modes */
        mode_count = 0;
-       connector = drmModeGetConnector(drm_fd, connector_id);
+       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++;
diff --git a/tests/kms_draw_crc.c b/tests/kms_draw_crc.c
index 9fcf997e9286..52639e6d2855 100644
--- a/tests/kms_draw_crc.c
+++ b/tests/kms_draw_crc.c
@@ -192,8 +192,8 @@ static void setup_environment(void)
        igt_assert(drm_res->count_connectors <= MAX_CONNECTORS);
 
        for (i = 0; i < drm_res->count_connectors; i++)
-               drm_connectors[i] = drmModeGetConnector(drm_fd,
-                                                       drm_res->connectors[i]);
+               drm_connectors[i] = drmModeGetConnectorCurrent(drm_fd,
+                                                              
drm_res->connectors[i]);
 
        kmstest_set_vt_graphics_mode();
 
diff --git a/tests/kms_fbcon_fbt.c b/tests/kms_fbcon_fbt.c
index f0750145438d..3b7ed9f6a562 100644
--- a/tests/kms_fbcon_fbt.c
+++ b/tests/kms_fbcon_fbt.c
@@ -67,7 +67,7 @@ static void setup_drm(struct drm_info *drm)
        igt_assert(drm->res->count_connectors <= MAX_CONNECTORS);
 
        for (i = 0; i < drm->res->count_connectors; i++)
-               drm->connectors[i] = drmModeGetConnector(drm->fd,
+               drm->connectors[i] = drmModeGetConnectorCurrent(drm->fd,
                                                drm->res->connectors[i]);
 
        kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 25c924305c32..bd767be23969 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -400,7 +400,7 @@ static void dpms_off_other_outputs(struct test_output *o)
                                goto next;
                }
 
-               connector = drmModeGetConnector(drm_fd, connector_id);
+               connector = drmModeGetConnectorCurrent(drm_fd, connector_id);
 
                kmstest_set_connector_dpms(drm_fd, connector,  
DRM_MODE_DPMS_ON);
                kmstest_set_connector_dpms(drm_fd, connector,  
DRM_MODE_DPMS_OFF);
diff --git a/tests/kms_force_connector.c b/tests/kms_force_connector.c
index 42aaa7f696ad..096b49aad540 100644
--- a/tests/kms_force_connector.c
+++ b/tests/kms_force_connector.c
@@ -39,7 +39,7 @@ igt_main
        drmModeRes *res;
        drmModeConnector *vga_connector = NULL, *temp;
        igt_display_t display;
-       int start_n_modes;
+       int start_n_modes, start_connection;
 
        igt_fixture {
                drm_fd = drm_open_any_master();
@@ -48,10 +48,13 @@ igt_main
                /* find the vga connector */
                for (int i = 0; i < res->count_connectors; i++) {
 
-                       vga_connector = drmModeGetConnector(drm_fd, 
res->connectors[i]);
+                       vga_connector = drmModeGetConnectorCurrent(drm_fd, 
res->connectors[i]);
 
-                       if (vga_connector->connector_type == 
DRM_MODE_CONNECTOR_VGA)
+                       if (vga_connector->connector_type == 
DRM_MODE_CONNECTOR_VGA) {
+                               start_n_modes = vga_connector->count_modes;
+                               start_connection = vga_connector->connection;
                                break;
+                       }
 
                        drmModeFreeConnector(vga_connector);
 
@@ -64,7 +67,7 @@ igt_main
        igt_subtest("force-connector-state") {
                /* force the connector on and check the reported values */
                kmstest_force_connector(drm_fd, vga_connector, 
FORCE_CONNECTOR_ON);
-               temp = drmModeGetConnector(drm_fd, vga_connector->connector_id);
+               temp = drmModeGetConnectorCurrent(drm_fd, 
vga_connector->connector_id);
                igt_assert(temp->connection == DRM_MODE_CONNECTED);
                igt_assert(temp->count_modes > 0);
                drmModeFreeConnector(temp);
@@ -86,16 +89,15 @@ igt_main
                /* check that the previous state is restored */
                kmstest_force_connector(drm_fd, vga_connector,
                                        FORCE_CONNECTOR_UNSPECIFIED);
-               temp = drmModeGetConnector(drm_fd, vga_connector->connector_id);
-               igt_assert(temp->connection == vga_connector->connection);
+               temp = drmModeGetConnectorCurrent(drm_fd, 
vga_connector->connector_id);
+               igt_assert_eq(temp->connection, start_connection);
                drmModeFreeConnector(temp);
        }
 
        igt_subtest("force-edid") {
                kmstest_force_connector(drm_fd, vga_connector,
                                        FORCE_CONNECTOR_ON);
-               temp = drmModeGetConnector(drm_fd, vga_connector->connector_id);
-               start_n_modes = temp->count_modes;
+               temp = drmModeGetConnectorCurrent(drm_fd, 
vga_connector->connector_id);
                drmModeFreeConnector(temp);
 
                /* test edid forcing */
@@ -104,6 +106,8 @@ igt_main
                temp = drmModeGetConnector(drm_fd,
                                           vga_connector->connector_id);
 
+               igt_debug("num_conn %i\n", temp->count_modes);
+
                CHECK_MODE(temp->modes[0], 1920, 1080, 60);
                CHECK_MODE(temp->modes[1], 1280, 720, 60);
                CHECK_MODE(temp->modes[2], 1024, 768, 60);
@@ -117,7 +121,7 @@ igt_main
                temp = drmModeGetConnector(drm_fd, vga_connector->connector_id);
                /* the connector should now have the same number of modes that
                 * it started with */
-               igt_assert(temp->count_modes == start_n_modes);
+               igt_assert_eq(temp->count_modes, start_n_modes);
                drmModeFreeConnector(temp);
 
                kmstest_force_connector(drm_fd, vga_connector,
diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index e9be045ad3a6..b7ccc3b26fd3 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -1048,7 +1048,7 @@ static void setup_drm(void)
        igt_assert(drm.res->count_connectors <= MAX_CONNECTORS);
 
        for (i = 0; i < drm.res->count_connectors; i++)
-               drm.connectors[i] = drmModeGetConnector(drm.fd,
+               drm.connectors[i] = drmModeGetConnectorCurrent(drm.fd,
                                                drm.res->connectors[i]);
 
        drm.planes = drmModeGetPlaneResources(drm.fd);
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index 82769ab7dadb..a757018f22d1 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -495,7 +495,7 @@ static int get_one_connector(drmModeRes *resources, int 
connector_id,
        drmModeConnector *connector;
        drmModeModeInfo mode;
 
-       connector = drmModeGetConnector(drm_fd, connector_id);
+       connector = drmModeGetConnectorCurrent(drm_fd, connector_id);
        igt_assert(connector);
        cconf->connector = connector;
 
diff --git a/tests/pm_lpsp.c b/tests/pm_lpsp.c
index 3ed4c788016f..705d404b6991 100644
--- a/tests/pm_lpsp.c
+++ b/tests/pm_lpsp.c
@@ -235,7 +235,7 @@ igt_main
                igt_assert(drm_res->count_connectors <= MAX_CONNECTORS);
 
                for (i = 0; i < drm_res->count_connectors; i++)
-                       drm_connectors[i] = drmModeGetConnector(drm_fd,
+                       drm_connectors[i] = drmModeGetConnectorCurrent(drm_fd,
                                                        drm_res->connectors[i]);
 
                disable_audio_runtime_pm();
diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index d509fa838b3c..3250711fda77 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -377,7 +377,7 @@ static void init_mode_set_data(struct mode_set_data *data)
        igt_assert(data->res->count_connectors <= MAX_CONNECTORS);
 
        for (i = 0; i < data->res->count_connectors; i++) {
-               data->connectors[i] = drmModeGetConnector(drm_fd,
+               data->connectors[i] = drmModeGetConnectorCurrent(drm_fd,
                                                data->res->connectors[i]);
                data->edids[i] = get_connector_edid(data->connectors[i], i);
        }
@@ -412,6 +412,8 @@ static void get_drm_info(struct compare_data *data)
        igt_assert(data->res->count_crtcs <= MAX_CRTCS);
 
        for (i = 0; i < data->res->count_connectors; i++) {
+               /* Don't use GetConnectorCurrent, we want to force a reprobe
+                * here. */
                data->connectors[i] = drmModeGetConnector(drm_fd,
                                                data->res->connectors[i]);
                data->edids[i] = get_connector_edid(data->connectors[i], i);
diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 9068a9581ff5..b27ed05fe73d 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -135,7 +135,8 @@ static void dump_connectors_fd(int drmfd)
        for (i = 0; i < mode_resources->count_connectors; i++) {
                drmModeConnector *connector;
 
-               connector = drmModeGetConnector(drmfd, 
mode_resources->connectors[i]);
+               connector = drmModeGetConnectorCurrent(drmfd,
+                                                      
mode_resources->connectors[i]);
                if (!connector) {
                        igt_warn("could not get connector %i: %s\n", 
mode_resources->connectors[i], strerror(errno));
                        continue;
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to