From nobody Sun Apr 19 20:31:27 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 667D9CCA473 for ; Mon, 27 Jun 2022 16:13:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239080AbiF0QNT (ORCPT ); Mon, 27 Jun 2022 12:13:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239068AbiF0QNJ (ORCPT ); Mon, 27 Jun 2022 12:13:09 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F20E14095 for ; Mon, 27 Jun 2022 09:13:08 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id o16so13793305wra.4 for ; Mon, 27 Jun 2022 09:13:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pDNBhiLmVfVV+Ne/LbE/267jCUJxvNsVJYjt8/p09X8=; b=NSZPuSAPNl3/J0a/ww1tySEBOpRdxoi0GTHu14n97sUfgnnInXMiWim3dXIZF2//vS kzJfJwQJBhGcx9Wp1xLt390KArSmPba0zTcSewvF65CHYFnBc8HLyKnb6VezoPNuQGZ8 WC8Evuv5b7L3vPSWXWfeldHCecGJHNIUanbkYrxxIeZgYCJWHXdiosK+W5pVGDcn9S3i JYNhw6TuSTgQPM+bDn2Oby++SC6VYXENStbHDLNMBGSCF10efi7QPO4OyAIbwwvxMMfh Y2y7r5yal7oRs0jymS903iXMzV8N0842Gf+bUnTjq5h2nVTPs+XcaZnrk35cdtmVhNRf JCqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pDNBhiLmVfVV+Ne/LbE/267jCUJxvNsVJYjt8/p09X8=; b=RZqTGm/rrVIjCsj9wyn4Uk7uSuWgJ5e0O4JBJWAR6WFgs60c7KMv59aER1eMkXknjW oifMp4PBeARlHAUjoBGh11sTOHfQCRrsyGUfoM6zeSsbIJXmcpyv5RDGV5J21yaZ1Vxu wTaijPHLjx7QaW35OXa+Y6PdmxQeFRTNLKJDhNeuLpR7BHc885rf160NzlA/ef24ElX/ eBHJ36wQIO4ooIRkaRVYfB/fIbn1z8lqfPQbm6+RCdiztZ0DW0+8cSd7blHF6dHKaF0U aUu6nX9RgXTYsGjgDOe4HA5/Hvnfd0/pKV8VtEK1D7TaDGPW4aK3Ri5915U/rjwH+mO2 0zEw== X-Gm-Message-State: AJIora97wCbZil9+jiyoTuusvAdbwAxWsjCDZLUHLitdQMthGuhQZaAc 414L6PK/SdfKMJkdfyHc4jc= X-Google-Smtp-Source: AGRyM1slA7u8TabruKXHhU8WYvPoHJ2BflQEkj8mUaP8ATALqTre8paJHdfYQayhYw6aS2fi93jPEw== X-Received: by 2002:adf:dc08:0:b0:21b:bcaf:8500 with SMTP id t8-20020adfdc08000000b0021bbcaf8500mr12257540wri.133.1656346386572; Mon, 27 Jun 2022 09:13:06 -0700 (PDT) Received: from localhost.localdomain ([94.73.36.128]) by smtp.gmail.com with ESMTPSA id c7-20020adffb47000000b0021b9504cc83sm10883600wrs.31.2022.06.27.09.13.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jun 2022 09:13:06 -0700 (PDT) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= To: javierm@redhat.com Cc: davidgow@google.com, dlatypov@google.com, tzimmermann@suse.de, mripard@kernel.org, daniel@ffwll.ch, airlied@linux.ie, maarten.lankhorst@linux.intel.com, jani.nikula@linux.intel.com, maira.canal@usp.br, isabbasso@riseup.net, magalilemes00@gmail.com, tales.aparecida@gmail.com, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH 1/4] drm/format-helper: Rename test cases to make them more generic Date: Mon, 27 Jun 2022 18:11:29 +0200 Message-Id: <20220627161132.33256-2-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220627161132.33256-1-jose.exposito89@gmail.com> References: <20220627161132.33256-1-jose.exposito89@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The tests available at the moment only check the conversion from XRGB8888 to RGB332. However, more conversion will be tested in the future. In order to make the struct and functions present in the tests more generic, rename xrgb8888_to_rgb332_* to convert_xrgb8888_*. Signed-off-by: Jos=C3=A9 Exp=C3=B3sito Acked-by: Thomas Zimmermann Tested-by: Tales L. Aparecida --- .../gpu/drm/tests/drm_format_helper_test.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/d= rm/tests/drm_format_helper_test.c index 98583bf56044..de8cf525109e 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -16,7 +16,7 @@ =20 #define TEST_BUF_SIZE 50 =20 -struct xrgb8888_to_rgb332_case { +struct convert_xrgb8888_case { const char *name; unsigned int pitch; unsigned int dst_pitch; @@ -25,7 +25,7 @@ struct xrgb8888_to_rgb332_case { const u8 expected[4 * TEST_BUF_SIZE]; }; =20 -static struct xrgb8888_to_rgb332_case xrgb8888_to_rgb332_cases[] =3D { +static struct convert_xrgb8888_case convert_xrgb8888_cases[] =3D { { .name =3D "single_pixel_source_buffer", .pitch =3D 1 * 4, @@ -111,18 +111,18 @@ static size_t conversion_buf_size(u32 dst_format, uns= igned int dst_pitch, return dst_pitch * drm_rect_height(clip); } =20 -static void xrgb8888_to_rgb332_case_desc(struct xrgb8888_to_rgb332_case *t, - char *desc) +static void convert_xrgb8888_case_desc(struct convert_xrgb8888_case *t, + char *desc) { strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE); } =20 -KUNIT_ARRAY_PARAM(xrgb8888_to_rgb332, xrgb8888_to_rgb332_cases, - xrgb8888_to_rgb332_case_desc); +KUNIT_ARRAY_PARAM(convert_xrgb8888, convert_xrgb8888_cases, + convert_xrgb8888_case_desc); =20 -static void xrgb8888_to_rgb332_test(struct kunit *test) +static void convert_xrgb8888_test(struct kunit *test) { - const struct xrgb8888_to_rgb332_case *params =3D test->param_value; + const struct convert_xrgb8888_case *params =3D test->param_value; size_t dst_size; __u8 *dst =3D NULL; =20 @@ -144,8 +144,7 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) } =20 static struct kunit_case drm_format_helper_test_cases[] =3D { - KUNIT_CASE_PARAM(xrgb8888_to_rgb332_test, - xrgb8888_to_rgb332_gen_params), + KUNIT_CASE_PARAM(convert_xrgb8888_test, convert_xrgb8888_gen_params), {} }; =20 --=20 2.25.1 From nobody Sun Apr 19 20:31:27 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 400CBC43334 for ; Mon, 27 Jun 2022 16:13:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239085AbiF0QNV (ORCPT ); Mon, 27 Jun 2022 12:13:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239075AbiF0QNJ (ORCPT ); Mon, 27 Jun 2022 12:13:09 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8A55140C7 for ; Mon, 27 Jun 2022 09:13:08 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id o4so9819475wrh.3 for ; Mon, 27 Jun 2022 09:13:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sR0i/5wHgKGgcKAj1oFVaLag4FmoRFAS+vJEGm7kxWA=; b=o6JsORBuaxyA4y5Zgg0xWYAqgpc61ahcGe6qZ4qO/tS2TZ/LyerjvdUL0voByDPUWR 91DyDM/t9B+gjqXYtgWEjKJJwVKKz4Ql/Ap8CkBhu4CMHZ9iiJAztrFu1oFaMxwCeIPc hruIoRfw/9gZUtBfIi9hdltipebePdmqulNWSlAkX5Wnb84LqYC30IlCi/50LXqqcg5e Gfl4yg3DKAsxxUK8hFKKxD/MEefpOVUNznyjXIEvZG4wtZ7w0SpwGyxPOb+tD+iBE/Cl eSffdkdlWgbcykSQbjvHbd4O0d1qRAuTgY/H1rA2+mgBF5urCKxenIVmyE+tEk4UiAKO V3mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sR0i/5wHgKGgcKAj1oFVaLag4FmoRFAS+vJEGm7kxWA=; b=54SJjeslHixvjIpAR3wUEwu3fo1YJmOfEayFdKCs1EEQYxukbgR3L+Stx8q1k7rxpY r7OMEkiG2qr458OM6Q7hOWO1PX3+DjkXjkyGd8igy0tODI1mVa4Gk21n+gendBML84ae tmFqzwhfNrOMaNwLpNOEy9ax5pH+B6JLPaoF4tLwdUsvuKYvELa5GTv5W4ijspSMcTtD YaQ1acj9bZiadAoqdd9RsUgUHT7xthTga8zr8nFZsFp46DrePhzsT2HdSk9SfVqleihQ HnbC7VZUfi5Is6EfwjI2nwD0A3CF9HaA9tyNWvjkjOXmGiIHjqakBDcm8nzwwpKZPZFa 7p7w== X-Gm-Message-State: AJIora83egu8+WqXQ/mweiZxcy1UXrgw472fUf+E1PXGgKUp7jH5u1MX 3ddMx/1Ro7Ljy0Fw/1HVSu4= X-Google-Smtp-Source: AGRyM1uXaUsdLwSruwTs8r/EWwloxLYVhaZMlSUZe9HsNODTVAnTJoypluHPz528fg7eu9C8QP9Ofg== X-Received: by 2002:a5d:5984:0:b0:21b:a858:3678 with SMTP id n4-20020a5d5984000000b0021ba8583678mr13241777wri.293.1656346387544; Mon, 27 Jun 2022 09:13:07 -0700 (PDT) Received: from localhost.localdomain ([94.73.36.128]) by smtp.gmail.com with ESMTPSA id c7-20020adffb47000000b0021b9504cc83sm10883600wrs.31.2022.06.27.09.13.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jun 2022 09:13:07 -0700 (PDT) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= To: javierm@redhat.com Cc: davidgow@google.com, dlatypov@google.com, tzimmermann@suse.de, mripard@kernel.org, daniel@ffwll.ch, airlied@linux.ie, maarten.lankhorst@linux.intel.com, jani.nikula@linux.intel.com, maira.canal@usp.br, isabbasso@riseup.net, magalilemes00@gmail.com, tales.aparecida@gmail.com, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH 2/4] drm/format-helper: Transform tests to be agnostic of target format Date: Mon, 27 Jun 2022 18:11:30 +0200 Message-Id: <20220627161132.33256-3-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220627161132.33256-1-jose.exposito89@gmail.com> References: <20220627161132.33256-1-jose.exposito89@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to support multiple destination format conversions, store the target format, conversion function, parameters and expected result in its own structure. Signed-off-by: Jos=C3=A9 Exp=C3=B3sito Acked-by: Thomas Zimmermann Tested-by: Tales L. Aparecida --- .../gpu/drm/tests/drm_format_helper_test.c | 88 ++++++++++++++----- 1 file changed, 64 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/d= rm/tests/drm_format_helper_test.c index de8cf525109e..732d945e7f4e 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -16,34 +16,55 @@ =20 #define TEST_BUF_SIZE 50 =20 +struct convert_xrgb8888_result { + u32 dst_format; + void (*conv_func)(void *dst, unsigned int dst_pitch, + const void *src, + const struct drm_framebuffer *fb, + const struct drm_rect *clip); + unsigned int dst_pitch; + const u8 expected[4 * TEST_BUF_SIZE]; +}; + struct convert_xrgb8888_case { const char *name; unsigned int pitch; - unsigned int dst_pitch; struct drm_rect clip; const u32 xrgb8888[TEST_BUF_SIZE]; - const u8 expected[4 * TEST_BUF_SIZE]; + struct convert_xrgb8888_result results[1]; }; =20 static struct convert_xrgb8888_case convert_xrgb8888_cases[] =3D { { .name =3D "single_pixel_source_buffer", .pitch =3D 1 * 4, - .dst_pitch =3D 0, .clip =3D DRM_RECT_INIT(0, 0, 1, 1), .xrgb8888 =3D { 0x01FF0000 }, - .expected =3D { 0xE0 }, + .results =3D { + { + .dst_format =3D DRM_FORMAT_RGB332, + .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .dst_pitch =3D 0, + .expected =3D { 0xE0 }, + }, + }, }, { .name =3D "single_pixel_clip_rectangle", .pitch =3D 2 * 4, - .dst_pitch =3D 0, .clip =3D DRM_RECT_INIT(1, 1, 1, 1), .xrgb8888 =3D { 0x00000000, 0x00000000, 0x00000000, 0x10FF0000, }, - .expected =3D { 0xE0 }, + .results =3D { + { + .dst_format =3D DRM_FORMAT_RGB332, + .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .dst_pitch =3D 0, + .expected =3D { 0xE0 }, + }, + }, }, { /* Well known colors: White, black, red, green, blue, magenta, @@ -52,7 +73,6 @@ static struct convert_xrgb8888_case convert_xrgb8888_case= s[] =3D { */ .name =3D "well_known_colors", .pitch =3D 4 * 4, - .dst_pitch =3D 0, .clip =3D DRM_RECT_INIT(1, 1, 2, 4), .xrgb8888 =3D { 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -61,28 +81,41 @@ static struct convert_xrgb8888_case convert_xrgb8888_ca= ses[] =3D { 0x00000000, 0x550000FF, 0x66FF00FF, 0x00000000, 0x00000000, 0x77FFFF00, 0x8800FFFF, 0x00000000, }, - .expected =3D { - 0xFF, 0x00, - 0xE0, 0x1C, - 0x03, 0xE3, - 0xFC, 0x1F, + .results =3D { + { + .dst_format =3D DRM_FORMAT_RGB332, + .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .dst_pitch =3D 0, + .expected =3D { + 0xFF, 0x00, + 0xE0, 0x1C, + 0x03, 0xE3, + 0xFC, 0x1F, + }, + }, }, }, { /* Randomly picked colors. Full buffer within the clip area. */ .name =3D "destination_pitch", .pitch =3D 3 * 4, - .dst_pitch =3D 5, .clip =3D DRM_RECT_INIT(0, 0, 3, 3), .xrgb8888 =3D { 0xA10E449C, 0xB1114D05, 0xC1A80303, 0xD16C7073, 0xA20E449C, 0xB2114D05, 0xC2A80303, 0xD26C7073, 0xA30E449C, }, - .expected =3D { - 0x0A, 0x08, 0xA0, 0x00, 0x00, - 0x6D, 0x0A, 0x08, 0x00, 0x00, - 0xA0, 0x6D, 0x0A, 0x00, 0x00, + .results =3D { + { + .dst_format =3D DRM_FORMAT_RGB332, + .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .dst_pitch =3D 5, + .expected =3D { + 0x0A, 0x08, 0xA0, 0x00, 0x00, + 0x6D, 0x0A, 0x08, 0x00, 0x00, + 0xA0, 0x6D, 0x0A, 0x00, 0x00, + }, + }, }, }, }; @@ -123,24 +156,31 @@ KUNIT_ARRAY_PARAM(convert_xrgb8888, convert_xrgb8888_= cases, static void convert_xrgb8888_test(struct kunit *test) { const struct convert_xrgb8888_case *params =3D test->param_value; + const struct convert_xrgb8888_result *result; size_t dst_size; __u8 *dst =3D NULL; + int n; =20 struct drm_framebuffer fb =3D { .format =3D drm_format_info(DRM_FORMAT_XRGB8888), .pitches =3D { params->pitch, 0, 0 }, }; =20 - dst_size =3D conversion_buf_size(DRM_FORMAT_RGB332, params->dst_pitch, - ¶ms->clip); - KUNIT_ASSERT_GT(test, dst_size, 0); + for (n =3D 0; n < ARRAY_SIZE(params->results); n++) { + result =3D ¶ms->results[n]; + + dst_size =3D conversion_buf_size(result->dst_format, + result->dst_pitch, + ¶ms->clip); + KUNIT_ASSERT_GT(test, dst_size, 0); =20 - dst =3D kunit_kzalloc(test, dst_size, GFP_KERNEL); - KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst); + dst =3D kunit_kzalloc(test, dst_size, GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst); =20 - drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888, + result->conv_func(dst, result->dst_pitch, params->xrgb8888, &fb, ¶ms->clip); - KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0); + KUNIT_EXPECT_EQ(test, memcmp(dst, result->expected, dst_size), 0); + } } =20 static struct kunit_case drm_format_helper_test_cases[] =3D { --=20 2.25.1 From nobody Sun Apr 19 20:31:27 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71337C43334 for ; Mon, 27 Jun 2022 16:13:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239119AbiF0QN1 (ORCPT ); Mon, 27 Jun 2022 12:13:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239076AbiF0QNK (ORCPT ); Mon, 27 Jun 2022 12:13:10 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DFB9E11A29 for ; Mon, 27 Jun 2022 09:13:09 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id i25so8257879wrc.13 for ; Mon, 27 Jun 2022 09:13:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FrWIJqMRTMApBIT0XGEXMBk+DhL+WfBH3A+0ox/Q7jM=; b=MdzmxDg5EJsI62qcflHw3guB6lJxYS/DxcUDUx+yNKAan6MZtpIBxAu895Nm6GiIFw TvFwkJPNZ9JlayYLFYVMPb3v3Fstm0De3PkzA5ieUSgTsF/9r85HrBFp8jLL8ko7vVfA zVFcoic8ic3bWcDEfMYBPT8MAmVWJXoWLte77shZuzG+G7UZ6OylnquNjSpWQ4Xf8stH aGaBbl4H5jlTWOW1fKRzEqvVEtcdNWQSQ3xk+hjG4zIWkfHouSGcYpHitwcp//kpbdQ8 KIxfWDmVNWQ+Q1YmEHqQASZypeLHe9w/pgtbdswh2bXvdBp/4zhYAKLGiDr/czgccAIV 5hGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FrWIJqMRTMApBIT0XGEXMBk+DhL+WfBH3A+0ox/Q7jM=; b=AmZdslbUXhRi+miuwd/c3c3ARe1t1LGomLaU+3BowcBk2t4KtBS7M/2bx5Qgb++R+R uDn1wX9CV9rl6Dl7913WZUFM2d+MB2vJ5l7b3R+ATaFm9TCdTAJFP90ty/Q9qHw6Gwhq vnNVXp7qGHF1gwp4Aq8mnga1wQAKf/21qk14XcTIk9QPm8fb3uhuj80serNMqmOrTvPt fQ50xsC0NJRNvkl+uY+Axs57Z0VuYeyBg2ypAUfres15AnqTgzqETG+9MykX0AxkaQ6n 60//XZrCYhghsPMOkt2+s7Twg6Ok5bkLRqDcdF57wZosjRYmPfDo5i+lOy3jpaDQxSz3 iCog== X-Gm-Message-State: AJIora/XOefCzwfAKjCgGAKiRlmMrRdtjIZ17ZqUVsGOZYjHPJxEgz13 3n1zS1xKSrP8+pcwkRzdTsU= X-Google-Smtp-Source: AGRyM1u/uNhUsvw8yU5xnnlABNgZfGfiv52Jrb+33VlYHZJ28RkbDxos0k2S2DlyBEItf23WTdMleQ== X-Received: by 2002:a5d:5047:0:b0:21b:92b2:f34f with SMTP id h7-20020a5d5047000000b0021b92b2f34fmr12668117wrt.677.1656346388493; Mon, 27 Jun 2022 09:13:08 -0700 (PDT) Received: from localhost.localdomain ([94.73.36.128]) by smtp.gmail.com with ESMTPSA id c7-20020adffb47000000b0021b9504cc83sm10883600wrs.31.2022.06.27.09.13.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jun 2022 09:13:08 -0700 (PDT) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= To: javierm@redhat.com Cc: davidgow@google.com, dlatypov@google.com, tzimmermann@suse.de, mripard@kernel.org, daniel@ffwll.ch, airlied@linux.ie, maarten.lankhorst@linux.intel.com, jani.nikula@linux.intel.com, maira.canal@usp.br, isabbasso@riseup.net, magalilemes00@gmail.com, tales.aparecida@gmail.com, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH 3/4] drm/format-helper: Add support for conversion functions with swab Date: Mon, 27 Jun 2022 18:11:31 +0200 Message-Id: <20220627161132.33256-4-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220627161132.33256-1-jose.exposito89@gmail.com> References: <20220627161132.33256-1-jose.exposito89@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The RGB565 conversion functions take an extra parameter ("swab") indicating whether the bytes should be swapped into the clip buffer or not. Create a union in the "convert_xrgb8888_result" structure holding the value of the "swab" parameter as well as the conversion function pointer. Signed-off-by: Jos=C3=A9 Exp=C3=B3sito Acked-by: Thomas Zimmermann Tested-by: Tales L. Aparecida --- .../gpu/drm/tests/drm_format_helper_test.c | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/d= rm/tests/drm_format_helper_test.c index 732d945e7f4e..52dc41cc7c60 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -16,12 +16,29 @@ =20 #define TEST_BUF_SIZE 50 =20 +struct convert_xrgb8888_func { + void (*func)(void *dst, unsigned int dst_pitch, + const void *src, + const struct drm_framebuffer *fb, + const struct drm_rect *clip); +}; + +struct convert_xrgb8888_func_swab { + void (*func)(void *dst, unsigned int dst_pitch, + const void *src, + const struct drm_framebuffer *fb, + const struct drm_rect *clip, + bool swab); + bool swab; +}; + struct convert_xrgb8888_result { u32 dst_format; - void (*conv_func)(void *dst, unsigned int dst_pitch, - const void *src, - const struct drm_framebuffer *fb, - const struct drm_rect *clip); + bool has_swab; + union { + struct convert_xrgb8888_func conv; + struct convert_xrgb8888_func_swab conv_swab; + }; unsigned int dst_pitch; const u8 expected[4 * TEST_BUF_SIZE]; }; @@ -43,7 +60,7 @@ static struct convert_xrgb8888_case convert_xrgb8888_case= s[] =3D { .results =3D { { .dst_format =3D DRM_FORMAT_RGB332, - .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .conv =3D { .func =3D drm_fb_xrgb8888_to_rgb332 }, .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, @@ -60,7 +77,7 @@ static struct convert_xrgb8888_case convert_xrgb8888_case= s[] =3D { .results =3D { { .dst_format =3D DRM_FORMAT_RGB332, - .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .conv =3D { .func =3D drm_fb_xrgb8888_to_rgb332 }, .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, @@ -84,7 +101,7 @@ static struct convert_xrgb8888_case convert_xrgb8888_cas= es[] =3D { .results =3D { { .dst_format =3D DRM_FORMAT_RGB332, - .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .conv =3D { .func =3D drm_fb_xrgb8888_to_rgb332 }, .dst_pitch =3D 0, .expected =3D { 0xFF, 0x00, @@ -108,7 +125,7 @@ static struct convert_xrgb8888_case convert_xrgb8888_ca= ses[] =3D { .results =3D { { .dst_format =3D DRM_FORMAT_RGB332, - .conv_func =3D drm_fb_xrgb8888_to_rgb332, + .conv =3D { .func =3D drm_fb_xrgb8888_to_rgb332 }, .dst_pitch =3D 5, .expected =3D { 0x0A, 0x08, 0xA0, 0x00, 0x00, @@ -177,8 +194,15 @@ static void convert_xrgb8888_test(struct kunit *test) dst =3D kunit_kzalloc(test, dst_size, GFP_KERNEL); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst); =20 - result->conv_func(dst, result->dst_pitch, params->xrgb8888, - &fb, ¶ms->clip); + if (result->has_swab) { + result->conv_swab.func(dst, result->dst_pitch, + params->xrgb8888, &fb, + ¶ms->clip, + result->conv_swab.swab); + } else { + result->conv.func(dst, result->dst_pitch, + params->xrgb8888, &fb, ¶ms->clip); + } KUNIT_EXPECT_EQ(test, memcmp(dst, result->expected, dst_size), 0); } } --=20 2.25.1 From nobody Sun Apr 19 20:31:27 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5742C433EF for ; Mon, 27 Jun 2022 16:13:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239108AbiF0QN2 (ORCPT ); Mon, 27 Jun 2022 12:13:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239021AbiF0QNM (ORCPT ); Mon, 27 Jun 2022 12:13:12 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9BE3140D6 for ; Mon, 27 Jun 2022 09:13:10 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id l2-20020a05600c4f0200b0039c55c50482so7853214wmq.0 for ; Mon, 27 Jun 2022 09:13:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XYw7CGFO//CItwO+VZ/QzzGgwBzkgCzOgnZsxxYoTY4=; b=AP8G17ouwX9ay9Nsklm0TKFMzxwv/NWaVziOluPLmZmnWmq03RlfjWfSxM4UQ1GMN5 U5vTf22WStIu22sjeRwc9g+ixi0h4/mXIPo+l9qTyT+Oc7M/30OSU3I3JXJw7kEWIDhD RXMwPqnmRCEj8vK5iOJB/LkRl+Bq6gDTMKt4JQAFS+erDyP2268MyPD2N5ydzDKli0xO g9om5V+4vfKqDYHURINaY1jMLBOtbAesc1f86f81qyOcdp/wVbjSIRbzuhpwq7W8sD8m b9N7+VZAkfIaGnJthH9lrfhhmfncxx+yQvC2BGsGC8g9cBegS8WF4+tZbyhPTqXRY3NL Adeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XYw7CGFO//CItwO+VZ/QzzGgwBzkgCzOgnZsxxYoTY4=; b=5H9tNCztfq9tdHAI17sT/YxGwtqZOmrfAI4g32xyqZd7rdtevanHkXCpVnT+dpI3NG 8VglNrWDOL8M1GN7b0mcmluBS5yxVvmnp9KrRK/xS+pdtPfEuJA90mdCijZJEzw9byqF RdP2I8788dd5HUshE75faA0vED4EOc7d8TrsWbpkFIN+awjfpgRVEVY+Dcrjume2Vcm/ cmwp4qiVMpXAB5BcqsmHJx5NS1vMr/yYLwa0DTuoGQxDLVsyvOWUivKXNQqF25YsXT8D Ics58f811wZe1s1mRQYKa5YT7E3vGcriOdOiEAWjGJJYIG1NKH7nxmcvGQfgYlTyDErt gdAw== X-Gm-Message-State: AJIora8U5WVj1kxNDsK7ROKDhauJWlUK0fNq1KeLXOXmPpwrWFXBKZlb XN20x63+/NaRCHL9eMX2GUU= X-Google-Smtp-Source: AGRyM1vVUM1sq3THYxF0+f/5T7IB/yfC/bim5nxm8lDQImUcWMPfgAI5TeGngQaDoMUY2LCxuGReIA== X-Received: by 2002:a1c:7414:0:b0:3a0:201c:5b7f with SMTP id p20-20020a1c7414000000b003a0201c5b7fmr21074157wmc.170.1656346389529; Mon, 27 Jun 2022 09:13:09 -0700 (PDT) Received: from localhost.localdomain ([94.73.36.128]) by smtp.gmail.com with ESMTPSA id c7-20020adffb47000000b0021b9504cc83sm10883600wrs.31.2022.06.27.09.13.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jun 2022 09:13:09 -0700 (PDT) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= To: javierm@redhat.com Cc: davidgow@google.com, dlatypov@google.com, tzimmermann@suse.de, mripard@kernel.org, daniel@ffwll.ch, airlied@linux.ie, maarten.lankhorst@linux.intel.com, jani.nikula@linux.intel.com, maira.canal@usp.br, isabbasso@riseup.net, magalilemes00@gmail.com, tales.aparecida@gmail.com, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH 4/4] drm/format-helper: Add KUnit tests for drm_fb_xrgb8888_to_rgb565() Date: Mon, 27 Jun 2022 18:11:32 +0200 Message-Id: <20220627161132.33256-5-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220627161132.33256-1-jose.exposito89@gmail.com> References: <20220627161132.33256-1-jose.exposito89@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Extend the existing test cases to test the conversion from XRGB8888 to RGB565. The documentation and the color picker available on [1] are useful resources to understand this patch and validate the values returned by the conversion function. [1] http://www.barth-dev.de/online/rgb565-color-picker/ Signed-off-by: Jos=C3=A9 Exp=C3=B3sito Acked-by: Thomas Zimmermann Tested-by: Tales L. Aparecida --- .../gpu/drm/tests/drm_format_helper_test.c | 100 +++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/d= rm/tests/drm_format_helper_test.c index 52dc41cc7c60..3fbe8026bccc 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -48,7 +48,7 @@ struct convert_xrgb8888_case { unsigned int pitch; struct drm_rect clip; const u32 xrgb8888[TEST_BUF_SIZE]; - struct convert_xrgb8888_result results[1]; + struct convert_xrgb8888_result results[3]; }; =20 static struct convert_xrgb8888_case convert_xrgb8888_cases[] =3D { @@ -64,6 +64,26 @@ static struct convert_xrgb8888_case convert_xrgb8888_cas= es[] =3D { .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D false, + }, + .dst_pitch =3D 0, + .expected =3D { 0x00, 0xF8 }, + }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D true, + }, + .dst_pitch =3D 0, + .expected =3D { 0xF8, 0x00 }, + }, }, }, { @@ -81,6 +101,26 @@ static struct convert_xrgb8888_case convert_xrgb8888_ca= ses[] =3D { .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D false, + }, + .dst_pitch =3D 0, + .expected =3D { 0x00, 0xF8 }, + }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D true, + }, + .dst_pitch =3D 0, + .expected =3D { 0xF8, 0x00 }, + }, }, }, { @@ -110,6 +150,36 @@ static struct convert_xrgb8888_case convert_xrgb8888_c= ases[] =3D { 0xFC, 0x1F, }, }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D false, + }, + .dst_pitch =3D 0, + .expected =3D { + 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0xE0, 0x07, + 0x1F, 0x00, 0x1F, 0xF8, + 0xE0, 0xFF, 0xFF, 0x07, + }, + }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D true, + }, + .dst_pitch =3D 0, + .expected =3D { + 0xFF, 0xFF, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0xF8, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, + }, + }, }, }, { @@ -133,6 +203,34 @@ static struct convert_xrgb8888_case convert_xrgb8888_c= ases[] =3D { 0xA0, 0x6D, 0x0A, 0x00, 0x00, }, }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D false, + }, + .dst_pitch =3D 10, + .expected =3D { + 0x33, 0x0A, 0x60, 0x12, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, + 0x8E, 0x6B, 0x33, 0x0A, 0x60, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xA8, 0x8E, 0x6B, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, + }, + }, + { + .dst_format =3D DRM_FORMAT_RGB565, + .has_swab =3D true, + .conv_swab =3D { + .func =3D drm_fb_xrgb8888_to_rgb565, + .swab =3D true, + }, + .dst_pitch =3D 10, + .expected =3D { + 0x0A, 0x33, 0x12, 0x60, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6B, 0x8E, 0x0A, 0x33, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, + 0xA8, 0x00, 0x6B, 0x8E, 0x0A, 0x33, 0x00, 0x00, 0x00, 0x00, + }, + }, }, }, }; --=20 2.25.1