From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2075.outbound.protection.outlook.com [40.107.92.75]) by gabe.freedesktop.org (Postfix) with ESMTPS id 167FA10E7E8 for ; Wed, 8 Nov 2023 16:40:45 +0000 (UTC) From: Harry Wentland To: Date: Wed, 8 Nov 2023 11:40:01 -0500 Message-ID: <20231108164006.106967-13-harry.wentland@amd.com> In-Reply-To: <20231108164006.106967-1-harry.wentland@amd.com> References: <20231108164006.106967-1-harry.wentland@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Subject: [igt-dev] [RFC PATCH v3 12/12] tests/kms_colorop: Add 3x4 CTM tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: 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 2a14294a2b20..72e59725dac3 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 8102d25b13be..30278ca4edbd 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.42.0