[PATCH V11 02/47] drm/vkms: Add kunit tests for VKMS LUT handling

kernel test robot lkp at intel.com
Fri Aug 15 18:48:33 UTC 2025


Hi Alex,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-exynos/exynos-drm-next]
[also build test ERROR on linus/master v6.17-rc1 next-20250815]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Alex-Hung/drm-Add-helper-for-conversion-from-signed-magnitude/20250815-120435
base:   https://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git exynos-drm-next
patch link:    https://lore.kernel.org/r/20250815035047.3319284-3-alex.hung%40amd.com
patch subject: [PATCH V11 02/47] drm/vkms: Add kunit tests for VKMS LUT handling
config: arc-randconfig-001-20250816 (https://download.01.org/0day-ci/archive/20250816/202508160245.qVEHX6YB-lkp@intel.com/config)
compiler: arc-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250816/202508160245.qVEHX6YB-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508160245.qVEHX6YB-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/vkms/vkms_composer.c:15:
>> drivers/gpu/drm/vkms/vkms_composer.h:10:32: warning: 'struct vkms_color_lut' declared inside parameter list will not be visible outside of this definition or declaration
    s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value);
                                   ^~~~~~~~~~~~~~
>> drivers/gpu/drm/vkms/vkms_composer.c:76:22: error: conflicting types for 'get_lut_index'
    VISIBLE_IF_KUNIT s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value)
                         ^~~~~~~~~~~~~
   In file included from drivers/gpu/drm/vkms/vkms_composer.c:15:
   drivers/gpu/drm/vkms/vkms_composer.h:10:5: note: previous declaration of 'get_lut_index' was here
    s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value);
        ^~~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/preempt.h:10,
                    from include/linux/spinlock.h:56,
                    from include/drm/drm_crtc.h:28,
                    from include/drm/drm_atomic.h:31,
                    from drivers/gpu/drm/vkms/vkms_composer.c:5:
   drivers/gpu/drm/vkms/vkms_composer.c:82:24: error: conflicting types for 'get_lut_index'
    EXPORT_SYMBOL_IF_KUNIT(get_lut_index);
                           ^~~~~~~~~~~~~
   include/linux/export.h:76:21: note: in definition of macro '__EXPORT_SYMBOL'
     extern typeof(sym) sym;     \
                        ^~~
   include/kunit/visibility.h:27:44: note: in expansion of macro 'EXPORT_SYMBOL_NS'
        #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, "EXPORTED_FOR_KUNIT_TESTING")
                                               ^~~~~~~~~~~~~~~~
   drivers/gpu/drm/vkms/vkms_composer.c:82:1: note: in expansion of macro 'EXPORT_SYMBOL_IF_KUNIT'
    EXPORT_SYMBOL_IF_KUNIT(get_lut_index);
    ^~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/vkms/vkms_composer.c:15:
   drivers/gpu/drm/vkms/vkms_composer.h:10:5: note: previous declaration of 'get_lut_index' was here
    s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value);
        ^~~~~~~~~~~~~


vim +/get_lut_index +76 drivers/gpu/drm/vkms/vkms_composer.c

    14	
  > 15	#include "vkms_composer.h"
    16	#include "vkms_drv.h"
    17	
    18	static u16 pre_mul_blend_channel(u16 src, u16 dst, u16 alpha)
    19	{
    20		u32 new_color;
    21	
    22		new_color = (src * 0xffff + dst * (0xffff - alpha));
    23	
    24		return DIV_ROUND_CLOSEST(new_color, 0xffff);
    25	}
    26	
    27	/**
    28	 * pre_mul_alpha_blend - alpha blending equation
    29	 * @stage_buffer: The line with the pixels from src_plane
    30	 * @output_buffer: A line buffer that receives all the blends output
    31	 * @x_start: The start offset
    32	 * @pixel_count: The number of pixels to blend
    33	 *
    34	 * The pixels [@x_start;@x_start+ at pixel_count) in stage_buffer are blended at
    35	 * [@x_start;@x_start+ at pixel_count) in output_buffer.
    36	 *
    37	 * The current DRM assumption is that pixel color values have been already
    38	 * pre-multiplied with the alpha channel values. See more
    39	 * drm_plane_create_blend_mode_property(). Also, this formula assumes a
    40	 * completely opaque background.
    41	 */
    42	static void pre_mul_alpha_blend(const struct line_buffer *stage_buffer,
    43					struct line_buffer *output_buffer, int x_start, int pixel_count)
    44	{
    45		struct pixel_argb_u16 *out = &output_buffer->pixels[x_start];
    46		const struct pixel_argb_u16 *in = &stage_buffer->pixels[x_start];
    47	
    48		for (int i = 0; i < pixel_count; i++) {
    49			out[i].a = (u16)0xffff;
    50			out[i].r = pre_mul_blend_channel(in[i].r, out[i].r, in[i].a);
    51			out[i].g = pre_mul_blend_channel(in[i].g, out[i].g, in[i].a);
    52			out[i].b = pre_mul_blend_channel(in[i].b, out[i].b, in[i].a);
    53		}
    54	}
    55	
    56	
    57	static void fill_background(const struct pixel_argb_u16 *background_color,
    58				    struct line_buffer *output_buffer)
    59	{
    60		for (size_t i = 0; i < output_buffer->n_pixels; i++)
    61			output_buffer->pixels[i] = *background_color;
    62	}
    63	
    64	// lerp(a, b, t) = a + (b - a) * t
    65	VISIBLE_IF_KUNIT u16 lerp_u16(u16 a, u16 b, s64 t)
    66	{
    67		s64 a_fp = drm_int2fixp(a);
    68		s64 b_fp = drm_int2fixp(b);
    69	
    70		s64 delta = drm_fixp_mul(b_fp - a_fp, t);
    71	
    72		return drm_fixp2int_round(a_fp + delta);
    73	}
    74	EXPORT_SYMBOL_IF_KUNIT(lerp_u16);
    75	
  > 76	VISIBLE_IF_KUNIT s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value)
    77	{
    78		s64 color_channel_fp = drm_int2fixp(channel_value);
    79	
    80		return drm_fixp_mul(color_channel_fp, lut->channel_value2index_ratio);
    81	}
    82	EXPORT_SYMBOL_IF_KUNIT(get_lut_index);
    83	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


More information about the amd-gfx mailing list