From: "Terje Bergström" <tbergstrom@nvidia.com>
To: Thierry Reding <thierry.reding@avionic-design.de>
Cc: Arto Merilainen <amerilainen@nvidia.com>,
"airlied@linux.ie" <airlied@linux.ie>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv5,RESEND 3/8] gpu: host1x: Add channel support
Date: Mon, 11 Mar 2013 11:21:05 +0200 [thread overview]
Message-ID: <513DA201.9010707@nvidia.com> (raw)
In-Reply-To: <20130311071851.GA6033@avionic-0098.mockup.avionic-design.de>
On 11.03.2013 09:18, Thierry Reding wrote:
> This sound a bit over-engineered at this point in time. DRM is currently
> the only user. Is anybody working on any non-DRM drivers that would use
> this?
Well, this contains beginning of that:
http://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=drivers/media/video/tegra_v4l2_camera.c;h=644d0be5380367aca4c826c49724c03aad08387c;hb=l4t/l4t-r16-r2
I don't want to give these guys any excuse not to port it over to host1x
code base. :-)
> Even that aside, I don't think host1x_mem_handle is a good choice of
> name here. The objects are much more than handles. They are in fact
> buffer objects, which can optionally be attached to a handle. I also
> think that using a void * to store the handle specific data isn't such a
> good idea.
Naming if not an issue for me - we can easily agree on using _bo.
> So how about the following proposal, which I think might satisfy both of
> us:
>
> struct host1x_bo;
>
> struct host1x_bo_ops {
> struct host1x_bo *(*get)(struct host1x_bo *bo);
> void (*put)(struct host1x_bo *bo);
> dma_addr_t (*pin)(struct host1x_bo *bo, struct sg_table **sgt);
> ...
> };
>
> struct host1x_bo *host1x_bo_get(struct host1x_bo *bo);
> void host1x_bo_put(struct host1x_bo *bo);
> dma_addr_t host1x_bo_pin(struct host1x_bo *bo, struct sg_table **sgt);
> ...
>
> struct host1x_bo {
> const struct host1x_bo_ops *ops;
> ...
> };
>
> struct tegra_drm_bo {
> struct host1x_bo base;
> ...
> };
>
> That way you can get rid of the host1x_memmgr_create_handle() helper and
> instead embed host1x_bo into driver-/framework-specific structures with
> the necessary initialization.
This would make sense. We'll get back when we have enough of
implementation done to understand it all. One consequence is that we
cannot use drm_gem_cma_create() anymore. We'll have to introduce a
function that does the same as drm_gem_cma_create(), but it takes a
pre-allocated drm_gem_cma_object pointer. That way we can allocate the
struct, and use DRM CMA just to initialize the drm_gem_cma_object.
Other way would be just taking a copy of DRM CMA helper, but I'd like to
defer that to the next step when we implement IOMMU aware allocator.
> It also allows you to interact directly with the objects instead of
> having to go through the memmgr API. The memory manager doesn't really
> exist anymore so keeping the name in the API is only confusing. Your
> current proposal deals with memory handles directly already so it's
> really just making the naming more consistent.
The memmgr APIs are currently just a shortcut wrapper to the ops, so in
that sense the memmgr does not really exist. I think it might still make
sense to keep static inline wrappers for calling the ops within, but we
could rename them to host1x_bo_somethingandother. Then it'd follow the
pattern we are using for the hw ops in the latest set.
Terje
next prev parent reply other threads:[~2013-03-11 9:20 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-15 11:43 [PATCHv5,RESEND 0/8] Support for Tegra 2D hardware Terje Bergstrom
2013-01-15 11:43 ` [PATCHv5,RESEND 1/8] gpu: host1x: Add host1x driver Terje Bergstrom
2013-02-04 9:09 ` Thierry Reding
2013-02-05 3:30 ` Terje Bergström
2013-02-05 7:43 ` Thierry Reding
2013-02-06 20:13 ` Terje Bergström
2013-01-15 11:43 ` [PATCHv5,RESEND 2/8] gpu: host1x: Add syncpoint wait and interrupts Terje Bergstrom
2013-02-04 10:30 ` Thierry Reding
2013-02-05 4:29 ` Terje Bergström
2013-02-05 8:42 ` Thierry Reding
2013-02-06 20:29 ` Terje Bergström
2013-02-06 20:38 ` Thierry Reding
2013-02-06 20:41 ` Terje Bergström
2013-01-15 11:43 ` [PATCHv5,RESEND 3/8] gpu: host1x: Add channel support Terje Bergstrom
2013-02-25 15:24 ` Thierry Reding
2013-02-26 9:48 ` Terje Bergström
2013-02-27 8:56 ` Thierry Reding
2013-03-08 16:16 ` Terje Bergström
2013-03-08 20:43 ` Thierry Reding
2013-03-11 6:29 ` Terje Bergström
2013-03-11 7:18 ` Thierry Reding
2013-03-11 9:21 ` Terje Bergström [this message]
2013-03-11 9:41 ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 4/8] gpu: host1x: Add debug support Terje Bergstrom
2013-02-04 11:03 ` Thierry Reding
2013-02-05 4:41 ` Terje Bergström
2013-02-05 9:15 ` Thierry Reding
2013-02-06 20:58 ` Terje Bergström
2013-02-08 6:54 ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 5/8] drm: tegra: Move drm to live under host1x Terje Bergstrom
2013-02-04 11:08 ` Thierry Reding
2013-02-05 4:45 ` Terje Bergström
2013-02-05 9:26 ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 6/8] gpu: host1x: Remove second host1x driver Terje Bergstrom
2013-02-04 11:23 ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 7/8] ARM: tegra: Add board data and 2D clocks Terje Bergstrom
2013-02-04 11:26 ` Thierry Reding
2013-02-04 17:06 ` Stephen Warren
2013-02-05 4:47 ` Terje Bergström
2013-01-15 11:44 ` [PATCHv5,RESEND 8/8] drm: tegra: Add gr2d device Terje Bergstrom
2013-02-04 12:56 ` Thierry Reding
2013-02-05 5:17 ` Terje Bergström
2013-02-05 9:54 ` Thierry Reding
2013-02-06 21:23 ` Terje Bergström
2013-02-08 7:07 ` Thierry Reding
2013-02-11 0:42 ` Terje Bergström
2013-02-11 6:44 ` Thierry Reding
2013-02-11 15:40 ` Terje Bergström
2013-01-22 9:03 ` [PATCHv5,RESEND 0/8] Support for Tegra 2D hardware Terje Bergström
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=513DA201.9010707@nvidia.com \
--to=tbergstrom@nvidia.com \
--cc=airlied@linux.ie \
--cc=amerilainen@nvidia.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=thierry.reding@avionic-design.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