From patchwork Wed Mar 10 04:09:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Gibson X-Patchwork-Id: 396660 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp58093jai; Tue, 9 Mar 2021 20:12:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJzOg+2ZK9QkhPKZhCF4JwRddSr1O93LhrD1sVPENHKFZ5qPHiy8bS0QdAlRXn1UAxiY56AX X-Received: by 2002:a25:2d4e:: with SMTP id s14mr1543450ybe.316.1615349560166; Tue, 09 Mar 2021 20:12:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615349560; cv=none; d=google.com; s=arc-20160816; b=DHj0+nAbhofTizqevhx0TKaDq9SYdSLUeXxCtvcjRcCKdrupXBnFEuD7WSWpr4gt1O dv2piMOTtgkO60tNXMbp6/kS2qjdUpO1kkPGxV23qMrmR0f4ws0MhVU6clDnLOL9efS6 udQ3qlvbLb5rhkXZJneYsuG1aTJAK05go2GoqYX5QZCo6tBnHGaDvplBocPNtDcKpbbH PemmqC034qioMutdhpWPPyQRMKZcDocQ3skCbgLKBgACBQ57vaIw0nfU8uE9ojfyKFbu ZQI0MnWGG6D0F7dHXBjEUO2gE0y3LY3wv8v9EJiyivt39IxirMxw9V8gUwAykweQqZf8 UB6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=0g9DpnugvJi8n9pi8SrpMOVuP4C8o0FDm7Mi0Imm1w8=; b=fhzLXNzfvoRh/ISXmDCy3wgJkKo+oyqg3I244QKzJDoYzhv8eDUz0sbrpe7RWbc4fC y0QfY9vJFE8u8BhcOFixKkh9iEEEdXNfdz5G2kG2ytJoCmufZkHXPuaZtFHDWEbvti/K U1f2vOUkcjN1+kMImV5Au2c5699xFyVkIytQQNdulvnuEiBAqHVEyUdT3r7OE3nvvYis Q8+gkFsqky7GUFItf1Kdf37JzMow+ICgZh/rix517qkb/6xsnEXVKQpcakwZqP2v7lwG TyOvRJY5AObahUJR/5I3mUG5yULOOoFz8Ie7rHlJesGHRlkdHl4yJ8O0qGJRSRAlHvMF LwmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=KGhojhca; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 11si17853797ybj.420.2021.03.09.20.12.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Mar 2021 20:12:40 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=KGhojhca; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:43984 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJqD8-0007CR-Vw for patch@linaro.org; Tue, 09 Mar 2021 23:12:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48102) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAl-0003Tp-FM; Tue, 09 Mar 2021 23:10:13 -0500 Received: from bilbo.ozlabs.org ([203.11.71.1]:56169 helo=ozlabs.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAj-00046u-DP; Tue, 09 Mar 2021 23:10:11 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 4DwJWd15hVz9sS8; Wed, 10 Mar 2021 15:10:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1615349405; bh=Q6YsQnQ2NHBT3n+G/C9i0pub6lxo+cLVM7w8a9XTAsM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KGhojhca97gCNoft/CunYWbI1HFyiO2GvjHwWwMxIe1buWhbOcxS1sLIUJExNZUoN rrU5tDj0Gpja+qQxHlnB3b4tg0yWDzocTgNEzhttqFozcgaGLQi6UKIpUm+LBlvT8E QBRhHjCN7+mJpAlz3THAYHKCDrb4pLT6Balzh1Ok= From: David Gibson To: peter.maydell@linaro.org, groug@kaod.org Subject: [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces Date: Wed, 10 Mar 2021 15:09:43 +1100 Message-Id: <20210310041002.333813-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210310041002.333813-1-david@gibson.dropbear.id.au> References: <20210310041002.333813-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Received-SPF: pass client-ip=203.11.71.1; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: David Gibson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell For a long time now the UI layer has guaranteed that the console surface is always 32 bits per pixel RGB. Remove the legacy dead code from the sm501 display device which was handling the possibility that the console surface was some other format. Signed-off-by: Peter Maydell Message-Id: <20210212180653.27588-2-peter.maydell@linaro.org> Acked-by: BALATON Zoltan Signed-off-by: David Gibson --- hw/display/sm501.c | 91 +++------------------------------------------- 1 file changed, 6 insertions(+), 85 deletions(-) -- 2.29.2 diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 8966b69bc7..aba447c18b 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1558,89 +1558,9 @@ typedef void draw_hwc_line_func(uint8_t *d, const uint8_t *s, int width, const uint8_t *palette, int c_x, int c_y); -#define DEPTH 8 -#include "sm501_template.h" - -#define DEPTH 15 -#include "sm501_template.h" - -#define BGR_FORMAT -#define DEPTH 15 -#include "sm501_template.h" - -#define DEPTH 16 -#include "sm501_template.h" - -#define BGR_FORMAT -#define DEPTH 16 -#include "sm501_template.h" - #define DEPTH 32 #include "sm501_template.h" -#define BGR_FORMAT -#define DEPTH 32 -#include "sm501_template.h" - -static draw_line_func *draw_line8_funcs[] = { - draw_line8_8, - draw_line8_15, - draw_line8_16, - draw_line8_32, - draw_line8_32bgr, - draw_line8_15bgr, - draw_line8_16bgr, -}; - -static draw_line_func *draw_line16_funcs[] = { - draw_line16_8, - draw_line16_15, - draw_line16_16, - draw_line16_32, - draw_line16_32bgr, - draw_line16_15bgr, - draw_line16_16bgr, -}; - -static draw_line_func *draw_line32_funcs[] = { - draw_line32_8, - draw_line32_15, - draw_line32_16, - draw_line32_32, - draw_line32_32bgr, - draw_line32_15bgr, - draw_line32_16bgr, -}; - -static draw_hwc_line_func *draw_hwc_line_funcs[] = { - draw_hwc_line_8, - draw_hwc_line_15, - draw_hwc_line_16, - draw_hwc_line_32, - draw_hwc_line_32bgr, - draw_hwc_line_15bgr, - draw_hwc_line_16bgr, -}; - -static inline int get_depth_index(DisplaySurface *surface) -{ - switch (surface_bits_per_pixel(surface)) { - default: - case 8: - return 0; - case 15: - return 1; - case 16: - return 2; - case 32: - if (is_surface_bgr(surface)) { - return 4; - } else { - return 3; - } - } -} - static void sm501_update_display(void *opaque) { SM501State *s = (SM501State *)opaque; @@ -1652,7 +1572,6 @@ static void sm501_update_display(void *opaque) int height = get_height(s, crt); int src_bpp = get_bpp(s, crt); int dst_bpp = surface_bytes_per_pixel(surface); - int dst_depth_index = get_depth_index(surface); draw_line_func *draw_line = NULL; draw_hwc_line_func *draw_hwc_line = NULL; int full_update = 0; @@ -1662,6 +1581,8 @@ static void sm501_update_display(void *opaque) uint8_t hwc_palette[3 * 3]; uint8_t *hwc_src = NULL; + assert(dst_bpp == 4); /* Output is always 32-bit RGB */ + if (!((crt ? s->dc_crt_control : s->dc_panel_control) & SM501_DC_CRT_CONTROL_ENABLE)) { return; @@ -1674,13 +1595,13 @@ static void sm501_update_display(void *opaque) /* choose draw_line function */ switch (src_bpp) { case 1: - draw_line = draw_line8_funcs[dst_depth_index]; + draw_line = draw_line8_32; break; case 2: - draw_line = draw_line16_funcs[dst_depth_index]; + draw_line = draw_line16_32; break; case 4: - draw_line = draw_line32_funcs[dst_depth_index]; + draw_line = draw_line32_32; break; default: qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display" @@ -1691,7 +1612,7 @@ static void sm501_update_display(void *opaque) /* set up to draw hardware cursor */ if (is_hwc_enabled(s, crt)) { /* choose cursor draw line function */ - draw_hwc_line = draw_hwc_line_funcs[dst_depth_index]; + draw_hwc_line = draw_hwc_line_32; hwc_src = get_hwc_address(s, crt); c_x = get_hwc_x(s, crt); c_y = get_hwc_y(s, crt); From patchwork Wed Mar 10 04:09:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Gibson X-Patchwork-Id: 396661 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp59644jai; Tue, 9 Mar 2021 20:15:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJyOYH+lBeMqbCU8l/GD4HXVjlvfAGoOukp0piFKWVJJtxdSxSKVMVZxGIzXZsKHqI7n5QaI X-Received: by 2002:a05:6602:21cd:: with SMTP id c13mr1154387ioc.44.1615349737597; Tue, 09 Mar 2021 20:15:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615349737; cv=none; d=google.com; s=arc-20160816; b=YZOk/RxyYPhzFYLKzTHN9KtVohzvef4i9Nhwp1p8CT4tSuQo5H5cmZIBXMdpEZbI+y UjxFyUNdoSHpJumAPHXQppreSzCJHNSc/kwPjwvUFV8J3wLfpP4Ae2Qgkguu7ScpCj5Z WWq93JbSYWOk/KeF0EpTkOKA0b9n9/ZpN6O89yeWudEtAMF5MWQZqrqUlgCoaVaqhY6R lJ5+GHXxaVmwsCRF4lDOwnCp0SAGQyLPylMhFh389+XMRYqJKBtZkcoeqrx4f+NGeF/M OuoD54kbTAWrwLXQL/ycrNb/IA62iulM6kLKDV/vVKShuWErjsYkY0KdvFKUIEuau3af LzHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=ooBwvO/y8sORpSycMO4+somCWT86476Yr53UMjx1WfY=; b=e/oFhzF+YLW3ousgqNw23zA69UokRlb5riXan9p9y6fUFYRWA9N6C1RLEMWPK8U6ja lH4wb+/qwvCEbhfnquNddLDv1qDEOTAr6YFgwmkus0QtajOTpj8H8HJ+EYSj++JpRwXU rus5V72WDlampX+poqK94W5Gbqt+zfCN+GnrkqYEliEmXaDwkb7iKxfkDraJ2XoUJh4s IFUvP2tjEy/ddmRko7WKflCgO+N0ttmCiJ9xJkK2hB+l6/mXaJoa65DteppLK37a2FKN UA6M1xNIO8HKyJ8v1sbA/1xGhIGEhYuF8nTN14a8tMETU5Z7THCfC9HsXGM+ZIrPoOWf uA0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=i0EiVE0P; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h3si14482881ili.59.2021.03.09.20.15.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Mar 2021 20:15:37 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=i0EiVE0P; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52498 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJqG1-0002SJ-0O for patch@linaro.org; Tue, 09 Mar 2021 23:15:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48100) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAl-0003Tk-Dw; Tue, 09 Mar 2021 23:10:13 -0500 Received: from ozlabs.org ([203.11.71.1]:36845) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAi-000477-Ua; Tue, 09 Mar 2021 23:10:11 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 4DwJWd21NDz9sWL; Wed, 10 Mar 2021 15:10:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1615349405; bh=FoD6B3IN6nlky86cPe2d7zQCD4SjMyjVayDMdmmA0pE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i0EiVE0POq0EYq/V5+a7FUd4LQ7rwkNvS39pVuz6qCOEJUAvyKHipT+36GU8Nz9nn AbFHxb8da/9dIh6+WPJa4sfY4HEjajybLETi7Zx2xOUZkzUVztTPnaEO1HZcHB5Ywq v7qLKyTrnX09MmvMdYcA2KLfp+mYPDeGbP1UxfhI= From: David Gibson To: peter.maydell@linaro.org, groug@kaod.org Subject: [PULL 02/20] hw/display/sm501: Expand out macros in template header Date: Wed, 10 Mar 2021 15:09:44 +1100 Message-Id: <20210310041002.333813-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210310041002.333813-1-david@gibson.dropbear.id.au> References: <20210310041002.333813-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Received-SPF: pass client-ip=203.11.71.1; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: David Gibson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell Now that we only include sm501_template.h for the DEPTH==32 case, we can expand out the uses of the BPP, PIXEL_TYPE and PIXEL_NAME macros in that header. Signed-off-by: Peter Maydell Message-Id: <20210212180653.27588-3-peter.maydell@linaro.org> Acked-by: BALATON Zoltan Signed-off-by: David Gibson --- hw/display/sm501_template.h | 60 +++++++++++-------------------------- 1 file changed, 17 insertions(+), 43 deletions(-) -- 2.29.2 diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h index a60abad019..28537a05d9 100644 --- a/hw/display/sm501_template.h +++ b/hw/display/sm501_template.h @@ -22,28 +22,8 @@ * THE SOFTWARE. */ -#if DEPTH == 8 -#define BPP 1 -#define PIXEL_TYPE uint8_t -#elif DEPTH == 15 || DEPTH == 16 -#define BPP 2 -#define PIXEL_TYPE uint16_t -#elif DEPTH == 32 -#define BPP 4 -#define PIXEL_TYPE uint32_t -#else -#error unsupport depth -#endif - -#ifdef BGR_FORMAT -#define PIXEL_NAME glue(DEPTH, bgr) -#else -#define PIXEL_NAME DEPTH -#endif /* BGR_FORMAT */ - - -static void glue(draw_line8_, PIXEL_NAME)( - uint8_t *d, const uint8_t *s, int width, const uint32_t *pal) +static void draw_line8_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) { uint8_t v, r, g, b; do { @@ -51,14 +31,14 @@ static void glue(draw_line8_, PIXEL_NAME)( r = (pal[v] >> 16) & 0xff; g = (pal[v] >> 8) & 0xff; b = (pal[v] >> 0) & 0xff; - *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b); + *(uint32_t *)d = rgb_to_pixel32(r, g, b); s++; - d += BPP; + d += 4; } while (--width != 0); } -static void glue(draw_line16_, PIXEL_NAME)( - uint8_t *d, const uint8_t *s, int width, const uint32_t *pal) +static void draw_line16_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) { uint16_t rgb565; uint8_t r, g, b; @@ -68,14 +48,14 @@ static void glue(draw_line16_, PIXEL_NAME)( r = (rgb565 >> 8) & 0xf8; g = (rgb565 >> 3) & 0xfc; b = (rgb565 << 3) & 0xf8; - *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b); + *(uint32_t *)d = rgb_to_pixel32(r, g, b); s += 2; - d += BPP; + d += 4; } while (--width != 0); } -static void glue(draw_line32_, PIXEL_NAME)( - uint8_t *d, const uint8_t *s, int width, const uint32_t *pal) +static void draw_line32_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) { uint8_t r, g, b; @@ -83,17 +63,17 @@ static void glue(draw_line32_, PIXEL_NAME)( r = s[2]; g = s[1]; b = s[0]; - *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b); + *(uint32_t *)d = rgb_to_pixel32(r, g, b); s += 4; - d += BPP; + d += 4; } while (--width != 0); } /** * Draw hardware cursor image on the given line. */ -static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s, - int width, const uint8_t *palette, int c_x, int c_y) +static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width, + const uint8_t *palette, int c_x, int c_y) { int i; uint8_t r, g, b, v, bitset = 0; @@ -101,7 +81,7 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s, /* get cursor position */ assert(0 <= c_y && c_y < SM501_HWC_HEIGHT); s += SM501_HWC_WIDTH * c_y / 4; /* 4 pixels per byte */ - d += c_x * BPP; + d += c_x * 4; for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) { /* get pixel value */ @@ -118,14 +98,8 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s, r = palette[v * 3 + 0]; g = palette[v * 3 + 1]; b = palette[v * 3 + 2]; - *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b); + *(uint32_t *)d = rgb_to_pixel32(r, g, b); } - d += BPP; + d += 4; } } - -#undef DEPTH -#undef BPP -#undef PIXEL_TYPE -#undef PIXEL_NAME -#undef BGR_FORMAT From patchwork Wed Mar 10 04:09:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Gibson X-Patchwork-Id: 396662 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp59863jai; Tue, 9 Mar 2021 20:16:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJzVYarMq6qRxF2b08R2hWI3wpo18l7F/DvyPTBZx8NzPOkbHinyMA/MyVjI27gaR6RQJpyH X-Received: by 2002:a5d:80d5:: with SMTP id h21mr1152187ior.11.1615349767507; Tue, 09 Mar 2021 20:16:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615349767; cv=none; d=google.com; s=arc-20160816; b=JlYRq4ZZmqh2ecJnjAjEh1a3od0732Q0UAGwEH+mYbmeWgh+wN9oTe5fZgvSvfVary yEbI6Gr7c/2sH3I+AASM0dfoAxPm3e/DqsAoJF1t6kd+91NYG6sXgvndMNpH8rmkL3nX K4+lATb2bkpJuuDA4tCfS6/U+85TK1kZPEvksNM5LUXnxLxoDu8Brny7veh/vk1p0YAe cQZycdMSZzoXIDx9c2kG9rIfd1Wvv9yOYtpItsWki9Og6ewHzV6yUT2Gp7LJVq2ExgbS NxZ1iSzZQ8Bf6XNfTHc5skWNWcSNQDrbJcA13B70ea8QswlwVwQBGd21jGOokJH9mxuq QkUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=VtP5VwHgrHYCK1+F597u0rAJgvGOdUgtJx6PvZp9gOI=; b=TPq62IzIsOQU+8gV2fKzyzI8JP96SxXt8VZcDKoDSGG0W6qK88a26sah1iY/EOlP73 eBrTIMivszY/9/cK/Egd7+KW4LZ6tl91ecfLAzR5UdiNosxzpZMs0FhC1J84ZhBX66H0 vDls7t0/lwGvKm6jP+yshe3DZePOMBAegzNN92D8HEOTb8XuLQIqBS4sPt/C5ZGBfh67 LbIpNRqhx1CIHAbXKK8JTZ0XkPo4/BmQu/FsAWPVWRqxL6g2iYxUICYH7xqpn8RwacCh c/2dZEukCC8lOYeRJe1tI41NDxvIuj2Xs+GTVuhA7r59xYyjikuASRUTuM/fIowkXMZE M7Fg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=ViKCR+QB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id c12si15281791jaq.69.2021.03.09.20.16.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Mar 2021 20:16:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b=ViKCR+QB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:54090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lJqGU-00037M-SV for patch@linaro.org; Tue, 09 Mar 2021 23:16:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48114) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAn-0003UC-E9; Tue, 09 Mar 2021 23:10:15 -0500 Received: from bilbo.ozlabs.org ([203.11.71.1]:53019 helo=ozlabs.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lJqAk-000479-Bb; Tue, 09 Mar 2021 23:10:12 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 4DwJWd2bB8z9sWR; Wed, 10 Mar 2021 15:10:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1615349405; bh=HP6BC7ZgaqPiHS+GRbApM2a5OYHOkhJ4BhBo3OvB/GQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ViKCR+QB8jJwL648gkhqmescYVZKdsUVfqZddXvvocBWnFQoku8fTJI7dvd2T2hb4 lDWbj0dDfVGGbEjtUZx5+0vZKUs7i+indkrrVxPDq8byaJpI6eP82Rza1S1EaZKxOw rWTW99QCxK3QUjE/G8V5kroprGJTgAD/+7jYzJkY= From: David Gibson To: peter.maydell@linaro.org, groug@kaod.org Subject: [PULL 03/20] hw/display/sm501: Inline template header into C file Date: Wed, 10 Mar 2021 15:09:45 +1100 Message-Id: <20210310041002.333813-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210310041002.333813-1-david@gibson.dropbear.id.au> References: <20210310041002.333813-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Received-SPF: pass client-ip=203.11.71.1; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no 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: David Gibson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell We no longer need to include sm501_template.h multiple times, so we can simply inline its contents into sm501.c. Signed-off-by: Peter Maydell Message-Id: <20210212180653.27588-4-peter.maydell@linaro.org> Acked-by: BALATON Zoltan Signed-off-by: David Gibson --- hw/display/sm501.c | 83 +++++++++++++++++++++++++++- hw/display/sm501_template.h | 105 ------------------------------------ 2 files changed, 81 insertions(+), 107 deletions(-) delete mode 100644 hw/display/sm501_template.h -- 2.29.2 diff --git a/hw/display/sm501.c b/hw/display/sm501.c index aba447c18b..8789722ef2 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1558,8 +1558,87 @@ typedef void draw_hwc_line_func(uint8_t *d, const uint8_t *s, int width, const uint8_t *palette, int c_x, int c_y); -#define DEPTH 32 -#include "sm501_template.h" +static void draw_line8_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) +{ + uint8_t v, r, g, b; + do { + v = ldub_p(s); + r = (pal[v] >> 16) & 0xff; + g = (pal[v] >> 8) & 0xff; + b = (pal[v] >> 0) & 0xff; + *(uint32_t *)d = rgb_to_pixel32(r, g, b); + s++; + d += 4; + } while (--width != 0); +} + +static void draw_line16_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) +{ + uint16_t rgb565; + uint8_t r, g, b; + + do { + rgb565 = lduw_le_p(s); + r = (rgb565 >> 8) & 0xf8; + g = (rgb565 >> 3) & 0xfc; + b = (rgb565 << 3) & 0xf8; + *(uint32_t *)d = rgb_to_pixel32(r, g, b); + s += 2; + d += 4; + } while (--width != 0); +} + +static void draw_line32_32(uint8_t *d, const uint8_t *s, int width, + const uint32_t *pal) +{ + uint8_t r, g, b; + + do { + r = s[2]; + g = s[1]; + b = s[0]; + *(uint32_t *)d = rgb_to_pixel32(r, g, b); + s += 4; + d += 4; + } while (--width != 0); +} + +/** + * Draw hardware cursor image on the given line. + */ +static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width, + const uint8_t *palette, int c_x, int c_y) +{ + int i; + uint8_t r, g, b, v, bitset = 0; + + /* get cursor position */ + assert(0 <= c_y && c_y < SM501_HWC_HEIGHT); + s += SM501_HWC_WIDTH * c_y / 4; /* 4 pixels per byte */ + d += c_x * 4; + + for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) { + /* get pixel value */ + if (i % 4 == 0) { + bitset = ldub_p(s); + s++; + } + v = bitset & 3; + bitset >>= 2; + + /* write pixel */ + if (v) { + v--; + r = palette[v * 3 + 0]; + g = palette[v * 3 + 1]; + b = palette[v * 3 + 2]; + *(uint32_t *)d = rgb_to_pixel32(r, g, b); + } + d += 4; + } +} static void sm501_update_display(void *opaque) { diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h deleted file mode 100644 index 28537a05d9..0000000000 --- a/hw/display/sm501_template.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Pixel drawing function templates for QEMU SM501 Device - * - * Copyright (c) 2008 Shin-ichiro KAWASAKI - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -static void draw_line8_32(uint8_t *d, const uint8_t *s, int width, - const uint32_t *pal) -{ - uint8_t v, r, g, b; - do { - v = ldub_p(s); - r = (pal[v] >> 16) & 0xff; - g = (pal[v] >> 8) & 0xff; - b = (pal[v] >> 0) & 0xff; - *(uint32_t *)d = rgb_to_pixel32(r, g, b); - s++; - d += 4; - } while (--width != 0); -} - -static void draw_line16_32(uint8_t *d, const uint8_t *s, int width, - const uint32_t *pal) -{ - uint16_t rgb565; - uint8_t r, g, b; - - do { - rgb565 = lduw_le_p(s); - r = (rgb565 >> 8) & 0xf8; - g = (rgb565 >> 3) & 0xfc; - b = (rgb565 << 3) & 0xf8; - *(uint32_t *)d = rgb_to_pixel32(r, g, b); - s += 2; - d += 4; - } while (--width != 0); -} - -static void draw_line32_32(uint8_t *d, const uint8_t *s, int width, - const uint32_t *pal) -{ - uint8_t r, g, b; - - do { - r = s[2]; - g = s[1]; - b = s[0]; - *(uint32_t *)d = rgb_to_pixel32(r, g, b); - s += 4; - d += 4; - } while (--width != 0); -} - -/** - * Draw hardware cursor image on the given line. - */ -static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width, - const uint8_t *palette, int c_x, int c_y) -{ - int i; - uint8_t r, g, b, v, bitset = 0; - - /* get cursor position */ - assert(0 <= c_y && c_y < SM501_HWC_HEIGHT); - s += SM501_HWC_WIDTH * c_y / 4; /* 4 pixels per byte */ - d += c_x * 4; - - for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) { - /* get pixel value */ - if (i % 4 == 0) { - bitset = ldub_p(s); - s++; - } - v = bitset & 3; - bitset >>= 2; - - /* write pixel */ - if (v) { - v--; - r = palette[v * 3 + 0]; - g = palette[v * 3 + 1]; - b = palette[v * 3 + 2]; - *(uint32_t *)d = rgb_to_pixel32(r, g, b); - } - d += 4; - } -}