From mboxrd@z Thu Jan 1 00:00:00 1970 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E8DF8EB26F3 for ; Tue, 10 Feb 2026 17:44:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4B5F310E5E7; Tue, 10 Feb 2026 17:44:32 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="UXb3cP1T"; dkim-atps=neutral Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) by gabe.freedesktop.org (Postfix) with ESMTPS id A54F510E5E7 for ; Tue, 10 Feb 2026 17:44:30 +0000 (UTC) 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 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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/vkms_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" +#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_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); -- 2.51.0