From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 88E63C48BEB for ; Wed, 14 Feb 2024 06:46:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D8AC10E3CB; Wed, 14 Feb 2024 06:46:01 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="V5IW64WB"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 982B510E3CB for ; Wed, 14 Feb 2024 06:45:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1707893158; x=1739429158; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aYE41seb77wtmrchq1GKBsEOyl8fCvq9nyAxQ5NJut4=; b=V5IW64WBhMW6YpR3UiTVxuFr4RyXY9lSoey4k3CKQ7nn4L51/wTMO5Gs yuAP9Decle2XxhtOaBMZCiHimEFXkOr/L5ZQGdIYPW1TnLk6gWKXeeoWu rumWbJ8opttKcyD1arCBkJRAHLGoAfjoKFYNYBI1DALwlLuf52WgnbQvU A4Mlja6ZxMU/4PQdHcwWWWIfHwrS3QJZOxA+W8vV7D+tSWMaobXc/Boq9 o7IE7o2E18Dj9FutQS2DZPa6DNztWuw+ZuJCNZ96WcpyQGQPx9T32hyeb qF/i2zckisNcYVDitPyHem26UqMybdgTP6TM9ocVAWbGBA6n7UVC7/YEB g==; X-IronPort-AV: E=McAfee;i="6600,9927,10982"; a="12645478" X-IronPort-AV: E=Sophos;i="6.06,159,1705392000"; d="scan'208";a="12645478" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2024 22:45:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,159,1705392000"; d="scan'208";a="3427622" Received: from bhanu-nuclab.iind.intel.com ([10.145.169.172]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2024 22:45:57 -0800 From: Bhanuprakash Modem To: igt-dev@lists.freedesktop.org Cc: Harry Wentland Subject: [RFC v4 12/22] tests/kms_colorop: Add 3x4 CTM tests Date: Wed, 14 Feb 2024 12:09:43 +0530 Message-ID: <20240214063953.1285495-13-bhanuprakash.modem@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240214063953.1285495-1-bhanuprakash.modem@intel.com> References: <20240214063953.1285495-1-bhanuprakash.modem@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" From: Harry Wentland Signed-off-by: Harry Wentland --- tests/kms_colorop.c | 43 ++++++++++++++++++++++++++++++------------- tests/kms_colorop.h | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/tests/kms_colorop.c b/tests/kms_colorop.c index 2a14294a2..72e59725d 100644 --- a/tests/kms_colorop.c +++ b/tests/kms_colorop.c @@ -40,9 +40,16 @@ * * arg[1]: * - * @srgb_eotf: sRGB EOTF - * @srgb_inv_eotf: sRGB Inverse EOTF - * @srgb_eotf-srgb_inv_eotf: sRGB EOTF -> sRGB Inverse EOTF + * @srgb_eotf: sRGB EOTF + * @srgb_inv_eotf: sRGB Inverse EOTF + * @srgb_eotf-srgb_inv_eotf: sRGB EOTF -> sRGB Inverse EOTF + * @ctm_3x4_50_desat: 3x4 matrix doing a 50% desaturation + * @ctm_3x4_overdrive: 3x4 matrix overdring all values by 50% + * @ctm_3x4_oversaturate: 3x4 matrix oversaturating values + * @ctm_3x4_bt709_enc: BT709 encoding matrix + * @ctm_3x4_bt709_dec: BT709 decoding matrix + * @ctm_3x4_bt709_enc_dec: BT709 encoding matrix, followed by decoding matrix + * @ctm_3x4_bt709_dec_enc: BT709 decoding matrix, followed by encoding matrix * */ @@ -181,11 +188,10 @@ static bool can_use_colorop(igt_display_t *display, igt_colorop_t *colorop, kms_ { switch (desired->type) { case KMS_COLOROP_ENUMERATED_LUT1D: - if (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_CURVE) { - return true; - } + return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_CURVE); + case KMS_COLOROP_CTM_3X4: + return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_CTM_3X4); case KMS_COLOROP_CUSTOM_LUT1D: - case KMS_COLOROP_CTM: case KMS_COLOROP_LUT3D: default: return false; @@ -205,13 +211,15 @@ static bool map_to_pipeline(igt_display_t *display, int i = 0; int prop_val = 0; - current_op = colorops[i++]; + current_op = colorops[i]; + i++; igt_require(current_op); while (next) { if (can_use_colorop(display, next, current_op)) { current_op->colorop = next; - current_op = colorops[i++]; + current_op = colorops[i]; + i++; if (!current_op) break; } @@ -273,8 +281,10 @@ static void set_colorop(igt_display_t *display, igt_fail(IGT_EXIT_FAILURE); } break; + case KMS_COLOROP_CTM_3X4: + igt_colorop_set_ctm_3x4(display, colorop->colorop, colorop->matrix_3x4); + break; case KMS_COLOROP_CUSTOM_LUT1D: - case KMS_COLOROP_CTM: case KMS_COLOROP_LUT3D: default: igt_fail(IGT_EXIT_FAILURE); @@ -331,8 +341,8 @@ static bool compare_with_bracket(igt_fb_t *in, igt_fb_t *out) #define DUMP_FBS 1 -#define MAX_COLOROPS 3 -#define NUM_COLOROP_TESTS 3 +#define MAX_COLOROPS 5 +#define NUM_COLOROP_TESTS 12 #define MAX_NAME_SIZE 256 static void apply_transforms(kms_colorop_t *colorops[], igt_fb_t *sw_transform_fb) @@ -481,7 +491,14 @@ igt_main } tests[] = { { { &kms_colorop_srgb_eotf, NULL }, "srgb_eotf" }, { { &kms_colorop_srgb_inv_eotf, NULL }, "srgb_inv_eotf" }, - { { &kms_colorop_srgb_eotf, &kms_colorop_srgb_inv_eotf, NULL }, "srgb_eotf-srgb_inv_eotf" } + { { &kms_colorop_srgb_eotf, &kms_colorop_srgb_inv_eotf, NULL }, "srgb_eotf-srgb_inv_eotf" }, + { { &kms_colorop_ctm_3x4_50_desat, NULL }, "ctm_3x4_50_desat" }, + { { &kms_colorop_ctm_3x4_overdrive, NULL }, "ctm_3x4_overdrive" }, + { { &kms_colorop_ctm_3x4_oversaturate, NULL }, "ctm_3x4_oversaturate" }, + { { &kms_colorop_ctm_3x4_bt709_enc, NULL }, "ctm_3x4_bt709_enc" }, + { { &kms_colorop_ctm_3x4_bt709_dec, NULL }, "ctm_3x4_bt709_dec" }, + { { &kms_colorop_ctm_3x4_bt709_enc, &kms_colorop_ctm_3x4_bt709_dec, NULL }, "ctm_3x4_bt709_enc_dec" }, + { { &kms_colorop_ctm_3x4_bt709_dec, &kms_colorop_ctm_3x4_bt709_enc, NULL }, "ctm_3x4_bt709_dec_enc" }, }; igt_display_t display; diff --git a/tests/kms_colorop.h b/tests/kms_colorop.h index 8102d25b1..30278ca4e 100644 --- a/tests/kms_colorop.h +++ b/tests/kms_colorop.h @@ -35,7 +35,7 @@ typedef int (*transform_pixel)(igt_pixel_t *pixel); typedef enum kms_colorop_type { KMS_COLOROP_ENUMERATED_LUT1D, KMS_COLOROP_CUSTOM_LUT1D, - KMS_COLOROP_CTM, + KMS_COLOROP_CTM_3X4, KMS_COLOROP_LUT3D } kms_colorop_type_t; @@ -55,6 +55,7 @@ typedef struct kms_colorop { union { kms_colorop_enumerated_lut1d_info_t enumerated_lut1d_info; + const igt_matrix_3x4_t *matrix_3x4; }; const char *name; @@ -84,4 +85,40 @@ kms_colorop_t kms_colorop_srgb_inv_eotf = { .transform = &igt_color_srgb_inv_eotf }; +kms_colorop_t kms_colorop_ctm_3x4_50_desat = { + .type = KMS_COLOROP_CTM_3X4, + .matrix_3x4 = &igt_matrix_3x4_50_desat, + .name = "ctm_3x4_50_desat", + .transform = &igt_color_ctm_3x4_50_desat +}; + +kms_colorop_t kms_colorop_ctm_3x4_overdrive = { + .type = KMS_COLOROP_CTM_3X4, + .matrix_3x4 = &igt_matrix_3x4_overdrive, + .name = "ctm_3x4_overdrive", + .transform = &igt_color_ctm_3x4_overdrive +}; + +kms_colorop_t kms_colorop_ctm_3x4_oversaturate = { + .type = KMS_COLOROP_CTM_3X4, + .matrix_3x4 = &igt_matrix_3x4_oversaturate, + .name = "ctm_3x4_oversaturate", + .transform = &igt_color_ctm_3x4_oversaturate +}; + +kms_colorop_t kms_colorop_ctm_3x4_bt709_enc = { + .type = KMS_COLOROP_CTM_3X4, + .matrix_3x4 = &igt_matrix_3x4_bt709_enc, + .name = "ctm_3x4_bt709_enc", + .transform = &igt_color_ctm_3x4_bt709_enc +}; + +kms_colorop_t kms_colorop_ctm_3x4_bt709_dec = { + .type = KMS_COLOROP_CTM_3X4, + .matrix_3x4 = &igt_matrix_3x4_bt709_dec, + .name = "ctm_3x4_bt709_dec", + .transform = &igt_color_ctm_3x4_bt709_dec +}; + + #endif /* __KMS_COLOROP_H__ */ -- 2.43.0