dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: christian.koenig@amd.com
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	"moderated list:DMA BUFFER SHARING FRAMEWORK"
	<linaro-mm-sig@lists.linaro.org>,
	"open list:DMA BUFFER SHARING FRAMEWORK"
	<linux-media@vger.kernel.org>
Subject: Re: [PATCH 04/15] dma-fence: Make ->wait callback optional
Date: Mon, 2 Jul 2018 10:23:56 +0200	[thread overview]
Message-ID: <20180702082356.GI13978@phenom.ffwll.local> (raw)
In-Reply-To: <20180504134759.GA12521@phenom.ffwll.local>

On Fri, May 04, 2018 at 03:47:59PM +0200, Daniel Vetter wrote:
> On Fri, May 04, 2018 at 03:17:08PM +0200, Christian König wrote:
> > Am 04.05.2018 um 11:25 schrieb Daniel Vetter:
> > > On Fri, May 4, 2018 at 11:16 AM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > > > Quoting Daniel Vetter (2018-05-04 09:57:59)
> > > > > On Fri, May 04, 2018 at 09:31:33AM +0100, Chris Wilson wrote:
> > > > > > Quoting Daniel Vetter (2018-05-04 09:23:01)
> > > > > > > On Fri, May 04, 2018 at 10:17:22AM +0200, Daniel Vetter wrote:
> > > > > > > > On Fri, May 04, 2018 at 09:09:10AM +0100, Chris Wilson wrote:
> > > > > > > > > Quoting Daniel Vetter (2018-05-03 15:25:52)
> > > > > > > > > > Almost everyone uses dma_fence_default_wait.
> > > > > > > > > > 
> > > > > > > > > > v2: Also remove the BUG_ON(!ops->wait) (Chris).
> > > > > > > > > I just don't get the rationale for implicit over explicit.
> > > > > > > > Closer approximation of dwim semantics. There's been tons of patch series
> > > > > > > > all over drm and related places to get there, once we have a big pile of
> > > > > > > > implementations and know what the dwim semantics should be. Individually
> > > > > > > > they're all not much, in aggregate they substantially simplify simple
> > > > > > > > drivers.
> > > > > > > I also think clearer separation between optional optimization hooks and
> > > > > > > mandatory core parts is useful in itself.
> > > > > > A new spelling of midlayer ;) I don't see the contradiction with a
> > > > > > driver saying use the default and simplicity. (I know which one the
> > > > > > compiler thinks is simpler ;)
> > > > > If the compiler overhead is real then I guess it would makes to be
> > > > > explicit. I don't expect that to be a problem though for a blocking
> > > > > function.
> > > > > 
> > > > > I disagree on this being a midlayer - you can still overwrite everything
> > > > > you please to. What it does help is people doing less copypasting (and
> > > > > assorted bugs), at least in the grand scheme of things. And we do have a
> > > > > _lot_ more random small drivers than just a few years ago. Reducing the
> > > > > amount of explicit typing just to get default bahaviour has been an
> > > > > ongoing theme for a few years now, and your objection here is about the
> > > > > first that this is not a good idea. So I'm somewhat confused.
> > > > I'm just saying I don't see any rationale for this patch.
> > > > 
> > > >          "Almost everyone uses dma_fence_default_wait."
> > > > 
> > > > Why change?
> > > > 
> > > > Making it look simpler on the surface, so that you don't have to think
> > > > about things straight away? I understand the appeal, but I do worry
> > > > about it just being an illusion. (Cutting and pasting a line saying
> > > > .wait = default_wait, doesn't feel that onerous, as you likely cut and
> > > > paste the ops anyway, and at the very least you are reminded about some
> > > > of the interactions. You could even have default initializers and/or
> > > > magic macros to hide the cut and paste; maybe a simple_dma_fence [now
> > > > that's a midlayer!] but I haven't looked.)
> > > In really monolithic vtables like drm_driver we do use default
> > > function macros, so you type 1 line, get them all. But dma_fence_ops
> > > is pretty small, and most drivers only implement a few callbacks. Also
> > > note that e.g. the ->release callback already works like that, so this
> > > pattern is there already. I simply extended it to ->wait and
> > > ->enable_signaling. Also note that I leave the EXPORT_SYMBOL in place,
> > > you can still wrap dma_fence_default_wait if you wish to do so.
> > > 
> > > But I just realized that I didn't clean out the optional release
> > > hooks, I guess I should do that too (for the few cases it's not yet
> > > done) and respin.
> > 
> > I kind of agree with Chris here, but also see the practical problem to copy
> > the default function in all the implementations.
> > 
> > We had the same problem in TTM and I also don't really like the result to
> > always have that "if (some_callback) default(); else some_callback();".
> > 
> > Might be that the run time overhead is negligible, but it doesn't feels
> > right from the coding style perspective.
> 
> Hm, maybe I've seen too much bad code, but modeset helpers is choke full
> of exactly that pattern. It's imo also a trade-off. If you have a fairly
> specialized library like ttm that's used by relatively few things, doing
> everything explicitly is probably better. It's also where kms started out
> from.
> 
> But if you have a huge pile of fairly simple drivers, imo the balance
> starts to tip the other way, and a bit of additional logic in the shared
> code to make all the implementations a notch simpler is good. If we
> wouldn't have acquired quite a pile of dma_fence implementations I
> wouldn't have bothered with all this.

So ack/nack on this (i.e. do you retract your original r-b or not)? It's
kinda holding up all the cleanup patches below ...

I went ahead and applied the first three patches of this series meanwhile.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-07-02  8:24 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-03 14:25 [PATCH 00/15] dma-fence cleanup v2 Daniel Vetter
2018-05-03 14:25 ` [PATCH 01/15] dma-fence: remove fill_driver_data callback Daniel Vetter
2018-05-03 14:25 ` [PATCH 02/15] dma-fence: Make ->enable_signaling optional Daniel Vetter
2018-05-03 15:51   ` Chris Wilson
2018-05-04 14:10   ` [PATCH] " Daniel Vetter
2018-05-07  9:35     ` Maarten Lankhorst
2018-05-03 14:25 ` [PATCH 03/15] dma-fence: Allow wait_any_timeout for all fences Daniel Vetter
2018-05-03 14:25 ` [PATCH 04/15] dma-fence: Make ->wait callback optional Daniel Vetter
2018-05-04  8:09   ` Chris Wilson
2018-05-04  8:17     ` Daniel Vetter
2018-05-04  8:23       ` Daniel Vetter
2018-05-04  8:31         ` Chris Wilson
2018-05-04  8:57           ` Daniel Vetter
2018-05-04  9:16             ` Chris Wilson
2018-05-04  9:25               ` Daniel Vetter
2018-05-04 13:17                 ` Christian König
2018-05-04 13:47                   ` Daniel Vetter
2018-07-02  8:23                     ` Daniel Vetter [this message]
2018-07-02  8:49                       ` Christian König
2018-05-03 14:25 ` [PATCH 05/15] drm/amdgpu: Remove unecessary dma_fence_ops Daniel Vetter
2018-05-03 14:25 ` [PATCH 06/15] drm: " Daniel Vetter
2018-05-03 14:25 ` [PATCH 07/15] drm/etnaviv: " Daniel Vetter
2018-05-04  6:59   ` Christian Gmeiner
2018-05-03 14:25 ` [PATCH 08/15] drm/i915: " Daniel Vetter
2018-05-04 14:09   ` [PATCH] " Daniel Vetter
     [not found] ` <20180503142603.28513-1-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2018-05-03 14:25   ` [PATCH 09/15] drm/msm: " Daniel Vetter
     [not found]     ` <20180503142603.28513-10-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2018-05-04 14:09       ` [PATCH] " Daniel Vetter
2018-05-03 14:25   ` [PATCH 10/15] drm/nouveau: " Daniel Vetter
2018-05-03 14:25 ` [PATCH 11/15] drm/qxl: " Daniel Vetter
2018-05-03 14:26 ` [PATCH 12/15] drm/vc4: " Daniel Vetter
2018-05-04 14:09   ` [PATCH] " Daniel Vetter
2018-05-03 14:26 ` [PATCH 13/15] drm/vgem: " Daniel Vetter
2018-05-03 14:26 ` [PATCH 14/15] drm/virtio: " Daniel Vetter
2018-07-03 11:14   ` Daniel Vetter
2018-05-03 14:26 ` [PATCH 15/15] dma-fence: Polish kernel-doc for dma-fence.c Daniel Vetter
2018-05-04 14:06   ` [PATCH] " Daniel Vetter

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=20180702082356.GI13978@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-media@vger.kernel.org \
    /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