From nobody Wed Apr 15 04:15:16 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 105ECC00144 for ; Tue, 26 Jul 2022 23:09:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239947AbiGZXJd (ORCPT ); Tue, 26 Jul 2022 19:09:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239844AbiGZXJa (ORCPT ); Tue, 26 Jul 2022 19:09:30 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3539D1AF1A for ; Tue, 26 Jul 2022 16:09:29 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id v13so14248247wru.12 for ; Tue, 26 Jul 2022 16:09:29 -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=+WjHwX17IyVtE8JB1105eRfVv2sAKL5cPl31La/xOQo=; b=VGK4nGWHPp+fpD4KWPsFdVLzQoUwu3AS2ZsPPS1d9SDhBhj4jsgK1a7w4mr+kiRkVk sV7TSqPh4d6SYELXugNc5Mfxum2KHCm8lFD/01gYXW6nAcSDeg0RO8OzNPA5FOOqa05Q uK1doUC+LZxBh2JvADCr/aUKb44C1/HMSu105vww/VzpGa1cG1pE3t2ZGTCL0fpowSL0 aDKIa5XiEpnEhMERgglzPkq9wEMMscvQ4UGkllAI4EHWy3cn0d0U9WlT1Ewf+xLAjrh2 /5mycI6+I2DWcUo+3+pqTJdBA6s0BnnCdzza9UfjvVdUogQxTqoB3bPIkc+rI3lBg/B+ vJkA== 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=+WjHwX17IyVtE8JB1105eRfVv2sAKL5cPl31La/xOQo=; b=KYFE9vNPi4QV9L2b72nS5Yli8Jf6kvDevf1BgQBcIjAUiTRvtpeYjEsUqa5JltxevV TyMAqdhIoSd5eu+LvJQs+vtn+wuNQHVfSHF0AZ2lX2+ZEuG4xIGqcm6baE4z6o2EAGxZ qQGJbrcmDEWnrb/ApIEfLKDzoYjwbynDN5s1h5/SNKdru2b0w79tKB+AqxdMAaADA0M5 2a0yHJpBcAwXDatNfU001yOM2U3gsF8PJ5PYJ8rLpC/HSlRw3NbjzypedGHQZ8keaIRL chKCuH3JHn1aZEbWq81cqY8dreM+6Q7Qx7Lt+04skCmnN41uxMb+qdvVPP53qUMB8GqJ nrvw== X-Gm-Message-State: AJIora91lgX1647JVKy4Tb81zMw2KFyoOCMVCr8q9gVM81z4uTc4hpfl RUnnlakC8wa+04gHmynNxkQ= X-Google-Smtp-Source: AGRyM1v/fQQzGFvnnr7oKrY5P9zFJMTTvyjTxfnbA8sJj+wpsxKlBRi5cRJ61oLJ48N2T6oZihddRg== X-Received: by 2002:adf:e70e:0:b0:21d:7f90:7501 with SMTP id c14-20020adfe70e000000b0021d7f907501mr11552680wrm.447.1658876967632; Tue, 26 Jul 2022 16:09:27 -0700 (PDT) Received: from localhost.localdomain ([94.73.33.57]) by smtp.gmail.com with ESMTPSA id bn20-20020a056000061400b0021e86504736sm7278533wrb.16.2022.07.26.16.09.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 16:09:27 -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, geert@linux-m68k.org, 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 v3 1/4] drm/format-helper: Fix test on big endian architectures Date: Wed, 27 Jul 2022 01:09:13 +0200 Message-Id: <20220726230916.390575-2-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220726230916.390575-1-jose.exposito89@gmail.com> References: <20220726230916.390575-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 fail on big endian architectures, like PowerPC: $ ./tools/testing/kunit/kunit.py run \ --kunitconfig=3Ddrivers/gpu/drm/tests \ --arch=3Dpowerpc --cross_compile=3Dpowerpc64-linux-gnu- Transform the XRGB8888 buffer from little endian to the CPU endian before calling the conversion function to avoid this error. Fixes: 8f456104915f ("drm/format-helper: Add KUnit tests for drm_fb_xrgb888= 8_to_rgb332()") Reported-by: David Gow Reviewed-by: David Gow Signed-off-by: Jos=C3=A9 Exp=C3=B3sito --- .../gpu/drm/tests/drm_format_helper_test.c | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 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..eefaba3aaea2 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -111,6 +111,21 @@ static size_t conversion_buf_size(u32 dst_format, unsi= gned int dst_pitch, return dst_pitch * drm_rect_height(clip); } =20 +static u32 *le32buf_to_cpu(struct kunit *test, const u32 *buf, size_t buf_= size) +{ + u32 *dst =3D NULL; + int n; + + dst =3D kunit_kzalloc(test, sizeof(*dst) * buf_size, GFP_KERNEL); + if (!dst) + return NULL; + + for (n =3D 0; n < buf_size; n++) + dst[n] =3D le32_to_cpu((__force __le32)buf[n]); + + return dst; +} + static void xrgb8888_to_rgb332_case_desc(struct xrgb8888_to_rgb332_case *t, char *desc) { @@ -125,6 +140,7 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) const struct xrgb8888_to_rgb332_case *params =3D test->param_value; size_t dst_size; __u8 *dst =3D NULL; + __u32 *src =3D NULL; =20 struct drm_framebuffer fb =3D { .format =3D drm_format_info(DRM_FORMAT_XRGB8888), @@ -138,8 +154,11 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) 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, - &fb, ¶ms->clip); + src =3D le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, src); + + drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, src, &fb, + ¶ms->clip); KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0); } =20 --=20 2.25.1 From nobody Wed Apr 15 04:15:16 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 845A0C00144 for ; Tue, 26 Jul 2022 23:09:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239990AbiGZXJk (ORCPT ); Tue, 26 Jul 2022 19:09:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57312 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239844AbiGZXJf (ORCPT ); Tue, 26 Jul 2022 19:09:35 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BDC3D2ED56 for ; Tue, 26 Jul 2022 16:09:33 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id h9so22066849wrm.0 for ; Tue, 26 Jul 2022 16:09:33 -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=IXBbfu9mH+3+82kkU4IAZXAEpzI0pj7x/+D2ozToh5w=; b=NPv3yuIQbsQLMH7RsnBBqh/qdJLdGbIa0IDae1WJu0k0Lgagakni4QySN5ufrp9P4O sif0hRkblEt+rTBcvEIy4EXFb1WBRinXkxxKwELgZhAuF3wt8CKBGG60r8oI4LgsWdGP 87+sKBoWp94lRiKoeqTo44xD4MmmfXXtpdRi8GKy9rSfSgQWGzDuh31GY4qmgQZxoYpO iJBEqJlUr+iGd0uacoQAaB/ovVyJ2T5cAa9lPce8RRqiVa7ygPtXQynKgkTZKmrsfAls jOPBIt5JfsDT8Yo3z8LFnLmWpOwRXB7JJqC0dlmEUGgML9uCFX6kpCaN7FHfsfW1Mq5E VASA== 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=IXBbfu9mH+3+82kkU4IAZXAEpzI0pj7x/+D2ozToh5w=; b=nIsYPIE4HfwnhkA+G9YBCQXF5DsBEC0P2hbVckCujalK4DAuBVAt90/M74bBb50zZD zxfeP21n0MIqzDS4YqeXW6Z0mAAxny1LivfRN/rIQ3PngtZJQ3jw7ZoquLL7LrSCBSRr s0UFmT1kWwjVPYt2SwNms5FkbaFbbImD+bcHg7/DcXldyYtQK+57szp9nPqa1UVGaWD1 Tda1V2iASrS4sXcwqbuWwcFRMbvF44Kzbsn9OqA3v8CtagfyPZv1y0awXSxFnMIWY/5i yXcuAiDMLsrtfe8v6+46NX5MDvmdrS2YrzxOoYF9k5Xxg8Zbpqe05zFTsltS6AvLfKUg orAQ== X-Gm-Message-State: AJIora9wYS4lJIeMMMvBwW8eiWLVfECTSikm1gxoqyV9XpWZGSTTfurO GlmFWVJVcz1NAw4R1UIftl4= X-Google-Smtp-Source: AGRyM1tWEYsb37uk6QjZIBeHdz8zdF3zgTaiG38PwXMzYHyAoZm5sRjiG4hj2tmDVSOwHofPYB7brg== X-Received: by 2002:a5d:64ec:0:b0:21e:92fe:ac77 with SMTP id g12-20020a5d64ec000000b0021e92feac77mr5802206wri.24.1658876972259; Tue, 26 Jul 2022 16:09:32 -0700 (PDT) Received: from localhost.localdomain ([94.73.33.57]) by smtp.gmail.com with ESMTPSA id bn20-20020a056000061400b0021e86504736sm7278533wrb.16.2022.07.26.16.09.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 16:09:32 -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, geert@linux-m68k.org, 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 v3 2/4] drm/format-helper: Rename test cases to make them more generic Date: Wed, 27 Jul 2022 01:09:14 +0200 Message-Id: <20220726230916.390575-3-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220726230916.390575-1-jose.exposito89@gmail.com> References: <20220726230916.390575-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 conversions 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_*. Tested-by: Tales L. Aparecida Acked-by: Thomas Zimmermann Reviewed-by: David Gow Signed-off-by: Jos=C3=A9 Exp=C3=B3sito --- drivers/gpu/drm/tests/drm_format_helper_test.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 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 eefaba3aaea2..97fccd0a948b 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, @@ -126,18 +126,18 @@ static u32 *le32buf_to_cpu(struct kunit *test, const = u32 *buf, size_t buf_size) return dst; } =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) { - 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; __u32 *src =3D NULL; @@ -163,8 +163,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(xrgb8888_to_rgb332_test, convert_xrgb8888_gen_params), {} }; =20 --=20 2.25.1 From nobody Wed Apr 15 04:15:16 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 8D4F6C19F29 for ; Tue, 26 Jul 2022 23:09:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240000AbiGZXJo (ORCPT ); Tue, 26 Jul 2022 19:09:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239953AbiGZXJj (ORCPT ); Tue, 26 Jul 2022 19:09:39 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6FD339BA6 for ; Tue, 26 Jul 2022 16:09:37 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id w8-20020a05600c014800b003a32e89bc4eso143592wmm.5 for ; Tue, 26 Jul 2022 16:09:37 -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=7LYSq8hx22ya/0Q3RDvIrYgbye9rn19b0dTSWrS2MZM=; b=WJpJeqqBlqEKk0b1mJ5CveY8VUPsEHlGwStJlju/fjlQIqyBtyY3i9Nkaw+YpjqgO0 tSbd2o1UUpgIdJabjsf027FDVfMI5J9Hx9vfQ4Ci5R3ig5DOT3Yv01xIIBozDJjcmGnv sxScyjPM0t9QkJzI1wXgs3nq/gFrT5QHaBiotFK623XlcYyUOLWYYjpx9p4s8tIiSFgV N91vIbhhXy/zUh3ueEpfyvpm47jknl8pk5vjSgB/V9eD9c161oumNDq0rPPnIwsxfOfo pfkduQMCIlIVRoOaJBDqazfLRN40b7mnzC8JqPkrO7Ye0EKQihXyiMTDxECQ5fLuSlO9 0Vgg== 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=7LYSq8hx22ya/0Q3RDvIrYgbye9rn19b0dTSWrS2MZM=; b=lRMUMRHM9jNE1OUaKVeylQZM/8h0eiITkhVgd7Kj0EWcFZUNWEz8II/D0EQXTGumI6 HLppGqm50dR1L/LTRliYqM6qVNcrIGdTeCM/IDwBsTSWKj+QNBPOcFRqVseQN8a/am8i qEpCS4OzcBf/wnqueT6quIlqU6jAkpdw3jApRRLYEwtFCj+olKUkCJNbQL1Erp7GNE8L dwVTf9cOp64blme1Se2+VtRDU6eeghNOFhXDltUAAayhIS0v1cT85OUUiYDjfv5k0h9V itB1cV2Fp8dpX9g2KDDfqzK/KWAYWH/ccWt7dz7kbT++VKyxvPOjx2mCyWSL3ZsYm04g JtHQ== X-Gm-Message-State: AJIora+X8Q1LJcgXih+lS3A4ziRZUPEq1fB1IR4i4QmtXRulHETS/tyn 6xoMb00h2y3acvtDKtuzICo= X-Google-Smtp-Source: AGRyM1vKbx3uskTJG4AMUYgWTzQlKU/ObH5liOKJRFdwjqBSWmpqBt2RoO2l9iwU1IggMhb5832kdQ== X-Received: by 2002:a7b:c391:0:b0:3a3:2f22:7bf6 with SMTP id s17-20020a7bc391000000b003a32f227bf6mr903333wmj.96.1658876975722; Tue, 26 Jul 2022 16:09:35 -0700 (PDT) Received: from localhost.localdomain ([94.73.33.57]) by smtp.gmail.com with ESMTPSA id bn20-20020a056000061400b0021e86504736sm7278533wrb.16.2022.07.26.16.09.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 16:09:35 -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, geert@linux-m68k.org, 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 v3 3/4] drm/format-helper: Support multiple target formats results Date: Wed, 27 Jul 2022 01:09:15 +0200 Message-Id: <20220726230916.390575-4-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220726230916.390575-1-jose.exposito89@gmail.com> References: <20220726230916.390575-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 destination pitch and the expected result in its own structure. Tested-by: Tales L. Aparecida Acked-by: Thomas Zimmermann Reviewed-by: David Gow Signed-off-by: Jos=C3=A9 Exp=C3=B3sito --- .../gpu/drm/tests/drm_format_helper_test.c | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 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 97fccd0a948b..bbe9e9f57e2b 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -16,34 +16,42 @@ =20 #define TEST_BUF_SIZE 50 =20 +struct convert_to_rgb332_result { + unsigned int dst_pitch; + const u8 expected[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_to_rgb332_result rgb332_result; }; =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 }, + .rgb332_result =3D { + .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 }, + .rgb332_result =3D { + .dst_pitch =3D 0, + .expected =3D { 0xE0 }, + }, }, { /* Well known colors: White, black, red, green, blue, magenta, @@ -52,7 +60,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 +68,33 @@ 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, + .rgb332_result =3D { + .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, + .rgb332_result =3D { + .dst_pitch =3D 5, + .expected =3D { + 0x0A, 0x08, 0xA0, 0x00, 0x00, + 0x6D, 0x0A, 0x08, 0x00, 0x00, + 0xA0, 0x6D, 0x0A, 0x00, 0x00, + }, }, }, }; @@ -138,6 +150,7 @@ KUNIT_ARRAY_PARAM(convert_xrgb8888, convert_xrgb8888_ca= ses, static void xrgb8888_to_rgb332_test(struct kunit *test) { const struct convert_xrgb8888_case *params =3D test->param_value; + const struct convert_to_rgb332_result *result =3D ¶ms->rgb332_result; size_t dst_size; __u8 *dst =3D NULL; __u32 *src =3D NULL; @@ -147,7 +160,7 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) .pitches =3D { params->pitch, 0, 0 }, }; =20 - dst_size =3D conversion_buf_size(DRM_FORMAT_RGB332, params->dst_pitch, + dst_size =3D conversion_buf_size(DRM_FORMAT_RGB332, result->dst_pitch, ¶ms->clip); KUNIT_ASSERT_GT(test, dst_size, 0); =20 @@ -157,9 +170,9 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) src =3D le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, src); =20 - drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, src, &fb, + drm_fb_xrgb8888_to_rgb332(dst, result->dst_pitch, src, &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 Wed Apr 15 04:15:16 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 8A4CEC00144 for ; Tue, 26 Jul 2022 23:09:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240021AbiGZXJu (ORCPT ); Tue, 26 Jul 2022 19:09:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239986AbiGZXJn (ORCPT ); Tue, 26 Jul 2022 19:09:43 -0400 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5BD3033425 for ; Tue, 26 Jul 2022 16:09:41 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id 8-20020a05600c024800b003a2fe343db1so147882wmj.1 for ; Tue, 26 Jul 2022 16:09:41 -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=oIjUYYBOwxHZn2ecu0MuwO5iaRLwywmUHAZ/RS0frQw=; b=PqZn57nRt/sCz7jZKRta1WifqaGU2h37re/DwH9LCZBTRxoNWTI++D2Dp3kj2ysqiM LYtTKrDQhzwYN1/YjfK2/wDy472NHnQFPN4TdMrOwoLRD9rYniY/s/nKHEDtz38mM4bi bkNe0Cj6GFp6EBAju3sxhRXizbUq/k4czy2U/eoD1H5u9KQKcNdBKnC321c3NqmyqNJJ +b4QfLC6LRWCwLHGylL3CkmbwcNhyn+KuaQjHo0ehtaOSjylgDG0zy/mzukLmHhJMiHx +odLlZdoIVxtWnM4Kd/IOJbH7oJAGd1jge5fBcnhy3pyFOqXjKAcoxWxkFQ0Oe8C89eS 3xnA== 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=oIjUYYBOwxHZn2ecu0MuwO5iaRLwywmUHAZ/RS0frQw=; b=e8Dc1qIatl3reZS2MwwAoFhIzYCq7XV59YFgAsGsO8TMds66dSv3MPcTg2wRXepAKe r54u86OwhT/wSGnindpee9PudEr6qXfI9JCiXNsyBTweuVDNfaioRYZMTqa2Ks/EVXZ/ 4DnAttYrC92vPVD/lyh3rdgZ7K9927okszXtgj6x2KQRCSyM/sS/1Jia4M63mqqnRdHA Ug7QKG8fqgPC2cuMuPBJLQijnhTgFoGYpR90aLSLZ/QNiwCQceM+IZC8CKqousJ4sx8u tICZiPHZrZpJwWXzCV3aN094LzmznsVwIhBOBRa7152n0FeMbCcZb+9sFMUpmlE28jRN LDaQ== X-Gm-Message-State: AJIora9Kr0t/+V7KIgLQyhZSh0Z9JXHfrCHxMBpvAse6u0G3mNHonbz5 c5B2Bkm26bzBgm3mLd1xjBM= X-Google-Smtp-Source: AGRyM1tFLDABFVLuRLqINt1PGPt0nzQwUF/dvYsheoH0cu1MNlLHcJRKMS2POHcSl1iiA+F0/AolnA== X-Received: by 2002:a05:600c:2056:b0:3a3:2cf8:ec9 with SMTP id p22-20020a05600c205600b003a32cf80ec9mr870387wmg.51.1658876979381; Tue, 26 Jul 2022 16:09:39 -0700 (PDT) Received: from localhost.localdomain ([94.73.33.57]) by smtp.gmail.com with ESMTPSA id bn20-20020a056000061400b0021e86504736sm7278533wrb.16.2022.07.26.16.09.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 16:09:39 -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, geert@linux-m68k.org, 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 v3 4/4] drm/format-helper: Add KUnit tests for drm_fb_xrgb8888_to_rgb565() Date: Wed, 27 Jul 2022 01:09:16 +0200 Message-Id: <20220726230916.390575-5-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220726230916.390575-1-jose.exposito89@gmail.com> References: <20220726230916.390575-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. Tested-by: Tales L. Aparecida Acked-by: Thomas Zimmermann Reviewed-by: David Gow Signed-off-by: Jos=C3=A9 Exp=C3=B3sito Link: http://www.barth-dev.de/online/rgb565-color-picker/ # [1] --- .../gpu/drm/tests/drm_format_helper_test.c | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/d= rm/tests/drm_format_helper_test.c index bbe9e9f57e2b..26ecf3b4b137 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -21,12 +21,19 @@ struct convert_to_rgb332_result { const u8 expected[TEST_BUF_SIZE]; }; =20 +struct convert_to_rgb565_result { + unsigned int dst_pitch; + const u16 expected[TEST_BUF_SIZE]; + const u16 expected_swab[TEST_BUF_SIZE]; +}; + struct convert_xrgb8888_case { const char *name; unsigned int pitch; struct drm_rect clip; const u32 xrgb8888[TEST_BUF_SIZE]; struct convert_to_rgb332_result rgb332_result; + struct convert_to_rgb565_result rgb565_result; }; =20 static struct convert_xrgb8888_case convert_xrgb8888_cases[] =3D { @@ -39,6 +46,11 @@ static struct convert_xrgb8888_case convert_xrgb8888_cas= es[] =3D { .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, + .rgb565_result =3D { + .dst_pitch =3D 0, + .expected =3D { 0xF800 }, + .expected_swab =3D { 0x00F8 }, + }, }, { .name =3D "single_pixel_clip_rectangle", @@ -52,6 +64,11 @@ static struct convert_xrgb8888_case convert_xrgb8888_cas= es[] =3D { .dst_pitch =3D 0, .expected =3D { 0xE0 }, }, + .rgb565_result =3D { + .dst_pitch =3D 0, + .expected =3D { 0xF800 }, + .expected_swab =3D { 0x00F8 }, + }, }, { /* Well known colors: White, black, red, green, blue, magenta, @@ -77,6 +94,21 @@ static struct convert_xrgb8888_case convert_xrgb8888_cas= es[] =3D { 0xFC, 0x1F, }, }, + .rgb565_result =3D { + .dst_pitch =3D 0, + .expected =3D { + 0xFFFF, 0x0000, + 0xF800, 0x07E0, + 0x001F, 0xF81F, + 0xFFE0, 0x07FF, + }, + .expected_swab =3D { + 0xFFFF, 0x0000, + 0x00F8, 0xE007, + 0x1F00, 0x1FF8, + 0xE0FF, 0xFF07, + }, + }, }, { /* Randomly picked colors. Full buffer within the clip area. */ @@ -96,6 +128,19 @@ static struct convert_xrgb8888_case convert_xrgb8888_ca= ses[] =3D { 0xA0, 0x6D, 0x0A, 0x00, 0x00, }, }, + .rgb565_result =3D { + .dst_pitch =3D 10, + .expected =3D { + 0x0A33, 0x1260, 0xA800, 0x0000, 0x0000, + 0x6B8E, 0x0A33, 0x1260, 0x0000, 0x0000, + 0xA800, 0x6B8E, 0x0A33, 0x0000, 0x0000, + }, + .expected_swab =3D { + 0x330A, 0x6012, 0x00A8, 0x0000, 0x0000, + 0x8E6B, 0x330A, 0x6012, 0x0000, 0x0000, + 0x00A8, 0x8E6B, 0x330A, 0x0000, 0x0000, + }, + }, }, }; =20 @@ -175,8 +220,41 @@ static void xrgb8888_to_rgb332_test(struct kunit *test) KUNIT_EXPECT_EQ(test, memcmp(dst, result->expected, dst_size), 0); } =20 +static void xrgb8888_to_rgb565_test(struct kunit *test) +{ + const struct convert_xrgb8888_case *params =3D test->param_value; + const struct convert_to_rgb565_result *result =3D ¶ms->rgb565_result; + size_t dst_size; + __u16 *dst =3D NULL; + __u32 *src =3D NULL; + + struct drm_framebuffer fb =3D { + .format =3D drm_format_info(DRM_FORMAT_XRGB8888), + .pitches =3D { params->pitch, 0, 0 }, + }; + + dst_size =3D conversion_buf_size(DRM_FORMAT_RGB565, result->dst_pitch, + ¶ms->clip); + KUNIT_ASSERT_GT(test, dst_size, 0); + + dst =3D kunit_kzalloc(test, dst_size, GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst); + + src =3D le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, src); + + drm_fb_xrgb8888_to_rgb565(dst, result->dst_pitch, src, &fb, + ¶ms->clip, false); + KUNIT_EXPECT_EQ(test, memcmp(dst, result->expected, dst_size), 0); + + drm_fb_xrgb8888_to_rgb565(dst, result->dst_pitch, src, &fb, + ¶ms->clip, true); + KUNIT_EXPECT_EQ(test, memcmp(dst, result->expected_swab, dst_size), 0); +} + static struct kunit_case drm_format_helper_test_cases[] =3D { KUNIT_CASE_PARAM(xrgb8888_to_rgb332_test, convert_xrgb8888_gen_params), + KUNIT_CASE_PARAM(xrgb8888_to_rgb565_test, convert_xrgb8888_gen_params), {} }; =20 --=20 2.25.1