From patchwork Thu Feb 11 14:15:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083447 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 97181C433E6 for ; Thu, 11 Feb 2021 14:17:32 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0264B64E2E for ; Thu, 11 Feb 2021 14:17:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0264B64E2E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACmh-0008W6-1V for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:17:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACkr-0006XC-F4 for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:38 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:54360) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkb-00074A-CW for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:35 -0500 Received: by mail-wm1-x329.google.com with SMTP id w4so5693756wmi.4 for ; Thu, 11 Feb 2021 06:15:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1U3l2zceIjM766IxWu3mir7NDhJ/YG4xIbUPcO9sAsA=; b=Ql6GFARamNLhX8bsfG04cM9s1S4JYPtXPoeTpMCdJxoTI6B+tYnjsphpfFj5FaUMSd +pbRHO1ipA5T5D6pcDIvjrWZ2Sv/C8Uq/4MC3Mivok1QAl9czvepAr+2CPQMZmV0UhBk DppGUo1gPELoluKRhLhUE8RO26ZavsQumFHNP86lSY+9kOxYalpWaWmAnwgWWSNdh5v0 +spRqBNocxszNH8wUMVYMCCco34YeUA0fGskfp+3J6JN6eipdkoqG3Dcj6xsTOfO/CEJ f7qXCowM7cToJ76Fh13LbIbpJVAv2hf//51uLn6LzCXiCz7UnrjU5FJAhSNzVPhQCmyK g/LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1U3l2zceIjM766IxWu3mir7NDhJ/YG4xIbUPcO9sAsA=; b=LGXPjNCLXt2sB6xs+Q42LzosETsG/HsQLFNV0EOTx/ceMXgRaNnFXfrrt7KYBMzj6F vvcR5k0XAeylhEv86KHEGkNxmSNYVS8vIv9pQDz781HQ7OY6mgkL7bU2nFOPdXDvADBZ A/UyT4SXf0pTiJUaOh/JAjpbGU5vgzuvk53Cz5uqc3dFBbMefno6n39kxeeU4pN+9Equ WmWvIsoARDaxc2gfikLJVBo8dYN4rxMoKILIVBkVU/ziv4piXve95uKwD7zYrqRZNsgo pBfNm2vYo+PKa62w2ZZ4eJCkxgsPNDRkb1+8YAZEZVfngmf5k4g2mMz/yXJHu4HLFg2F a3tQ== X-Gm-Message-State: AOAM533bho7AcdjKTuGfj5ezrxM4Yu2v8IlurTmpBVkXLFvqzy6wcARY j/OMzitIzy60JS0klxmH4A2gPgXRmZWnxg== X-Google-Smtp-Source: ABdhPJxCp0F2JnN1oDAOeTHYG5fYYSFCPjyr+J6aEGkOQVdebxhaztTKcwnmWc6G7cFQZQ+qskAYXg== X-Received: by 2002:a1c:bd55:: with SMTP id n82mr4369628wmf.93.1613052918291; Thu, 11 Feb 2021 06:15:18 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:17 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 1/9] hw/display/pl110: Remove dead code for non-32-bpp surfaces Date: Thu, 11 Feb 2021 14:15:07 +0000 Message-Id: <20210211141515.8755-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" For a long time now the UI layer has guaranteed that the console surface is always 32 bits per pixel. Remove the legacy dead code from the pl110 display device which was handling the possibility that the console surface was some other format. Signed-off-by: Peter Maydell --- hw/display/pl110.c | 53 +++++++--------------------------------------- 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/hw/display/pl110.c b/hw/display/pl110.c index 02b0d45f062..a0d4126ce7f 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -123,14 +123,6 @@ static const unsigned char *idregs[] = { pl111_id }; -#define BITS 8 -#include "pl110_template.h" -#define BITS 15 -#include "pl110_template.h" -#define BITS 16 -#include "pl110_template.h" -#define BITS 24 -#include "pl110_template.h" #define BITS 32 #include "pl110_template.h" @@ -144,9 +136,7 @@ static void pl110_update_display(void *opaque) PL110State *s = (PL110State *)opaque; SysBusDevice *sbd; DisplaySurface *surface = qemu_console_surface(s->con); - drawfn* fntable; drawfn fn; - int dest_width; int src_width; int bpp_offset; int first; @@ -158,33 +148,6 @@ static void pl110_update_display(void *opaque) sbd = SYS_BUS_DEVICE(s); - switch (surface_bits_per_pixel(surface)) { - case 0: - return; - case 8: - fntable = pl110_draw_fn_8; - dest_width = 1; - break; - case 15: - fntable = pl110_draw_fn_15; - dest_width = 2; - break; - case 16: - fntable = pl110_draw_fn_16; - dest_width = 2; - break; - case 24: - fntable = pl110_draw_fn_24; - dest_width = 3; - break; - case 32: - fntable = pl110_draw_fn_32; - dest_width = 4; - break; - default: - fprintf(stderr, "pl110: Bad color depth\n"); - exit(1); - } if (s->cr & PL110_CR_BGR) bpp_offset = 0; else @@ -218,12 +181,13 @@ static void pl110_update_display(void *opaque) } } - if (s->cr & PL110_CR_BEBO) - fn = fntable[s->bpp + 8 + bpp_offset]; - else if (s->cr & PL110_CR_BEPO) - fn = fntable[s->bpp + 16 + bpp_offset]; - else - fn = fntable[s->bpp + bpp_offset]; + if (s->cr & PL110_CR_BEBO) { + fn = pl110_draw_fn_32[s->bpp + 8 + bpp_offset]; + } else if (s->cr & PL110_CR_BEPO) { + fn = pl110_draw_fn_32[s->bpp + 16 + bpp_offset]; + } else { + fn = pl110_draw_fn_32[s->bpp + bpp_offset]; + } src_width = s->cols; switch (s->bpp) { @@ -247,7 +211,6 @@ static void pl110_update_display(void *opaque) src_width <<= 2; break; } - dest_width *= s->cols; first = 0; if (s->invalidate) { framebuffer_update_memory_section(&s->fbsection, @@ -258,7 +221,7 @@ static void pl110_update_display(void *opaque) framebuffer_update_display(surface, &s->fbsection, s->cols, s->rows, - src_width, dest_width, 0, + src_width, s->cols * 4, 0, s->invalidate, fn, s->palette, &first, &last); From patchwork Thu Feb 11 14:15:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A998C433DB for ; Thu, 11 Feb 2021 14:17:29 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 102DB64DE2 for ; Thu, 11 Feb 2021 14:17:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 102DB64DE2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACme-0008OW-3V for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:17:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl0-0006Xt-AC for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:48 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:40487) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkb-00074J-C8 for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:40 -0500 Received: by mail-wm1-x335.google.com with SMTP id o24so5889230wmh.5 for ; Thu, 11 Feb 2021 06:15:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7eOlTk2qrx8/UrDgQ0CzyBOLoXb5mii0mWS5SmQs9Vk=; b=wMYPzBbEp0b3jaAQyRoAgbHq61Tg5zHYmLZrCBICQnyGHmM9X+huDXNHU9s/IpDoLd 9eO8p3ud7PZFDbVnVpao4/tVOrmD6+oghWBej3NE+ojIN6vgtOKRRUrZmwf8ZRozdNTn aru7IPHwgNBneb5jLdgkf1YK1IOJ+4c90zDMlXR4w+esnokUuobEDwKdRIGSEX8osV3k TgvNWX0JrB52InpHb1Ip34vC+T0uWRmosEddl8FbZaC4G6101R11WMl0tWSyq1lNlyOl CiOUodBtfKre4nlKpc/tcOpXeq6vvFdiJBO8NKl8eMwwMpQbawScq828R0tdxX9Gp8Ei JC0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7eOlTk2qrx8/UrDgQ0CzyBOLoXb5mii0mWS5SmQs9Vk=; b=cr356uObRyw+WGzs/sErpJ7ihaR/Isk/yfql0MZCbnu3T3/r7Vwwg4EWXpRhgXSFTq mUk3EQk1wRwfjfH4kqTvdpl0yFJ6bfyvLvvkOXtYHZM9EIEX7zptW2CDp2/md+kP1NSU 35QYjVz0TNCxCabKrYeNwJwaBpOjzSTAiYDyoWismAWdgyeBnBgIcnfiZYwt2ZJWIDR5 UfcNQShJW4CEElj3eCBFWgej5laPSv3H9YtITLqydDFDxwL98xFd0N6Gt/CUZDrttwfC VniBru8TPgV2sbGcFP9lKhghuPo8UosfTzt40v4e1EnSX8prIETaCpP/OTBrXy4izmvL 1c3g== X-Gm-Message-State: AOAM530S5+MQ5YAdv2VHNRppt/31d4xUPAnJGKOA1CTy4mo0ReeB5Qa/ zeV0KncrGMbqZBvouNh12NmJiw== X-Google-Smtp-Source: ABdhPJwh1uksk+d4CsVCZAvA17iaLttunr1Vu5YO1vl0s1KEcFi6UcJGJcQH3+q2Z/wVFP73q+R0tg== X-Received: by 2002:a7b:cb05:: with SMTP id u5mr5307374wmj.140.1613052919109; Thu, 11 Feb 2021 06:15:19 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:18 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 2/9] hw/display/pl110: Pull included-once parts of template header into pl110.c Date: Thu, 11 Feb 2021 14:15:08 +0000 Message-Id: <20210211141515.8755-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The pl110_template.h header has a doubly-nested multiple-include pattern: * pl110.c includes it once for each host bit depth (now always 32) * every time it is included, it includes itself 6 times, to account for multiple guest device pixel and byte orders Now we only have to deal with 32-bit host bit depths, we can move the code corresponding to the outer layer of this double-nesting to be directly in pl110.c and reduce the template header to a single layer of nesting. Signed-off-by: Peter Maydell --- hw/display/pl110_template.h | 100 +----------------------------------- hw/display/pl110.c | 79 ++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 99 deletions(-) diff --git a/hw/display/pl110_template.h b/hw/display/pl110_template.h index 36ba791c6fd..0d8471db636 100644 --- a/hw/display/pl110_template.h +++ b/hw/display/pl110_template.h @@ -10,105 +10,9 @@ */ #ifndef ORDER - -#if BITS == 8 -#define COPY_PIXEL(to, from) *(to++) = from -#elif BITS == 15 || BITS == 16 -#define COPY_PIXEL(to, from) do { *(uint16_t *)to = from; to += 2; } while (0) -#elif BITS == 24 -#define COPY_PIXEL(to, from) \ - do { \ - *(to++) = from; \ - *(to++) = (from) >> 8; \ - *(to++) = (from) >> 16; \ - } while (0) -#elif BITS == 32 -#define COPY_PIXEL(to, from) do { *(uint32_t *)to = from; to += 4; } while (0) -#else -#error unknown bit depth +#error "pl110_template.h is only for inclusion by pl110.c" #endif -#undef RGB -#define BORDER bgr -#define ORDER 0 -#include "pl110_template.h" -#define ORDER 1 -#include "pl110_template.h" -#define ORDER 2 -#include "pl110_template.h" -#undef BORDER -#define RGB -#define BORDER rgb -#define ORDER 0 -#include "pl110_template.h" -#define ORDER 1 -#include "pl110_template.h" -#define ORDER 2 -#include "pl110_template.h" -#undef BORDER - -static drawfn glue(pl110_draw_fn_,BITS)[48] = -{ - glue(pl110_draw_line1_lblp_bgr,BITS), - glue(pl110_draw_line2_lblp_bgr,BITS), - glue(pl110_draw_line4_lblp_bgr,BITS), - glue(pl110_draw_line8_lblp_bgr,BITS), - glue(pl110_draw_line16_555_lblp_bgr,BITS), - glue(pl110_draw_line32_lblp_bgr,BITS), - glue(pl110_draw_line16_lblp_bgr,BITS), - glue(pl110_draw_line12_lblp_bgr,BITS), - - glue(pl110_draw_line1_bbbp_bgr,BITS), - glue(pl110_draw_line2_bbbp_bgr,BITS), - glue(pl110_draw_line4_bbbp_bgr,BITS), - glue(pl110_draw_line8_bbbp_bgr,BITS), - glue(pl110_draw_line16_555_bbbp_bgr,BITS), - glue(pl110_draw_line32_bbbp_bgr,BITS), - glue(pl110_draw_line16_bbbp_bgr,BITS), - glue(pl110_draw_line12_bbbp_bgr,BITS), - - glue(pl110_draw_line1_lbbp_bgr,BITS), - glue(pl110_draw_line2_lbbp_bgr,BITS), - glue(pl110_draw_line4_lbbp_bgr,BITS), - glue(pl110_draw_line8_lbbp_bgr,BITS), - glue(pl110_draw_line16_555_lbbp_bgr,BITS), - glue(pl110_draw_line32_lbbp_bgr,BITS), - glue(pl110_draw_line16_lbbp_bgr,BITS), - glue(pl110_draw_line12_lbbp_bgr,BITS), - - glue(pl110_draw_line1_lblp_rgb,BITS), - glue(pl110_draw_line2_lblp_rgb,BITS), - glue(pl110_draw_line4_lblp_rgb,BITS), - glue(pl110_draw_line8_lblp_rgb,BITS), - glue(pl110_draw_line16_555_lblp_rgb,BITS), - glue(pl110_draw_line32_lblp_rgb,BITS), - glue(pl110_draw_line16_lblp_rgb,BITS), - glue(pl110_draw_line12_lblp_rgb,BITS), - - glue(pl110_draw_line1_bbbp_rgb,BITS), - glue(pl110_draw_line2_bbbp_rgb,BITS), - glue(pl110_draw_line4_bbbp_rgb,BITS), - glue(pl110_draw_line8_bbbp_rgb,BITS), - glue(pl110_draw_line16_555_bbbp_rgb,BITS), - glue(pl110_draw_line32_bbbp_rgb,BITS), - glue(pl110_draw_line16_bbbp_rgb,BITS), - glue(pl110_draw_line12_bbbp_rgb,BITS), - - glue(pl110_draw_line1_lbbp_rgb,BITS), - glue(pl110_draw_line2_lbbp_rgb,BITS), - glue(pl110_draw_line4_lbbp_rgb,BITS), - glue(pl110_draw_line8_lbbp_rgb,BITS), - glue(pl110_draw_line16_555_lbbp_rgb,BITS), - glue(pl110_draw_line32_lbbp_rgb,BITS), - glue(pl110_draw_line16_lbbp_rgb,BITS), - glue(pl110_draw_line12_lbbp_rgb,BITS), -}; - -#undef BITS -#undef COPY_PIXEL - -#else - #if ORDER == 0 #define NAME glue(glue(lblp_, BORDER), BITS) #ifdef HOST_WORDS_BIGENDIAN @@ -395,5 +299,3 @@ static void glue(pl110_draw_line12_,NAME)(void *opaque, uint8_t *d, const uint8_ #undef NAME #undef SWAP_WORDS #undef ORDER - -#endif diff --git a/hw/display/pl110.c b/hw/display/pl110.c index a0d4126ce7f..ce300662e8b 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -124,7 +124,86 @@ static const unsigned char *idregs[] = { }; #define BITS 32 +#define COPY_PIXEL(to, from) do { *(uint32_t *)to = from; to += 4; } while (0) + +#undef RGB +#define BORDER bgr +#define ORDER 0 #include "pl110_template.h" +#define ORDER 1 +#include "pl110_template.h" +#define ORDER 2 +#include "pl110_template.h" +#undef BORDER +#define RGB +#define BORDER rgb +#define ORDER 0 +#include "pl110_template.h" +#define ORDER 1 +#include "pl110_template.h" +#define ORDER 2 +#include "pl110_template.h" +#undef BORDER + +static drawfn pl110_draw_fn_32[48] = { + pl110_draw_line1_lblp_bgr32, + pl110_draw_line2_lblp_bgr32, + pl110_draw_line4_lblp_bgr32, + pl110_draw_line8_lblp_bgr32, + pl110_draw_line16_555_lblp_bgr32, + pl110_draw_line32_lblp_bgr32, + pl110_draw_line16_lblp_bgr32, + pl110_draw_line12_lblp_bgr32, + + pl110_draw_line1_bbbp_bgr32, + pl110_draw_line2_bbbp_bgr32, + pl110_draw_line4_bbbp_bgr32, + pl110_draw_line8_bbbp_bgr32, + pl110_draw_line16_555_bbbp_bgr32, + pl110_draw_line32_bbbp_bgr32, + pl110_draw_line16_bbbp_bgr32, + pl110_draw_line12_bbbp_bgr32, + + pl110_draw_line1_lbbp_bgr32, + pl110_draw_line2_lbbp_bgr32, + pl110_draw_line4_lbbp_bgr32, + pl110_draw_line8_lbbp_bgr32, + pl110_draw_line16_555_lbbp_bgr32, + pl110_draw_line32_lbbp_bgr32, + pl110_draw_line16_lbbp_bgr32, + pl110_draw_line12_lbbp_bgr32, + + pl110_draw_line1_lblp_rgb32, + pl110_draw_line2_lblp_rgb32, + pl110_draw_line4_lblp_rgb32, + pl110_draw_line8_lblp_rgb32, + pl110_draw_line16_555_lblp_rgb32, + pl110_draw_line32_lblp_rgb32, + pl110_draw_line16_lblp_rgb32, + pl110_draw_line12_lblp_rgb32, + + pl110_draw_line1_bbbp_rgb32, + pl110_draw_line2_bbbp_rgb32, + pl110_draw_line4_bbbp_rgb32, + pl110_draw_line8_bbbp_rgb32, + pl110_draw_line16_555_bbbp_rgb32, + pl110_draw_line32_bbbp_rgb32, + pl110_draw_line16_bbbp_rgb32, + pl110_draw_line12_bbbp_rgb32, + + pl110_draw_line1_lbbp_rgb32, + pl110_draw_line2_lbbp_rgb32, + pl110_draw_line4_lbbp_rgb32, + pl110_draw_line8_lbbp_rgb32, + pl110_draw_line16_555_lbbp_rgb32, + pl110_draw_line32_lbbp_rgb32, + pl110_draw_line16_lbbp_rgb32, + pl110_draw_line12_lbbp_rgb32, +}; + +#undef BITS +#undef COPY_PIXEL + static int pl110_enabled(PL110State *s) { From patchwork Thu Feb 11 14:15:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083451 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 028CAC433E0 for ; Thu, 11 Feb 2021 14:19:53 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 811BB64E92 for ; Thu, 11 Feb 2021 14:19:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 811BB64E92 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:56812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACox-0003YV-HI for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:19:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55580) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACkv-0006XY-8o for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:45 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:50794) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkc-00074W-2J for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:37 -0500 Received: by mail-wm1-x32e.google.com with SMTP id 190so5704531wmz.0 for ; Thu, 11 Feb 2021 06:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=og9KQQdUmxD32yR3FyUcwq5x901q0uWSRIkM9UH1rUs=; b=wL2Ok7XK8W1C9rWKvBjT9g1uX0m45O/j/RvQ3WD5ySc3MEUZz9XSjO8UTIdXE2l65K QMWwvHfWTWAFCKI8O0+j/9I8qrCwgrxDhj2XBbc5EoxND6oodxcloAAl24soB7aP3Zi4 m4XDGfEQBCQ/MG4KEQji4/iy4Cn3XdKCbElP6jlAl+dZcJFTofN+nK5l14mMMZzpAmXr XecpoTDgfrksoRE9j8BAJIKOmNC83X8EtyNTeGkYgFLKgUc8TEGniX3A/goJHiYzgivf HVxRxuS2hbNmssV+dPFdvLL1BWiPA/gSXEHeu583Qt4d/Iu26j8r4HoD83wyfUpLnpyF RWBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=og9KQQdUmxD32yR3FyUcwq5x901q0uWSRIkM9UH1rUs=; b=EsCITLU5wKjaWcVX+lLCOlNsOSrw50bVYIdQo3Bwg+kYtewR7VaReZ/OHXtmUomRK9 HubZDPwB1P3QvHiMuZjAsP4sXafG8yQr/UyxmMnsn+p9tYq4c3qlfEanzRWfeWxhauzG BjXKecKtckCEdE8AOGFuvHK8P6ksNQxQbXJC4YTDH3Y8atYZVN/+snOszm5zoVtmD+Q/ ND30AaiOQmrQ3yXrLc78kVaslF2SpVdtLk4hHck81jWFY9eyyHZ8P8250h6hnAOf2Nbi whfLZH2TQZr9hLeT+oomvQ/5XJNzZj9uilQ4myIsmy9aLADMVolx4zjmM+dM0LfJ8JfW alJA== X-Gm-Message-State: AOAM530ZplCM9h+f9Qi2/kyQJHfn+rOd2AcvI5iOis/W7cNLAf26A8Jc nROEJE+MprO0dkMeNad2UwLZVg== X-Google-Smtp-Source: ABdhPJzjkBdsmSYweO6HoBLsZWAbs5aLFClaSWrnXu3cduEnQ/P+mDhRk+GBPneMx+WgPxkdaB7WcA== X-Received: by 2002:a1c:c903:: with SMTP id f3mr5334787wmb.69.1613052920013; Thu, 11 Feb 2021 06:15:20 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:19 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 3/9] hw/display/pl110: Remove use of BITS from pl110_template.h Date: Thu, 11 Feb 2021 14:15:09 +0000 Message-Id: <20210211141515.8755-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" BITS is always 32, so remove all uses of it from the template header, by dropping the trailing '32' from the draw function names and not constructing the name of rgb_to_pixel32() via the glue() macro. Signed-off-by: Peter Maydell --- hw/display/pl110_template.h | 20 +++---- hw/display/pl110.c | 113 ++++++++++++++++++------------------ 2 files changed, 65 insertions(+), 68 deletions(-) diff --git a/hw/display/pl110_template.h b/hw/display/pl110_template.h index 0d8471db636..877419aa817 100644 --- a/hw/display/pl110_template.h +++ b/hw/display/pl110_template.h @@ -14,18 +14,18 @@ #endif #if ORDER == 0 -#define NAME glue(glue(lblp_, BORDER), BITS) +#define NAME glue(lblp_, BORDER) #ifdef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif #elif ORDER == 1 -#define NAME glue(glue(bbbp_, BORDER), BITS) +#define NAME glue(bbbp_, BORDER) #ifndef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif #else #define SWAP_PIXELS 1 -#define NAME glue(glue(lbbp_, BORDER), BITS) +#define NAME glue(lbbp_, BORDER) #ifdef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif @@ -174,14 +174,14 @@ static void glue(pl110_draw_line16_,NAME)(void *opaque, uint8_t *d, const uint8_ MSB = (data & 0x1f) << 3; data >>= 5; #endif - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0x1f) << 3; data >>= 5; g = (data & 0x3f) << 2; data >>= 6; MSB = (data & 0x1f) << 3; data >>= 5; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; @@ -211,7 +211,7 @@ static void glue(pl110_draw_line32_,NAME)(void *opaque, uint8_t *d, const uint8_ g = (data >> 16) & 0xff; MSB = (data >> 8) & 0xff; #endif - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width--; @@ -242,14 +242,14 @@ static void glue(pl110_draw_line16_555_,NAME)(void *opaque, uint8_t *d, const ui data >>= 5; MSB = (data & 0x1f) << 3; data >>= 5; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0x1f) << 3; data >>= 5; g = (data & 0x1f) << 3; data >>= 5; MSB = (data & 0x1f) << 3; data >>= 6; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; @@ -280,14 +280,14 @@ static void glue(pl110_draw_line12_,NAME)(void *opaque, uint8_t *d, const uint8_ data >>= 4; MSB = (data & 0xf) << 4; data >>= 8; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0xf) << 4; data >>= 4; g = (data & 0xf) << 4; data >>= 4; MSB = (data & 0xf) << 4; data >>= 8; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; diff --git a/hw/display/pl110.c b/hw/display/pl110.c index ce300662e8b..4bf15c1da51 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -123,7 +123,6 @@ static const unsigned char *idregs[] = { pl111_id }; -#define BITS 32 #define COPY_PIXEL(to, from) do { *(uint32_t *)to = from; to += 4; } while (0) #undef RGB @@ -145,65 +144,63 @@ static const unsigned char *idregs[] = { #include "pl110_template.h" #undef BORDER -static drawfn pl110_draw_fn_32[48] = { - pl110_draw_line1_lblp_bgr32, - pl110_draw_line2_lblp_bgr32, - pl110_draw_line4_lblp_bgr32, - pl110_draw_line8_lblp_bgr32, - pl110_draw_line16_555_lblp_bgr32, - pl110_draw_line32_lblp_bgr32, - pl110_draw_line16_lblp_bgr32, - pl110_draw_line12_lblp_bgr32, - - pl110_draw_line1_bbbp_bgr32, - pl110_draw_line2_bbbp_bgr32, - pl110_draw_line4_bbbp_bgr32, - pl110_draw_line8_bbbp_bgr32, - pl110_draw_line16_555_bbbp_bgr32, - pl110_draw_line32_bbbp_bgr32, - pl110_draw_line16_bbbp_bgr32, - pl110_draw_line12_bbbp_bgr32, - - pl110_draw_line1_lbbp_bgr32, - pl110_draw_line2_lbbp_bgr32, - pl110_draw_line4_lbbp_bgr32, - pl110_draw_line8_lbbp_bgr32, - pl110_draw_line16_555_lbbp_bgr32, - pl110_draw_line32_lbbp_bgr32, - pl110_draw_line16_lbbp_bgr32, - pl110_draw_line12_lbbp_bgr32, - - pl110_draw_line1_lblp_rgb32, - pl110_draw_line2_lblp_rgb32, - pl110_draw_line4_lblp_rgb32, - pl110_draw_line8_lblp_rgb32, - pl110_draw_line16_555_lblp_rgb32, - pl110_draw_line32_lblp_rgb32, - pl110_draw_line16_lblp_rgb32, - pl110_draw_line12_lblp_rgb32, - - pl110_draw_line1_bbbp_rgb32, - pl110_draw_line2_bbbp_rgb32, - pl110_draw_line4_bbbp_rgb32, - pl110_draw_line8_bbbp_rgb32, - pl110_draw_line16_555_bbbp_rgb32, - pl110_draw_line32_bbbp_rgb32, - pl110_draw_line16_bbbp_rgb32, - pl110_draw_line12_bbbp_rgb32, - - pl110_draw_line1_lbbp_rgb32, - pl110_draw_line2_lbbp_rgb32, - pl110_draw_line4_lbbp_rgb32, - pl110_draw_line8_lbbp_rgb32, - pl110_draw_line16_555_lbbp_rgb32, - pl110_draw_line32_lbbp_rgb32, - pl110_draw_line16_lbbp_rgb32, - pl110_draw_line12_lbbp_rgb32, -}; - -#undef BITS #undef COPY_PIXEL +static drawfn pl110_draw_fn_32[48] = { + pl110_draw_line1_lblp_bgr, + pl110_draw_line2_lblp_bgr, + pl110_draw_line4_lblp_bgr, + pl110_draw_line8_lblp_bgr, + pl110_draw_line16_555_lblp_bgr, + pl110_draw_line32_lblp_bgr, + pl110_draw_line16_lblp_bgr, + pl110_draw_line12_lblp_bgr, + + pl110_draw_line1_bbbp_bgr, + pl110_draw_line2_bbbp_bgr, + pl110_draw_line4_bbbp_bgr, + pl110_draw_line8_bbbp_bgr, + pl110_draw_line16_555_bbbp_bgr, + pl110_draw_line32_bbbp_bgr, + pl110_draw_line16_bbbp_bgr, + pl110_draw_line12_bbbp_bgr, + + pl110_draw_line1_lbbp_bgr, + pl110_draw_line2_lbbp_bgr, + pl110_draw_line4_lbbp_bgr, + pl110_draw_line8_lbbp_bgr, + pl110_draw_line16_555_lbbp_bgr, + pl110_draw_line32_lbbp_bgr, + pl110_draw_line16_lbbp_bgr, + pl110_draw_line12_lbbp_bgr, + + pl110_draw_line1_lblp_rgb, + pl110_draw_line2_lblp_rgb, + pl110_draw_line4_lblp_rgb, + pl110_draw_line8_lblp_rgb, + pl110_draw_line16_555_lblp_rgb, + pl110_draw_line32_lblp_rgb, + pl110_draw_line16_lblp_rgb, + pl110_draw_line12_lblp_rgb, + + pl110_draw_line1_bbbp_rgb, + pl110_draw_line2_bbbp_rgb, + pl110_draw_line4_bbbp_rgb, + pl110_draw_line8_bbbp_rgb, + pl110_draw_line16_555_bbbp_rgb, + pl110_draw_line32_bbbp_rgb, + pl110_draw_line16_bbbp_rgb, + pl110_draw_line12_bbbp_rgb, + + pl110_draw_line1_lbbp_rgb, + pl110_draw_line2_lbbp_rgb, + pl110_draw_line4_lbbp_rgb, + pl110_draw_line8_lbbp_rgb, + pl110_draw_line16_555_lbbp_rgb, + pl110_draw_line32_lbbp_rgb, + pl110_draw_line16_lbbp_rgb, + pl110_draw_line12_lbbp_rgb, +}; static int pl110_enabled(PL110State *s) { From patchwork Thu Feb 11 14:15:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083461 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47565C433E0 for ; Thu, 11 Feb 2021 14:22:22 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B951064EAC for ; Thu, 11 Feb 2021 14:22:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B951064EAC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:36152 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACrM-0006mj-HT for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:22:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55634) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl1-0006Y9-Q7 for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:48 -0500 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:36964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkd-00074l-42 for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:46 -0500 Received: by mail-wm1-x333.google.com with SMTP id m1so5893633wml.2 for ; Thu, 11 Feb 2021 06:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZgajD4GVdukUaJwhlU9+CkgVqEYFIUQ6PIIepWOOktw=; b=mxHjQPbnAOwyIEKW8BVHA7AJCSbUZZzemaLcX4aS661Fzv+L0BYBkH+jOzElLOYRcp vPRLo98OBBPOIkJyRz0jjjcymH1sAECaRy9O25jjM0V8OXucfJl/vqkpiqr2eMqgAS1/ DXmDNzsJHDmiTqA6JlaVzgRpS/WRGYVdTzMvVO5CePEJpvYW4RvBhwpaPYv7oVpOfWcq Rz/y/BDoi4uF2W576vrIz0CsZkqCPwCfmV/KFXMC+fRtY10E4Xi+ZNCHrRZngtnXin34 o8Vgm1ctaVds3CplWGA4iGC9rLquXNK31mr1gz3uWJuRZorDwAlivVL70Nn902aBj80C D+1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZgajD4GVdukUaJwhlU9+CkgVqEYFIUQ6PIIepWOOktw=; b=UbGPfzfWAdtctYl+4NJ/skd5pZy9qoLHVU0aKM9lJE10841wHGn4sJ4m6keCMWZXx+ G004/l+fMkW2z5HQOae7Zk2Wq6VMBoyJh5FTlFpvgh8B64hiKwVuRHzzqTz+WmBilmc/ oR+Lyr/QgCALD545hcVPkhnpDrIH/Tq/Rd9X8s2jzDUs+5TIkUscvZ02NBsYwdOsZtVj O+hDsHfZNgL0EHEXr30ZOxk8cv+m+eVrJqcisWueRd46RiWNbIbqgEKRDON0UDB+AW5M VwaxCoEk1rQneyRFgr4M1c2Gs+L3arDIO77LT611wxfuq7H9XoZRUvsluh2n4k9eL6EP 9SOQ== X-Gm-Message-State: AOAM5326ynsx2P8EHOgEpBeO+WrmKUIAdPB/PXx2wo0rs36pmDDtaEyC EPo4l0mFfdL1E9oG+/8fq+rbXw== X-Google-Smtp-Source: ABdhPJzYqV2m0DRJwhE4xeEIVsFbi9omG0+kZfJv0ok0bM/D2aThi2DT6Bdq5ySgKjIqn4kNOFIt0A== X-Received: by 2002:a1c:f002:: with SMTP id a2mr126412wmb.117.1613052920778; Thu, 11 Feb 2021 06:15:20 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:20 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 4/9] hw/display/pxa2xx_lcd: Remove dead code for non-32-bpp surfaces Date: Thu, 11 Feb 2021 14:15:10 +0000 Message-Id: <20210211141515.8755-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" For a long time now the UI layer has guaranteed that the console surface is always 32 bits per pixel. Remove the legacy dead code from the pxa2xx_lcd display device which was handling the possibility that the console surface was some other format. Signed-off-by: Peter Maydell --- hw/display/pxa2xx_lcd.c | 79 +++++++++-------------------------------- 1 file changed, 17 insertions(+), 62 deletions(-) diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c index dfff9949627..786a777629f 100644 --- a/hw/display/pxa2xx_lcd.c +++ b/hw/display/pxa2xx_lcd.c @@ -45,7 +45,6 @@ struct PXA2xxLCDState { int invalidated; QemuConsole *con; - drawfn *line_fn[2]; int dest_width; int xres, yres; int pal_for; @@ -188,6 +187,9 @@ typedef struct QEMU_PACKED { #define LDCMD_SOFINT (1 << 22) #define LDCMD_PAL (1 << 26) +#define BITS 32 +#include "pxa2xx_template.h" + /* Route internal interrupt lines to the global IC */ static void pxa2xx_lcdc_int_update(PXA2xxLCDState *s) { @@ -674,14 +676,21 @@ static void pxa2xx_palette_parse(PXA2xxLCDState *s, int ch, int bpp) } } +static inline drawfn pxa2xx_drawfn(PXA2xxLCDState *s) +{ + if (s->transp) { + return pxa2xx_draw_fn_32t[s->bpp]; + } else { + return pxa2xx_draw_fn_32[s->bpp]; + } +} + static void pxa2xx_lcdc_dma0_redraw_rot0(PXA2xxLCDState *s, hwaddr addr, int *miny, int *maxy) { DisplaySurface *surface = qemu_console_surface(s->con); int src_width, dest_width; - drawfn fn = NULL; - if (s->dest_width) - fn = s->line_fn[s->transp][s->bpp]; + drawfn fn = pxa2xx_drawfn(s); if (!fn) return; @@ -710,9 +719,7 @@ static void pxa2xx_lcdc_dma0_redraw_rot90(PXA2xxLCDState *s, { DisplaySurface *surface = qemu_console_surface(s->con); int src_width, dest_width; - drawfn fn = NULL; - if (s->dest_width) - fn = s->line_fn[s->transp][s->bpp]; + drawfn fn = pxa2xx_drawfn(s); if (!fn) return; @@ -742,10 +749,7 @@ static void pxa2xx_lcdc_dma0_redraw_rot180(PXA2xxLCDState *s, { DisplaySurface *surface = qemu_console_surface(s->con); int src_width, dest_width; - drawfn fn = NULL; - if (s->dest_width) { - fn = s->line_fn[s->transp][s->bpp]; - } + drawfn fn = pxa2xx_drawfn(s); if (!fn) { return; } @@ -776,10 +780,7 @@ static void pxa2xx_lcdc_dma0_redraw_rot270(PXA2xxLCDState *s, { DisplaySurface *surface = qemu_console_surface(s->con); int src_width, dest_width; - drawfn fn = NULL; - if (s->dest_width) { - fn = s->line_fn[s->transp][s->bpp]; - } + drawfn fn = pxa2xx_drawfn(s); if (!fn) { return; } @@ -990,17 +991,6 @@ static const VMStateDescription vmstate_pxa2xx_lcdc = { } }; -#define BITS 8 -#include "pxa2xx_template.h" -#define BITS 15 -#include "pxa2xx_template.h" -#define BITS 16 -#include "pxa2xx_template.h" -#define BITS 24 -#include "pxa2xx_template.h" -#define BITS 32 -#include "pxa2xx_template.h" - static const GraphicHwOps pxa2xx_ops = { .invalidate = pxa2xx_invalidate_display, .gfx_update = pxa2xx_update_display, @@ -1010,7 +1000,6 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem, hwaddr base, qemu_irq irq) { PXA2xxLCDState *s; - DisplaySurface *surface; s = (PXA2xxLCDState *) g_malloc0(sizeof(PXA2xxLCDState)); s->invalidated = 1; @@ -1024,41 +1013,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem, memory_region_add_subregion(sysmem, base, &s->iomem); s->con = graphic_console_init(NULL, 0, &pxa2xx_ops, s); - surface = qemu_console_surface(s->con); - - switch (surface_bits_per_pixel(surface)) { - case 0: - s->dest_width = 0; - break; - case 8: - s->line_fn[0] = pxa2xx_draw_fn_8; - s->line_fn[1] = pxa2xx_draw_fn_8t; - s->dest_width = 1; - break; - case 15: - s->line_fn[0] = pxa2xx_draw_fn_15; - s->line_fn[1] = pxa2xx_draw_fn_15t; - s->dest_width = 2; - break; - case 16: - s->line_fn[0] = pxa2xx_draw_fn_16; - s->line_fn[1] = pxa2xx_draw_fn_16t; - s->dest_width = 2; - break; - case 24: - s->line_fn[0] = pxa2xx_draw_fn_24; - s->line_fn[1] = pxa2xx_draw_fn_24t; - s->dest_width = 3; - break; - case 32: - s->line_fn[0] = pxa2xx_draw_fn_32; - s->line_fn[1] = pxa2xx_draw_fn_32t; - s->dest_width = 4; - break; - default: - fprintf(stderr, "%s: Bad color depth\n", __func__); - exit(1); - } + s->dest_width = 4; vmstate_register(NULL, 0, &vmstate_pxa2xx_lcdc, s); From patchwork Thu Feb 11 14:15:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083455 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E85EC433DB for ; Thu, 11 Feb 2021 14:20:52 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1398264E38 for ; Thu, 11 Feb 2021 14:20:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1398264E38 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:60126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACpu-0004ut-TT for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:20:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl2-0006Z7-F5 for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:50 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:35322) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkf-00075X-9n for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:48 -0500 Received: by mail-wm1-x32f.google.com with SMTP id n10so4028301wmq.0 for ; Thu, 11 Feb 2021 06:15:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=s9AAYXTgEn51qVy6T0eITT5uVdwHQA2+VsimtxQtp+8=; b=G4eZzsObjctnirgcirU6ej9sEy0Kmk3gtjwGH7oGlFyYt+fXl9Z6JH1VeTeQQH0XOU 9aPdcVDxBgp2Ctg/uIf2Cj5KlBJ1896Bib8pf+Ykz61ASS+gImzDzaKtDiuebFcUzmsN 8DbqEPpzq2CpJF/dFSj6IYLa7nJDYQL8uCipWyNEjd5NyUEhsWGgJRvl+EV/bbWE/cJ4 okpEaMupO3JcuDNMvb8/EZWhfxDLNL969nylBqb31em1sXbKAuDNk9pBmCMxL8UtgzAW sD0xo5CJeO411JkwmtslmJ+Fc+kG1I1RnxHHph6iyB3d4MPzPNaXS7Sie9585Km6DDii rxIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=s9AAYXTgEn51qVy6T0eITT5uVdwHQA2+VsimtxQtp+8=; b=q5OU30xetbaG4leqto1sjycVxu7N2ejACqygLT47LbEy0GFATwoym9/zk+a2N/9NCR BBNpDFGk0yIbeTP7esgznwGlROcERuE8sp3hE2GA2EnMBWgRVTXigBmWh2dRqW3O7Z6C X+XolupO/lo1cPPJFf47i13IcB0+1O5UOKcMeAxGe/4uzpHSk81pPlC1CCceSdajaopU 5LqWEVDjbcAooUrxU506rAdLPvtyunJOr0jJ9ZAeeHBxDEdd84q53ofonRvthCCY6hZN UeyTUT/R6rxMyQbrnmWGQJByybl4AUNnMr17KxCrfhAyInU/dMfyoMJkQ0oezVO4sEi4 kLNQ== X-Gm-Message-State: AOAM531RDBBg4rcS/1sR1SpjnRNMoyQY7vURlJoEqVFEmrA3l/wANy04 WGTIpcFJeW1EQdXd9fB3bgwdbg== X-Google-Smtp-Source: ABdhPJzzskzXVFwx1gZZmteL0A7USZeqI6SXPQs/1oN6p0PidtbULUlZiwu0PlHWYiVUueXz5Px6fw== X-Received: by 2002:a1c:f001:: with SMTP id a1mr5373426wmb.21.1613052921882; Thu, 11 Feb 2021 06:15:21 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:21 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 5/9] hw/display/pxa2xx_lcd: Remove dest_width state field Date: Thu, 11 Feb 2021 14:15:11 +0000 Message-Id: <20210211141515.8755-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Since the dest_width is now always 4 because the output surface is 32bpp, we can replace the dest_width state field with a constant. Signed-off-by: Peter Maydell --- hw/display/pxa2xx_lcd.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c index 786a777629f..33343832bbc 100644 --- a/hw/display/pxa2xx_lcd.c +++ b/hw/display/pxa2xx_lcd.c @@ -187,6 +187,9 @@ typedef struct QEMU_PACKED { #define LDCMD_SOFINT (1 << 22) #define LDCMD_PAL (1 << 26) +/* Size of a pixel in the QEMU UI output surface, in bytes */ +#define DEST_PIXEL_WIDTH 4 + #define BITS 32 #include "pxa2xx_template.h" @@ -702,14 +705,14 @@ static void pxa2xx_lcdc_dma0_redraw_rot0(PXA2xxLCDState *s, else if (s->bpp > pxa_lcdc_8bpp) src_width *= 2; - dest_width = s->xres * s->dest_width; + dest_width = s->xres * DEST_PIXEL_WIDTH; *miny = 0; if (s->invalidated) { framebuffer_update_memory_section(&s->fbsection, s->sysmem, addr, s->yres, src_width); } framebuffer_update_display(surface, &s->fbsection, s->xres, s->yres, - src_width, dest_width, s->dest_width, + src_width, dest_width, DEST_PIXEL_WIDTH, s->invalidated, fn, s->dma_ch[0].palette, miny, maxy); } @@ -731,14 +734,14 @@ static void pxa2xx_lcdc_dma0_redraw_rot90(PXA2xxLCDState *s, else if (s->bpp > pxa_lcdc_8bpp) src_width *= 2; - dest_width = s->yres * s->dest_width; + dest_width = s->yres * DEST_PIXEL_WIDTH; *miny = 0; if (s->invalidated) { framebuffer_update_memory_section(&s->fbsection, s->sysmem, addr, s->yres, src_width); } framebuffer_update_display(surface, &s->fbsection, s->xres, s->yres, - src_width, s->dest_width, -dest_width, + src_width, DEST_PIXEL_WIDTH, -dest_width, s->invalidated, fn, s->dma_ch[0].palette, miny, maxy); @@ -763,14 +766,14 @@ static void pxa2xx_lcdc_dma0_redraw_rot180(PXA2xxLCDState *s, src_width *= 2; } - dest_width = s->xres * s->dest_width; + dest_width = s->xres * DEST_PIXEL_WIDTH; *miny = 0; if (s->invalidated) { framebuffer_update_memory_section(&s->fbsection, s->sysmem, addr, s->yres, src_width); } framebuffer_update_display(surface, &s->fbsection, s->xres, s->yres, - src_width, -dest_width, -s->dest_width, + src_width, -dest_width, -DEST_PIXEL_WIDTH, s->invalidated, fn, s->dma_ch[0].palette, miny, maxy); } @@ -794,14 +797,14 @@ static void pxa2xx_lcdc_dma0_redraw_rot270(PXA2xxLCDState *s, src_width *= 2; } - dest_width = s->yres * s->dest_width; + dest_width = s->yres * DEST_PIXEL_WIDTH; *miny = 0; if (s->invalidated) { framebuffer_update_memory_section(&s->fbsection, s->sysmem, addr, s->yres, src_width); } framebuffer_update_display(surface, &s->fbsection, s->xres, s->yres, - src_width, -s->dest_width, dest_width, + src_width, -DEST_PIXEL_WIDTH, dest_width, s->invalidated, fn, s->dma_ch[0].palette, miny, maxy); @@ -1013,7 +1016,6 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem, memory_region_add_subregion(sysmem, base, &s->iomem); s->con = graphic_console_init(NULL, 0, &pxa2xx_ops, s); - s->dest_width = 4; vmstate_register(NULL, 0, &vmstate_pxa2xx_lcdc, s); From patchwork Thu Feb 11 14:15:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083465 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4640C433E0 for ; Thu, 11 Feb 2021 14:25:40 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1836B64EA1 for ; Thu, 11 Feb 2021 14:25:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1836B64EA1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:46370 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACuZ-0002a4-0n for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:25:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55672) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl4-0006Ze-BT for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:52 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:55982) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkf-000766-CH for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:50 -0500 Received: by mail-wm1-x334.google.com with SMTP id o15so3915198wmq.5 for ; Thu, 11 Feb 2021 06:15:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Zv2u6w5q5esrZorBsQrCABmG0xarOvGvSZxOFdFbVVI=; b=fv742X9Nt8cveRnXPyo09PvWLstprnTaR/YEPp/wPBtMKGRishaVE//PM1xEPjFe5Q jf4kerKGv2lLYAiyNJVuwb3KTbc4LPuNw5+ySOBHzcpIYvF9xw3hNctd5K+Ka+xd73fI VOl7IhQaPvDqhcWYyANW6PHui3VC0awdEcgdCrgKCG4wq7i+RAQcK2VbtiszRDxkEVN0 IgODshJ0AAAU7CKLe71HwNFxlitrM48m3Z03zLYXKZ6qbRMh04+gHchUsYqsPIMakr6v 6q7rhL39PozC0QAwjlwHNQhFWkvlCS871OeqX36lkq/5sJfN6CbL+nmI5bVbwPeUXubw 2RXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Zv2u6w5q5esrZorBsQrCABmG0xarOvGvSZxOFdFbVVI=; b=qeGi0FU0RhV5frEN7lp2sDl+9L/+ziEk0nrRuEU5QN1+RJQWl4fNT2Mjqc2dlfW5bb beiMj8Z/jJoZldI8FdKVZh0Kl+9NqQ+fd2Sh01Ex7ti9UIcJ3Mv782NkkMaikFZFK5So 5kS33q0CgrxBpjSes5O2AVC0/oOPPbbqEZuJfEe78g/6dRCw7AdYDb3TA2kpARvQV5a5 bHl2+hjNVLFb+heXnLeqMFPd6kmBeX1B3/E6uJ3V2x3EcJhDa5ULD/J4wKHo0UIFcW8B NPGx48A4huSldZnC4iLdiku+S82Ah0WyzYBlRQrH7/3xycdyobSGrrGFVqJKGP2Ywqh3 re7A== X-Gm-Message-State: AOAM531pCBMGhaJsVSScf+cC3wfMY1TsGyLiQcrvStAVaxjWFatQEmqb ynSqzizIYvGw1C51qE/cnyUoyg== X-Google-Smtp-Source: ABdhPJwh2fYNi8XU3zVbh4tWAZGAXRSW5fxwxyEWfVMJu/QhXuGfQHcCv5FyhQkHTC9OST/NjsbmBw== X-Received: by 2002:a05:600c:28d3:: with SMTP id h19mr5358567wmd.147.1613052922726; Thu, 11 Feb 2021 06:15:22 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:22 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 6/9] hw/display/pxa2xx: Remove use of BITS in pxa2xx_template.h Date: Thu, 11 Feb 2021 14:15:12 +0000 Message-Id: <20210211141515.8755-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Now that BITS is always 32, expand out all its uses in the template header, including removing now-useless uses of the glue() macro. Signed-off-by: Peter Maydell --- hw/display/pxa2xx_template.h | 110 ++++++++++++++--------------------- 1 file changed, 45 insertions(+), 65 deletions(-) diff --git a/hw/display/pxa2xx_template.h b/hw/display/pxa2xx_template.h index c64eebc4b68..711fd9994e2 100644 --- a/hw/display/pxa2xx_template.h +++ b/hw/display/pxa2xx_template.h @@ -10,30 +10,11 @@ */ # define SKIP_PIXEL(to) to += deststep -#if BITS == 8 -# define COPY_PIXEL(to, from) do { *to = from; SKIP_PIXEL(to); } while (0) -#elif BITS == 15 || BITS == 16 -# define COPY_PIXEL(to, from) \ - do { \ - *(uint16_t *) to = from; \ - SKIP_PIXEL(to); \ - } while (0) -#elif BITS == 24 -# define COPY_PIXEL(to, from) \ - do { \ - *(uint16_t *) to = from; \ - *(to + 2) = (from) >> 16; \ - SKIP_PIXEL(to); \ - } while (0) -#elif BITS == 32 # define COPY_PIXEL(to, from) \ do { \ *(uint32_t *) to = from; \ SKIP_PIXEL(to); \ } while (0) -#else -# error unknown bit depth -#endif #ifdef HOST_WORDS_BIGENDIAN # define SWAP_WORDS 1 @@ -42,7 +23,7 @@ #define FN_2(x) FN(x + 1) FN(x) #define FN_4(x) FN_2(x + 2) FN_2(x) -static void glue(pxa2xx_draw_line2_, BITS)(void *opaque, +static void pxa2xx_draw_line2(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t *palette = opaque; @@ -67,7 +48,7 @@ static void glue(pxa2xx_draw_line2_, BITS)(void *opaque, } } -static void glue(pxa2xx_draw_line4_, BITS)(void *opaque, +static void pxa2xx_draw_line4(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t *palette = opaque; @@ -92,7 +73,7 @@ static void glue(pxa2xx_draw_line4_, BITS)(void *opaque, } } -static void glue(pxa2xx_draw_line8_, BITS)(void *opaque, +static void pxa2xx_draw_line8(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t *palette = opaque; @@ -117,7 +98,7 @@ static void glue(pxa2xx_draw_line8_, BITS)(void *opaque, } } -static void glue(pxa2xx_draw_line16_, BITS)(void *opaque, +static void pxa2xx_draw_line16(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -133,19 +114,19 @@ static void glue(pxa2xx_draw_line16_, BITS)(void *opaque, data >>= 6; r = (data & 0x1f) << 3; data >>= 5; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); b = (data & 0x1f) << 3; data >>= 5; g = (data & 0x3f) << 2; data >>= 6; r = (data & 0x1f) << 3; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 2; src += 4; } } -static void glue(pxa2xx_draw_line16t_, BITS)(void *opaque, +static void pxa2xx_draw_line16t(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -164,7 +145,7 @@ static void glue(pxa2xx_draw_line16t_, BITS)(void *opaque, if (data & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); data >>= 1; b = (data & 0x1f) << 3; data >>= 5; @@ -175,13 +156,13 @@ static void glue(pxa2xx_draw_line16t_, BITS)(void *opaque, if (data & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 2; src += 4; } } -static void glue(pxa2xx_draw_line18_, BITS)(void *opaque, +static void pxa2xx_draw_line18(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -196,14 +177,14 @@ static void glue(pxa2xx_draw_line18_, BITS)(void *opaque, g = (data & 0x3f) << 2; data >>= 6; r = (data & 0x3f) << 2; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 1; src += 4; } } /* The wicked packed format */ -static void glue(pxa2xx_draw_line18p_, BITS)(void *opaque, +static void pxa2xx_draw_line18p(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data[3]; @@ -226,32 +207,32 @@ static void glue(pxa2xx_draw_line18p_, BITS)(void *opaque, data[0] >>= 6; r = (data[0] & 0x3f) << 2; data[0] >>= 12; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); b = (data[0] & 0x3f) << 2; data[0] >>= 6; g = ((data[1] & 0xf) << 4) | (data[0] << 2); data[1] >>= 4; r = (data[1] & 0x3f) << 2; data[1] >>= 12; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); b = (data[1] & 0x3f) << 2; data[1] >>= 6; g = (data[1] & 0x3f) << 2; data[1] >>= 6; r = ((data[2] & 0x3) << 6) | (data[1] << 2); data[2] >>= 8; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); b = (data[2] & 0x3f) << 2; data[2] >>= 6; g = (data[2] & 0x3f) << 2; data[2] >>= 6; r = data[2] << 2; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 4; } } -static void glue(pxa2xx_draw_line19_, BITS)(void *opaque, +static void pxa2xx_draw_line19(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -270,14 +251,14 @@ static void glue(pxa2xx_draw_line19_, BITS)(void *opaque, if (data & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 1; src += 4; } } /* The wicked packed format */ -static void glue(pxa2xx_draw_line19p_, BITS)(void *opaque, +static void pxa2xx_draw_line19p(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data[3]; @@ -303,7 +284,7 @@ static void glue(pxa2xx_draw_line19p_, BITS)(void *opaque, if (data[0] & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); data[0] >>= 6; b = (data[0] & 0x3f) << 2; data[0] >>= 6; @@ -314,7 +295,7 @@ static void glue(pxa2xx_draw_line19p_, BITS)(void *opaque, if (data[1] & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); data[1] >>= 6; b = (data[1] & 0x3f) << 2; data[1] >>= 6; @@ -325,7 +306,7 @@ static void glue(pxa2xx_draw_line19p_, BITS)(void *opaque, if (data[2] & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); data[2] >>= 6; b = (data[2] & 0x3f) << 2; data[2] >>= 6; @@ -336,12 +317,12 @@ static void glue(pxa2xx_draw_line19p_, BITS)(void *opaque, if (data[2] & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 4; } } -static void glue(pxa2xx_draw_line24_, BITS)(void *opaque, +static void pxa2xx_draw_line24(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -356,13 +337,13 @@ static void glue(pxa2xx_draw_line24_, BITS)(void *opaque, g = data & 0xff; data >>= 8; r = data & 0xff; - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 1; src += 4; } } -static void glue(pxa2xx_draw_line24t_, BITS)(void *opaque, +static void pxa2xx_draw_line24t(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -381,13 +362,13 @@ static void glue(pxa2xx_draw_line24t_, BITS)(void *opaque, if (data & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 1; src += 4; } } -static void glue(pxa2xx_draw_line25_, BITS)(void *opaque, +static void pxa2xx_draw_line25(void *opaque, uint8_t *dest, const uint8_t *src, int width, int deststep) { uint32_t data; @@ -406,39 +387,38 @@ static void glue(pxa2xx_draw_line25_, BITS)(void *opaque, if (data & 1) SKIP_PIXEL(dest); else - COPY_PIXEL(dest, glue(rgb_to_pixel, BITS)(r, g, b)); + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); width -= 1; src += 4; } } /* Overlay planes disabled, no transparency */ -static drawfn glue(pxa2xx_draw_fn_, BITS)[16] = +static drawfn pxa2xx_draw_fn_32[16] = { [0 ... 0xf] = NULL, - [pxa_lcdc_2bpp] = glue(pxa2xx_draw_line2_, BITS), - [pxa_lcdc_4bpp] = glue(pxa2xx_draw_line4_, BITS), - [pxa_lcdc_8bpp] = glue(pxa2xx_draw_line8_, BITS), - [pxa_lcdc_16bpp] = glue(pxa2xx_draw_line16_, BITS), - [pxa_lcdc_18bpp] = glue(pxa2xx_draw_line18_, BITS), - [pxa_lcdc_18pbpp] = glue(pxa2xx_draw_line18p_, BITS), - [pxa_lcdc_24bpp] = glue(pxa2xx_draw_line24_, BITS), + [pxa_lcdc_2bpp] = pxa2xx_draw_line2, + [pxa_lcdc_4bpp] = pxa2xx_draw_line4, + [pxa_lcdc_8bpp] = pxa2xx_draw_line8, + [pxa_lcdc_16bpp] = pxa2xx_draw_line16, + [pxa_lcdc_18bpp] = pxa2xx_draw_line18, + [pxa_lcdc_18pbpp] = pxa2xx_draw_line18p, + [pxa_lcdc_24bpp] = pxa2xx_draw_line24, }; /* Overlay planes enabled, transparency used */ -static drawfn glue(glue(pxa2xx_draw_fn_, BITS), t)[16] = +static drawfn pxa2xx_draw_fn_32t[16] = { [0 ... 0xf] = NULL, - [pxa_lcdc_4bpp] = glue(pxa2xx_draw_line4_, BITS), - [pxa_lcdc_8bpp] = glue(pxa2xx_draw_line8_, BITS), - [pxa_lcdc_16bpp] = glue(pxa2xx_draw_line16t_, BITS), - [pxa_lcdc_19bpp] = glue(pxa2xx_draw_line19_, BITS), - [pxa_lcdc_19pbpp] = glue(pxa2xx_draw_line19p_, BITS), - [pxa_lcdc_24bpp] = glue(pxa2xx_draw_line24t_, BITS), - [pxa_lcdc_25bpp] = glue(pxa2xx_draw_line25_, BITS), + [pxa_lcdc_4bpp] = pxa2xx_draw_line4, + [pxa_lcdc_8bpp] = pxa2xx_draw_line8, + [pxa_lcdc_16bpp] = pxa2xx_draw_line16t, + [pxa_lcdc_19bpp] = pxa2xx_draw_line19, + [pxa_lcdc_19pbpp] = pxa2xx_draw_line19p, + [pxa_lcdc_24bpp] = pxa2xx_draw_line24t, + [pxa_lcdc_25bpp] = pxa2xx_draw_line25, }; -#undef BITS #undef COPY_PIXEL #undef SKIP_PIXEL From patchwork Thu Feb 11 14:15:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083453 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D075CC433E0 for ; Thu, 11 Feb 2021 14:20:05 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 48D2F64E92 for ; Thu, 11 Feb 2021 14:20:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 48D2F64E92 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:57754 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACpA-0003xP-Bo for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:20:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl1-0006YA-SM for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:48 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:33101) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkf-00076J-CV for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:47 -0500 Received: by mail-wm1-x32f.google.com with SMTP id a16so6025327wmm.0 for ; Thu, 11 Feb 2021 06:15:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/q6QTfiiOxA3oY14+4dd/XG0OuRlBQOoQGLBGtVV1NU=; b=LTLXxVsQea7Bwumij9ZCPhZWWihDB7JxfVYdK40vFrhv8hsLJBYK2TxkzOSxROsWLg eha77Qauv509mfO1/+cqyd9e3Tw0B5FSo/7n+boO6MmUC5Jfz97UUhN8sNUje2UPeLU1 pu/88scVSKZ5kymsbzkYwJtydNn5mwWHITtPMsNV8fo1KVJ+xvOOONuRLpkmWzFgVyIw yTIZ0R3WuiN5dn30McldkH7uHrTVus2nYIUDHT3Hjhu1Y/Sc1Oo9jOoHhL9LHTekyY4M XjLjBjtqWRwgD19wEZh/4BOFT49mzCR3p2U/MzFeFvPvgdPEj5VNG5+k/Rw+bLNlMIbf 4dsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/q6QTfiiOxA3oY14+4dd/XG0OuRlBQOoQGLBGtVV1NU=; b=IysGjl3CxxvDp3WeBuSePH/kBXEd8JyVyWeKtCLOpUe+x7spUecrATrwn3+g4xBhM0 +67a5yltwHdwx9PtmKdOfdbd6MzrtB06FDZFpi1V952zK5LvVo2T8Qqakbrpt9mQ1r7k 1ONBBh7T5gb8dpQwN5eUUk6MP08KUTQD/1aSz7cmr1D3YDVUCvDkHajbQbYttnbR/ESm TBMsIhrGcI+PUJC8bfs4DYltVYAJ/46GYwLWjw+ZjNngDn0tRTsQ/D5rBYhEZVd0fEUd ZMwKcEUGWyfGdQyVCvsPismNxG6dsbaCuFk5eIIuRsknRJbIv696fuIGsJNEkEuExZt0 I+vQ== X-Gm-Message-State: AOAM533bz2oghieAruZouEPYoaNRC9VJd7n7VBmPvh5HCaSudG0vcKft UmVVE+BjDN7McYPi03G0uyQtjHVOmzDX6w== X-Google-Smtp-Source: ABdhPJzMN0WzZgW4ql2S4lKFhKqIVlfq6nvTja50Yi2wnboNmZH5jVf0GUtcyEe0K9rYPZKL9+922g== X-Received: by 2002:a1c:8096:: with SMTP id b144mr5604040wmd.169.1613052923456; Thu, 11 Feb 2021 06:15:23 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:23 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 7/9] hw/display/pxa2xx: Apply brace-related coding style fixes to template header Date: Thu, 11 Feb 2021 14:15:13 +0000 Message-Id: <20210211141515.8755-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" We're about to move code from the template header into pxa2xx_lcd.c. Before doing that, make coding style fixes so checkpatch doesn't complain about the patch which moves the code. This commit fixes missing braces in the SKIP_PIXEL() macro definition and in if() statements. Signed-off-by: Peter Maydell --- hw/display/pxa2xx_template.h | 47 +++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/hw/display/pxa2xx_template.h b/hw/display/pxa2xx_template.h index 711fd9994e2..1c13d3ac007 100644 --- a/hw/display/pxa2xx_template.h +++ b/hw/display/pxa2xx_template.h @@ -9,7 +9,7 @@ * Framebuffer format conversion routines. */ -# define SKIP_PIXEL(to) to += deststep +# define SKIP_PIXEL(to) do { to += deststep; } while (0) # define COPY_PIXEL(to, from) \ do { \ *(uint32_t *) to = from; \ @@ -142,10 +142,11 @@ static void pxa2xx_draw_line16t(void *opaque, data >>= 5; r = (data & 0x1f) << 3; data >>= 5; - if (data & 1) + if (data & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } data >>= 1; b = (data & 0x1f) << 3; data >>= 5; @@ -153,10 +154,11 @@ static void pxa2xx_draw_line16t(void *opaque, data >>= 5; r = (data & 0x1f) << 3; data >>= 5; - if (data & 1) + if (data & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } width -= 2; src += 4; } @@ -248,10 +250,11 @@ static void pxa2xx_draw_line19(void *opaque, data >>= 6; r = (data & 0x3f) << 2; data >>= 6; - if (data & 1) + if (data & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } width -= 1; src += 4; } @@ -281,10 +284,11 @@ static void pxa2xx_draw_line19p(void *opaque, data[0] >>= 6; r = (data[0] & 0x3f) << 2; data[0] >>= 6; - if (data[0] & 1) + if (data[0] & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } data[0] >>= 6; b = (data[0] & 0x3f) << 2; data[0] >>= 6; @@ -292,10 +296,11 @@ static void pxa2xx_draw_line19p(void *opaque, data[1] >>= 4; r = (data[1] & 0x3f) << 2; data[1] >>= 6; - if (data[1] & 1) + if (data[1] & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } data[1] >>= 6; b = (data[1] & 0x3f) << 2; data[1] >>= 6; @@ -303,10 +308,11 @@ static void pxa2xx_draw_line19p(void *opaque, data[1] >>= 6; r = ((data[2] & 0x3) << 6) | (data[1] << 2); data[2] >>= 2; - if (data[2] & 1) + if (data[2] & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } data[2] >>= 6; b = (data[2] & 0x3f) << 2; data[2] >>= 6; @@ -314,10 +320,11 @@ static void pxa2xx_draw_line19p(void *opaque, data[2] >>= 6; r = data[2] << 2; data[2] >>= 6; - if (data[2] & 1) + if (data[2] & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } width -= 4; } } @@ -359,10 +366,11 @@ static void pxa2xx_draw_line24t(void *opaque, data >>= 8; r = data & 0xff; data >>= 8; - if (data & 1) + if (data & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } width -= 1; src += 4; } @@ -384,10 +392,11 @@ static void pxa2xx_draw_line25(void *opaque, data >>= 8; r = data & 0xff; data >>= 8; - if (data & 1) + if (data & 1) { SKIP_PIXEL(dest); - else + } else { COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } width -= 1; src += 4; } From patchwork Thu Feb 11 14:15:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083463 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04A74C433E0 for ; Thu, 11 Feb 2021 14:23:50 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 729C064ED4 for ; Thu, 11 Feb 2021 14:23:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 729C064ED4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:40528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACsm-00008K-GI for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:23:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl6-0006aJ-Dk for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:52 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:35941) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkg-00076T-6n for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:51 -0500 Received: by mail-wm1-x32c.google.com with SMTP id i9so5908851wmq.1 for ; Thu, 11 Feb 2021 06:15:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O6dkaa6KUnyKjpOeBlod62XP865fcAhsz6ScpfQ42eo=; b=ayY1H5/EYzGBhDdS7iXct/vc035qJ/xoOQa75hM+9gcJ1KKL31720poDmACQJN+YTD nRyg9t1Ch6ypkqVBKHoWMs0GQcJxMwuy2wcZ4XtoR3ulYJCyX+1aipV5XoL4wDZTSPbL Yh2KFABYLcgP9kK2dvrthL27sYtR8wlL9qGlmD3sgSQIAEsrN5noAxouzsXvaYF+uy8e eOdOSzPR3cspV1zSPhbmc1wZnZlmnvOjDwPbzVJdEelxLE29FUSDpJrmSL1ehGDnRZWR OHVzoRT5RgMYv0XdAseQmmx7ArAWzTvRNWq7a0rOkP4eUDMEWP9NfkZeQUBhnLl63i8j 2dhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=O6dkaa6KUnyKjpOeBlod62XP865fcAhsz6ScpfQ42eo=; b=QrKbmUE9AXpdYgeO8pdGvCKOY2UAPBRdtAasYbCtYPlbgiiKWfuJsgkti3yej8U5IE D0HjbBkErlWxnbzGR4QXQkqwvqRA7JsqbRIPNC+C6P3uOfYx7jXAJrbsAlbTS5SQ1dVT wikAXjLsqB8M4wgA4rgfShEvSNdB2sfG1wDPb6HmeJGnpljjYkcYZ8dltVvbS7P9E5A7 isL5IaS01hyMqqbiQL4qxGsLj/QzES/V1zjPSpEi7Fgx7AYx/XAVy/OsGQgp1H4Zjq1X fa9//yRbe2kQeBJ67mUUQx3uh69gxvyKD6fVm+R7lHskkFvaqozOZRssQDZtn3nVCgPl Y9fQ== X-Gm-Message-State: AOAM530Sox8NavsN2RpZjdn1IF0ZDVkTpUcjSoTW6jE8U83NvEOGVEjf Ve6v/xULI/tvdrpA3ZWUQSCCaw== X-Google-Smtp-Source: ABdhPJxJXy8+mWy1jkD/eKh4pZjNJn3LW8Zr42uUejam0TmK/9AdStwiksNrhOqd6EBV9hzk9J8NSw== X-Received: by 2002:a1c:f212:: with SMTP id s18mr5294284wmc.107.1613052924219; Thu, 11 Feb 2021 06:15:24 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:23 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 8/9] hw/display/pxa2xx: Apply whitespace-only coding style fixes to template header Date: Thu, 11 Feb 2021 14:15:14 +0000 Message-Id: <20210211141515.8755-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" We're about to move code from the template header into pxa2xx_lcd.c. Before doing that, make coding style fixes so checkpatch doesn't complain about the patch which moves the code. This commit is whitespace changes only: * avoid hard-coded tabs * fix ident on function prototypes * no newline before open brace on array definitions Signed-off-by: Peter Maydell --- hw/display/pxa2xx_template.h | 66 +++++++++++++++++------------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/hw/display/pxa2xx_template.h b/hw/display/pxa2xx_template.h index 1c13d3ac007..d91407592d3 100644 --- a/hw/display/pxa2xx_template.h +++ b/hw/display/pxa2xx_template.h @@ -17,20 +17,20 @@ } while (0) #ifdef HOST_WORDS_BIGENDIAN -# define SWAP_WORDS 1 +# define SWAP_WORDS 1 #endif -#define FN_2(x) FN(x + 1) FN(x) -#define FN_4(x) FN_2(x + 2) FN_2(x) +#define FN_2(x) FN(x + 1) FN(x) +#define FN_4(x) FN_2(x + 2) FN_2(x) -static void pxa2xx_draw_line2(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line2(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t *palette = opaque; uint32_t data; while (width > 0) { data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 2)) & 3]); +#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 2)) & 3]); #ifdef SWAP_WORDS FN_4(12) FN_4(8) @@ -48,14 +48,14 @@ static void pxa2xx_draw_line2(void *opaque, } } -static void pxa2xx_draw_line4(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line4(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t *palette = opaque; uint32_t data; while (width > 0) { data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 4)) & 0xf]); +#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 4)) & 0xf]); #ifdef SWAP_WORDS FN_2(6) FN_2(4) @@ -73,14 +73,14 @@ static void pxa2xx_draw_line4(void *opaque, } } -static void pxa2xx_draw_line8(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line8(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t *palette = opaque; uint32_t data; while (width > 0) { data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> (x)) & 0xff]); +#define FN(x) COPY_PIXEL(dest, palette[(data >> (x)) & 0xff]); #ifdef SWAP_WORDS FN(24) FN(16) @@ -98,8 +98,8 @@ static void pxa2xx_draw_line8(void *opaque, } } -static void pxa2xx_draw_line16(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line16(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -126,8 +126,8 @@ static void pxa2xx_draw_line16(void *opaque, } } -static void pxa2xx_draw_line16t(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line16t(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -164,8 +164,8 @@ static void pxa2xx_draw_line16t(void *opaque, } } -static void pxa2xx_draw_line18(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line18(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -186,8 +186,8 @@ static void pxa2xx_draw_line18(void *opaque, } /* The wicked packed format */ -static void pxa2xx_draw_line18p(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line18p(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data[3]; unsigned int r, g, b; @@ -234,8 +234,8 @@ static void pxa2xx_draw_line18p(void *opaque, } } -static void pxa2xx_draw_line19(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line19(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -261,8 +261,8 @@ static void pxa2xx_draw_line19(void *opaque, } /* The wicked packed format */ -static void pxa2xx_draw_line19p(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line19p(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data[3]; unsigned int r, g, b; @@ -329,8 +329,8 @@ static void pxa2xx_draw_line19p(void *opaque, } } -static void pxa2xx_draw_line24(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line24(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -350,8 +350,8 @@ static void pxa2xx_draw_line24(void *opaque, } } -static void pxa2xx_draw_line24t(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line24t(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -376,8 +376,8 @@ static void pxa2xx_draw_line24t(void *opaque, } } -static void pxa2xx_draw_line25(void *opaque, - uint8_t *dest, const uint8_t *src, int width, int deststep) +static void pxa2xx_draw_line25(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) { uint32_t data; unsigned int r, g, b; @@ -403,8 +403,7 @@ static void pxa2xx_draw_line25(void *opaque, } /* Overlay planes disabled, no transparency */ -static drawfn pxa2xx_draw_fn_32[16] = -{ +static drawfn pxa2xx_draw_fn_32[16] = { [0 ... 0xf] = NULL, [pxa_lcdc_2bpp] = pxa2xx_draw_line2, [pxa_lcdc_4bpp] = pxa2xx_draw_line4, @@ -416,8 +415,7 @@ static drawfn pxa2xx_draw_fn_32[16] = }; /* Overlay planes enabled, transparency used */ -static drawfn pxa2xx_draw_fn_32t[16] = -{ +static drawfn pxa2xx_draw_fn_32t[16] = { [0 ... 0xf] = NULL, [pxa_lcdc_4bpp] = pxa2xx_draw_line4, [pxa_lcdc_8bpp] = pxa2xx_draw_line8, From patchwork Thu Feb 11 14:15:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 12083467 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04873C433E0 for ; Thu, 11 Feb 2021 14:26:08 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6570D64E92 for ; Thu, 11 Feb 2021 14:26:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6570D64E92 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lACv0-0003P5-AV for qemu-devel@archiver.kernel.org; Thu, 11 Feb 2021 09:26:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55710) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lACl6-0006aX-HP for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:52 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:36960) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lACkh-00076h-Br for qemu-devel@nongnu.org; Thu, 11 Feb 2021 09:15:52 -0500 Received: by mail-wm1-x32e.google.com with SMTP id m1so5893882wml.2 for ; Thu, 11 Feb 2021 06:15:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bLwKuBMYEIs0Pkx5seWGRltCtoyFUJXryNh27AN7ZjI=; b=x7MR9qbGo55hQS05cKdXYFlJqRrDn8skRdaOPka3vsWQSuLSUY8H4YmoRpEuxx9r32 OdauIbiR3r/UTn9WU/ywny/qvOXPJ7Vs1iez1W2YolDcRVS/yksmzcXxhpZ4LQu0N8bP kviKH9/3kkpl+2puHw1gFduKgsfpG/Bm/GUPpJYkPC2jMxgq12oMUxrfLUei7SJ8Qqij 1kol2wqSHLJUgcM0fNgQWBnGd8StXxZPL5NiZp+5NqTbxBBBhkTdzsu4SocQ7IgtTSsz nKuWjMk26kpxiiDWlu94lSlz6ySqoJEtyF/hPcZ3h0ENmmFJkqGrPNOUvBS119qrSxTK 0hlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bLwKuBMYEIs0Pkx5seWGRltCtoyFUJXryNh27AN7ZjI=; b=egFUIa/k9iQOQJyzPwRxp+vaBNRvu9zZgeNnKdq93fFBCKYF3SAxpOT4SgHpu5QARW BJNOBnRXM/TNOVoccHNYpd73JfVkoWsR7SPHp+rBriDhqNa1+ZYaLIqQyBXEBaWRv/RP 8MwRxns1B7ViBOuhLqN8Vv/eppPEJ3G6Br57MKAgfV5RGZuVA1CsWQIyNsDWHSto/QI/ LzOFpStCrzJTfpMmrfGD9Y4hP85c+XtH0pNh9MrTCaSz9DKfartFbKNhawarhVe8h6Av cYFcWIrnkK2WrCtqpC6PAFymaERKzUqMwrVKXeVXZXm441Gro1V6ewG4gynDnnUAPZ6W cvkA== X-Gm-Message-State: AOAM531QEc0im9JuLm5vuYJzcR4yDFoxh66cWCtNRZpPBZvSTZIkJ/lX oe757mNUV/skCjOHTY1CDrSOIQ== X-Google-Smtp-Source: ABdhPJzeedLmoSx2alR/KNN7PgHHClFNbOL11+f6g14qwNp/1Dvs7Z22vZ8Q29zfepMAIZhhubTWKg== X-Received: by 2002:a1c:de54:: with SMTP id v81mr5345427wmg.181.1613052925350; Thu, 11 Feb 2021 06:15:25 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id h13sm5223291wrv.20.2021.02.11.06.15.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 06:15:25 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 9/9] hw/display/pxa2xx: Inline template header Date: Thu, 11 Feb 2021 14:15:15 +0000 Message-Id: <20210211141515.8755-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210211141515.8755-1-peter.maydell@linaro.org> References: <20210211141515.8755-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The template header is now included only once; just inline its contents in hw/display/pxa2xx_lcd.c. Signed-off-by: Peter Maydell --- hw/display/pxa2xx_template.h | 434 ----------------------------------- hw/display/pxa2xx_lcd.c | 427 +++++++++++++++++++++++++++++++++- 2 files changed, 425 insertions(+), 436 deletions(-) delete mode 100644 hw/display/pxa2xx_template.h diff --git a/hw/display/pxa2xx_template.h b/hw/display/pxa2xx_template.h deleted file mode 100644 index d91407592d3..00000000000 --- a/hw/display/pxa2xx_template.h +++ /dev/null @@ -1,434 +0,0 @@ -/* - * Intel XScale PXA255/270 LCDC emulation. - * - * Copyright (c) 2006 Openedhand Ltd. - * Written by Andrzej Zaborowski - * - * This code is licensed under the GPLv2. - * - * Framebuffer format conversion routines. - */ - -# define SKIP_PIXEL(to) do { to += deststep; } while (0) -# define COPY_PIXEL(to, from) \ - do { \ - *(uint32_t *) to = from; \ - SKIP_PIXEL(to); \ - } while (0) - -#ifdef HOST_WORDS_BIGENDIAN -# define SWAP_WORDS 1 -#endif - -#define FN_2(x) FN(x + 1) FN(x) -#define FN_4(x) FN_2(x + 2) FN_2(x) - -static void pxa2xx_draw_line2(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t *palette = opaque; - uint32_t data; - while (width > 0) { - data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 2)) & 3]); -#ifdef SWAP_WORDS - FN_4(12) - FN_4(8) - FN_4(4) - FN_4(0) -#else - FN_4(0) - FN_4(4) - FN_4(8) - FN_4(12) -#endif -#undef FN - width -= 16; - src += 4; - } -} - -static void pxa2xx_draw_line4(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t *palette = opaque; - uint32_t data; - while (width > 0) { - data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 4)) & 0xf]); -#ifdef SWAP_WORDS - FN_2(6) - FN_2(4) - FN_2(2) - FN_2(0) -#else - FN_2(0) - FN_2(2) - FN_2(4) - FN_2(6) -#endif -#undef FN - width -= 8; - src += 4; - } -} - -static void pxa2xx_draw_line8(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t *palette = opaque; - uint32_t data; - while (width > 0) { - data = *(uint32_t *) src; -#define FN(x) COPY_PIXEL(dest, palette[(data >> (x)) & 0xff]); -#ifdef SWAP_WORDS - FN(24) - FN(16) - FN(8) - FN(0) -#else - FN(0) - FN(8) - FN(16) - FN(24) -#endif -#undef FN - width -= 4; - src += 4; - } -} - -static void pxa2xx_draw_line16(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = (data & 0x1f) << 3; - data >>= 5; - g = (data & 0x3f) << 2; - data >>= 6; - r = (data & 0x1f) << 3; - data >>= 5; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - b = (data & 0x1f) << 3; - data >>= 5; - g = (data & 0x3f) << 2; - data >>= 6; - r = (data & 0x1f) << 3; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - width -= 2; - src += 4; - } -} - -static void pxa2xx_draw_line16t(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = (data & 0x1f) << 3; - data >>= 5; - g = (data & 0x1f) << 3; - data >>= 5; - r = (data & 0x1f) << 3; - data >>= 5; - if (data & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - data >>= 1; - b = (data & 0x1f) << 3; - data >>= 5; - g = (data & 0x1f) << 3; - data >>= 5; - r = (data & 0x1f) << 3; - data >>= 5; - if (data & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - width -= 2; - src += 4; - } -} - -static void pxa2xx_draw_line18(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = (data & 0x3f) << 2; - data >>= 6; - g = (data & 0x3f) << 2; - data >>= 6; - r = (data & 0x3f) << 2; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - width -= 1; - src += 4; - } -} - -/* The wicked packed format */ -static void pxa2xx_draw_line18p(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data[3]; - unsigned int r, g, b; - while (width > 0) { - data[0] = *(uint32_t *) src; - src += 4; - data[1] = *(uint32_t *) src; - src += 4; - data[2] = *(uint32_t *) src; - src += 4; -#ifdef SWAP_WORDS - data[0] = bswap32(data[0]); - data[1] = bswap32(data[1]); - data[2] = bswap32(data[2]); -#endif - b = (data[0] & 0x3f) << 2; - data[0] >>= 6; - g = (data[0] & 0x3f) << 2; - data[0] >>= 6; - r = (data[0] & 0x3f) << 2; - data[0] >>= 12; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - b = (data[0] & 0x3f) << 2; - data[0] >>= 6; - g = ((data[1] & 0xf) << 4) | (data[0] << 2); - data[1] >>= 4; - r = (data[1] & 0x3f) << 2; - data[1] >>= 12; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - b = (data[1] & 0x3f) << 2; - data[1] >>= 6; - g = (data[1] & 0x3f) << 2; - data[1] >>= 6; - r = ((data[2] & 0x3) << 6) | (data[1] << 2); - data[2] >>= 8; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - b = (data[2] & 0x3f) << 2; - data[2] >>= 6; - g = (data[2] & 0x3f) << 2; - data[2] >>= 6; - r = data[2] << 2; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - width -= 4; - } -} - -static void pxa2xx_draw_line19(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = (data & 0x3f) << 2; - data >>= 6; - g = (data & 0x3f) << 2; - data >>= 6; - r = (data & 0x3f) << 2; - data >>= 6; - if (data & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - width -= 1; - src += 4; - } -} - -/* The wicked packed format */ -static void pxa2xx_draw_line19p(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data[3]; - unsigned int r, g, b; - while (width > 0) { - data[0] = *(uint32_t *) src; - src += 4; - data[1] = *(uint32_t *) src; - src += 4; - data[2] = *(uint32_t *) src; - src += 4; -# ifdef SWAP_WORDS - data[0] = bswap32(data[0]); - data[1] = bswap32(data[1]); - data[2] = bswap32(data[2]); -# endif - b = (data[0] & 0x3f) << 2; - data[0] >>= 6; - g = (data[0] & 0x3f) << 2; - data[0] >>= 6; - r = (data[0] & 0x3f) << 2; - data[0] >>= 6; - if (data[0] & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - data[0] >>= 6; - b = (data[0] & 0x3f) << 2; - data[0] >>= 6; - g = ((data[1] & 0xf) << 4) | (data[0] << 2); - data[1] >>= 4; - r = (data[1] & 0x3f) << 2; - data[1] >>= 6; - if (data[1] & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - data[1] >>= 6; - b = (data[1] & 0x3f) << 2; - data[1] >>= 6; - g = (data[1] & 0x3f) << 2; - data[1] >>= 6; - r = ((data[2] & 0x3) << 6) | (data[1] << 2); - data[2] >>= 2; - if (data[2] & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - data[2] >>= 6; - b = (data[2] & 0x3f) << 2; - data[2] >>= 6; - g = (data[2] & 0x3f) << 2; - data[2] >>= 6; - r = data[2] << 2; - data[2] >>= 6; - if (data[2] & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - width -= 4; - } -} - -static void pxa2xx_draw_line24(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = data & 0xff; - data >>= 8; - g = data & 0xff; - data >>= 8; - r = data & 0xff; - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - width -= 1; - src += 4; - } -} - -static void pxa2xx_draw_line24t(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = (data & 0x7f) << 1; - data >>= 7; - g = data & 0xff; - data >>= 8; - r = data & 0xff; - data >>= 8; - if (data & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - width -= 1; - src += 4; - } -} - -static void pxa2xx_draw_line25(void *opaque, uint8_t *dest, const uint8_t *src, - int width, int deststep) -{ - uint32_t data; - unsigned int r, g, b; - while (width > 0) { - data = *(uint32_t *) src; -#ifdef SWAP_WORDS - data = bswap32(data); -#endif - b = data & 0xff; - data >>= 8; - g = data & 0xff; - data >>= 8; - r = data & 0xff; - data >>= 8; - if (data & 1) { - SKIP_PIXEL(dest); - } else { - COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); - } - width -= 1; - src += 4; - } -} - -/* Overlay planes disabled, no transparency */ -static drawfn pxa2xx_draw_fn_32[16] = { - [0 ... 0xf] = NULL, - [pxa_lcdc_2bpp] = pxa2xx_draw_line2, - [pxa_lcdc_4bpp] = pxa2xx_draw_line4, - [pxa_lcdc_8bpp] = pxa2xx_draw_line8, - [pxa_lcdc_16bpp] = pxa2xx_draw_line16, - [pxa_lcdc_18bpp] = pxa2xx_draw_line18, - [pxa_lcdc_18pbpp] = pxa2xx_draw_line18p, - [pxa_lcdc_24bpp] = pxa2xx_draw_line24, -}; - -/* Overlay planes enabled, transparency used */ -static drawfn pxa2xx_draw_fn_32t[16] = { - [0 ... 0xf] = NULL, - [pxa_lcdc_4bpp] = pxa2xx_draw_line4, - [pxa_lcdc_8bpp] = pxa2xx_draw_line8, - [pxa_lcdc_16bpp] = pxa2xx_draw_line16t, - [pxa_lcdc_19bpp] = pxa2xx_draw_line19, - [pxa_lcdc_19pbpp] = pxa2xx_draw_line19p, - [pxa_lcdc_24bpp] = pxa2xx_draw_line24t, - [pxa_lcdc_25bpp] = pxa2xx_draw_line25, -}; - -#undef COPY_PIXEL -#undef SKIP_PIXEL - -#ifdef SWAP_WORDS -# undef SWAP_WORDS -#endif diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c index 33343832bbc..2887ce496b4 100644 --- a/hw/display/pxa2xx_lcd.c +++ b/hw/display/pxa2xx_lcd.c @@ -190,8 +190,431 @@ typedef struct QEMU_PACKED { /* Size of a pixel in the QEMU UI output surface, in bytes */ #define DEST_PIXEL_WIDTH 4 -#define BITS 32 -#include "pxa2xx_template.h" +/* Line drawing code to handle the various possible guest pixel formats */ + +# define SKIP_PIXEL(to) do { to += deststep; } while (0) +# define COPY_PIXEL(to, from) \ + do { \ + *(uint32_t *) to = from; \ + SKIP_PIXEL(to); \ + } while (0) + +#ifdef HOST_WORDS_BIGENDIAN +# define SWAP_WORDS 1 +#endif + +#define FN_2(x) FN(x + 1) FN(x) +#define FN_4(x) FN_2(x + 2) FN_2(x) + +static void pxa2xx_draw_line2(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t *palette = opaque; + uint32_t data; + while (width > 0) { + data = *(uint32_t *) src; +#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 2)) & 3]); +#ifdef SWAP_WORDS + FN_4(12) + FN_4(8) + FN_4(4) + FN_4(0) +#else + FN_4(0) + FN_4(4) + FN_4(8) + FN_4(12) +#endif +#undef FN + width -= 16; + src += 4; + } +} + +static void pxa2xx_draw_line4(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t *palette = opaque; + uint32_t data; + while (width > 0) { + data = *(uint32_t *) src; +#define FN(x) COPY_PIXEL(dest, palette[(data >> ((x) * 4)) & 0xf]); +#ifdef SWAP_WORDS + FN_2(6) + FN_2(4) + FN_2(2) + FN_2(0) +#else + FN_2(0) + FN_2(2) + FN_2(4) + FN_2(6) +#endif +#undef FN + width -= 8; + src += 4; + } +} + +static void pxa2xx_draw_line8(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t *palette = opaque; + uint32_t data; + while (width > 0) { + data = *(uint32_t *) src; +#define FN(x) COPY_PIXEL(dest, palette[(data >> (x)) & 0xff]); +#ifdef SWAP_WORDS + FN(24) + FN(16) + FN(8) + FN(0) +#else + FN(0) + FN(8) + FN(16) + FN(24) +#endif +#undef FN + width -= 4; + src += 4; + } +} + +static void pxa2xx_draw_line16(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = (data & 0x1f) << 3; + data >>= 5; + g = (data & 0x3f) << 2; + data >>= 6; + r = (data & 0x1f) << 3; + data >>= 5; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + b = (data & 0x1f) << 3; + data >>= 5; + g = (data & 0x3f) << 2; + data >>= 6; + r = (data & 0x1f) << 3; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + width -= 2; + src += 4; + } +} + +static void pxa2xx_draw_line16t(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = (data & 0x1f) << 3; + data >>= 5; + g = (data & 0x1f) << 3; + data >>= 5; + r = (data & 0x1f) << 3; + data >>= 5; + if (data & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + data >>= 1; + b = (data & 0x1f) << 3; + data >>= 5; + g = (data & 0x1f) << 3; + data >>= 5; + r = (data & 0x1f) << 3; + data >>= 5; + if (data & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + width -= 2; + src += 4; + } +} + +static void pxa2xx_draw_line18(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = (data & 0x3f) << 2; + data >>= 6; + g = (data & 0x3f) << 2; + data >>= 6; + r = (data & 0x3f) << 2; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + width -= 1; + src += 4; + } +} + +/* The wicked packed format */ +static void pxa2xx_draw_line18p(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data[3]; + unsigned int r, g, b; + while (width > 0) { + data[0] = *(uint32_t *) src; + src += 4; + data[1] = *(uint32_t *) src; + src += 4; + data[2] = *(uint32_t *) src; + src += 4; +#ifdef SWAP_WORDS + data[0] = bswap32(data[0]); + data[1] = bswap32(data[1]); + data[2] = bswap32(data[2]); +#endif + b = (data[0] & 0x3f) << 2; + data[0] >>= 6; + g = (data[0] & 0x3f) << 2; + data[0] >>= 6; + r = (data[0] & 0x3f) << 2; + data[0] >>= 12; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + b = (data[0] & 0x3f) << 2; + data[0] >>= 6; + g = ((data[1] & 0xf) << 4) | (data[0] << 2); + data[1] >>= 4; + r = (data[1] & 0x3f) << 2; + data[1] >>= 12; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + b = (data[1] & 0x3f) << 2; + data[1] >>= 6; + g = (data[1] & 0x3f) << 2; + data[1] >>= 6; + r = ((data[2] & 0x3) << 6) | (data[1] << 2); + data[2] >>= 8; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + b = (data[2] & 0x3f) << 2; + data[2] >>= 6; + g = (data[2] & 0x3f) << 2; + data[2] >>= 6; + r = data[2] << 2; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + width -= 4; + } +} + +static void pxa2xx_draw_line19(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = (data & 0x3f) << 2; + data >>= 6; + g = (data & 0x3f) << 2; + data >>= 6; + r = (data & 0x3f) << 2; + data >>= 6; + if (data & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + width -= 1; + src += 4; + } +} + +/* The wicked packed format */ +static void pxa2xx_draw_line19p(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data[3]; + unsigned int r, g, b; + while (width > 0) { + data[0] = *(uint32_t *) src; + src += 4; + data[1] = *(uint32_t *) src; + src += 4; + data[2] = *(uint32_t *) src; + src += 4; +# ifdef SWAP_WORDS + data[0] = bswap32(data[0]); + data[1] = bswap32(data[1]); + data[2] = bswap32(data[2]); +# endif + b = (data[0] & 0x3f) << 2; + data[0] >>= 6; + g = (data[0] & 0x3f) << 2; + data[0] >>= 6; + r = (data[0] & 0x3f) << 2; + data[0] >>= 6; + if (data[0] & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + data[0] >>= 6; + b = (data[0] & 0x3f) << 2; + data[0] >>= 6; + g = ((data[1] & 0xf) << 4) | (data[0] << 2); + data[1] >>= 4; + r = (data[1] & 0x3f) << 2; + data[1] >>= 6; + if (data[1] & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + data[1] >>= 6; + b = (data[1] & 0x3f) << 2; + data[1] >>= 6; + g = (data[1] & 0x3f) << 2; + data[1] >>= 6; + r = ((data[2] & 0x3) << 6) | (data[1] << 2); + data[2] >>= 2; + if (data[2] & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + data[2] >>= 6; + b = (data[2] & 0x3f) << 2; + data[2] >>= 6; + g = (data[2] & 0x3f) << 2; + data[2] >>= 6; + r = data[2] << 2; + data[2] >>= 6; + if (data[2] & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + width -= 4; + } +} + +static void pxa2xx_draw_line24(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = data & 0xff; + data >>= 8; + g = data & 0xff; + data >>= 8; + r = data & 0xff; + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + width -= 1; + src += 4; + } +} + +static void pxa2xx_draw_line24t(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = (data & 0x7f) << 1; + data >>= 7; + g = data & 0xff; + data >>= 8; + r = data & 0xff; + data >>= 8; + if (data & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + width -= 1; + src += 4; + } +} + +static void pxa2xx_draw_line25(void *opaque, uint8_t *dest, const uint8_t *src, + int width, int deststep) +{ + uint32_t data; + unsigned int r, g, b; + while (width > 0) { + data = *(uint32_t *) src; +#ifdef SWAP_WORDS + data = bswap32(data); +#endif + b = data & 0xff; + data >>= 8; + g = data & 0xff; + data >>= 8; + r = data & 0xff; + data >>= 8; + if (data & 1) { + SKIP_PIXEL(dest); + } else { + COPY_PIXEL(dest, rgb_to_pixel32(r, g, b)); + } + width -= 1; + src += 4; + } +} + +/* Overlay planes disabled, no transparency */ +static drawfn pxa2xx_draw_fn_32[16] = { + [0 ... 0xf] = NULL, + [pxa_lcdc_2bpp] = pxa2xx_draw_line2, + [pxa_lcdc_4bpp] = pxa2xx_draw_line4, + [pxa_lcdc_8bpp] = pxa2xx_draw_line8, + [pxa_lcdc_16bpp] = pxa2xx_draw_line16, + [pxa_lcdc_18bpp] = pxa2xx_draw_line18, + [pxa_lcdc_18pbpp] = pxa2xx_draw_line18p, + [pxa_lcdc_24bpp] = pxa2xx_draw_line24, +}; + +/* Overlay planes enabled, transparency used */ +static drawfn pxa2xx_draw_fn_32t[16] = { + [0 ... 0xf] = NULL, + [pxa_lcdc_4bpp] = pxa2xx_draw_line4, + [pxa_lcdc_8bpp] = pxa2xx_draw_line8, + [pxa_lcdc_16bpp] = pxa2xx_draw_line16t, + [pxa_lcdc_19bpp] = pxa2xx_draw_line19, + [pxa_lcdc_19pbpp] = pxa2xx_draw_line19p, + [pxa_lcdc_24bpp] = pxa2xx_draw_line24t, + [pxa_lcdc_25bpp] = pxa2xx_draw_line25, +}; + +#undef COPY_PIXEL +#undef SKIP_PIXEL + +#ifdef SWAP_WORDS +# undef SWAP_WORDS +#endif /* Route internal interrupt lines to the global IC */ static void pxa2xx_lcdc_int_update(PXA2xxLCDState *s)