Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp8584386ybi; Tue, 9 Jul 2019 19:08:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqzZqRlnWjsu9ynFoAuSjfyiz4w2lHq+5umvCpiJiVnwntQ7o7hURd93LfX0JLyyWlANimST X-Received: by 2002:a17:902:44e:: with SMTP id 72mr35831680ple.326.1562724495798; Tue, 09 Jul 2019 19:08:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562724495; cv=none; d=google.com; s=arc-20160816; b=GQb2deNFzNXNJv49uW/P7magcK1yyv4IbYfnsY5d0niJnXpKuZ2Pqi0SNCusY40jFL 1A1ZRg3AVtC4IPiaEqHxu9qDXZGSsUFjYxObh6kEqRFSb/w4JXfkscM5A8D7saxnXsnG j0A6sokaFRUsOYzPU/ll7Qp8BofzxB8hJzNrEhdv74KBR3wGDqkCGJ0ZrNioyoRJqZRD u58TVg/AcUg20X8JSB8FTGvh1zENpyDUWgOcH/o5U+VGb9OAqV+lzs/1UKNflNhMDBeu NrvpoccOSrL1lIwFkqOZ8QxVKkjBwfoZ7kTT94Rctnrb2nRm9QTnhVgJHVYWhs0yKVIY hA4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=Rl/l0lv/RtftyGXlBncrpuyucSyNxpAjwoNFIcH2g3s=; b=vFcYD03DlNKuarhVxywdMCKoQPXLJNb8yEKkXm3OvBkQTjmxsxE84SGd+LY8MGBcGF WiLlGfJ0rS8JEfbV7eCbyx7NSn4D5i9pmj+FZU5tWbib3A6wabjJvGKCNYXZGJuDQbfo STj4drKBnRKvtYsclhLivH6hLkap4U0ad7S+og5/Lz8ToYUfzMC+kr75Eui9LLAHFCMv YkRS4edQ6TZd9CxjPg4kisOG969VtI3ULp5SCZx2MYIqrcgQeIqEIHR4J5xPcfy79m0t 6Junhj0ofYYDGERYxYjTV4iSGDB/DQwRNzFsqep2mkM7wFjETl28PKWl7O4IJpmhbcgI tgKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ejFKPXzv; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 73si616863pga.407.2019.07.09.19.08.00; Tue, 09 Jul 2019 19:08:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ejFKPXzv; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726300AbfGJByM (ORCPT + 99 others); Tue, 9 Jul 2019 21:54:12 -0400 Received: from mail-qt1-f195.google.com ([209.85.160.195]:46606 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725880AbfGJByM (ORCPT ); Tue, 9 Jul 2019 21:54:12 -0400 Received: by mail-qt1-f195.google.com with SMTP id h21so716673qtn.13 for ; Tue, 09 Jul 2019 18:54:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Rl/l0lv/RtftyGXlBncrpuyucSyNxpAjwoNFIcH2g3s=; b=ejFKPXzvn1phIqms4yYo1HxB+xY6s8QiTpK9ZIM9O57fTojLMYHr/DRRFzDGTZ6WRr AfHD/+bLrnMSON1NNIFDBkrmigmXylIQs5w6oZMKtm6KatMB/VhnG0YdC1yrMZxSyxPz 563vtMNEkXSXr/+cvyhEZTIwSSa7d6Hzps4Sx6wGLO+75TAysv2hPme8AWIC852GRMoj 1P4K6TstYvbDRr91qonIYHaO1qCMF4pxk3FpIisyVcXK7iYJ4gZHomtRJawJfCuwaKGB mbYE4Kmc/j8BrNLum2hJwSB2zrSguVLEFdOd53KuH3R17Oj64eVTkggetf1le5Q3pnTU 88Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Rl/l0lv/RtftyGXlBncrpuyucSyNxpAjwoNFIcH2g3s=; b=i/v1cXvsZJVTCOThTzliualXNWijz71P2IQ+stgRpNs50QbNsiT7DUJHkLds3k0nWS 0Xs8nB5SDxiehp9OhkYRWIIqIkYoqjqbs1HiKmR/y9cBuaOt9+psRu8+jP8iSF/e0zYM maGaI9hF9x3v6IvB6JQs2kNhlWf/cBQCq2PcOAqJdHzBeAXJoRMfXOLjw3rLiiK4Tt6l SyPpjZiKyLViF0w8hJVM2wzfiN9uOrGMchalnr29tNcHht4o+MUWlE4k2CwI2VkMXnT2 Sp7RKO7qDnxxuE4e7G7N6nRwU5R/W7YgWsVxMFoOgwqz1dWK3ySDKqvKN7nov8r/5Hdt 9DZA== X-Gm-Message-State: APjAAAWFT19EEt9QIn/G/PFAUWd7C/SpYtCXRUy9Oe1qSILe3wP5rB8n x9ISlILAGQhXgUKMhY6q+F4= X-Received: by 2002:ac8:2c17:: with SMTP id d23mr21131594qta.385.1562723651223; Tue, 09 Jul 2019 18:54:11 -0700 (PDT) Received: from smtp.gmail.com ([187.121.151.22]) by smtp.gmail.com with ESMTPSA id i22sm348098qti.30.2019.07.09.18.54.07 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 09 Jul 2019 18:54:10 -0700 (PDT) Date: Tue, 9 Jul 2019 22:54:05 -0300 From: Rodrigo Siqueira To: Daniel Vetter , Haneen Mohammed , David Airlie , Simon Ser , Oleg Vasilev , Mamta Shukla , Harry Wentland Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] drm/vkms: Use alpha channel for blending cursor with primary Message-ID: References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="fpslhh6j4fs42obw" Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --fpslhh6j4fs42obw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Currently, the blend function overwriting the cursor value into the primary plane. This patch utilizes the alpha value for a fully transparent blend of the cursor (vaddr_src) with primary (vaddr_dst) instead of overwriting it in blend(). Cc: Haneen Mohammed Cc: Mamta Shukla Cc: Harry Wentland Cc: Daniel Vetter Signed-off-by: Rodrigo Siqueira --- drivers/gpu/drm/vkms/vkms_composer.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vk= ms_composer.c index fb106964d8bf..bb758a5131a4 100644 --- a/drivers/gpu/drm/vkms/vkms_composer.c +++ b/drivers/gpu/drm/vkms/vkms_composer.c @@ -26,6 +26,17 @@ static void set_pixel(int x, int y, u8 *buffer, *dst =3D value; } =20 +static u32 apply_alpha(u32 src, u32 dst) +{ + u8 alpha; + u32 k; + + alpha =3D src >> 24; + alpha =3D (alpha + 1) >> 8; + k =3D (alpha << 24) - alpha; + return (k & src) | (~k & dst); +} + /** * compute_crc - Compute CRC value on output frame * @@ -89,15 +100,19 @@ static void blend(void *vaddr_dst, void *vaddr_src, int y_limit =3D y_src + h_dst; int x_limit =3D x_src + w_dst; =20 - u32 pixel_src; + u32 pixel_src, pixel_dst, new_pixel; =20 for (y =3D y_src, i_dst =3D y_dst; y < y_limit; ++y) { for (x =3D x_src, j_dst =3D x_dst; x < x_limit; ++x) { pixel_src =3D get_pixel_from_buffer(x, y, vaddr_src, src_composer); - set_pixel(j_dst, i_dst, vaddr_dst, dest_composer, - pixel_src); + pixel_dst =3D get_pixel_from_buffer(j_dst, i_dst, + vaddr_dst, + dst_composer); + new_pixel =3D apply_alpha(pixel_src, pixel_dst); + set_pixel(j_dst, i_dst, vaddr_dst, dst_composer, + new_pixel); j_dst++; } i_dst++; --=20 2.21.0 --fpslhh6j4fs42obw Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE4tZ+ii1mjMCMQbfkWJzP/comvP8FAl0lRTwACgkQWJzP/com vP8IwA/9GS6vppNEv2BszWYSS5mPf/m5tf+g31Bh+IaaNJIrV4enswcymuGGJFI+ X1YkTtk+PklMFKEvnIS8GEKaMcPGJ5z6xpZ2OsdI5kgoa+OphTUaxAtj5+BCTPH3 hOtUilhl+tPxcQH+wZXFPMRuF+kZcr57rZ9UPSk9ti/C5N+tdMEB1JkZ24QOCLAj cLse0oMFv1CdN6uMMm3NsjohpE2vWPQFERoduABGWXhV6kL0Rc1Il/REUo60dnP6 rJxA+ZPK29p+Gsleb+t+kdjk5YmwbzzuOxaC5dfpqPBgL0bRzS7hqZA9tgYCPQWj YpJAChHw1OgIEKsXvibM4dpb2a6BrBDj5QtqjtgZqsiBramBhCcGkB4hujH8YSdC lcfP5t59EEcuynn6vlq0bW2PJp0EE35OuvuAmyHyMXXnCxgMXCrsVkfgFJIWI0nt Af++PQJzPIv26bEq5fEP7d7BKtCe7V43uVb/MYQeGTFWIzOuir0hSuDzfLHX4QTY 9M8Bko7certhVdjZLDHHOPBYazRlvWiOrWngi5gIsNIjr6K9QxLQVrXaLtcmcJg6 u5N88kD+4FR/1NrVsh/yowXhhvOllgoSeG3jkRR9WdUBCAjhMIMWnrftXli0NvJ4 2Kwg5pKrClwP2ajZ5apbJgekqV2MhnoGms0CITk/32V9aRJaUvE= =JUlX -----END PGP SIGNATURE----- --fpslhh6j4fs42obw--