From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D4EBB67A for ; Mon, 29 Dec 2025 09:33:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767000827; cv=none; b=rHJEikqXNQUcfpbu+x73oBgGfXY+r5MsYrndaLqRqh9ATVfjNr7fa5E8qcj1H1OAqxXv0CVTtQWLAzle+OjfrL1rdktYKX6ob+PdV/4h7dB+ijpEYgdXNhXzmmREGr6Y6EkYbvGI52BVMD3QVVrcNrr+Tvtpd+bHE1MLa2d88qg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767000827; c=relaxed/simple; bh=2ByPXtqE8fbZE1SKwR/gPXjmDaWJxcN8oQisSrJcoCg=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=AbCfjYD+M/Pk579cCayOzllsHKaXmboGFIPOUENZUmqDG12EDN5lyUO99Hk7aqLBrK767u6NUueuq0dFFjTZ9MI8SFo9rZzdC5QcWm0IbYZi4aGEDI1MnLwzcV93514DCfdagABgD6ivwsf3Y5FAWx6FOuJbGqVx1oOUMLFXubQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=vKAjmQd9; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="vKAjmQd9" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 999DE1A24E4; Mon, 29 Dec 2025 09:33:42 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 6D04A60725; Mon, 29 Dec 2025 09:33:42 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 70223102F0BB1; Mon, 29 Dec 2025 10:33:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767000821; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:content-language:in-reply-to:references; bh=00boEsv9PDFg6y37EpXpHLrQ2HtnkgcOqXBtnTsxSds=; b=vKAjmQd9DX1CF8fe1Ey2bextcb4oZvCucvGCHW7jj1Sa6IY/Rv7+/Ak5J835CpAzfBij3o WwUzVfBvt4zFe4NLItzuivvmd369IUSdRjgu05bqpddfeHOUwiy6r3h7mueZZhs1X984Yp 1DoSgD2LDVlLdivfhjHQ9OV7ejsndhP3uHdhqW1i7863QZQIrjK5nKEfhoBswK75oHnS+w dz5QIefhXMCH56tKu1KF+OeRDsRpP5RO0qsoi1Xs0c52Cg6FklFS4KPlc57xybZePtR6XN UH30xLDTKahqKtmrmOKV1d7tXrKZzvQOL3VtneglVBKpnBJr8M018okwutMs8g== Message-ID: <28d9f246-8952-4f03-94bc-60eadca78c2f@bootlin.com> Date: Mon, 29 Dec 2025 10:33:53 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] drm/vkms: Fix bad matrix offset component multiplication To: Ariel D'Alessandro , Haneen Mohammed , Simona Vetter , Melissa Wen , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nfraprado@collabora.com, pekka.paalanen@collabora.com, daniels@collabora.com, kernel@collabora.com References: <20251223-vkms-composer-fix-matrix-v1-1-10a979e06209@collabora.com> From: Louis Chauvet Content-Language: en-US In-Reply-To: <20251223-vkms-composer-fix-matrix-v1-1-10a979e06209@collabora.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Last-TLS-Session-Version: TLSv1.3 On 12/23/25 18:26, Ariel D'Alessandro wrote: > Pixels values are packed as 16-bit UNORM values, so the matrix offset > components must be multiplied properly by the idempotent element -i.e. > number 1 encoded as 16-bit UNORM-. > > Signed-off-by: Ariel D'Alessandro Hi, Thanks for this patch! How did you catch the issue? If you have an example of failing color conversion, can you add a test case in vkms_color_test? Thanks, Louis Chauvet > --- > drivers/gpu/drm/vkms/vkms_composer.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c > index 3cf3f26e0d8ea..efdaf665435d9 100644 > --- a/drivers/gpu/drm/vkms/vkms_composer.c > +++ b/drivers/gpu/drm/vkms/vkms_composer.c > @@ -16,6 +16,8 @@ > #include "vkms_composer.h" > #include "vkms_luts.h" > > +#define UNORM_16BIT_ONE (1ULL << 16) > + > static u16 pre_mul_blend_channel(u16 src, u16 dst, u16 alpha) > { > u32 new_color; > @@ -138,20 +140,25 @@ VISIBLE_IF_KUNIT void apply_3x4_matrix(struct pixel_argb_s32 *pixel, > g = drm_int2fixp(pixel->g); > b = drm_int2fixp(pixel->b); > > + /* > + * Pixels values are packed as 16-bit UNORM values, so the matrix offset > + * components must be multiplied properly by the idempotent element -i.e. > + * number 1 encoded as 16-bit UNORM-. > + */ > rf = drm_fixp_mul(drm_sm2fixp(matrix->matrix[0]), r) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[1]), g) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[2]), b) + > - drm_sm2fixp(matrix->matrix[3]); > + drm_fixp_mul(drm_sm2fixp(matrix->matrix[3]), drm_int2fixp(UNORM_16BIT_ONE)); > > gf = drm_fixp_mul(drm_sm2fixp(matrix->matrix[4]), r) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[5]), g) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[6]), b) + > - drm_sm2fixp(matrix->matrix[7]); > + drm_fixp_mul(drm_sm2fixp(matrix->matrix[7]), drm_int2fixp(UNORM_16BIT_ONE)); > > bf = drm_fixp_mul(drm_sm2fixp(matrix->matrix[8]), r) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[9]), g) + > drm_fixp_mul(drm_sm2fixp(matrix->matrix[10]), b) + > - drm_sm2fixp(matrix->matrix[11]); > + drm_fixp_mul(drm_sm2fixp(matrix->matrix[11]), drm_int2fixp(UNORM_16BIT_ONE)); > > pixel->r = drm_fixp2int_round(rf); > pixel->g = drm_fixp2int_round(gf); > > --- > base-commit: b96bcfba104c65db41378a04f5ccac186f79578f > change-id: 20251223-vkms-composer-fix-matrix-aa2c593f4515 > > Best regards,