* build failure of next-20220906 for vkms @ 2022-09-06 15:59 Sudip Mukherjee (Codethink) 2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee 0 siblings, 1 reply; 10+ messages in thread From: Sudip Mukherjee (Codethink) @ 2022-09-06 15:59 UTC (permalink / raw) To: Rodrigo Siqueira, Melissa Wen, Haneen Mohammed, Daniel Vetter, David Airlie Cc: linux-next, linux-kernel, dri-devel Hi All, The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. The errors in mips and xtensa are: ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! The error in arm is: ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! Trying to do a git bisect to find out the offending commit. I will be happy to test any patch or provide any extra log if needed. -- Regards Sudip ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-06 15:59 build failure of next-20220906 for vkms Sudip Mukherjee (Codethink) @ 2022-09-06 21:26 ` Sudip Mukherjee 2022-09-06 23:35 ` Igor Matheus Andrade Torrente 2022-09-07 17:04 ` Melissa Wen 0 siblings, 2 replies; 10+ messages in thread From: Sudip Mukherjee @ 2022-09-06 21:26 UTC (permalink / raw) To: Igor Torrente, Melissa Wen Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, linux-next On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) <sudipm.mukherjee@gmail.com> wrote: > > Hi All, > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > The errors in mips and xtensa are: > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > The error in arm is: > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > Trying to do a git bisect to find out the offending commit. git bisect points to 396369d67549 ("drm: vkms: Add support to the RGB565 format") -- Regards Sudip ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee @ 2022-09-06 23:35 ` Igor Matheus Andrade Torrente 2022-09-07 5:47 ` Daniel Vetter 2022-09-07 17:04 ` Melissa Wen 1 sibling, 1 reply; 10+ messages in thread From: Igor Matheus Andrade Torrente @ 2022-09-06 23:35 UTC (permalink / raw) To: Sudip Mukherjee, Melissa Wen Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, linux-next On 9/6/22 18:26, Sudip Mukherjee wrote: > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > <sudipm.mukherjee@gmail.com> wrote: >> >> Hi All, >> >> The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. >> >> The errors in mips and xtensa are: >> >> ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! >> ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! >> >> The error in arm is: >> >> ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! >> ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! >> >> >> Trying to do a git bisect to find out the offending commit. > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > RGB565 format") Are these architectures incapable of doing 64bits int division? > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-06 23:35 ` Igor Matheus Andrade Torrente @ 2022-09-07 5:47 ` Daniel Vetter 2022-09-07 5:50 ` Daniel Vetter 0 siblings, 1 reply; 10+ messages in thread From: Daniel Vetter @ 2022-09-07 5:47 UTC (permalink / raw) To: Igor Matheus Andrade Torrente Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Sudip Mukherjee On Tue, Sep 06, 2022 at 08:35:49PM -0300, Igor Matheus Andrade Torrente wrote: > On 9/6/22 18:26, Sudip Mukherjee wrote: > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > Hi All, > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > The errors in mips and xtensa are: > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > The error in arm is: > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > RGB565 format") > > Are these architectures incapable of doing 64bits int division? Yeah 32bit archs in general can't do that, and you have to use the right macros because otherwise gcc falls back to its own built-ins, and those don't exist in the kernel since the kernel isn't (cannot!) linked against any userspace library. For pretty much this reasons it's really good to build test against 32bit x86, or probably more relevant these days, 32bit arm. Cheers, Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-07 5:47 ` Daniel Vetter @ 2022-09-07 5:50 ` Daniel Vetter 0 siblings, 0 replies; 10+ messages in thread From: Daniel Vetter @ 2022-09-07 5:50 UTC (permalink / raw) To: Igor Matheus Andrade Torrente Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Sudip Mukherjee On Wed, Sep 07, 2022 at 07:47:32AM +0200, Daniel Vetter wrote: > On Tue, Sep 06, 2022 at 08:35:49PM -0300, Igor Matheus Andrade Torrente wrote: > > On 9/6/22 18:26, Sudip Mukherjee wrote: > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > > > Hi All, > > > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > > > The errors in mips and xtensa are: > > > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > The error in arm is: > > > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > > RGB565 format") > > > > Are these architectures incapable of doing 64bits int division? > > Yeah 32bit archs in general can't do that, and you have to use the right > macros because otherwise gcc falls back to its own built-ins, and those > don't exist in the kernel since the kernel isn't (cannot!) linked against > any userspace library. > > For pretty much this reasons it's really good to build test against 32bit > x86, or probably more relevant these days, 32bit arm. Forgot to add: include/math.h for all your division needs. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee 2022-09-06 23:35 ` Igor Matheus Andrade Torrente @ 2022-09-07 17:04 ` Melissa Wen 2022-09-07 18:34 ` Sudip Mukherjee 1 sibling, 1 reply; 10+ messages in thread From: Melissa Wen @ 2022-09-07 17:04 UTC (permalink / raw) To: Sudip Mukherjee Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Igor Torrente [-- Attachment #1: Type: text/plain, Size: 5925 bytes --] On 09/06, Sudip Mukherjee wrote: > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > <sudipm.mukherjee@gmail.com> wrote: > > > > Hi All, > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > The errors in mips and xtensa are: > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > The error in arm is: > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > Trying to do a git bisect to find out the offending commit. > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > RGB565 format") Hi Sudip, Thanks for pointing out this issue. I think we can replace the macros that are triggering those compilation error by functions in drm/drm_fixed.h that do the same calculation. I checked those errors when building for arm and i386 and the issues are fixed after applying the patch below. I appreciate if you can test. I didn't check with mips and xtensa, but I guess it works in the same way. Igor, it would be good if you double-check the calculation and compare to your previous results. Thanks, Melissa --- From 0853d85c0b9d6108f916665ff55efa079f28bc53 Mon Sep 17 00:00:00 2001 From: Melissa Wen <mwen@igalia.com> Date: Wed, 7 Sep 2022 15:14:31 -0100 Subject: [PATCH] drm/vkms: fix 32 bits compilation error by replacing macros Replace vkms_formats macro for fixed-point operations with functions from drm/drm_fixed.h to do the same job and fix 32-bits compilation errors. Fixes: a19c2ac9858 ("drm: vkms: Add support to the RGB565 format") Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com> Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Melissa Wen <mwen@igalia.com> --- drivers/gpu/drm/vkms/vkms_formats.c | 54 +++++++++++------------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c index 30bf8e6660ad..5c2612b822d4 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 <drm/drm_rect.h> +#include <linux/kernel.h> #include <linux/minmax.h> +#include <drm/drm_rect.h> +#include <drm/drm_fixed.h> #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,20 +122,21 @@ 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)); } + } @@ -249,17 +235,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 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-07 17:04 ` Melissa Wen @ 2022-09-07 18:34 ` Sudip Mukherjee 2022-09-07 19:22 ` Melissa Wen 0 siblings, 1 reply; 10+ messages in thread From: Sudip Mukherjee @ 2022-09-07 18:34 UTC (permalink / raw) To: Melissa Wen Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Igor Torrente Hi Melissa, On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote: > > On 09/06, Sudip Mukherjee wrote: > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > Hi All, > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > The errors in mips and xtensa are: > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > The error in arm is: > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > RGB565 format") > > Hi Sudip, > > Thanks for pointing out this issue. > > I think we can replace the macros that are triggering those compilation > error by functions in drm/drm_fixed.h that do the same calculation. > > I checked those errors when building for arm and i386 and the issues are > fixed after applying the patch below. I appreciate if you can test. Sorry, could not test as the downloaded mbox is saying patch is corrupted and could not be applied. Can you please attach the patch or maybe send using git send-email. -- Regards Sudip ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-07 18:34 ` Sudip Mukherjee @ 2022-09-07 19:22 ` Melissa Wen 2022-09-07 20:07 ` Sudip Mukherjee 0 siblings, 1 reply; 10+ messages in thread From: Melissa Wen @ 2022-09-07 19:22 UTC (permalink / raw) To: Sudip Mukherjee Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Igor Torrente [-- Attachment #1.1: Type: text/plain, Size: 1705 bytes --] On 09/07, Sudip Mukherjee wrote: > Hi Melissa, > > On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote: > > > > On 09/06, Sudip Mukherjee wrote: > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > > > Hi All, > > > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > > > The errors in mips and xtensa are: > > > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > The error in arm is: > > > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > > RGB565 format") > > > > Hi Sudip, > > > > Thanks for pointing out this issue. > > > > I think we can replace the macros that are triggering those compilation > > error by functions in drm/drm_fixed.h that do the same calculation. > > > > I checked those errors when building for arm and i386 and the issues are > > fixed after applying the patch below. I appreciate if you can test. > > Sorry, could not test as the downloaded mbox is saying patch is > corrupted and could not be applied. Can you please attach the patch or > maybe send using git send-email. Sorry, my bad. It's attached. Let me know if goes smoothly. Thanks again, Melissa > > > -- > Regards > Sudip [-- Attachment #1.2: 0001-drm-vkms-fix-32-bits-compilation-error-by-replacing-.patch --] [-- Type: text/x-diff, Size: 4563 bytes --] From d52824abf4d3913dfd82a927f320ad4f670545d1 Mon Sep 17 00:00:00 2001 From: Melissa Wen <mwen@igalia.com> Date: Wed, 7 Sep 2022 15:14:31 -0100 Subject: [PATCH] drm/vkms: fix 32 bits compilation error by replacing macros Replace vkms_formats macro for fixed-point operations with functions from drm/drm_fixed.h to do the same job and fix 32-bits compilation errors. Fixes: a19c2ac9858 ("drm: vkms: Add support to the RGB565 format") Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com> Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Melissa Wen <mwen@igalia.com> --- 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 <drm/drm_rect.h> +#include <linux/kernel.h> #include <linux/minmax.h> +#include <drm/drm_rect.h> +#include <drm/drm_fixed.h> #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 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-07 19:22 ` Melissa Wen @ 2022-09-07 20:07 ` Sudip Mukherjee 2022-09-09 11:43 ` Melissa Wen 0 siblings, 1 reply; 10+ messages in thread From: Sudip Mukherjee @ 2022-09-07 20:07 UTC (permalink / raw) To: Melissa Wen Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Igor Torrente On Wed, Sep 7, 2022 at 8:23 PM Melissa Wen <mwen@igalia.com> wrote: > > On 09/07, Sudip Mukherjee wrote: > > Hi Melissa, > > > > On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote: > > > > > > On 09/06, Sudip Mukherjee wrote: > > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > > > > > Hi All, > > > > > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > > > > > The errors in mips and xtensa are: > > > > > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > The error in arm is: > > > > > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > > > RGB565 format") > > > > > > Hi Sudip, > > > > > > Thanks for pointing out this issue. > > > > > > I think we can replace the macros that are triggering those compilation > > > error by functions in drm/drm_fixed.h that do the same calculation. > > > > > > I checked those errors when building for arm and i386 and the issues are > > > fixed after applying the patch below. I appreciate if you can test. > > > > Sorry, could not test as the downloaded mbox is saying patch is > > corrupted and could not be applied. Can you please attach the patch or > > maybe send using git send-email. > > Sorry, my bad. It's attached. Let me know if goes smoothly. Thanks. That was perfect. And with that I can confirm I don't see the failure on mips and arm. Not tested on xtensa but should be fixed there also. Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -- Regards Sudip ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") 2022-09-07 20:07 ` Sudip Mukherjee @ 2022-09-09 11:43 ` Melissa Wen 0 siblings, 0 replies; 10+ messages in thread From: Melissa Wen @ 2022-09-09 11:43 UTC (permalink / raw) To: Sudip Mukherjee Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel, dri-devel, Melissa Wen, linux-next, Igor Torrente [-- Attachment #1: Type: text/plain, Size: 2221 bytes --] On 09/07, Sudip Mukherjee wrote: > On Wed, Sep 7, 2022 at 8:23 PM Melissa Wen <mwen@igalia.com> wrote: > > > > On 09/07, Sudip Mukherjee wrote: > > > Hi Melissa, > > > > > > On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote: > > > > > > > > On 09/06, Sudip Mukherjee wrote: > > > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink) > > > > > <sudipm.mukherjee@gmail.com> wrote: > > > > > > > > > > > > Hi All, > > > > > > > > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig. > > > > > > > > > > > > The errors in mips and xtensa are: > > > > > > > > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > > > The error in arm is: > > > > > > > > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined! > > > > > > > > > > > > > > > > > > Trying to do a git bisect to find out the offending commit. > > > > > > > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the > > > > > RGB565 format") > > > > > > > > Hi Sudip, > > > > > > > > Thanks for pointing out this issue. > > > > > > > > I think we can replace the macros that are triggering those compilation > > > > error by functions in drm/drm_fixed.h that do the same calculation. > > > > > > > > I checked those errors when building for arm and i386 and the issues are > > > > fixed after applying the patch below. I appreciate if you can test. > > > > > > Sorry, could not test as the downloaded mbox is saying patch is > > > corrupted and could not be applied. Can you please attach the patch or > > > maybe send using git send-email. > > > > Sorry, my bad. It's attached. Let me know if goes smoothly. > > Thanks. That was perfect. > And with that I can confirm I don't see the failure on mips and arm. > Not tested on xtensa but should be fixed there also. > > Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com> Thanks for testing it. Melissa > > > -- > Regards > Sudip [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-09-09 11:43 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-09-06 15:59 build failure of next-20220906 for vkms Sudip Mukherjee (Codethink) 2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee 2022-09-06 23:35 ` Igor Matheus Andrade Torrente 2022-09-07 5:47 ` Daniel Vetter 2022-09-07 5:50 ` Daniel Vetter 2022-09-07 17:04 ` Melissa Wen 2022-09-07 18:34 ` Sudip Mukherjee 2022-09-07 19:22 ` Melissa Wen 2022-09-07 20:07 ` Sudip Mukherjee 2022-09-09 11:43 ` Melissa Wen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).