From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx <Intel-gfx@lists.freedesktop.org>
Subject: Re: [RFC 3/5] drm/i915: Infrastructure for supporting different GGTT views per object
Date: Tue, 04 Nov 2014 11:15:16 +0000 [thread overview]
Message-ID: <5458B544.6050606@linux.intel.com> (raw)
In-Reply-To: <CAKMK7uHL_ZqNhpEo7JVzWyY2jR1=u+WZDJOxLtSHcEbgKVeRbA@mail.gmail.com>
On 11/03/2014 05:29 PM, Daniel Vetter wrote:
> On Mon, Nov 3, 2014 at 6:20 PM, Tvrtko Ursulin
> <tvrtko.ursulin@linux.intel.com> wrote:
>> I did not like your idea, well I did not think it is feasible - as in easily
>> doable, of stealing the DMA addresses since the SG tables between view don't
>> have a 1:1 relationship in number of chunk/pages.
>
> Ok, so sg table coalescing is getting in the way. On the source sg
> table stored in obj->pages we can fix this by using one of the
> per-page sg table walkers - they'll take care of all the annoying
> details. See how we walk the sg tables in the pte insert fucntions for
> examples.
Obviously I am doing the same elsewhere...
> On the new target sg table I'd simply not bother with merging and
> allocate a full sg table with sg_alloc_table. Due to the rotation
> there won't be a lot of contiguous stuff anyway.
For things like mirrored 2d/3d still it could save space. And it kind of
feels suboptimal to special case and add low level code when there is a
nice helper functions which handles it all.
> That leaves the ugly problem of resorting the table without going
> nuts. Either allocate a temporary array (allocated with drm_malloc_ab
> since kmalloc won't be enough for this) of dma_addr_t and use your
> approach. Or just walk the sg_tables row-vise on the rotate layout and
> only fill in the relevant holes for an O(rows*num_pages) complexity. I
> don't expect anyone to actually notice this little inefficient tbh ;-)
>
> In short, I don't see a problem ;-)
I just find it a bit ugly and hackish to poke in sg internals only to
avoid having get_pages/put_pages (Or call them differently if the name
bothers you the most. get_page_view/put_page_view perhaps?), even if the
lifetime of that temporary sg_table is limited to VMA creation (as it in
fact was in my patch).
So I suppose while you see a vtable as a "serious overkill", I saw it as
a way to avoid messing around in sg internals and reuse existing code.
Or in other words:
if (ggtt_view->type == NORMAL)
pages = get_normal();
else if(ggtt_view->type == X1)
pages = get_x1();
else if(ggtt_view->type == X2)
pages = get_x2();
etc.. rather than simply:
if (ggtt_view->get_page_view)
pages = ggtt_view->get_page_view)
else
pages = obj->pages;
And be done with it. But of course my chances or merging this are slim
unless I satisfy your taste so please let me know if your stance here is
still "unshaken".
Also on the question of getting rid of one of VMA id and ggtt_view type,
how exactly did you envisage that? Simply to imply that the only users
of multiple VMAs are the GGTT views?
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-11-04 11:15 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-30 16:39 [RFC 0/5] Preparation for multiple VMA and GGTT views per GEM object Tvrtko Ursulin
2014-10-30 16:39 ` [PATCH 1/5] drm/i915: Move flags describing VMA mappings into the VMA Tvrtko Ursulin
2014-10-30 16:39 ` [RFC 2/5] drm/i915: Prepare for the idea there can be multiple VMA per VM Tvrtko Ursulin
2014-10-30 16:39 ` [RFC 3/5] drm/i915: Infrastructure for supporting different GGTT views per object Tvrtko Ursulin
2014-10-30 16:41 ` Chris Wilson
2014-10-30 16:55 ` Tvrtko Ursulin
2014-11-03 15:58 ` Daniel Vetter
2014-11-03 16:34 ` Tvrtko Ursulin
2014-11-03 16:52 ` Daniel Vetter
2014-11-03 17:20 ` Tvrtko Ursulin
2014-11-03 17:29 ` Daniel Vetter
2014-11-04 11:15 ` Tvrtko Ursulin [this message]
2014-11-04 11:23 ` Daniel Vetter
2014-11-03 17:35 ` Daniel Vetter
2014-11-04 10:25 ` Tvrtko Ursulin
2014-10-30 16:39 ` [PATCH 4/5] drm/i915: Make scatter-gather helper available to the driver Tvrtko Ursulin
2014-11-03 16:02 ` Daniel Vetter
2014-11-03 16:18 ` Tvrtko Ursulin
2014-11-03 16:53 ` Daniel Vetter
2014-11-03 16:05 ` Daniel Vetter
2014-11-03 20:30 ` Chris Wilson
2014-11-04 11:56 ` Imre Deak
2014-10-30 16:39 ` [RFC 5/5] drm/i915: Make intel_pin_and_fence_fb_obj take plane and framebuffer Tvrtko Ursulin
2014-11-03 16:18 ` Daniel Vetter
2014-11-06 14:39 ` [RFC] drm/i915: Infrastructure for supporting different GGTT views per object Tvrtko Ursulin
2014-11-12 17:02 ` Daniel Vetter
2014-11-24 12:32 ` Tvrtko Ursulin
2014-11-24 12:36 ` Chris Wilson
2014-11-24 13:57 ` Daniel Vetter
2014-11-27 14:52 ` [PATCH] " Tvrtko Ursulin
2014-11-28 0:59 ` [PATCH] drm/i915: Infrastructure for supporting shuang.he
2014-11-28 17:31 ` [PATCH] drm/i915: Infrastructure for supporting different GGTT views per object Daniel Vetter
2014-12-01 11:32 ` Tvrtko Ursulin
2014-12-01 14:46 ` Tvrtko Ursulin
2014-12-01 16:01 ` Daniel Vetter
2014-12-01 16:39 ` Tvrtko Ursulin
2014-12-01 17:16 ` Daniel Vetter
2014-12-01 17:24 ` Tvrtko Ursulin
2014-12-01 16:07 ` Daniel Vetter
2014-12-01 16:34 ` Tvrtko Ursulin
2014-12-01 17:19 ` Daniel Vetter
2014-12-01 17:50 ` Tvrtko Ursulin
2014-12-02 9:12 ` 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=5458B544.6050606@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=Intel-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.