From patchwork Wed May 17 08:42:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 1782518 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256 header.s=selector1 header.b=mbqOE0sI; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QLmpS4W98z20dX for ; Wed, 17 May 2023 18:43:12 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4A537866CF; Wed, 17 May 2023 10:42:49 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="mbqOE0sI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B1B1486177; Wed, 17 May 2023 10:42:43 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on20607.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eb2::607]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C56E686177 for ; Wed, 17 May 2023 10:42:40 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=michal.simek@amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qx5WKgF+1kskija3pjq26vjfIUUGBcgDJ2oKtVUw2Xmneuljf2qM1h1kb6kWrBMhxBLHuk9sX4INCqi0dQKdUSiKaUjuwtHAVRiFSrDC5/3sd7W3Y/KhmFdGpo0H31SVYA68G/tJBTfw7+3WvK3et941R6M1D3R/oMxWiOuCrrXtnEi9pHYtr5nNgBToTUssLpB1tPy+Y8B/i244hX6s9GzF5gRVj3qhCuVkcfSXbWt1M5yZ5WJ3B+lCwAkD5ZNRE4QIwXk6ChuV+69MfAsi+XjEX5erlgPoBNur4GdDQRE8qdkEBJ+WOs2bb0jjg9QyzIy3s9sbiSoW4bhNF9GwmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=V7ba4zZwJ8I1jOL+VCrKLrh8ZPAtuT2myMLwFDfAqPA=; b=md/sQiKS+wLaOZ/flP4aXWlmohWvsJ4ubYrHADyc03Toea3w38ynPXkEdO3MQWfKJA3QXdjkUkJWzmA5zupPZTSLjd6XfzAOA7tXhu1tsvcgNMgqWrBcKGh8weE1nMcEx09v2KVt9lnN36+505/kT74g8V1e9KCNnq04JjAfyyRNIDtcE1d6KuxDWQI48Fl2Cmoh7lhvWS396rnAi3+uP1P9ix3sFPFt8CX0ly58LWH5AwqrfUSZrXv4Z1m9T8akWDhYMHUKu9FEihsZQ0jmvlmNqE4Bnxyy9iGd3ctCgoLAiD2sRwfNkxpGlub7uiW2182ur7g47A5YMI1qsV+iMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V7ba4zZwJ8I1jOL+VCrKLrh8ZPAtuT2myMLwFDfAqPA=; b=mbqOE0sIg/cmy3GkoutkKJQ8lUezSM3hvL3ELkwC9PCm9p0uQZCo6J30jl8d/qovAjQ1csZXGO2Wlz8720q6JDyWGM1FXJVqy1QgvRF5vXjP+1exLzNLAAUTurTiykIrrxLqXm/0tmUJ8QxilOT2/8eHydq7BlruCU/BnZBhkiM= Received: from SJ0PR13CA0170.namprd13.prod.outlook.com (2603:10b6:a03:2c7::25) by SA3PR12MB7831.namprd12.prod.outlook.com (2603:10b6:806:311::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Wed, 17 May 2023 08:42:37 +0000 Received: from DM6NAM11FT054.eop-nam11.prod.protection.outlook.com (2603:10b6:a03:2c7:cafe::b7) by SJ0PR13CA0170.outlook.office365.com (2603:10b6:a03:2c7::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.15 via Frontend Transport; Wed, 17 May 2023 08:42:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DM6NAM11FT054.mail.protection.outlook.com (10.13.173.95) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6411.18 via Frontend Transport; Wed, 17 May 2023 08:42:37 +0000 Received: from localhost (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 17 May 2023 03:42:35 -0500 From: Michal Simek To: , CC: Anatolij Gustschin Subject: [PATCH 2/6] video: bmp: Support rgba8888 pixel format Date: Wed, 17 May 2023 10:42:08 +0200 Message-ID: <322910eb24692f6140a001796501270eb1c53d9a.1684312924.git.michal.simek@amd.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: References: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2591; i=michal.simek@amd.com; h=from:subject:message-id; bh=uvXHtXRRDt6B+RKy8TXaQzppelBLIMn5oy4pj7XQGh8=; b=owGbwMvMwCR4yjP1tKYXjyLjabUkhpSUyQkHLBJV2N4L2Jgy7eC7WHtMa7u+bvaJGdLTGT50O IZfydvTEcvCIMjEICumyCJtc+XM3soZU4QvHpaDmcPKBDKEgYtTACYifodhQUPHw937F2+e7PH0 9dkzdpWyjI7evxgWdK4NvP52nvGS3p33FgUadoXeFmT/CwA= X-Developer-Key: i=michal.simek@amd.com; a=openpgp; fpr=67350C9BF5CCEE9B5364356A377C7F21FE3D1F91 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT054:EE_|SA3PR12MB7831:EE_ X-MS-Office365-Filtering-Correlation-Id: b716306f-c833-40be-c242-08db56b2aad7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DeaIcSuPx3K9+Ubpc8o64MPbjS4sUprXFQETHWi09J3eb04Tc/3s5mnYYzXrD1GcXA4YPZoFxEHjQDxAGOGqZ3y4c+oSDCUXzH7dVuhHtqpVO3L/hTEQnEPfNqiF9J9yLyTnEkq15rIJAfgabXTlqSPM9lmgFRKa/st7thKkzQj581F0Arz+u78SBHfEseIKYj6yUN7GTuRDfuYkqYnb2wKKJxX8XcYtn9nO9eypEFj/RP81KvNELMfOsTIx5XZ3ZSj3Y24UK8uc5kYU9fVm39LVzUBOCPS3HMmFfH1l0zMXhSSgXNBlAEvz1WltRLCOcnRtLmsDLGf3HhOGB/j4YMNK10RHXCp2TK9KlTTZbBIIsPGCo+R5piHm+Q3KtnK3rhxD2nf75RGvIA+Rat6mSblXYmi9XWg1RUK7+HMWoDRvlUZ1+tZ70574kO2ih9/4NZZC5FRjkKWgbrOkFknFiYAAsICmTRzLNI+AWljoYEZJGwhUwy7FNzyCtaeKOsLKS1bG192JAm6wvX5+HU7ZX+iKiIhLBnSk5PLZc/nz8KoOe1nEwok72xK0urkrOdKGxC2D8dWb4mQJzKhFUWWwBCAFCqDirWd1huezs8Zz7qr82wmbUN8CGgwHL6dZ5imyPTDpvW16mGjGUUHL1dv+8jrBbedrqIEXiOmScTlFCYfaHy6znnDxQR/NyXSXDbsQXHNIiUrGC659ttgjnNiW1RRL7HQZoQycDcCVl/iTmYvZTHnBkJKcc84uKEr72r5rJ1ayfwKr9ikjE3Wx1Cwkxw== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230028)(4636009)(136003)(396003)(346002)(376002)(39860400002)(451199021)(36840700001)(40470700004)(46966006)(86362001)(26005)(40460700003)(2616005)(47076005)(36756003)(336012)(426003)(36860700001)(40480700001)(81166007)(82310400005)(82740400003)(186003)(356005)(16526019)(4326008)(70206006)(70586007)(2906002)(478600001)(41300700001)(8936002)(5660300002)(44832011)(110136005)(8676002)(6666004)(316002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2023 08:42:37.2710 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b716306f-c833-40be-c242-08db56b2aad7 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT054.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7831 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Adding the support for RGBA8888 format for BMP decoding. Signed-off-by: Michal Simek Signed-off-by: Venkatesh Yadav Abbarapu --- drivers/video/video_bmp.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c index 47e52c4f69c9..45f003c8251a 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c @@ -42,6 +42,18 @@ static u32 get_bmp_col_x2r10g10b10(struct bmp_color_table_entry *cte) (cte->blue << 2U)); } +/** + * get_bmp_col_rgba8888() - Convert a colour-table entry into a rgba8888 pixel value + * + * Return: value to write to the rgba8888 frame buffer for this palette entry + */ +static u32 get_bmp_col_rgba8888(struct bmp_color_table_entry *cte) +{ + return ((cte->red) | + (cte->green << 8U) | + (cte->blue << 16U) | 0xff << 24U); +} + /** * write_pix8() - Write a pixel from a BMP image into the framebuffer * @@ -71,6 +83,8 @@ static void write_pix8(u8 *fb, uint bpix, enum video_format eformat, *fb++ = cte->blue; } else if (eformat == VIDEO_X2R10G10B10) { *(u32 *)fb = get_bmp_col_x2r10g10b10(cte); + } else if (eformat == VIDEO_RGBA8888) { + *(u32 *)fb = get_bmp_col_rgba8888(cte); } else { *fb++ = cte->blue; *fb++ = cte->green; @@ -382,6 +396,17 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, *fb++ = (pix >> 8) & 0xff; *fb++ = (pix >> 16) & 0xff; *fb++ = pix >> 24; + } else if (eformat == VIDEO_RGBA8888) { + u32 pix; + + pix = *bmap++ << 8U; /* blue */ + pix |= *bmap++ << 16U; /* green */ + pix |= *bmap++ << 24U; /* red */ + + *fb++ = (pix >> 24) & 0xff; + *fb++ = (pix >> 16) & 0xff; + *fb++ = (pix >> 8) & 0xff; + *fb++ = 0xff; } else { *fb++ = *bmap++; *fb++ = *bmap++; @@ -409,6 +434,17 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, *fb++ = (pix >> 8) & 0xff; *fb++ = (pix >> 16) & 0xff; *fb++ = pix >> 24; + } else if (eformat == VIDEO_RGBA8888) { + u32 pix; + + pix = *bmap++ << 8U; /* blue */ + pix |= *bmap++ << 16U; /* green */ + pix |= *bmap++ << 24U; /* red */ + bmap++; + *fb++ = (pix >> 24) & 0xff; + *fb++ = (pix >> 16) & 0xff; + *fb++ = (pix >> 8) & 0xff; + *fb++ = 0xff; /* opacity */ } else { *fb++ = *bmap++; *fb++ = *bmap++;