[mutter] tests/kms/device: Add power saving test
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] tests/kms/device: Add power saving test
- Date: Tue, 25 Jan 2022 16:25:07 +0000 (UTC)
commit 3472ff50cea4de3c99f5e40db072dc8e3abeab16
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Jun 28 09:21:44 2021 +0200
tests/kms/device: Add power saving test
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2159>
src/tests/native-kms-device.c | 90 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
---
diff --git a/src/tests/native-kms-device.c b/src/tests/native-kms-device.c
index cafe4dffef..6e1c1f5f57 100644
--- a/src/tests/native-kms-device.c
+++ b/src/tests/native-kms-device.c
@@ -324,6 +324,94 @@ meta_test_kms_device_mode_set (void)
release_connector_state (&connector_state);
}
+static void
+meta_test_kms_device_power_save (void)
+{
+ MetaKmsDevice *device;
+ MetaKmsUpdate *update;
+ MetaKmsCrtc *crtc;
+ MetaKmsConnector *connector;
+ MetaKmsMode *mode;
+ MetaKmsPlane *primary_plane;
+ g_autoptr (MetaDrmBuffer) primary_buffer = NULL;
+ const MetaKmsCrtcState *crtc_state;
+ const MetaKmsConnectorState *connector_state;
+
+ device = meta_get_test_kms_device (test_context);
+ crtc = meta_get_test_kms_crtc (device);
+ connector = meta_get_test_kms_connector (device);
+ mode = meta_kms_connector_get_preferred_mode (connector);
+ primary_plane = meta_kms_device_get_primary_plane_for (device, crtc);
+ primary_buffer = meta_create_test_mode_dumb_buffer (device, mode);
+
+ /*
+ * Set mode and assign primary plane.
+ */
+
+ update = meta_kms_update_new (device);
+ meta_kms_update_mode_set (update, crtc,
+ g_list_append (NULL, connector),
+ mode);
+ meta_kms_update_assign_plane (update,
+ crtc,
+ primary_plane,
+ primary_buffer,
+ meta_get_mode_fixed_rect_16 (mode),
+ meta_get_mode_rect (mode),
+ META_KMS_ASSIGN_PLANE_FLAG_NONE);
+ meta_kms_device_process_update_sync (device, update,
+ META_KMS_UPDATE_FLAG_NONE);
+ meta_kms_update_free (update);
+
+ g_assert_true (meta_kms_crtc_is_active (crtc));
+
+ /*
+ * Enable power saving mode.
+ */
+
+ update = meta_kms_update_new (device);
+ meta_kms_update_set_power_save (update);
+ meta_kms_device_process_update_sync (device, update,
+ META_KMS_UPDATE_FLAG_NONE);
+ meta_kms_update_free (update);
+
+ g_assert_false (meta_kms_crtc_is_active (crtc));
+ crtc_state = meta_kms_crtc_get_current_state (crtc);
+ g_assert_nonnull (crtc_state);
+ g_assert_false (crtc_state->is_active);
+ g_assert_false (crtc_state->is_drm_mode_valid);
+
+ connector_state = meta_kms_connector_get_current_state (connector);
+ g_assert_nonnull (connector_state);
+ g_assert_cmpuint (connector_state->current_crtc_id, ==, 0);
+
+ /*
+ * Disable power saving mode by mode setting again.
+ */
+
+ update = meta_kms_update_new (device);
+ meta_kms_update_mode_set (update, crtc,
+ g_list_append (NULL, connector),
+ mode);
+ meta_kms_update_assign_plane (update,
+ crtc,
+ primary_plane,
+ primary_buffer,
+ meta_get_mode_fixed_rect_16 (mode),
+ meta_get_mode_rect (mode),
+ META_KMS_ASSIGN_PLANE_FLAG_NONE);
+ meta_kms_device_process_update_sync (device, update,
+ META_KMS_UPDATE_FLAG_NONE);
+ meta_kms_update_free (update);
+
+ g_assert_true (meta_kms_crtc_is_active (crtc));
+ connector_state = meta_kms_connector_get_current_state (connector);
+ g_assert_nonnull (connector_state);
+ g_assert_cmpuint (connector_state->current_crtc_id,
+ ==,
+ meta_kms_crtc_get_id (crtc));
+}
+
static void
init_tests (void)
{
@@ -331,6 +419,8 @@ init_tests (void)
meta_test_kms_device_sanity);
g_test_add_func ("/backends/native/kms/device/mode-set",
meta_test_kms_device_mode_set);
+ g_test_add_func ("/backends/native/kms/device/power-save",
+ meta_test_kms_device_power_save);
}
int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]