From: Jani Nikula <jani.nikula@intel.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: carsten.haitzler@arm.com, intel-gfx@lists.freedesktop.org,
quic_abhinavk@quicinc.com, dri-devel@lists.freedesktop.org,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Subject: Re: [Intel-gfx] [PATCH 5/6] drm/rcar_du: changes to rcar-du driver resulting from drm_writeback_connector structure changes
Date: Wed, 02 Feb 2022 17:57:06 +0200 [thread overview]
Message-ID: <87sft1s1m5.fsf@intel.com> (raw)
In-Reply-To: <CAA8EJprrhPtDkWRk8+6Wf+OoQi4u8m_t7G5guJQW+SNuttOSgQ@mail.gmail.com>
On Wed, 02 Feb 2022, Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:
> On Wed, 2 Feb 2022 at 16:15, Jani Nikula <jani.nikula@intel.com> wrote:
>>
>> On Wed, 02 Feb 2022, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote:
>> > Hi Kandpal,
>> >
>> > Thank you for the patch.
>> >
>> > On Wed, Feb 02, 2022 at 02:24:28PM +0530, Kandpal Suraj wrote:
>> >> Changing rcar_du driver to accomadate the change of
>> >> drm_writeback_connector.base and drm_writeback_connector.encoder
>> >> to a pointer the reason for which is explained in the
>> >> Patch(drm: add writeback pointers to drm_connector).
>> >>
>> >> Signed-off-by: Kandpal Suraj <suraj.kandpal@intel.com>
>> >> ---
>> >> drivers/gpu/drm/rcar-du/rcar_du_crtc.h | 2 ++
>> >> drivers/gpu/drm/rcar-du/rcar_du_writeback.c | 8 +++++---
>> >> 2 files changed, 7 insertions(+), 3 deletions(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h
>> >> index 66e8839db708..68f387a04502 100644
>> >> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h
>> >> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h
>> >> @@ -72,6 +72,8 @@ struct rcar_du_crtc {
>> >> const char *const *sources;
>> >> unsigned int sources_count;
>> >>
>> >> + struct drm_connector connector;
>> >> + struct drm_encoder encoder;
>> >
>> > Those fields are, at best, poorly named. Furthermore, there's no need in
>> > this driver or in other drivers using drm_writeback_connector to create
>> > an encoder or connector manually. Let's not polute all drivers because
>> > i915 doesn't have its abstractions right.
>>
>> i915 uses the quite common model for struct inheritance:
>>
>> struct intel_connector {
>> struct drm_connector base;
>> /* ... */
>> }
>>
>> Same with at least amd, ast, fsl-dcu, hisilicon, mga200, msm, nouveau,
>> radeon, tilcdc, and vboxvideo.
>
> For the reference. msm does not wrap drm_connector into any _common_
> structure, which is used internally.
>
>> We could argue about the relative merits of that abstraction, but I
>> think the bottom line is that it's popular and the drivers using it are
>> not going to be persuaded to move away from it.
>
> As I wrote earlier, I am not sure if these drivers would try using
> their drm_connector subclass for writeback.
> ast: ast_connector = drm_connector + respective i2c adapter for EDID,
> not needed for WB
> fsl-dcu: fsl_dcu_drm_connector = drm_connector + drm_encoder pointer +
> drm_panel. Not needed for WB
> hisilicon, mgag200: same as ast
> tilcdc: same as fsl-dcu
> vboxdrv: the only driver that may possibly benefit from using
> vbox_connector in the writeback support, as the connector is bare
> drm_connector + crtc pointer + hints (width, height, disconnected).
>
> I have left amd, nouveau and radeon out of this list, too complex to
> analyze in several minutes.
>
> I'd second the proposal of supporting optional drm_encoder for
> drm_writeback_connector (as the crtc/encoder split can be vague), but
> I do not see the benefit for the drivers to use their own
> drm_connector subclass for drm_writeback.
If a driver uses inheritance throughout the driver, and a *different*
subclass gets introduced into the mix, you need to add a ton of checks
all over the place when you cast the superclass pointer to the subclass.
The connector/encoder funcs you do have to pass to
drm_writeback_connector_init() can't use any of the shared driver
infrastructure that assume a certain inheritance.
See also my reply to Laurent [1].
> It well might be that we all misunderstand your design. Do you have a
> complete intel drm_writeback implementation based on this patchset? It
> would be easier to judge if the approach is correct seeing your
> target.
That would be up to Suraj Kandpal.
BR,
Jani.
[1] https://lore.kernel.org/r/87v8xxs2hz.fsf@intel.com
>
>>
>> It's no coincidence that the drivers who've implemented writeback so far
>> (komeda, mali, rcar-du, vc4, and vkms) do not use the abstraction,
>> because the drm_writeback_connector midlayer does, forcing the issue.
>>
>> So I think drm_writeback_connector should *not* use the inheritance
>> abstraction because it's a midlayer that should leave that option to the
>> drivers. I think drm_writeback_connector needs to be changed to
>> accommodate that, and, unfortunately, it means current writeback users
>> need to be changed as well.
>>
>> I am not sure, however, if the series at hand is the right
>> approach. Perhaps writeback can be modified to allocate the stuff for
>> you if you prefer it that way, as long as the drm_connector is not
>> embedded in struct drm_writeback_connector.
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2022-02-02 15:57 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-02 8:54 [Intel-gfx] [PATCH 0/6] drm writeback connector changes Kandpal Suraj
2022-02-02 8:54 ` [Intel-gfx] [PATCH 1/6] drm: add writeback pointers to drm_connector Kandpal Suraj
2022-02-02 10:28 ` Dmitry Baryshkov
2022-02-03 8:46 ` Kandpal, Suraj
2022-02-02 11:17 ` kernel test robot
2022-02-02 20:07 ` kernel test robot
2022-02-02 8:54 ` [Intel-gfx] [PATCH 2/6] drm/arm/komeda : change driver to use drm_writeback_connector.base pointer Kandpal Suraj
2022-02-02 8:54 ` [Intel-gfx] [PATCH 3/6] drm/vkms: change vkms " Kandpal Suraj
2022-02-02 8:54 ` [Intel-gfx] [PATCH 4/6] drm/vc4: vc4 driver changes to accommodate changes done in drm_writeback_connector structure Kandpal Suraj
2022-02-02 8:54 ` [Intel-gfx] [PATCH 5/6] drm/rcar_du: changes to rcar-du driver resulting from drm_writeback_connector structure changes Kandpal Suraj
2022-02-02 12:42 ` Laurent Pinchart
2022-02-02 13:15 ` Jani Nikula
2022-02-02 13:26 ` Laurent Pinchart
2022-02-02 15:38 ` Jani Nikula
2022-02-26 18:27 ` Rob Clark
2022-02-28 8:03 ` Laurent Pinchart
2022-02-28 12:09 ` Jani Nikula
2022-02-28 12:28 ` Laurent Pinchart
2022-02-28 13:42 ` Laurent Pinchart
2022-03-02 18:28 ` Abhinav Kumar
2022-03-02 18:31 ` Laurent Pinchart
2022-03-03 17:32 ` Abhinav Kumar
2022-03-04 9:56 ` Kandpal, Suraj
2022-03-04 10:39 ` Dmitry Baryshkov
2022-03-04 10:47 ` Kandpal, Suraj
2022-03-04 11:25 ` Dmitry Baryshkov
2022-03-04 14:16 ` Kandpal, Suraj
2022-03-04 20:47 ` Abhinav Kumar
2022-03-08 14:30 ` Kandpal, Suraj
2022-03-08 19:44 ` Abhinav Kumar
2022-02-06 23:32 ` Dmitry Baryshkov
2022-02-07 7:20 ` Abhinav Kumar
2022-02-10 1:40 ` Abhinav Kumar
2022-02-10 4:58 ` Laurent Pinchart
2022-02-22 3:32 ` Dmitry Baryshkov
2022-02-22 7:34 ` Laurent Pinchart
2022-02-24 0:27 ` Abhinav Kumar
2022-02-02 13:34 ` Ville Syrjälä
2022-02-02 13:40 ` Dmitry Baryshkov
2022-02-02 15:57 ` Jani Nikula [this message]
2022-02-23 6:17 ` Kandpal, Suraj
2022-02-25 23:26 ` Abhinav Kumar
2022-02-26 5:10 ` Kandpal, Suraj
2022-02-28 8:00 ` Laurent Pinchart
2022-02-28 8:07 ` Dmitry Baryshkov
2022-02-28 8:28 ` Laurent Pinchart
2022-02-02 8:54 ` [Intel-gfx] [PATCH 6/6] drm/arm: changes to malidp " Kandpal Suraj
2022-02-02 10:01 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm writeback connector changes Patchwork
2022-02-02 10:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-02-02 12:22 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
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=87sft1s1m5.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=carsten.haitzler@arm.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=quic_abhinavk@quicinc.com \
/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