[PATCH i-g-t v3 26/29] lib/unigraf: Add configuration for CRC usage
Louis Chauvet
louis.chauvet at bootlin.com
Sat Aug 23 02:11:46 UTC 2025
As Unigraf devices are able to compute a CRC for the input image, add a
configuration file option to use them.
Signed-off-by: Louis Chauvet <louis.chauvet at bootlin.com>
---
lib/unigraf/unigraf.c | 20 ++++++++++++++++++++
lib/unigraf/unigraf.h | 8 ++++++++
2 files changed, 28 insertions(+)
diff --git a/lib/unigraf/unigraf.c b/lib/unigraf/unigraf.c
index e63182ccc61ca23c9333d1c36950a5d73f94b3ea..e2a26f9bb199d83d9a1474ac2613a181450e0530 100644
--- a/lib/unigraf/unigraf.c
+++ b/lib/unigraf/unigraf.c
@@ -22,6 +22,7 @@ static int unigraf_open_count;
static TSI_HANDLE unigraf_device;
static char *unigraf_default_edid;
static char *unigraf_connector_name;
+static bool unigraf_crc;
/**
* UNIGRAF_NAME_MAX - Maximum name length to be used for TSI functions
@@ -58,6 +59,11 @@ static char *unigraf_connector_name;
*/
#define UNIGRAF_CONFIG_EDID_NAME "EDID"
+/**
+ * UNIGRAF_CONFIG_USE_CRC_NAME - Key of the CRC selection in the configuration file
+ */
+#define UNIGRAF_CONFIG_USE_CRC_NAME "UseCRC"
+
/**
* UNIGRAF_DEFAULT_ROLE_NAME - Default role name to search on the unigraf device
*/
@@ -290,6 +296,7 @@ bool unigraf_open_device(int drm_fd)
cfg_input = NULL;
cfg_edid_name = NULL;
unigraf_connector_name = NULL;
+ unigraf_crc = true;
} else {
cfg_device = g_key_file_get_string(igt_key_file, cfg_group,
UNIGRAF_CONFIG_DEVICE_NAME, &cfg_error);
@@ -330,6 +337,14 @@ bool unigraf_open_device(int drm_fd)
unigraf_debug("No default EDID set, use IGT default.\n");
cfg_edid_name = NULL;
}
+
+ cfg_error = NULL;
+ unigraf_crc = g_key_file_get_boolean(igt_key_file, cfg_group,
+ UNIGRAF_CONFIG_USE_CRC_NAME, &cfg_error);
+ if (cfg_error) {
+ unigraf_debug("CRC usage not configured, using unigraf CRC.\n");
+ unigraf_crc = true;
+ }
}
unigraf_assert(TSIX_DEV_RescanDevices(0, TSI_DEVCAP_VIDEO_CAPTURE, 0));
@@ -571,3 +586,8 @@ void unigraf_read_crc(int stream, igt_crc_t *out)
out->n_words = 3;
out->has_valid_frame = false;
}
+
+bool unigraf_use_crc(void)
+{
+ return unigraf_crc;
+}
diff --git a/lib/unigraf/unigraf.h b/lib/unigraf/unigraf.h
index cf37054baf4dd9d8115cd6b2abce70400254c301..e2013e8dd887389b573fbc3faddffb119f10c9b5 100644
--- a/lib/unigraf/unigraf.h
+++ b/lib/unigraf/unigraf.h
@@ -164,4 +164,12 @@ void unigraf_select_stream(int stream);
*/
void unigraf_read_crc(int stream, igt_crc_t *out);
+/**
+ * unigraf_use_crc() - Check if Unigraf device should be used for CRC computation
+ *
+ * Returns: true if the Unigraf device should be used for CRC computation,
+ * false otherwise.
+ */
+bool unigraf_use_crc(void);
+
#endif // UNIGRAF_H
--
2.50.1
More information about the igt-dev
mailing list