All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Thomas Zimmermann <tzimmermann@suse.de>,
	javierm@redhat.com, jfalempe@redhat.com,
	jose.exposito89@gmail.com, arthurgrillo@riseup.net,
	mairacanal@riseup.net, maarten.lankhorst@linux.intel.com,
	mripard@kernel.org, airlied@gmail.com, daniel@ffwll.ch,
	noralf@tronnes.org
Cc: oe-kbuild-all@lists.linux.dev,
	David Lechner <david@lechnology.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	dri-devel@lists.freedesktop.org,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [PATCH v4 3/7] drm/format-helper: Pass format-conversion state to helpers
Date: Thu, 5 Oct 2023 19:06:42 +0800	[thread overview]
Message-ID: <202310051822.r1l9UoUq-lkp@intel.com> (raw)
In-Reply-To: <20231005090520.16511-4-tzimmermann@suse.de>

Hi Thomas,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 57d3b83a83c5527325efb5bcaf594da09fe4a41b]

url:    https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-format-helper-Cache-buffers-with-struct-drm_format_conv_state/20231005-170643
base:   57d3b83a83c5527325efb5bcaf594da09fe4a41b
patch link:    https://lore.kernel.org/r/20231005090520.16511-4-tzimmermann%40suse.de
patch subject: [PATCH v4 3/7] drm/format-helper: Pass format-conversion state to helpers
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20231005/202310051822.r1l9UoUq-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231005/202310051822.r1l9UoUq-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310051822.r1l9UoUq-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/drm_format_helper.c:344: warning: Function parameter or member 'state' not described in 'drm_fb_swab'
>> drivers/gpu/drm/drm_format_helper.c:344: warning: Excess function parameter 'xfrm' description in 'drm_fb_swab'
>> drivers/gpu/drm/drm_format_helper.c:405: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb332'
>> drivers/gpu/drm/drm_format_helper.c:405: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb332'
>> drivers/gpu/drm/drm_format_helper.c:477: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb565'
>> drivers/gpu/drm/drm_format_helper.c:477: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb565'
>> drivers/gpu/drm/drm_format_helper.c:535: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_xrgb1555'
>> drivers/gpu/drm/drm_format_helper.c:535: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_xrgb1555'
>> drivers/gpu/drm/drm_format_helper.c:588: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb1555'
>> drivers/gpu/drm/drm_format_helper.c:588: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb1555'
>> drivers/gpu/drm/drm_format_helper.c:641: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgba5551'
>> drivers/gpu/drm/drm_format_helper.c:641: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgba5551'
>> drivers/gpu/drm/drm_format_helper.c:692: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb888'
>> drivers/gpu/drm/drm_format_helper.c:692: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb888'
>> drivers/gpu/drm/drm_format_helper.c:741: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb8888'
>> drivers/gpu/drm/drm_format_helper.c:741: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb8888'
>> drivers/gpu/drm/drm_format_helper.c:857: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_xrgb2101010'
>> drivers/gpu/drm/drm_format_helper.c:857: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_xrgb2101010'
>> drivers/gpu/drm/drm_format_helper.c:912: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb2101010'
>> drivers/gpu/drm/drm_format_helper.c:912: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb2101010'
   drivers/gpu/drm/drm_format_helper.c:968: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_gray8'
   drivers/gpu/drm/drm_format_helper.c:968: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_gray8'
   drivers/gpu/drm/drm_format_helper.c:1007: warning: Function parameter or member 'state' not described in 'drm_fb_blit'
   drivers/gpu/drm/drm_format_helper.c:1007: warning: Excess function parameter 'xfrm' description in 'drm_fb_blit'
   drivers/gpu/drm/drm_format_helper.c:1114: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_mono'
   drivers/gpu/drm/drm_format_helper.c:1114: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_mono'


vim +344 drivers/gpu/drm/drm_format_helper.c

41fd6f0a6dd62d Thomas Zimmermann  2022-04-27  317  
7415287e1f3675 Gerd Hoffmann      2019-04-05  318  /**
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  319   * drm_fb_swab - Swap bytes into clip buffer
ce582859ca7b33 Thomas Zimmermann  2022-08-08  320   * @dst: Array of destination buffers
ce582859ca7b33 Thomas Zimmermann  2022-08-08  321   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
ce582859ca7b33 Thomas Zimmermann  2022-08-08  322   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  323   * @src: Array of source buffers
7415287e1f3675 Gerd Hoffmann      2019-04-05  324   * @fb: DRM framebuffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  325   * @clip: Clip rectangle area to copy
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  326   * @cached: Source buffer is mapped cached (eg. not write-combined)
05864d296c0bfc Thomas Zimmermann  2023-10-05  327   * @xfrm: Transform and conversion state
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  328   *
ce582859ca7b33 Thomas Zimmermann  2022-08-08  329   * This function copies parts of a framebuffer to display memory and swaps per-pixel
ce582859ca7b33 Thomas Zimmermann  2022-08-08  330   * bytes during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  331   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
ce582859ca7b33 Thomas Zimmermann  2022-08-08  332   * least as many entries as there are planes in @fb's format. Each entry stores the
ce582859ca7b33 Thomas Zimmermann  2022-08-08  333   * value for the format's respective color plane at the same index. If @cached is
ce582859ca7b33 Thomas Zimmermann  2022-08-08  334   * false a temporary buffer is used to cache one pixel line at a time to speed up
ce582859ca7b33 Thomas Zimmermann  2022-08-08  335   * slow uncached reads.
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  336   *
ce582859ca7b33 Thomas Zimmermann  2022-08-08  337   * This function does not apply clipping on @dst (i.e. the destination is at the
ce582859ca7b33 Thomas Zimmermann  2022-08-08  338   * top-left corner).
7415287e1f3675 Gerd Hoffmann      2019-04-05  339   */
ce582859ca7b33 Thomas Zimmermann  2022-08-08  340  void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  341  		 const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  342  		 const struct drm_rect *clip, bool cached,
05864d296c0bfc Thomas Zimmermann  2023-10-05  343  		 struct drm_format_conv_state *state)
7415287e1f3675 Gerd Hoffmann      2019-04-05 @344  {
ce582859ca7b33 Thomas Zimmermann  2022-08-08  345  	const struct drm_format_info *format = fb->format;
ce582859ca7b33 Thomas Zimmermann  2022-08-08  346  	u8 cpp = DIV_ROUND_UP(drm_format_info_bpp(format, 0), 8);
ce582859ca7b33 Thomas Zimmermann  2022-08-08  347  	void (*swab_line)(void *dbuf, const void *sbuf, unsigned int npixels);
3e3543c8a19cad Thomas Zimmermann  2021-11-10  348  
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  349  	switch (cpp) {
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  350  	case 4:
ce582859ca7b33 Thomas Zimmermann  2022-08-08  351  		swab_line = drm_fb_swab32_line;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  352  		break;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  353  	case 2:
ce582859ca7b33 Thomas Zimmermann  2022-08-08  354  		swab_line = drm_fb_swab16_line;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  355  		break;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  356  	default:
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  357  		drm_warn_once(fb->dev, "Format %p4cc has unsupported pixel size.\n",
ce582859ca7b33 Thomas Zimmermann  2022-08-08  358  			      &format->format);
ce582859ca7b33 Thomas Zimmermann  2022-08-08  359  		return;
f241b064426943 Thomas Zimmermann  2022-08-08  360  	}
ce582859ca7b33 Thomas Zimmermann  2022-08-08  361  
05864d296c0bfc Thomas Zimmermann  2023-10-05  362  	drm_fb_xfrm(dst, dst_pitch, &cpp, src, fb, clip, cached, state, swab_line);
7415287e1f3675 Gerd Hoffmann      2019-04-05  363  }
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  364  EXPORT_SYMBOL(drm_fb_swab);
7415287e1f3675 Gerd Hoffmann      2019-04-05  365  
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  366  static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigned int pixels)
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  367  {
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  368  	u8 *dbuf8 = dbuf;
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  369  	const __le32 *sbuf32 = sbuf;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  370  	unsigned int x;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  371  	u32 pix;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  372  
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  373  	for (x = 0; x < pixels; x++) {
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  374  		pix = le32_to_cpu(sbuf32[x]);
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  375  		dbuf8[x] = ((pix & 0x00e00000) >> 16) |
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  376  			   ((pix & 0x0000e000) >> 11) |
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  377  			   ((pix & 0x000000c0) >> 6);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  378  	}
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  379  }
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  380  
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  381  /**
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  382   * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
e13140a0628314 Thomas Zimmermann  2022-08-08  383   * @dst: Array of RGB332 destination buffers
e13140a0628314 Thomas Zimmermann  2022-08-08  384   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
e13140a0628314 Thomas Zimmermann  2022-08-08  385   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  386   * @src: Array of XRGB8888 source buffers
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  387   * @fb: DRM framebuffer
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  388   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  389   * @xfrm: Transform and conversion state
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  390   *
e13140a0628314 Thomas Zimmermann  2022-08-08  391   * This function copies parts of a framebuffer to display memory and converts the
e13140a0628314 Thomas Zimmermann  2022-08-08  392   * color format during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  393   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
e13140a0628314 Thomas Zimmermann  2022-08-08  394   * least as many entries as there are planes in @fb's format. Each entry stores the
e13140a0628314 Thomas Zimmermann  2022-08-08  395   * value for the format's respective color plane at the same index.
e13140a0628314 Thomas Zimmermann  2022-08-08  396   *
e13140a0628314 Thomas Zimmermann  2022-08-08  397   * This function does not apply clipping on @dst (i.e. the destination is at the
e13140a0628314 Thomas Zimmermann  2022-08-08  398   * top-left corner).
e13140a0628314 Thomas Zimmermann  2022-08-08  399   *
e13140a0628314 Thomas Zimmermann  2022-08-08  400   * Drivers can use this function for RGB332 devices that don't support XRGB8888 natively.
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  401   */
e13140a0628314 Thomas Zimmermann  2022-08-08  402  void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  403  			       const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  404  			       const struct drm_rect *clip, struct drm_format_conv_state *state)
cee0b7cbf1c02f Noralf Trønnes     2021-09-29 @405  {
f241b064426943 Thomas Zimmermann  2022-08-08  406  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
f241b064426943 Thomas Zimmermann  2022-08-08  407  		1,
e13140a0628314 Thomas Zimmermann  2022-08-08  408  	};
e13140a0628314 Thomas Zimmermann  2022-08-08  409  
05864d296c0bfc Thomas Zimmermann  2023-10-05  410  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
f241b064426943 Thomas Zimmermann  2022-08-08  411  		    drm_fb_xrgb8888_to_rgb332_line);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  412  }
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  413  EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  414  
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  415  static void drm_fb_xrgb8888_to_rgb565_line(void *dbuf, const void *sbuf, unsigned int pixels)
bcc4442008aca0 Gerd Hoffmann      2019-04-05  416  {
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  417  	__le16 *dbuf16 = dbuf;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  418  	const __le32 *sbuf32 = sbuf;
d653bd39482377 Gerd Hoffmann      2019-04-10  419  	unsigned int x;
d653bd39482377 Gerd Hoffmann      2019-04-10  420  	u16 val16;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  421  	u32 pix;
bcc4442008aca0 Gerd Hoffmann      2019-04-05  422  
d653bd39482377 Gerd Hoffmann      2019-04-10  423  	for (x = 0; x < pixels; x++) {
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  424  		pix = le32_to_cpu(sbuf32[x]);
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  425  		val16 = ((pix & 0x00F80000) >> 8) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  426  			((pix & 0x0000FC00) >> 5) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  427  			((pix & 0x000000F8) >> 3);
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  428  		dbuf16[x] = cpu_to_le16(val16);
bcc4442008aca0 Gerd Hoffmann      2019-04-05  429  	}
bcc4442008aca0 Gerd Hoffmann      2019-04-05  430  }
bcc4442008aca0 Gerd Hoffmann      2019-04-05  431  
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  432  /* TODO: implement this helper as conversion to RGB565|BIG_ENDIAN */
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  433  static void drm_fb_xrgb8888_to_rgb565_swab_line(void *dbuf, const void *sbuf,
69add027fd2bac Thomas Zimmermann  2022-04-27  434  						unsigned int pixels)
69add027fd2bac Thomas Zimmermann  2022-04-27  435  {
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  436  	__le16 *dbuf16 = dbuf;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  437  	const __le32 *sbuf32 = sbuf;
69add027fd2bac Thomas Zimmermann  2022-04-27  438  	unsigned int x;
69add027fd2bac Thomas Zimmermann  2022-04-27  439  	u16 val16;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  440  	u32 pix;
69add027fd2bac Thomas Zimmermann  2022-04-27  441  
69add027fd2bac Thomas Zimmermann  2022-04-27  442  	for (x = 0; x < pixels; x++) {
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  443  		pix = le32_to_cpu(sbuf32[x]);
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  444  		val16 = ((pix & 0x00F80000) >> 8) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  445  			((pix & 0x0000FC00) >> 5) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  446  			((pix & 0x000000F8) >> 3);
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  447  		dbuf16[x] = cpu_to_le16(swab16(val16));
69add027fd2bac Thomas Zimmermann  2022-04-27  448  	}
69add027fd2bac Thomas Zimmermann  2022-04-27  449  }
69add027fd2bac Thomas Zimmermann  2022-04-27  450  
7415287e1f3675 Gerd Hoffmann      2019-04-05  451  /**
7415287e1f3675 Gerd Hoffmann      2019-04-05  452   * drm_fb_xrgb8888_to_rgb565 - Convert XRGB8888 to RGB565 clip buffer
ab298c29d414a5 Thomas Zimmermann  2022-08-08  453   * @dst: Array of RGB565 destination buffers
ab298c29d414a5 Thomas Zimmermann  2022-08-08  454   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
ab298c29d414a5 Thomas Zimmermann  2022-08-08  455   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  456   * @src: Array of XRGB8888 source buffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  457   * @fb: DRM framebuffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  458   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  459   * @xfrm: Transform and conversion state
d653bd39482377 Gerd Hoffmann      2019-04-10  460   * @swab: Swap bytes
7415287e1f3675 Gerd Hoffmann      2019-04-05  461   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  462   * This function copies parts of a framebuffer to display memory and converts the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  463   * color format during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  464   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
ab298c29d414a5 Thomas Zimmermann  2022-08-08  465   * least as many entries as there are planes in @fb's format. Each entry stores the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  466   * value for the format's respective color plane at the same index.
bcc4442008aca0 Gerd Hoffmann      2019-04-05  467   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  468   * This function does not apply clipping on @dst (i.e. the destination is at the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  469   * top-left corner).
ab298c29d414a5 Thomas Zimmermann  2022-08-08  470   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  471   * Drivers can use this function for RGB565 devices that don't support XRGB8888 natively.
bcc4442008aca0 Gerd Hoffmann      2019-04-05  472   */
ab298c29d414a5 Thomas Zimmermann  2022-08-08  473  void drm_fb_xrgb8888_to_rgb565(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  474  			       const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  475  			       const struct drm_rect *clip, struct drm_format_conv_state *state,
05864d296c0bfc Thomas Zimmermann  2023-10-05  476  			       bool swab)
bcc4442008aca0 Gerd Hoffmann      2019-04-05 @477  {
f241b064426943 Thomas Zimmermann  2022-08-08  478  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
f241b064426943 Thomas Zimmermann  2022-08-08  479  		2,
ab298c29d414a5 Thomas Zimmermann  2022-08-08  480  	};
f241b064426943 Thomas Zimmermann  2022-08-08  481  
ab298c29d414a5 Thomas Zimmermann  2022-08-08  482  	void (*xfrm_line)(void *dbuf, const void *sbuf, unsigned int npixels);
ab298c29d414a5 Thomas Zimmermann  2022-08-08  483  
69add027fd2bac Thomas Zimmermann  2022-04-27  484  	if (swab)
ab298c29d414a5 Thomas Zimmermann  2022-08-08  485  		xfrm_line = drm_fb_xrgb8888_to_rgb565_swab_line;
ab298c29d414a5 Thomas Zimmermann  2022-08-08  486  	else
ab298c29d414a5 Thomas Zimmermann  2022-08-08  487  		xfrm_line = drm_fb_xrgb8888_to_rgb565_line;
ab298c29d414a5 Thomas Zimmermann  2022-08-08  488  
05864d296c0bfc Thomas Zimmermann  2023-10-05  489  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state, xfrm_line);
7415287e1f3675 Gerd Hoffmann      2019-04-05  490  }
ab298c29d414a5 Thomas Zimmermann  2022-08-08  491  EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb565);
7415287e1f3675 Gerd Hoffmann      2019-04-05  492  
10cd592e639edc Thomas Zimmermann  2023-01-02  493  static void drm_fb_xrgb8888_to_xrgb1555_line(void *dbuf, const void *sbuf, unsigned int pixels)
10cd592e639edc Thomas Zimmermann  2023-01-02  494  {
10cd592e639edc Thomas Zimmermann  2023-01-02  495  	__le16 *dbuf16 = dbuf;
10cd592e639edc Thomas Zimmermann  2023-01-02  496  	const __le32 *sbuf32 = sbuf;
10cd592e639edc Thomas Zimmermann  2023-01-02  497  	unsigned int x;
10cd592e639edc Thomas Zimmermann  2023-01-02  498  	u16 val16;
10cd592e639edc Thomas Zimmermann  2023-01-02  499  	u32 pix;
10cd592e639edc Thomas Zimmermann  2023-01-02  500  
10cd592e639edc Thomas Zimmermann  2023-01-02  501  	for (x = 0; x < pixels; x++) {
10cd592e639edc Thomas Zimmermann  2023-01-02  502  		pix = le32_to_cpu(sbuf32[x]);
10cd592e639edc Thomas Zimmermann  2023-01-02  503  		val16 = ((pix & 0x00f80000) >> 9) |
10cd592e639edc Thomas Zimmermann  2023-01-02  504  			((pix & 0x0000f800) >> 6) |
10cd592e639edc Thomas Zimmermann  2023-01-02  505  			((pix & 0x000000f8) >> 3);
10cd592e639edc Thomas Zimmermann  2023-01-02  506  		dbuf16[x] = cpu_to_le16(val16);
10cd592e639edc Thomas Zimmermann  2023-01-02  507  	}
10cd592e639edc Thomas Zimmermann  2023-01-02  508  }
10cd592e639edc Thomas Zimmermann  2023-01-02  509  
10cd592e639edc Thomas Zimmermann  2023-01-02  510  /**
10cd592e639edc Thomas Zimmermann  2023-01-02  511   * drm_fb_xrgb8888_to_xrgb1555 - Convert XRGB8888 to XRGB1555 clip buffer
10cd592e639edc Thomas Zimmermann  2023-01-02  512   * @dst: Array of XRGB1555 destination buffers
10cd592e639edc Thomas Zimmermann  2023-01-02  513   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
10cd592e639edc Thomas Zimmermann  2023-01-02  514   *             within @dst; can be NULL if scanlines are stored next to each other.
10cd592e639edc Thomas Zimmermann  2023-01-02  515   * @src: Array of XRGB8888 source buffer
10cd592e639edc Thomas Zimmermann  2023-01-02  516   * @fb: DRM framebuffer
10cd592e639edc Thomas Zimmermann  2023-01-02  517   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  518   * @xfrm: Transform and conversion state
10cd592e639edc Thomas Zimmermann  2023-01-02  519   *
10cd592e639edc Thomas Zimmermann  2023-01-02  520   * This function copies parts of a framebuffer to display memory and converts
10cd592e639edc Thomas Zimmermann  2023-01-02  521   * the color format during the process. The parameters @dst, @dst_pitch and
10cd592e639edc Thomas Zimmermann  2023-01-02  522   * @src refer to arrays. Each array must have at least as many entries as
10cd592e639edc Thomas Zimmermann  2023-01-02  523   * there are planes in @fb's format. Each entry stores the value for the
10cd592e639edc Thomas Zimmermann  2023-01-02  524   * format's respective color plane at the same index.
10cd592e639edc Thomas Zimmermann  2023-01-02  525   *
10cd592e639edc Thomas Zimmermann  2023-01-02  526   * This function does not apply clipping on @dst (i.e. the destination is at the
10cd592e639edc Thomas Zimmermann  2023-01-02  527   * top-left corner).
10cd592e639edc Thomas Zimmermann  2023-01-02  528   *
10cd592e639edc Thomas Zimmermann  2023-01-02  529   * Drivers can use this function for XRGB1555 devices that don't support
10cd592e639edc Thomas Zimmermann  2023-01-02  530   * XRGB8888 natively.
10cd592e639edc Thomas Zimmermann  2023-01-02  531   */
10cd592e639edc Thomas Zimmermann  2023-01-02  532  void drm_fb_xrgb8888_to_xrgb1555(struct iosys_map *dst, const unsigned int *dst_pitch,
10cd592e639edc Thomas Zimmermann  2023-01-02  533  				 const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  534  				 const struct drm_rect *clip, struct drm_format_conv_state *state)
10cd592e639edc Thomas Zimmermann  2023-01-02 @535  {
10cd592e639edc Thomas Zimmermann  2023-01-02  536  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
10cd592e639edc Thomas Zimmermann  2023-01-02  537  		2,
10cd592e639edc Thomas Zimmermann  2023-01-02  538  	};
10cd592e639edc Thomas Zimmermann  2023-01-02  539  
05864d296c0bfc Thomas Zimmermann  2023-10-05  540  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
10cd592e639edc Thomas Zimmermann  2023-01-02  541  		    drm_fb_xrgb8888_to_xrgb1555_line);
10cd592e639edc Thomas Zimmermann  2023-01-02  542  }
10cd592e639edc Thomas Zimmermann  2023-01-02  543  EXPORT_SYMBOL(drm_fb_xrgb8888_to_xrgb1555);
10cd592e639edc Thomas Zimmermann  2023-01-02  544  

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

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Thomas Zimmermann <tzimmermann@suse.de>,
	javierm@redhat.com, jfalempe@redhat.com,
	jose.exposito89@gmail.com, arthurgrillo@riseup.net,
	mairacanal@riseup.net, maarten.lankhorst@linux.intel.com,
	mripard@kernel.org, airlied@gmail.com, daniel@ffwll.ch,
	noralf@tronnes.org
Cc: dri-devel@lists.freedesktop.org,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Lechner <david@lechnology.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v4 3/7] drm/format-helper: Pass format-conversion state to helpers
Date: Thu, 5 Oct 2023 19:06:42 +0800	[thread overview]
Message-ID: <202310051822.r1l9UoUq-lkp@intel.com> (raw)
In-Reply-To: <20231005090520.16511-4-tzimmermann@suse.de>

Hi Thomas,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 57d3b83a83c5527325efb5bcaf594da09fe4a41b]

url:    https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-format-helper-Cache-buffers-with-struct-drm_format_conv_state/20231005-170643
base:   57d3b83a83c5527325efb5bcaf594da09fe4a41b
patch link:    https://lore.kernel.org/r/20231005090520.16511-4-tzimmermann%40suse.de
patch subject: [PATCH v4 3/7] drm/format-helper: Pass format-conversion state to helpers
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20231005/202310051822.r1l9UoUq-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231005/202310051822.r1l9UoUq-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310051822.r1l9UoUq-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/drm_format_helper.c:344: warning: Function parameter or member 'state' not described in 'drm_fb_swab'
>> drivers/gpu/drm/drm_format_helper.c:344: warning: Excess function parameter 'xfrm' description in 'drm_fb_swab'
>> drivers/gpu/drm/drm_format_helper.c:405: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb332'
>> drivers/gpu/drm/drm_format_helper.c:405: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb332'
>> drivers/gpu/drm/drm_format_helper.c:477: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb565'
>> drivers/gpu/drm/drm_format_helper.c:477: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb565'
>> drivers/gpu/drm/drm_format_helper.c:535: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_xrgb1555'
>> drivers/gpu/drm/drm_format_helper.c:535: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_xrgb1555'
>> drivers/gpu/drm/drm_format_helper.c:588: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb1555'
>> drivers/gpu/drm/drm_format_helper.c:588: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb1555'
>> drivers/gpu/drm/drm_format_helper.c:641: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgba5551'
>> drivers/gpu/drm/drm_format_helper.c:641: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgba5551'
>> drivers/gpu/drm/drm_format_helper.c:692: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_rgb888'
>> drivers/gpu/drm/drm_format_helper.c:692: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_rgb888'
>> drivers/gpu/drm/drm_format_helper.c:741: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb8888'
>> drivers/gpu/drm/drm_format_helper.c:741: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb8888'
>> drivers/gpu/drm/drm_format_helper.c:857: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_xrgb2101010'
>> drivers/gpu/drm/drm_format_helper.c:857: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_xrgb2101010'
>> drivers/gpu/drm/drm_format_helper.c:912: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_argb2101010'
>> drivers/gpu/drm/drm_format_helper.c:912: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_argb2101010'
   drivers/gpu/drm/drm_format_helper.c:968: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_gray8'
   drivers/gpu/drm/drm_format_helper.c:968: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_gray8'
   drivers/gpu/drm/drm_format_helper.c:1007: warning: Function parameter or member 'state' not described in 'drm_fb_blit'
   drivers/gpu/drm/drm_format_helper.c:1007: warning: Excess function parameter 'xfrm' description in 'drm_fb_blit'
   drivers/gpu/drm/drm_format_helper.c:1114: warning: Function parameter or member 'state' not described in 'drm_fb_xrgb8888_to_mono'
   drivers/gpu/drm/drm_format_helper.c:1114: warning: Excess function parameter 'xfrm' description in 'drm_fb_xrgb8888_to_mono'


vim +344 drivers/gpu/drm/drm_format_helper.c

41fd6f0a6dd62d Thomas Zimmermann  2022-04-27  317  
7415287e1f3675 Gerd Hoffmann      2019-04-05  318  /**
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  319   * drm_fb_swab - Swap bytes into clip buffer
ce582859ca7b33 Thomas Zimmermann  2022-08-08  320   * @dst: Array of destination buffers
ce582859ca7b33 Thomas Zimmermann  2022-08-08  321   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
ce582859ca7b33 Thomas Zimmermann  2022-08-08  322   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  323   * @src: Array of source buffers
7415287e1f3675 Gerd Hoffmann      2019-04-05  324   * @fb: DRM framebuffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  325   * @clip: Clip rectangle area to copy
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  326   * @cached: Source buffer is mapped cached (eg. not write-combined)
05864d296c0bfc Thomas Zimmermann  2023-10-05  327   * @xfrm: Transform and conversion state
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  328   *
ce582859ca7b33 Thomas Zimmermann  2022-08-08  329   * This function copies parts of a framebuffer to display memory and swaps per-pixel
ce582859ca7b33 Thomas Zimmermann  2022-08-08  330   * bytes during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  331   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
ce582859ca7b33 Thomas Zimmermann  2022-08-08  332   * least as many entries as there are planes in @fb's format. Each entry stores the
ce582859ca7b33 Thomas Zimmermann  2022-08-08  333   * value for the format's respective color plane at the same index. If @cached is
ce582859ca7b33 Thomas Zimmermann  2022-08-08  334   * false a temporary buffer is used to cache one pixel line at a time to speed up
ce582859ca7b33 Thomas Zimmermann  2022-08-08  335   * slow uncached reads.
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  336   *
ce582859ca7b33 Thomas Zimmermann  2022-08-08  337   * This function does not apply clipping on @dst (i.e. the destination is at the
ce582859ca7b33 Thomas Zimmermann  2022-08-08  338   * top-left corner).
7415287e1f3675 Gerd Hoffmann      2019-04-05  339   */
ce582859ca7b33 Thomas Zimmermann  2022-08-08  340  void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  341  		 const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  342  		 const struct drm_rect *clip, bool cached,
05864d296c0bfc Thomas Zimmermann  2023-10-05  343  		 struct drm_format_conv_state *state)
7415287e1f3675 Gerd Hoffmann      2019-04-05 @344  {
ce582859ca7b33 Thomas Zimmermann  2022-08-08  345  	const struct drm_format_info *format = fb->format;
ce582859ca7b33 Thomas Zimmermann  2022-08-08  346  	u8 cpp = DIV_ROUND_UP(drm_format_info_bpp(format, 0), 8);
ce582859ca7b33 Thomas Zimmermann  2022-08-08  347  	void (*swab_line)(void *dbuf, const void *sbuf, unsigned int npixels);
3e3543c8a19cad Thomas Zimmermann  2021-11-10  348  
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  349  	switch (cpp) {
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  350  	case 4:
ce582859ca7b33 Thomas Zimmermann  2022-08-08  351  		swab_line = drm_fb_swab32_line;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  352  		break;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  353  	case 2:
ce582859ca7b33 Thomas Zimmermann  2022-08-08  354  		swab_line = drm_fb_swab16_line;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  355  		break;
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  356  	default:
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  357  		drm_warn_once(fb->dev, "Format %p4cc has unsupported pixel size.\n",
ce582859ca7b33 Thomas Zimmermann  2022-08-08  358  			      &format->format);
ce582859ca7b33 Thomas Zimmermann  2022-08-08  359  		return;
f241b064426943 Thomas Zimmermann  2022-08-08  360  	}
ce582859ca7b33 Thomas Zimmermann  2022-08-08  361  
05864d296c0bfc Thomas Zimmermann  2023-10-05  362  	drm_fb_xfrm(dst, dst_pitch, &cpp, src, fb, clip, cached, state, swab_line);
7415287e1f3675 Gerd Hoffmann      2019-04-05  363  }
bd34cea2a0e4b0 Noralf Trønnes     2020-05-09  364  EXPORT_SYMBOL(drm_fb_swab);
7415287e1f3675 Gerd Hoffmann      2019-04-05  365  
cce6bedb38ed08 Thomas Zimmermann  2022-04-27  366  static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigned int pixels)
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  367  {
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  368  	u8 *dbuf8 = dbuf;
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  369  	const __le32 *sbuf32 = sbuf;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  370  	unsigned int x;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  371  	u32 pix;
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  372  
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  373  	for (x = 0; x < pixels; x++) {
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  374  		pix = le32_to_cpu(sbuf32[x]);
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  375  		dbuf8[x] = ((pix & 0x00e00000) >> 16) |
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  376  			   ((pix & 0x0000e000) >> 11) |
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  377  			   ((pix & 0x000000c0) >> 6);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  378  	}
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  379  }
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  380  
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  381  /**
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  382   * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
e13140a0628314 Thomas Zimmermann  2022-08-08  383   * @dst: Array of RGB332 destination buffers
e13140a0628314 Thomas Zimmermann  2022-08-08  384   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
e13140a0628314 Thomas Zimmermann  2022-08-08  385   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  386   * @src: Array of XRGB8888 source buffers
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  387   * @fb: DRM framebuffer
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  388   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  389   * @xfrm: Transform and conversion state
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  390   *
e13140a0628314 Thomas Zimmermann  2022-08-08  391   * This function copies parts of a framebuffer to display memory and converts the
e13140a0628314 Thomas Zimmermann  2022-08-08  392   * color format during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  393   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
e13140a0628314 Thomas Zimmermann  2022-08-08  394   * least as many entries as there are planes in @fb's format. Each entry stores the
e13140a0628314 Thomas Zimmermann  2022-08-08  395   * value for the format's respective color plane at the same index.
e13140a0628314 Thomas Zimmermann  2022-08-08  396   *
e13140a0628314 Thomas Zimmermann  2022-08-08  397   * This function does not apply clipping on @dst (i.e. the destination is at the
e13140a0628314 Thomas Zimmermann  2022-08-08  398   * top-left corner).
e13140a0628314 Thomas Zimmermann  2022-08-08  399   *
e13140a0628314 Thomas Zimmermann  2022-08-08  400   * Drivers can use this function for RGB332 devices that don't support XRGB8888 natively.
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  401   */
e13140a0628314 Thomas Zimmermann  2022-08-08  402  void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  403  			       const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  404  			       const struct drm_rect *clip, struct drm_format_conv_state *state)
cee0b7cbf1c02f Noralf Trønnes     2021-09-29 @405  {
f241b064426943 Thomas Zimmermann  2022-08-08  406  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
f241b064426943 Thomas Zimmermann  2022-08-08  407  		1,
e13140a0628314 Thomas Zimmermann  2022-08-08  408  	};
e13140a0628314 Thomas Zimmermann  2022-08-08  409  
05864d296c0bfc Thomas Zimmermann  2023-10-05  410  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
f241b064426943 Thomas Zimmermann  2022-08-08  411  		    drm_fb_xrgb8888_to_rgb332_line);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  412  }
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  413  EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
cee0b7cbf1c02f Noralf Trønnes     2021-09-29  414  
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  415  static void drm_fb_xrgb8888_to_rgb565_line(void *dbuf, const void *sbuf, unsigned int pixels)
bcc4442008aca0 Gerd Hoffmann      2019-04-05  416  {
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  417  	__le16 *dbuf16 = dbuf;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  418  	const __le32 *sbuf32 = sbuf;
d653bd39482377 Gerd Hoffmann      2019-04-10  419  	unsigned int x;
d653bd39482377 Gerd Hoffmann      2019-04-10  420  	u16 val16;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  421  	u32 pix;
bcc4442008aca0 Gerd Hoffmann      2019-04-05  422  
d653bd39482377 Gerd Hoffmann      2019-04-10  423  	for (x = 0; x < pixels; x++) {
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  424  		pix = le32_to_cpu(sbuf32[x]);
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  425  		val16 = ((pix & 0x00F80000) >> 8) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  426  			((pix & 0x0000FC00) >> 5) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  427  			((pix & 0x000000F8) >> 3);
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  428  		dbuf16[x] = cpu_to_le16(val16);
bcc4442008aca0 Gerd Hoffmann      2019-04-05  429  	}
bcc4442008aca0 Gerd Hoffmann      2019-04-05  430  }
bcc4442008aca0 Gerd Hoffmann      2019-04-05  431  
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  432  /* TODO: implement this helper as conversion to RGB565|BIG_ENDIAN */
a6fdb669bb6523 Thomas Zimmermann  2022-04-27  433  static void drm_fb_xrgb8888_to_rgb565_swab_line(void *dbuf, const void *sbuf,
69add027fd2bac Thomas Zimmermann  2022-04-27  434  						unsigned int pixels)
69add027fd2bac Thomas Zimmermann  2022-04-27  435  {
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  436  	__le16 *dbuf16 = dbuf;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  437  	const __le32 *sbuf32 = sbuf;
69add027fd2bac Thomas Zimmermann  2022-04-27  438  	unsigned int x;
69add027fd2bac Thomas Zimmermann  2022-04-27  439  	u16 val16;
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  440  	u32 pix;
69add027fd2bac Thomas Zimmermann  2022-04-27  441  
69add027fd2bac Thomas Zimmermann  2022-04-27  442  	for (x = 0; x < pixels; x++) {
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  443  		pix = le32_to_cpu(sbuf32[x]);
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  444  		val16 = ((pix & 0x00F80000) >> 8) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  445  			((pix & 0x0000FC00) >> 5) |
4d9db10576ff51 Geert Uytterhoeven 2022-07-08  446  			((pix & 0x000000F8) >> 3);
f21d62c9ce3db2 Thomas Zimmermann  2023-01-02  447  		dbuf16[x] = cpu_to_le16(swab16(val16));
69add027fd2bac Thomas Zimmermann  2022-04-27  448  	}
69add027fd2bac Thomas Zimmermann  2022-04-27  449  }
69add027fd2bac Thomas Zimmermann  2022-04-27  450  
7415287e1f3675 Gerd Hoffmann      2019-04-05  451  /**
7415287e1f3675 Gerd Hoffmann      2019-04-05  452   * drm_fb_xrgb8888_to_rgb565 - Convert XRGB8888 to RGB565 clip buffer
ab298c29d414a5 Thomas Zimmermann  2022-08-08  453   * @dst: Array of RGB565 destination buffers
ab298c29d414a5 Thomas Zimmermann  2022-08-08  454   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
ab298c29d414a5 Thomas Zimmermann  2022-08-08  455   *             within @dst; can be NULL if scanlines are stored next to each other.
504a51d70f86e3 Thomas Zimmermann  2022-08-08  456   * @src: Array of XRGB8888 source buffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  457   * @fb: DRM framebuffer
7415287e1f3675 Gerd Hoffmann      2019-04-05  458   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  459   * @xfrm: Transform and conversion state
d653bd39482377 Gerd Hoffmann      2019-04-10  460   * @swab: Swap bytes
7415287e1f3675 Gerd Hoffmann      2019-04-05  461   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  462   * This function copies parts of a framebuffer to display memory and converts the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  463   * color format during the process. Destination and framebuffer formats must match. The
504a51d70f86e3 Thomas Zimmermann  2022-08-08  464   * parameters @dst, @dst_pitch and @src refer to arrays. Each array must have at
ab298c29d414a5 Thomas Zimmermann  2022-08-08  465   * least as many entries as there are planes in @fb's format. Each entry stores the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  466   * value for the format's respective color plane at the same index.
bcc4442008aca0 Gerd Hoffmann      2019-04-05  467   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  468   * This function does not apply clipping on @dst (i.e. the destination is at the
ab298c29d414a5 Thomas Zimmermann  2022-08-08  469   * top-left corner).
ab298c29d414a5 Thomas Zimmermann  2022-08-08  470   *
ab298c29d414a5 Thomas Zimmermann  2022-08-08  471   * Drivers can use this function for RGB565 devices that don't support XRGB8888 natively.
bcc4442008aca0 Gerd Hoffmann      2019-04-05  472   */
ab298c29d414a5 Thomas Zimmermann  2022-08-08  473  void drm_fb_xrgb8888_to_rgb565(struct iosys_map *dst, const unsigned int *dst_pitch,
504a51d70f86e3 Thomas Zimmermann  2022-08-08  474  			       const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  475  			       const struct drm_rect *clip, struct drm_format_conv_state *state,
05864d296c0bfc Thomas Zimmermann  2023-10-05  476  			       bool swab)
bcc4442008aca0 Gerd Hoffmann      2019-04-05 @477  {
f241b064426943 Thomas Zimmermann  2022-08-08  478  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
f241b064426943 Thomas Zimmermann  2022-08-08  479  		2,
ab298c29d414a5 Thomas Zimmermann  2022-08-08  480  	};
f241b064426943 Thomas Zimmermann  2022-08-08  481  
ab298c29d414a5 Thomas Zimmermann  2022-08-08  482  	void (*xfrm_line)(void *dbuf, const void *sbuf, unsigned int npixels);
ab298c29d414a5 Thomas Zimmermann  2022-08-08  483  
69add027fd2bac Thomas Zimmermann  2022-04-27  484  	if (swab)
ab298c29d414a5 Thomas Zimmermann  2022-08-08  485  		xfrm_line = drm_fb_xrgb8888_to_rgb565_swab_line;
ab298c29d414a5 Thomas Zimmermann  2022-08-08  486  	else
ab298c29d414a5 Thomas Zimmermann  2022-08-08  487  		xfrm_line = drm_fb_xrgb8888_to_rgb565_line;
ab298c29d414a5 Thomas Zimmermann  2022-08-08  488  
05864d296c0bfc Thomas Zimmermann  2023-10-05  489  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state, xfrm_line);
7415287e1f3675 Gerd Hoffmann      2019-04-05  490  }
ab298c29d414a5 Thomas Zimmermann  2022-08-08  491  EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb565);
7415287e1f3675 Gerd Hoffmann      2019-04-05  492  
10cd592e639edc Thomas Zimmermann  2023-01-02  493  static void drm_fb_xrgb8888_to_xrgb1555_line(void *dbuf, const void *sbuf, unsigned int pixels)
10cd592e639edc Thomas Zimmermann  2023-01-02  494  {
10cd592e639edc Thomas Zimmermann  2023-01-02  495  	__le16 *dbuf16 = dbuf;
10cd592e639edc Thomas Zimmermann  2023-01-02  496  	const __le32 *sbuf32 = sbuf;
10cd592e639edc Thomas Zimmermann  2023-01-02  497  	unsigned int x;
10cd592e639edc Thomas Zimmermann  2023-01-02  498  	u16 val16;
10cd592e639edc Thomas Zimmermann  2023-01-02  499  	u32 pix;
10cd592e639edc Thomas Zimmermann  2023-01-02  500  
10cd592e639edc Thomas Zimmermann  2023-01-02  501  	for (x = 0; x < pixels; x++) {
10cd592e639edc Thomas Zimmermann  2023-01-02  502  		pix = le32_to_cpu(sbuf32[x]);
10cd592e639edc Thomas Zimmermann  2023-01-02  503  		val16 = ((pix & 0x00f80000) >> 9) |
10cd592e639edc Thomas Zimmermann  2023-01-02  504  			((pix & 0x0000f800) >> 6) |
10cd592e639edc Thomas Zimmermann  2023-01-02  505  			((pix & 0x000000f8) >> 3);
10cd592e639edc Thomas Zimmermann  2023-01-02  506  		dbuf16[x] = cpu_to_le16(val16);
10cd592e639edc Thomas Zimmermann  2023-01-02  507  	}
10cd592e639edc Thomas Zimmermann  2023-01-02  508  }
10cd592e639edc Thomas Zimmermann  2023-01-02  509  
10cd592e639edc Thomas Zimmermann  2023-01-02  510  /**
10cd592e639edc Thomas Zimmermann  2023-01-02  511   * drm_fb_xrgb8888_to_xrgb1555 - Convert XRGB8888 to XRGB1555 clip buffer
10cd592e639edc Thomas Zimmermann  2023-01-02  512   * @dst: Array of XRGB1555 destination buffers
10cd592e639edc Thomas Zimmermann  2023-01-02  513   * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
10cd592e639edc Thomas Zimmermann  2023-01-02  514   *             within @dst; can be NULL if scanlines are stored next to each other.
10cd592e639edc Thomas Zimmermann  2023-01-02  515   * @src: Array of XRGB8888 source buffer
10cd592e639edc Thomas Zimmermann  2023-01-02  516   * @fb: DRM framebuffer
10cd592e639edc Thomas Zimmermann  2023-01-02  517   * @clip: Clip rectangle area to copy
05864d296c0bfc Thomas Zimmermann  2023-10-05  518   * @xfrm: Transform and conversion state
10cd592e639edc Thomas Zimmermann  2023-01-02  519   *
10cd592e639edc Thomas Zimmermann  2023-01-02  520   * This function copies parts of a framebuffer to display memory and converts
10cd592e639edc Thomas Zimmermann  2023-01-02  521   * the color format during the process. The parameters @dst, @dst_pitch and
10cd592e639edc Thomas Zimmermann  2023-01-02  522   * @src refer to arrays. Each array must have at least as many entries as
10cd592e639edc Thomas Zimmermann  2023-01-02  523   * there are planes in @fb's format. Each entry stores the value for the
10cd592e639edc Thomas Zimmermann  2023-01-02  524   * format's respective color plane at the same index.
10cd592e639edc Thomas Zimmermann  2023-01-02  525   *
10cd592e639edc Thomas Zimmermann  2023-01-02  526   * This function does not apply clipping on @dst (i.e. the destination is at the
10cd592e639edc Thomas Zimmermann  2023-01-02  527   * top-left corner).
10cd592e639edc Thomas Zimmermann  2023-01-02  528   *
10cd592e639edc Thomas Zimmermann  2023-01-02  529   * Drivers can use this function for XRGB1555 devices that don't support
10cd592e639edc Thomas Zimmermann  2023-01-02  530   * XRGB8888 natively.
10cd592e639edc Thomas Zimmermann  2023-01-02  531   */
10cd592e639edc Thomas Zimmermann  2023-01-02  532  void drm_fb_xrgb8888_to_xrgb1555(struct iosys_map *dst, const unsigned int *dst_pitch,
10cd592e639edc Thomas Zimmermann  2023-01-02  533  				 const struct iosys_map *src, const struct drm_framebuffer *fb,
05864d296c0bfc Thomas Zimmermann  2023-10-05  534  				 const struct drm_rect *clip, struct drm_format_conv_state *state)
10cd592e639edc Thomas Zimmermann  2023-01-02 @535  {
10cd592e639edc Thomas Zimmermann  2023-01-02  536  	static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
10cd592e639edc Thomas Zimmermann  2023-01-02  537  		2,
10cd592e639edc Thomas Zimmermann  2023-01-02  538  	};
10cd592e639edc Thomas Zimmermann  2023-01-02  539  
05864d296c0bfc Thomas Zimmermann  2023-10-05  540  	drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
10cd592e639edc Thomas Zimmermann  2023-01-02  541  		    drm_fb_xrgb8888_to_xrgb1555_line);
10cd592e639edc Thomas Zimmermann  2023-01-02  542  }
10cd592e639edc Thomas Zimmermann  2023-01-02  543  EXPORT_SYMBOL(drm_fb_xrgb8888_to_xrgb1555);
10cd592e639edc Thomas Zimmermann  2023-01-02  544  

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

  reply	other threads:[~2023-10-05 11:08 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-05  9:04 [PATCH v4 0/7] drm: Reuse temporary memory for format conversion Thomas Zimmermann
2023-10-05  9:04 ` [PATCH v4 1/7] drm/format-helper: Cache buffers with struct drm_format_conv_state Thomas Zimmermann
2023-10-05 11:01   ` Noralf Trønnes
2023-10-05 13:18   ` Javier Martinez Canillas
2023-10-05 14:55     ` Thomas Zimmermann
2023-10-05 15:26       ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 2/7] drm/atomic-helper: Add format-conversion state to shadow-plane state Thomas Zimmermann
2023-10-05 11:02   ` Noralf Trønnes
2023-10-05 13:26   ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 3/7] drm/format-helper: Pass format-conversion state to helpers Thomas Zimmermann
2023-10-05 11:06   ` kernel test robot [this message]
2023-10-05 11:06     ` kernel test robot
2023-10-05 11:10   ` Noralf Trønnes
2023-10-05 11:15     ` Thomas Zimmermann
2023-10-05 13:28   ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 4/7] drm/ofdrm: Preallocate format-conversion buffer in atomic_check Thomas Zimmermann
2023-10-05 13:35   ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 5/7] drm/simpledrm: " Thomas Zimmermann
2023-10-05 13:38   ` Javier Martinez Canillas
2023-10-09  8:42     ` Thomas Zimmermann
2023-10-09  8:58       ` Javier Martinez Canillas
2023-10-09  9:16         ` Thomas Zimmermann
2023-10-09  9:24           ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 6/7] drm/ssd130x: Fix atomic_check for disabled planes Thomas Zimmermann
2023-10-05  9:15   ` Geert Uytterhoeven
2023-10-05 11:37   ` Javier Martinez Canillas
2023-10-05 11:54     ` Thomas Zimmermann
2023-10-05 12:54       ` Javier Martinez Canillas
2023-10-05 12:58         ` Javier Martinez Canillas
2023-10-05  9:04 ` [PATCH v4 7/7] drm/ssd130x: Preallocate format-conversion buffer in atomic_check Thomas Zimmermann
2023-10-05 11:43   ` Javier Martinez Canillas
2023-10-06 14:49 ` [PATCH v4 0/7] drm: Reuse temporary memory for format conversion Maxime Ripard
2023-10-09  8:23   ` Thomas Zimmermann
2023-10-10  9:55     ` Maxime Ripard
2023-10-07 12:01 ` Noralf Trønnes
2023-10-09  7:53   ` Thomas Zimmermann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202310051822.r1l9UoUq-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=airlied@gmail.com \
    --cc=arthurgrillo@riseup.net \
    --cc=daniel@ffwll.ch \
    --cc=david@lechnology.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=javierm@redhat.com \
    --cc=jfalempe@redhat.com \
    --cc=jose.exposito89@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mairacanal@riseup.net \
    --cc=mripard@kernel.org \
    --cc=noralf@tronnes.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.