From nobody Wed Feb 11 06:56:57 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 932251DF755 for ; Tue, 10 Feb 2026 17:44:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770745478; cv=pass; b=cVa9U+5Y5us9efrOV/FEwtNf5z5+Oce40o8jROM7Nzej9zJiZ8JdCkcp7LsSscoVdlwpOIpnjq1pC2c0PWSgtl8Ph5C4fmjBMxD+tPSBNjmsL4e0VGJ5r1rZjIKY8482eRoer5Wm3a9XHwao5bapjH9AXnHIXfqJs+/Rt9gF2P4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770745478; c=relaxed/simple; bh=ZlVDrOebMLnAkRmLLuKK3IdG4NpxWMM1uSrfJfPkgjs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cn33YNIgTWaf+WlG7elJn+3PUxLosYVe20nKP4ocLiDrrPhhm1NiBIe36X6tLpXeGxj+BCTKzrdE+MSvLZbBCbO4s0vLSi5rLvLTD4N7iwqdAsR5HOxeMp/xF8y1n+IU89b6GjHICMnc2rls98/TBRsT8xNyd+Fd5FpnkjKjRjM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=UXb3cP1T; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="UXb3cP1T" ARC-Seal: i=1; a=rsa-sha256; t=1770745459; cv=none; d=zohomail.com; s=zohoarc; b=ADy9Ah/jyEJAs50HX5o4Nslb5MGauHR8lPaTxicTkZwhw9c/r9Er3dL+e/Hv+uEFzn2ezc1p14JxukTPJl45npa6pMqHTNa6yszSq8156+glDPltrbt/5NuQk84V7dsiauaXUtlHRrMLMTZlcVPhdzLBdRF1R1THN8j9lDuPlR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770745459; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=LNRovEbtfHkKRh0AXjFuiVuU/ELpmYBmCX00hsih2Nw=; b=YDFNhE530MpOdCGY69R0eLqZpG8Gz/iQ93CuYg6EmGyltj9aGooImQ844MAiiir9U89mtRz12d4QI+hBWMNxBQj/AMBXa9WDMJKiWsWB1but//kcYmb5RhF96N215HRYFa2HARXgWGqGjcI5BoD8ISr4b6RRZlSylVJYG4g3DoE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1770745459; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=LNRovEbtfHkKRh0AXjFuiVuU/ELpmYBmCX00hsih2Nw=; b=UXb3cP1Tzi2JXrMjM5KBB/kaycgYtzrUC3yQy+RvOpIKvOFJA0W2mv9hu8IyC8mr Piai0+Bu06s8dfFO9dnCzrJl9E3u3GNU9o3+B28Ut2X8u605DRJoe4qDccFtYAcrckk RGNDko+DZoJeSrIRAR6+AnF2mE1X+eKyLnUKm504= Received: by mx.zohomail.com with SMTPS id 1770745457657929.5746885085033; Tue, 10 Feb 2026 09:44:17 -0800 (PST) From: Ariel D'Alessandro Date: Tue, 10 Feb 2026 14:44:00 -0300 Subject: [PATCH v2 1/2] drm/vkms: Fix bad matrix offset component multiplication Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260210-vkms-composer-fix-matrix-v2-1-d1ed09cb23e8@collabora.com> References: <20260210-vkms-composer-fix-matrix-v2-0-d1ed09cb23e8@collabora.com> In-Reply-To: <20260210-vkms-composer-fix-matrix-v2-0-d1ed09cb23e8@collabora.com> To: Louis Chauvet , 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, Ariel D'Alessandro X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770745445; l=2157; i=ariel.dalessandro@collabora.com; s=20251223; h=from:subject:message-id; bh=ZlVDrOebMLnAkRmLLuKK3IdG4NpxWMM1uSrfJfPkgjs=; b=Zo+xvizGvZOUeRZjRkG0WgfpUvFG9gf9oD8w3xi+TP5xB7hzod0b1lVGmf8QzPjvx8y0MWcdp BOVpTI2l+p4CH1VcvPg1fZ/+58lFzcn3p1egwH2P4hHfJWyVeXXgXvW X-Developer-Key: i=ariel.dalessandro@collabora.com; a=ed25519; pk=QZRL9EsSBV3/FhDHi9L/7ZTz2dwa7iyqgl+y1UYaQXQ= X-ZohoMailClient: External 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 --- 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/vk= ms_composer.c index cd85de4ffd03d..d53ea4189c97b 100644 --- a/drivers/gpu/drm/vkms/vkms_composer.c +++ b/drivers/gpu/drm/vkms/vkms_composer.c @@ -17,6 +17,8 @@ #include "vkms_composer.h" #include "vkms_luts.h" =20 +#define UNORM_16BIT_ONE (1ULL << 16) + static u16 pre_mul_blend_channel(u16 src, u16 dst, u16 alpha) { u32 new_color; @@ -139,20 +141,25 @@ VISIBLE_IF_KUNIT void apply_3x4_matrix(struct pixel_a= rgb_s32 *pixel, g =3D drm_int2fixp(pixel->g); b =3D drm_int2fixp(pixel->b); =20 + /* + * 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 =3D 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_16BI= T_ONE)); =20 gf =3D 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_16BI= T_ONE)); =20 bf =3D 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_16B= IT_ONE)); =20 pixel->r =3D drm_fixp2int_round(rf); pixel->g =3D drm_fixp2int_round(gf); --=20 2.51.0