linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Louis Chauvet <louis.chauvet@bootlin.com>
To: Pekka Paalanen <pekka.paalanen@collabora.com>
Cc: "Rodrigo Siqueira" <rodrigosiqueiramelo@gmail.com>,
	"Melissa Wen" <melissa.srw@gmail.com>,
	"Maíra Canal" <mairacanal@riseup.net>,
	"Haneen Mohammed" <hamohammed.sa@gmail.com>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	arthurgrillo@riseup.net, "Jonathan Corbet" <corbet@lwn.net>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	jeremie.dautheribes@bootlin.com, miquel.raynal@bootlin.com,
	thomas.petazzoni@bootlin.com
Subject: Re: [PATCH v2 3/9] drm/vkms: write/update the documentation for pixel conversion and pixel write functions
Date: Tue, 27 Feb 2024 16:02:10 +0100	[thread overview]
Message-ID: <Zd35cimh8BLICUuY@localhost.localdomain> (raw)
In-Reply-To: <20240226133700.3fef91d9.pekka.paalanen@collabora.com>

[...]

> > diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c
> > index 172830a3936a..cb7a49b7c8e7 100644
> > --- a/drivers/gpu/drm/vkms/vkms_formats.c
> > +++ b/drivers/gpu/drm/vkms/vkms_formats.c
> > @@ -9,6 +9,17 @@
> >  
> >  #include "vkms_formats.h"
> >  
> > +/**
> > + * packed_pixels_offset() - Get the offset of the block containing the pixel at coordinates x/y
> > + * in the first plane
> > + *
> > + * @frame_info: Buffer metadata
> > + * @x: The x coordinate of the wanted pixel in the buffer
> > + * @y: The y coordinate of the wanted pixel in the buffer
> > + *
> > + * The caller must be aware that this offset is not always a pointer to a pixel. If individual
> > + * pixel values are needed, they have to be extracted from the resulting block.
> 
> Just wondering how the caller will be able to extract the right pixel
> from the block without re-using the knowledge already used in this
> function. I'd also expect the function to round down x,y to be
> divisible by block dimensions, but that's not visible in this email.
> Then the caller needs the remainder from the round-down, too?

You are right, the current implementation is only working when block_h == 
block_w == 1. I think I wrote the documentation for PATCHv2 5/9, but when 
backporting this comment for PATCHv2 3/9 I forgot to update it.
The new comment will be:

 * pixels_offset() - Get the offset of a given pixel data at coordinate 
 * x/y in the first plane
   [...]
 * The caller must ensure that the framebuffer associated with this 
 * request uses a pixel format where block_h == block_w == 1.
 * If this requirement is not fulfilled, the resulting offset can be 
 * completly wrong.

And yes, even after PATCHv2 5/9 it is not clear what is the offset. Is 
this better to replace the last sentence? (I will do the same update for 
the last sentence of packed_pixels_addr)

   [...]
 * The returned offset correspond to the offset of the block containing the pixel at coordinates 
 * x/y.
 * The caller must use this offset with care, as for formats with block_h != 1 or block_w != 1 
 * the requested pixel value may have to be extracted from the block, even if they are 
 * individually adressable.
 
> > + */
> >  static size_t pixel_offset(const struct vkms_frame_info *frame_info, int x, int y)
> >  {
> >  	struct drm_framebuffer *fb = frame_info->fb;
> > @@ -17,12 +28,13 @@ static size_t pixel_offset(const struct vkms_frame_info *frame_info, int x, int
> >  			      + (x * fb->format->cpp[0]);
> >  }
> >  

[...]

> > +/**
> > + * Retrieve the correct read_pixel function for a specific format.
> > + * The returned pointer is NULL for unsupported pixel formats. The caller must ensure that the
> > + * pointer is valid before using it in a vkms_plane_state.
> > + *
> > + * @format: 4cc of the format
> 
> Since there are many different 4cc style pixel format definition tables
> in existence with conflicting definitions, it would not hurt to be more
> specific that this is about DRM_FORMAT_* or drm_fourcc.h.

Is this better?

   @format: DRM_FORMAT_* value for which to obtain a conversion function (see [drm_fourcc.h])

> > + */
> >  void *get_pixel_conversion_function(u32 format)
> >  {
> >  	switch (format) {
> > @@ -247,6 +280,13 @@ void *get_pixel_conversion_function(u32 format)
> >  	}
> >  }
> >  
> > +/**
> > + * Retrieve the correct write_pixel function for a specific format.
> > + * The returned pointer is NULL for unsupported pixel formats. The caller must ensure that the
> > + * pointer is valid before using it in a vkms_writeback_job.
> > + *
> > + * @format: 4cc of the format
> 
> This too.

Ack, I will use the same as above

> > + */
> >  void *get_pixel_write_function(u32 format)
> >  {
> >  	switch (format) {
> > 
> 
> I couldn't check if the docs are correct since the patch context is not
> wide enough, but they all sound plausible to me.

I checked again, I don't see other errors than your first comment.
 
> 
> Thanks,
> pq

Kind regards,
Louis Chauvet

--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2024-02-27 15:02 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-23 11:37 [PATCH v2 0/9] drm/vkms: Reimplement line-per-line pixel conversion for plane reading Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 1/9] drm/vkms: Code formatting Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 2/9] drm/vkms: Use drm_frame directly Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 3/9] drm/vkms: write/update the documentation for pixel conversion and pixel write functions Louis Chauvet
2024-02-26 11:37   ` Pekka Paalanen
2024-02-27 15:02     ` Louis Chauvet [this message]
2024-02-29  8:48       ` Pekka Paalanen
2024-03-04 15:28         ` Louis Chauvet
2024-03-05  9:50           ` Pekka Paalanen
2024-03-06 17:29             ` Louis Chauvet
2024-03-07  8:42               ` Pekka Paalanen
2024-02-23 11:37 ` [PATCH v2 4/9] drm/vkms: Add typedef and documentation for pixel_read and pixel_write functions Louis Chauvet
2024-02-26 11:36   ` Pekka Paalanen
2024-02-27 15:02     ` Louis Chauvet
2024-02-29  9:07       ` Pekka Paalanen
2024-03-04 15:28         ` Louis Chauvet
2024-03-05  9:50           ` Pekka Paalanen
2024-02-23 11:37 ` [PATCH v2 5/9] drm/vkms: Re-introduce line-per-line composition algorithm Louis Chauvet
2024-02-23 11:49   ` Maíra Canal
2024-02-26 11:37   ` Pekka Paalanen
2024-02-27 15:02     ` Louis Chauvet
2024-02-29 10:21       ` Pekka Paalanen
2024-03-04 15:28         ` Louis Chauvet
2024-03-05 10:10           ` Pekka Paalanen
2024-03-06 17:29             ` Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 6/9] drm/vkms: Add YUV support Louis Chauvet
2024-02-23 11:46   ` Thomas Zimmermann
2024-02-26 12:19   ` Pekka Paalanen
2024-02-27 15:02     ` Louis Chauvet
2024-02-27 20:01       ` Arthur Grillo
2024-02-29  1:52         ` Arthur Grillo
2024-02-29 12:12           ` Pekka Paalanen
2024-02-29 17:57             ` Arthur Grillo
2024-03-01 11:53               ` Pekka Paalanen
2024-03-02 14:14                 ` Arthur Grillo
2024-03-04 15:28             ` Louis Chauvet
2024-03-04 15:39               ` Arthur Grillo
2024-03-04 15:48                 ` Louis Chauvet
2024-03-04 16:51                   ` Arthur Grillo
2024-03-06 20:09                     ` Arthur Grillo
2024-03-07  0:03                       ` Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 7/9] drm/vkms: Add range and encoding properties to pixel_read function Louis Chauvet
2024-02-26 12:23   ` Pekka Paalanen
2024-02-27 15:02     ` Louis Chauvet
2024-02-29 12:24       ` Pekka Paalanen
2024-03-04 15:29         ` Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 8/9] drm/vkms: Drop YUV formats TODO Louis Chauvet
2024-02-23 11:37 ` [PATCH v2 9/9] drm/vkms: Create KUnit tests for YUV conversions Louis Chauvet
2024-02-26 16:39   ` Arthur Grillo
2024-02-27 15:02     ` Louis Chauvet
2024-02-23 11:52 ` [PATCH v2 0/9] drm/vkms: Reimplement line-per-line pixel conversion for plane reading Maira Canal

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=Zd35cimh8BLICUuY@localhost.localdomain \
    --to=louis.chauvet@bootlin.com \
    --cc=airlied@gmail.com \
    --cc=arthurgrillo@riseup.net \
    --cc=corbet@lwn.net \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=jeremie.dautheribes@bootlin.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mairacanal@riseup.net \
    --cc=melissa.srw@gmail.com \
    --cc=miquel.raynal@bootlin.com \
    --cc=mripard@kernel.org \
    --cc=pekka.paalanen@collabora.com \
    --cc=rodrigosiqueiramelo@gmail.com \
    --cc=thomas.petazzoni@bootlin.com \
    --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 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).