From patchwork Fri Oct 3 16:55:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 492 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510598; bh=w2+FvHpBRlhZgicb0TGvJWyMXMoARKJHacBWRi7siOc=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=Ml3IyY/EhPCvKfyy9PCS8dyHfWpnJKtafUQxMhRDMKDwYk+NtUXH0Jv39xQOJPNdv ykA1PgXiDCBMUsKnb4k8iBBCyBMzFW2m3VPOR/1JmetlnxFrcU2TUYGkjCv8UsFDE/ K5FSmBoziBcS9XUt/WJjxF1B+EPPzuTgqcaaZEYrHujfgb+Bq/TlJ1IguU4A4cjIio 2Fsu+aUlzYFTVZK197YyGTLYKFh6kDsMdTi101QlmCVFOTen9DbnmKqJOAF5cBZnRg T6xXJHo8ReB6S0bleDiEBfIUcPkAe1nhwZYWm2EbELX3kdtI5sunn6sF1z8ZhTFuTz AKAmjUg5tmdig== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 79D0067E85 for ; Fri, 3 Oct 2025 10:56:38 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id CVJOToihneEw for ; Fri, 3 Oct 2025 10:56:38 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510596; bh=w2+FvHpBRlhZgicb0TGvJWyMXMoARKJHacBWRi7siOc=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=QUG+gkcrMEcTMpd3P7VartjokmoZ7h0B3RuzQzn1RE2uF7OlH5L4998IbsFsllnD+ zQz/RP5uO+W1vPtsjgDCUPVNQo1q4e7J0BaD4WJj+BayV6UKfk+8/+vgLHiaIlHOQ+ MFmayavVdpzw573UYw0eiDu+vAsoSb8EfQNIlKMgPAhzPVp12sAAVY9aXKex96i9xn 4BVBhviPgpl0e0iBbYuSoOp+V+vaP9zxUWm1rLym9HUZ2hTepuAEovYS9iEBIoeq2o RFFlhEH/wveb+GUKJ+SKd2VqB8pH4dCVFeTuwIZYAaysdKVWsSnbDTdoaPZYK5XDlH 5JSIJKrU86imw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 7237367E83 for ; Fri, 3 Oct 2025 10:56:36 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510592; bh=oiEieHjW3oCWuxPQm6ATqMeq38XwSc8+/Ft7A5HGH9s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ql6Ql/8svPKSdkRgZ3bV3H2Pf9+C9FQQddHD6P8UGZWWoGeLcjIL8inmjsM9oW/dy I6lgVB7x+SzkVkmEECbV4squROzanujny5PyIbKc+RlUP6HYE0bjFonHWHYgvJglCY CMw80PAmRoVXKdeWwXHo3HsiGxGWCYxN6jVHmEsr6t/OQWd721R2r/n1JTslaDEsqQ K+ynmh6HbU/9SZXtqT6AOow0FtsPTFoqHZYt9VxIzKO3BRBc06nTTnxfLwlVHu5mJq ejfKs3gVdjLtvY1vdWmCahfz1zWrdyz/B9DzMDRMLL80BC6hexZVDKlJzGwGLmnDV0 kr6+JfpNjzyKQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 0115767E83; Fri, 3 Oct 2025 10:56:32 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id 8p2eYgoI03wQ; Fri, 3 Oct 2025 10:56:31 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510584; bh=s8qquht7U8qK45FppyvqjT6oVHztXFhN+bwSAxx+OqM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XLu6sp0Vq86yH8lGvpYwvbKh22K9+Y77dEv8HVeJG4wynOo3gWtC7vmoKRonZ7352 HzcwrcY2OfgPBzO2GyzahPbGp2/rbFLOzHeALZlSRABewRx0NxjVelM57gegnlYuJu CLDmOVBQqlCgNTA14yVvdsBC0JmLNg7OEWCg6J7pmbka0YaPmoeTerBGI0pXH0EqCT OExTz1m4FFQjMP/VioeRL5tl10KCaP+cF/BYiZh+MkUWMFT6aXKBk+Jkzy5XSQb+tq OEspwQ0zfxwcTBzab6+Mt8thZ2QwdDIP9uB4NcVLhVn3OFxt8Fe+OeVRtJV+jdli0i wqvZBU6FSce8A== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 3591A67E12; Fri, 3 Oct 2025 10:56:24 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Fri, 3 Oct 2025 10:55:03 -0600 Message-ID: <20251003165525.440173-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251003165525.440173-1-sjg@u-boot.org> References: <20251003165525.440173-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: MOP2DWTKTQNBOOO2G5R4P6WMJZDVSULR X-Message-ID-Hash: MOP2DWTKTQNBOOO2G5R4P6WMJZDVSULR X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/22] video: Use variables for each colour component List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Add red, green and blue variables when processing a 24bpp BMP image. Signed-off-by: Simon Glass --- drivers/video/video_bmp.c | 40 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c index 4c9157486cb..88a327e4a6d 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c @@ -385,20 +385,23 @@ static int draw_bmp(struct udevice *dev, ulong bmp_image, int x, int y, if (CONFIG_IS_ENABLED(BMP_24BPP)) { for (i = 0; i < height; ++i) { for (j = 0; j < width; j++) { + u8 red = bmap[0]; + u8 green = bmap[1]; + u8 blue = bmap[2]; + if (bpix == 16) { /* 16bit 565RGB format */ - *(u16 *)fb = ((bmap[2] >> 3) - << 11) | - ((bmap[1] >> 2) << 5) | - (bmap[0] >> 3); - bmap += 3; + *(u16 *)fb = + ((blue >> 3) << 11) | + ((green >> 2) << 5) | + (red >> 3); fb += 2; } else if (eformat == VIDEO_X2R10G10B10) { u32 pix; - pix = *bmap++ << 2U; - pix |= *bmap++ << 12U; - pix |= *bmap++ << 22U; + pix = blue << 2U; + pix |= green << 12U; + pix |= red << 22U; *fb++ = pix & 0xff; *fb++ = (pix >> 8) & 0xff; *fb++ = (pix >> 16) & 0xff; @@ -406,20 +409,21 @@ static int draw_bmp(struct udevice *dev, ulong bmp_image, int x, int y, } 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; + pix = red << 24U; + pix |= green << 16U; + pix |= blue << 8U; + pix |= 0xff; + *fb++ = pix & 0xff; *fb++ = (pix >> 8) & 0xff; - *fb++ = 0xff; + *fb++ = (pix >> 16) & 0xff; + *fb++ = pix >> 24; } else { - *fb++ = *bmap++; - *fb++ = *bmap++; - *fb++ = *bmap++; + *fb++ = red; + *fb++ = green; + *fb++ = blue; *fb++ = 0; } + bmap += 3; } fb -= priv->line_length + width * (bpix / 8); bmap += (padded_width - width);