[igt-dev] [i-g-t V2 2/3] tests/kms_dsc: Extend support to HDMI
Karthik B S
karthik.b.s at intel.com
Tue Jul 20 03:21:17 UTC 2021
On 7/19/2021 6:44 PM, Bhanuprakash Modem wrote:
> As HDMI also supports DSC, we need to extend the test coverage.
> This patch will remove the connector type check to support HDMI.
>
> V2: Rebase
>
> Cc: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> Cc: Vandita Kulkarni <vandita.kulkarni at intel.com>
> Cc: Patnana Venkata Sai <venkata.sai.patnana at intel.com>
> Cc: Karthik B S <karthik.b.s at intel.com>
> Cc: Navare Manasi D <manasi.d.navare at intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
Reviewed-by: Karthik B S <karthik.b.s at intel.com>
> ---
> tests/{kms_dp_dsc.c => kms_dsc.c} | 45 +++++++++++++++++++------------
> tests/meson.build | 2 +-
> 2 files changed, 29 insertions(+), 18 deletions(-)
> rename tests/{kms_dp_dsc.c => kms_dsc.c} (89%)
>
> diff --git a/tests/kms_dp_dsc.c b/tests/kms_dsc.c
> similarity index 89%
> rename from tests/kms_dp_dsc.c
> rename to tests/kms_dsc.c
> index 6e8dda77..b56e0183 100644
> --- a/tests/kms_dp_dsc.c
> +++ b/tests/kms_dsc.c
> @@ -75,23 +75,23 @@ static inline void manual(const char *expected)
> igt_debug_manual_check("all", expected);
> }
>
> -static void force_dp_dsc_enable(data_t *data)
> +static void force_dsc_enable(data_t *data)
> {
> int ret;
>
> igt_debug ("Forcing DSC enable on %s\n", data->conn_name);
> - ret = igt_force_dp_dsc_enable(data->drm_fd,
> + ret = igt_force_dsc_enable(data->drm_fd,
> data->output->config.connector);
> igt_assert_f(ret > 0, "debugfs_write failed");
> }
>
> -static void force_dp_dsc_set_bpp(data_t *data)
> +static void force_dsc_enable_bpp(data_t *data)
> {
> int ret;
>
> igt_debug("Forcing DSC BPP to %d on %s\n",
> data->compression_bpp, data->conn_name);
> - ret = igt_force_dp_dsc_enable_bpp(data->drm_fd,
> + ret = igt_force_dsc_enable_bpp(data->drm_fd,
> data->output->config.connector,
> data->compression_bpp);
> igt_assert_f(ret > 0, "debugfs_write failed");
> @@ -103,7 +103,7 @@ static void save_force_dsc_en(data_t *data)
> igt_is_force_dsc_enabled(data->drm_fd,
> data->output->config.connector);
> force_dsc_restore_fd =
> - igt_get_dp_dsc_debugfs_fd(data->drm_fd,
> + igt_get_dsc_debugfs_fd(data->drm_fd,
> data->output->config.connector);
> igt_assert(force_dsc_restore_fd >= 0);
> }
> @@ -133,11 +133,24 @@ static void test_cleanup(data_t *data)
> }
> }
>
> -static void kms_dp_dsc_exit_handler(int sig)
> +static void kms_dsc_exit_handler(int sig)
> {
> restore_force_dsc_en();
> }
>
> +static bool is_external_panel(drmModeConnector *connector)
> +{
> + switch (connector->connector_type) {
> + case DRM_MODE_CONNECTOR_LVDS:
> + case DRM_MODE_CONNECTOR_eDP:
> + case DRM_MODE_CONNECTOR_DSI:
> + case DRM_MODE_CONNECTOR_DPI:
> + return false;
> + default:
> + return true;
> + }
> +}
> +
> static bool check_dsc_on_connector(data_t *data, uint32_t drmConnector)
> {
> drmModeConnector *connector;
> @@ -145,9 +158,7 @@ static bool check_dsc_on_connector(data_t *data, uint32_t drmConnector)
>
> connector = drmModeGetConnectorCurrent(data->drm_fd,
> drmConnector);
> - if (connector->connection != DRM_MODE_CONNECTED ||
> - ((connector->connector_type != DRM_MODE_CONNECTOR_eDP) &&
> - (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)))
> + if (connector->connection != DRM_MODE_CONNECTED)
> return false;
>
> output = igt_output_from_connector(&data->display, connector);
> @@ -155,13 +166,13 @@ static bool check_dsc_on_connector(data_t *data, uint32_t drmConnector)
> kmstest_connector_type_str(connector->connector_type),
> connector->connector_type_id);
>
> - if (!igt_is_dp_dsc_supported(data->drm_fd, connector)) {
> + if (!igt_is_dsc_supported(data->drm_fd, connector)) {
> igt_debug("DSC not supported on connector %s\n",
> data->conn_name);
> return false;
> }
> - if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
> - !igt_is_dp_fec_supported(data->drm_fd, connector)) {
> + if (is_external_panel(connector) &&
> + !igt_is_fec_supported(data->drm_fd, connector)) {
> igt_debug("DSC cannot be enabled without FEC on %s\n",
> data->conn_name);
> return false;
> @@ -185,10 +196,10 @@ static void update_display(data_t *data, enum dsc_test_type test_type)
>
> igt_debug("DSC is supported on %s\n", data->conn_name);
> save_force_dsc_en(data);
> - force_dp_dsc_enable(data);
> + force_dsc_enable(data);
> if (test_type == test_dsc_compression_bpp) {
> igt_debug("Trying to set BPP to %d\n", data->compression_bpp);
> - force_dp_dsc_set_bpp(data);
> + force_dsc_enable_bpp(data);
> }
>
> igt_output_set_pipe(data->output, data->pipe);
> @@ -205,13 +216,13 @@ static void update_display(data_t *data, enum dsc_test_type test_type)
> */
> manual("RGB test pattern without corruption");
>
> - enabled = igt_is_dp_dsc_enabled(data->drm_fd,
> + enabled = igt_is_dsc_enabled(data->drm_fd,
> data->output->config.connector);
> restore_force_dsc_en();
> if (test_type == test_dsc_compression_bpp) {
> igt_debug("Rest compression BPP \n");
> data->compression_bpp = 0;
> - force_dp_dsc_set_bpp(data);
> + force_dsc_enable_bpp(data);
> }
>
> igt_assert_f(enabled,
> @@ -272,7 +283,7 @@ igt_main
> igt_require_intel(data.drm_fd);
> data.devid = intel_get_drm_devid(data.drm_fd);
> kmstest_set_vt_graphics_mode();
> - igt_install_exit_handler(kms_dp_dsc_exit_handler);
> + igt_install_exit_handler(kms_dsc_exit_handler);
> igt_display_require(&data.display, data.drm_fd);
> igt_require(res = drmModeGetResources(data.drm_fd));
> }
> diff --git a/tests/meson.build b/tests/meson.build
> index d3de40be..1bdfddbb 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -31,9 +31,9 @@ test_progs = [
> 'kms_cursor_legacy',
> 'kms_dither',
> 'kms_dp_aux_dev',
> - 'kms_dp_dsc',
> 'kms_dp_tiled_display',
> 'kms_draw_crc',
> + 'kms_dsc',
> 'kms_fbcon_fbt',
> 'kms_fence_pin_leak',
> 'kms_flip',
More information about the igt-dev
mailing list