Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp1953196rwn; Fri, 9 Sep 2022 06:37:03 -0700 (PDT) X-Google-Smtp-Source: AA6agR6zXqeXjCJ9JFkKdJaUpcBjruxrJed92lJNTYHBnIEELULjxW3nVHOAahE9g2R8S9eXvsv0 X-Received: by 2002:a17:90a:5b0d:b0:1fe:3769:5fb8 with SMTP id o13-20020a17090a5b0d00b001fe37695fb8mr10067210pji.152.1662730623397; Fri, 09 Sep 2022 06:37:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662730623; cv=none; d=google.com; s=arc-20160816; b=YZeLR2Nsf6NdwolR1MBNLrPTScuZ1DDAEDfk9wVqtgkaavpgnPp2G/svm07EoIz67Q sXyO4+aBvfyrPk/IPrvQmdgWyt9tzA6A4U522AXY1pni4Txgbgyoc1p74rygXfc0iQCs 4bCySAzgraYxzi8Qtk28mgwnCL9ia80rCACjoWEIsPxoag6Se/8m8QUyyBLVb4OqtqoS wJMKybLfgJfwa/T3pkKRg3UKbELI3u+WNCJEEH7t/4IjTiJtuir7IKrf542qczTqvj0k NEauMO1+UHNLGklPiKrPgaXCi6zWndBWCQB7ZzamPqyqQODraYfOeghCTnzKNnsuODgo AEJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=fAZyWvk9aIg6HNZZ2qBZvOJO5tyWSXJY6s5pUv95Q0o=; b=JUcCICCOllYtKFuP1sPMtQEQ/blbvZkJj70kp1udXeZf7t2k/Pl3wIctcic48lBPSI 9TI6kq/EhF7sbM7xTU1OCpsIlEM1erEf/WCy+Hg2/XA/hoyHZPWnfv7da2jWfgqKgYii UsbVPTLT8j3xstNkxcVajcTkcFyDF7f/bRswSnZisTgwsyCrb/LBTu04PfssxThzzOPY PBkr237fCt8Cxn7uNWhZjfRHOa53vpTfDNh+2mMD9dT336MysiS0347+9FJaBTnp982A 0lSxAFspRaQ24Fbi/yuj6Lmdi/hWKO1n+rrIq5hRdHKRvFPZZ/G0rXJ+bV2TPdopE5E5 TsYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ftxAh0gs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z8-20020a655a48000000b0042b964fd0b6si582947pgs.333.2022.09.09.06.36.49; Fri, 09 Sep 2022 06:37:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ftxAh0gs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230458AbiIINcv (ORCPT + 99 others); Fri, 9 Sep 2022 09:32:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230204AbiIINct (ORCPT ); Fri, 9 Sep 2022 09:32:49 -0400 Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53371138654 for ; Fri, 9 Sep 2022 06:32:48 -0700 (PDT) Received: by mail-ot1-x32e.google.com with SMTP id w22-20020a056830061600b006546deda3f9so1062536oti.4 for ; Fri, 09 Sep 2022 06:32:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=fAZyWvk9aIg6HNZZ2qBZvOJO5tyWSXJY6s5pUv95Q0o=; b=ftxAh0gsbgkhrMX8rdkibCcKLrQX3RBh0B+cT1gdD3220HnP0VETXI7zIF5k5CN5Vj IjxTa8QuYmbtyaLxc6q76DDucWSA0RYEbncJESudDEV1D/HtcEmIhSvxJ4kze5Ws8zk7 3sne/+dhsQxi54RnakQe3QCflN4019s/aq5PxxRjmQrQA88BX7/3rIjgw4XFeIma/oK1 xrVObDYyvf4LoOKTTXDOu4yAM9nnGwGDiZ1f81ocOV3LMAhD/pz+v26g6RnC7UG/b0dF SSgbXJnSq3OUGqmwQVvapztkJ8m4C38Z/7wBXbwkb+d70vh6NY0ZI6Z3gcxx3d+Ol3u8 NR0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=fAZyWvk9aIg6HNZZ2qBZvOJO5tyWSXJY6s5pUv95Q0o=; b=1RXuk5fxfTh+DrUTZbp6O2E+h9og0+64LlnGSjAhlplhF7FYj3fT3gzniDswPmd2ny GbYMMZ/aU2sYPzui/PXk817cwIJDRTexPfCZg/KRtCvhypK8AnOBStmCiTBCF62yOpsU b83Txnpo1V2m/AlRau+36U1nzGbzNJ5+EtQIXtvFrlfTzpWDl2HPP02pXLDbZs/XxbUl z7eLHl5pAY9vD5NhuTw61mCUii/CpP2zNFfOTBcYO27VyGvV44u4V2GFWXTGV94d4xA2 9Gu4SkT+VrlyyV2rDz+tFh/bGuxVsj6qPnBOIe/Z+9L6RXgsDtBMP+sZi4l9iJ5ea7z0 8b2w== X-Gm-Message-State: ACgBeo0FBtKoynvM3808V6COymli3yXaEingkNzM5K9DyZAmTnjobAJG hjb8oJHd2NiO0CkqZcBVoF9buiCq2WYEM+8cSb8= X-Received: by 2002:a9d:12ce:0:b0:654:9bf:94ee with SMTP id g72-20020a9d12ce000000b0065409bf94eemr2655489otg.123.1662730367545; Fri, 09 Sep 2022 06:32:47 -0700 (PDT) MIME-Version: 1.0 References: <20220909114133.267689-1-mwen@igalia.com> In-Reply-To: <20220909114133.267689-1-mwen@igalia.com> From: Alex Deucher Date: Fri, 9 Sep 2022 09:32:36 -0400 Message-ID: Subject: Re: [PATCH] drm/vkms: fix 32bit compilation error by replacing macros To: Melissa Wen Cc: rodrigosiqueiramelo@gmail.com, melissa.srw@gmail.com, airlied@linux.ie, daniel@ffwll.ch, igormtorrente@gmail.com, linux-kernel@vger.kernel.org, Sudip Mukherjee , dri-devel@lists.freedesktop.org, kernel test robot Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 9, 2022 at 7:42 AM Melissa Wen wrote: > > Replace vkms_formats macros for fixed-point operations with functions > from drm/drm_fixed.h to do the same job and fix 32-bit compilation > errors. > > Fixes: a19c2ac9858 ("drm: vkms: Add support to the RGB565 format") > Tested-by: Sudip Mukherjee > Reported-by: Sudip Mukherjee > Reported-by: kernel test robot > Signed-off-by: Melissa Wen Reviewed-by: Alex Deucher > --- > drivers/gpu/drm/vkms/vkms_formats.c | 53 +++++++++++------------------ > 1 file changed, 19 insertions(+), 34 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c > index 300abb4d1dfe..ddcd3cfeeaac 100644 > --- a/drivers/gpu/drm/vkms/vkms_formats.c > +++ b/drivers/gpu/drm/vkms/vkms_formats.c > @@ -1,27 +1,12 @@ > // SPDX-License-Identifier: GPL-2.0+ > > -#include > +#include > #include > +#include > +#include > > #include "vkms_formats.h" > > -/* The following macros help doing fixed point arithmetic. */ > -/* > - * With Fixed-Point scale 15 we have 17 and 15 bits of integer and fractional > - * parts respectively. > - * | 0000 0000 0000 0000 0.000 0000 0000 0000 | > - * 31 0 > - */ > -#define SHIFT 15 > - > -#define INT_TO_FIXED(a) ((a) << SHIFT) > -#define FIXED_MUL(a, b) ((s32)(((s64)(a) * (b)) >> SHIFT)) > -#define FIXED_DIV(a, b) ((s32)(((s64)(a) << SHIFT) / (b))) > -/* This macro converts a fixed point number to int, and round half up it */ > -#define FIXED_TO_INT_ROUND(a) (((a) + (1 << (SHIFT - 1))) >> SHIFT) > -#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b))) > -#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b))) > - > static size_t pixel_offset(const struct vkms_frame_info *frame_info, int x, int y) > { > return frame_info->offset + (y * frame_info->pitch) > @@ -137,19 +122,19 @@ static void RGB565_to_argb_u16(struct line_buffer *stage_buffer, > int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst), > stage_buffer->n_pixels); > > - s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31); > - s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63); > + s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31); > + s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63); > > for (size_t x = 0; x < x_limit; x++, src_pixels++) { > u16 rgb_565 = le16_to_cpu(*src_pixels); > - s32 fp_r = INT_TO_FIXED((rgb_565 >> 11) & 0x1f); > - s32 fp_g = INT_TO_FIXED((rgb_565 >> 5) & 0x3f); > - s32 fp_b = INT_TO_FIXED(rgb_565 & 0x1f); > + s32 fp_r = drm_int2fixp((rgb_565 >> 11) & 0x1f); > + s32 fp_g = drm_int2fixp((rgb_565 >> 5) & 0x3f); > + s32 fp_b = drm_int2fixp(rgb_565 & 0x1f); > > out_pixels[x].a = (u16)0xffff; > - out_pixels[x].r = FIXED_TO_INT_ROUND(FIXED_MUL(fp_r, fp_rb_ratio)); > - out_pixels[x].g = FIXED_TO_INT_ROUND(FIXED_MUL(fp_g, fp_g_ratio)); > - out_pixels[x].b = FIXED_TO_INT_ROUND(FIXED_MUL(fp_b, fp_rb_ratio)); > + out_pixels[x].r = drm_fixp2int(drm_fixp_mul(fp_r, fp_rb_ratio)); > + out_pixels[x].g = drm_fixp2int(drm_fixp_mul(fp_g, fp_g_ratio)); > + out_pixels[x].b = drm_fixp2int(drm_fixp_mul(fp_b, fp_rb_ratio)); > } > } > > @@ -248,17 +233,17 @@ static void argb_u16_to_RGB565(struct vkms_frame_info *frame_info, > int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst), > src_buffer->n_pixels); > > - s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31); > - s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63); > + s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31); > + s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63); > > for (size_t x = 0; x < x_limit; x++, dst_pixels++) { > - s32 fp_r = INT_TO_FIXED(in_pixels[x].r); > - s32 fp_g = INT_TO_FIXED(in_pixels[x].g); > - s32 fp_b = INT_TO_FIXED(in_pixels[x].b); > + s32 fp_r = drm_int2fixp(in_pixels[x].r); > + s32 fp_g = drm_int2fixp(in_pixels[x].g); > + s32 fp_b = drm_int2fixp(in_pixels[x].b); > > - u16 r = FIXED_TO_INT_ROUND(FIXED_DIV(fp_r, fp_rb_ratio)); > - u16 g = FIXED_TO_INT_ROUND(FIXED_DIV(fp_g, fp_g_ratio)); > - u16 b = FIXED_TO_INT_ROUND(FIXED_DIV(fp_b, fp_rb_ratio)); > + u16 r = drm_fixp2int(drm_fixp_div(fp_r, fp_rb_ratio)); > + u16 g = drm_fixp2int(drm_fixp_div(fp_g, fp_g_ratio)); > + u16 b = drm_fixp2int(drm_fixp_div(fp_b, fp_rb_ratio)); > > *dst_pixels = cpu_to_le16(r << 11 | g << 5 | b); > } > -- > 2.35.1 >