From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 01/19] drm/doc: Clarify the dumb object interfaces
Date: Thu, 23 Jan 2014 13:56:51 +0100 [thread overview]
Message-ID: <1805347.h4MtSGFZv1@avalon> (raw)
In-Reply-To: <20140123124731.GV9772@phenom.ffwll.local>
Hi Daniel,
On Thursday 23 January 2014 13:47:31 Daniel Vetter wrote:
> On Thu, Jan 23, 2014 at 12:21:42PM +0100, Laurent Pinchart wrote:
> > On Thursday 23 January 2014 09:52:26 Daniel Vetter wrote:
> > > - This is _not_ a generic interface to create gem objects, but just an
> > > interface to make early boot services (like boot splash) with a
> > > generic KMS userspace driver possible. Hence it's better to move
> > > the documentation for this from the GEM section to the KMS section,
> > > next to the creation of framebuffer objects.
> > >
> > > - Make it really clear that the returned handle isn't necessarily a
> > > GEM object (it can also be e.g. a TTM handle when running on top of
> > > vmwgfx).
> > >
> > > - Add a paragraph to make it clear that this is just for unaccelarated
> > > userspace - gpu drivers need to have their own buffer object
> > > creation ioctl which is hardware specific.
> > >
> > > Cc: Laurent Pinchart laurent.pinchart@ideasonboard.com>
> > > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > ---
> > >
> > > Documentation/DocBook/drm.tmpl | 125 ++++++++++++++++++----------------
> > > 1 file changed, 68 insertions(+), 57 deletions(-)
> > >
> > > diff --git a/Documentation/DocBook/drm.tmpl
> > > b/Documentation/DocBook/drm.tmpl index ed1d6d289022..9c3fdd59c995
> > > 100644
> > > --- a/Documentation/DocBook/drm.tmpl
> > > +++ b/Documentation/DocBook/drm.tmpl
[snip]
> > > pages @@ -970,7 +914,9 @@ int max_width, max_height;</synopsis>
> > > handle (or a list of memory handles for multi-planar formats)
> > > through the <parameter>drm_mode_fb_cmd2</parameter> argument. This
> > > document assumes that the driver uses GEM, those handles thus reference
> > > GEM
> > > - objects.
> > > + objects. But drivers are free to use their own backing storage
> > > object
> > > + handles, e.g. vmwgfx directly exposes special TTM handles to
> > > userspace
> > > + and so expects TTM handles in the create ioctl and not GEM objects.
> >
> > Nitpicking, I would say
> >
> > "Drivers are however free to use their own backing storage object handles,
> > e.g. vmwgfx directly exposes special TTM handles to userspace and so
> > expects TTM handles in the create ioctl, not GEM objects."
>
> I've already adjusted this a bit but haven't yet sent out the new version
> of the patch. Slightly different wording now.
OK. Please also see my reply to David.
> > > <para>
> > > Drivers must first validate the requested frame buffer
> > > parameters passed
> > > @@ -1052,6 +998,71 @@ int max_width, max_height;</synopsis>
> > > <function>drm_framebuffer_unregister_private</function>.
> > > </sect2>
> > > <sect2>
> > > + <title>Dumb GEM Objects</title>
> > > + <para>
> > > + The KMS API doesn't standardize backing storage object creation and
> >
> > Strictly speaking isn't it the DRM API that's responsible for memory
> > management, not the KMS API ?
>
> The driver's private api is responsible for memory management, but the
> crucial thing here is that the KMS ioctls don't mandate anything specific
> (beyong that it needs to use uint32_t for handles).
Sure, but my point was that I believe memory management is the responsibility
of DRM, not KMS. It of course needs to be driver-specific.
> > > + leaves it to driver-specific ioctls. Furthermore actually creating a
> > > + buffer object even for GEM-based drivers is done through a
> > > + driver-specific ioctl - GEM only has a common userspace interface for
> > > + sharing and destroying objects. While not an issue for full-fledged
> > > + graphics stacks that include device-specific userspace components (in
> > > + libdrm for instance), this limit makes DRM-based early boot graphics
> > > + unnecessarily complex.
> > > + </para>
> >
> > This feels a bit out of place, can't we leave the section where it was ?
>
> Imo the justification for why we have the dumb ioctls should be here. And
> I wanted to mention both that KMS doesn't mandate a particular bo
> interface like GEM and that on top GEM wouldn't even provide a common
> allocation function anyway.
I agree that a justification here is a good idea, but I would just add one
paragraph that references the dumb GEM objects section instead of scattering
GEM documentation around.
> But besides that I think there's some room for improvement in the GEM
> section to clarify what is the actual core interfaces, what is more helper
> library in nature and what in GEM is more just a common design pattern for
> driver ioctls but not specified in a mandatory way anywhere. E.g. atm all
> drivers which implement a GEM interface (radeon, i915, ...) have a mostly
> implicitly synchronizing buffer access interface, but there's nothing in
> GEM mandating this. Or the usual confusing between TTM directly exposed to
> userspace and TTM hidden behind a GEM-based ioctl interface.
I agree, the GEM section should be improved, and TTM documentation would be
nice as well. I'm lacking time though (as well as knowledge about TTM).
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2014-01-23 12:56 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-23 8:52 [PATCH 00/19] DRM developer's guide polish, part 1 Daniel Vetter
2014-01-23 8:52 ` [PATCH 01/19] drm/doc: Clarify the dumb object interfaces Daniel Vetter
2014-01-23 9:14 ` David Herrmann
2014-01-23 11:30 ` Laurent Pinchart
2014-01-23 12:48 ` [PATCH] " Daniel Vetter
2014-01-23 13:30 ` Laurent Pinchart
2014-01-23 13:50 ` Daniel Vetter
2014-01-24 11:13 ` Laurent Pinchart
2014-01-24 16:53 ` Daniel Vetter
2014-01-24 16:58 ` Daniel Vetter
2014-01-24 19:56 ` Dieter Nützel
2014-01-26 22:59 ` Laurent Pinchart
2014-01-23 11:21 ` [PATCH 01/19] " Laurent Pinchart
2014-01-23 12:47 ` Daniel Vetter
2014-01-23 12:56 ` Laurent Pinchart [this message]
2014-01-23 13:46 ` Daniel Vetter
2014-01-24 11:08 ` Laurent Pinchart
2014-01-24 16:49 ` Daniel Vetter
2014-01-23 8:52 ` [PATCH 02/19] drm/doc: Fix up kerneldoc in drm_edid.c Daniel Vetter
2014-01-23 8:52 ` [PATCH 03/19] drm/doc: Clean up and integrate kerneldoc for drm_gem.c Daniel Vetter
2014-01-23 9:21 ` David Herrmann
2014-01-23 9:39 ` Daniel Vetter
2014-01-23 8:52 ` [PATCH 04/19] drm/doc: Remove <term> from rendernode docs Daniel Vetter
2014-01-23 8:52 ` [PATCH 05/19] drm/doc: Reorganize driver documentation Daniel Vetter
2014-01-23 8:52 ` [PATCH 06/19] drm/doc: Move the vma offset manager to the right spot Daniel Vetter
2014-01-23 8:52 ` [PATCH 07/19] drm/doc: Remove the "command submissin and fencing" section Daniel Vetter
2014-01-23 8:52 ` [PATCH 08/19] drm/doc: No more drm perf counters Daniel Vetter
2014-01-23 8:52 ` [PATCH 09/19] drm/doc: Document drm_helper_resume_force_mode Daniel Vetter
2014-01-23 8:52 ` [PATCH 10/19] drm/doc: Hide legacy horrors better Daniel Vetter
2014-01-23 8:52 ` [PATCH 11/19] drm/docs: Include hdmi infoframe helper reference Daniel Vetter
2014-01-23 8:52 ` [PATCH 12/19] drm/doc: Clarify PRIME documentation Daniel Vetter
2014-01-23 8:52 ` [PATCH 13/19] drm/doc: Add PRIME function references Daniel Vetter
2014-01-23 9:28 ` David Herrmann
2014-01-23 9:37 ` Daniel Vetter
2014-01-23 9:45 ` David Herrmann
2014-01-23 9:58 ` Daniel Vetter
2014-01-23 8:52 ` [PATCH 14/19] drm/doc: Update copyright Daniel Vetter
2014-01-23 8:52 ` [PATCH 15/19] drm/mm: Remove MM_UNUSED_TARGET Daniel Vetter
2014-01-23 8:52 ` [PATCH 16/19] drm/doc: Overview documentation for drm_mm.c Daniel Vetter
2014-01-23 8:52 ` [PATCH 17/19] drm/doc: Add fucntion reference " Daniel Vetter
2014-01-23 8:52 ` [PATCH 18/19] drm/kms: rip out drm_mode_connector_detach_encoder Daniel Vetter
2014-01-23 8:52 ` [PATCH 19/19] drm/kms: don't export drm_mode_group_init_legacy_group Daniel Vetter
2014-01-23 9:42 ` David Herrmann
2014-01-23 10:00 ` Daniel Vetter
2014-01-23 10:05 ` Russell King - ARM Linux
2014-01-23 12:51 ` 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=1805347.h4MtSGFZv1@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.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