From nobody Sun Feb 8 19:43:21 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 31ED62EB5A9 for ; Tue, 23 Dec 2025 17:27:11 +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=1766510833; cv=pass; b=blTOG9ElXw5ix3ZpnU1vkpob8MwPtNmLXb/kyZb7LKUHWIMWEMCV0sULouDYLLJc68NBFqSCCfm2AZpeQwbjbhSHWvvmI1+zJyUuOtF+VGYRI4AMjICl/4u4AaTcEYNwWUK0/167WJFjtBT9pxH4qmFPl2/uy2IWw0aABBjsstU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766510833; c=relaxed/simple; bh=te5JoBOoO2ln/kaCmdP6CNfZrv+kLN9FDHEWyzgmYgk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=L7Hyt6XV8cLw0gv98MC+qC3CBHwlMpEA49kXHYJZRsyK/4zzXcaQbCC97zSPq2wQ9K7jT5clRDvVUEBpYuGDJbMNlBy7ex3s6Q+UI2kGi2nFDfC9CEDJtQjFF8ksLIeJC2E0BoB9EiOMYXkszhiBEGLsJXQKJtCTs+AE//gSdI8= 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=L6PrntAV; 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="L6PrntAV" ARC-Seal: i=1; a=rsa-sha256; t=1766510803; cv=none; d=zohomail.com; s=zohoarc; b=egWZHmnzc3J7lObUIelC6uYRuB5G5H1ztjVWp70wPsqCaEDHh20yvKA+UyQRuQuz2g9pg6mANmuyBm4MDOY14tKm3TPWCcFxXgOn2cy6EM+yidMW4UUg/ENQD4ij2j34Wr9T4pCXlK7CDwtTlVSXt/24P107zwwfhYEY8X3nzQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766510803; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=WUBV8oVBo8F9MudR+/uDu6KurkKTKBJOcrGHgxEOma4=; b=evp6GH0c5uznM7qRFjqPwYJNwjdyYcWuX3xETiz6yieKDh0NUBk+GjlUvBMWfHetP5/n9ZwpGrqQa/c/hPdvmPrYDEtaDntQtCES511oILE9bSdAXPQ8gvdsokgxjuU1rJDWlTNx8vd3KI9bs/Y6xPHqgOMP2cGSOMeDVwM+wBM= 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=1766510803; 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:To:To:Cc:Cc:Reply-To; bh=WUBV8oVBo8F9MudR+/uDu6KurkKTKBJOcrGHgxEOma4=; b=L6PrntAV6hiLwyxZ0t4/T1ldX3shp4tT4eLO/xMrBa4IM/gUKWPZMruoC10e6nDs cLT9bWeCDLJyDCXF/J5GJfmxINeEs5jcEJrqVULT4TX9fONtwC69llFbef8zSVHdo96 FfjjQ3ypAOuIb4yaiC4iUdxcSX/yVlWG4Gj4kteY= Received: by mx.zohomail.com with SMTPS id 176651080104023.472570699014568; Tue, 23 Dec 2025 09:26:41 -0800 (PST) From: Ariel D'Alessandro Date: Tue, 23 Dec 2025 14:26:33 -0300 Subject: [PATCH] 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: <20251223-vkms-composer-fix-matrix-v1-1-10a979e06209@collabora.com> X-B4-Tracking: v=1; b=H4sIAMjQSmkC/yWNwQrDIBBEf0X23IVq4iH5lZKDtZt2KWqqNgRC/ r2behreDDOzQ6HMVGBUO2RauXCKAvqiwL9cfBLyQxjM1VhtTIfrOxT0KSxJmjjzhsHVLOKc8Xb o5t5qC1JfMkn6n75NjTN9vvJQmwl3V+icClxHFWmr2F70ANNx/AALPjNnmwAAAA== X-Change-ID: 20251223-vkms-composer-fix-matrix-aa2c593f4515 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=1766510795; l=2339; i=ariel.dalessandro@collabora.com; s=20251223; h=from:subject:message-id; bh=te5JoBOoO2ln/kaCmdP6CNfZrv+kLN9FDHEWyzgmYgk=; b=p/5n4Nqjj1yEHjm33jjFef3SBQKScGCzVE/6uPE5jtOLjtMZ6tOkCa/yAQpGJ4o86IMN6QauJ Xx12nx0nm37Dllot0SoXx3SuThpEbh619Yj+qWnDplxS7eVbK95Tst6 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 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" =20 +#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_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); --- base-commit: b96bcfba104c65db41378a04f5ccac186f79578f change-id: 20251223-vkms-composer-fix-matrix-aa2c593f4515 Best regards, --=20 Ariel D'Alessandro