From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 15/18] drm/i915: Add a new "remapped" gtt_view
Date: Thu, 19 Jul 2018 22:55:29 +0300 [thread overview]
Message-ID: <20180719195529.GH5565@intel.com> (raw)
In-Reply-To: <153202961455.4229.9221564214586252960@skylake-alporthouse-com>
On Thu, Jul 19, 2018 at 08:46:54PM +0100, Chris Wilson wrote:
> Quoting Ville Syrjälä (2018-07-19 20:33:57)
> > On Thu, Jul 19, 2018 at 07:59:33PM +0100, Chris Wilson wrote:
> > > Quoting Ville Syrjala (2018-07-19 19:22:11)
> > > > +static struct scatterlist *
> > > > +remap_pages(const dma_addr_t *in, unsigned int offset,
> > > > + unsigned int width, unsigned int height,
> > > > + unsigned int stride,
> > > > + struct sg_table *st, struct scatterlist *sg)
> > > > +{
> > > > + unsigned int column, row;
> > > > +
> > > > + for (row = 0; row < height; row++) {
> > > > + for (column = 0; column < width; column++) {
> > > > + st->nents++;
> > > > + /* We don't need the pages, but need to initialize
> > > > + * the entries so the sg list can be happily traversed.
> > > > + * The only thing we need are DMA addresses.
> > > > + */
> > > > + sg_set_page(sg, NULL, PAGE_SIZE, 0);
> > > > + sg_dma_address(sg) = in[offset + column];
> > > > + sg_dma_len(sg) = PAGE_SIZE;
> > > > + sg = sg_next(sg);
> > >
> > > Ok. But should be I915_GTT_PAGE_SIZE?
> >
> > I suppose. And now I wonder what would happen on gen2 with its
> > 2KiB gtt pages. Probably nothing good.
>
> Pffifle. We call it 4KiB. It's just about the semantics, and here we
> should be splitting the dma addresses by GTT_PAGE_SIZE rather than
> system page size.
>
> > > > +struct intel_remapped_info {
> > > > + struct intel_remapped_plane_info {
> > > > + /* tiles */
> > > > + unsigned int width, height, stride, offset;
> > > > + } plane[2];
> > > > + unsigned int unused;
> > >
> > > Tag it as mbz, since we do use it inside the compare. Hmm, I wonder if
> > > it actually is better if it doesn't exist if it isn't used, then it
> > > should be zero.. Hmm, not sure if that's defined at all, might have to
> > > say memset and don't rely on {} zeroing?
> > >
> > > Should work fine as a memcmp key for the rbtree.
> >
> > This whole thing is a bit questionale the way I did it. When populating
> > the gtt_view I just poke at view->rotated and rely on matching layout
> > for view->remapped. To make it less magic maybe I should embed one
> > inside the other?
>
> Hmm. If it's intentionally the same layout, then we should just use the
> same struct for both. remapped/remap_info is generic enough to cover
> rotation as well.
>
> > > > +} __packed;
> > > > +
> > > > +static inline void assert_intel_remapped_info_is_packed(void)
> > > > +{
> > > > + BUILD_BUG_ON(sizeof(struct intel_remapped_info) != 10*sizeof(unsigned int));
> > > > +}
> > > > +
> > > > struct intel_rotation_info {
> > > > struct intel_rotation_plane_info {
> > > > /* tiles */
> > > > @@ -186,6 +199,7 @@ enum i915_ggtt_view_type {
> > > > I915_GGTT_VIEW_NORMAL = 0,
> > > > I915_GGTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
> > > > I915_GGTT_VIEW_PARTIAL = sizeof(struct intel_partial_info),
> > > > + I915_GGTT_VIEW_REMAPPED = sizeof(struct intel_remapped_info),
>
> Oh, forgot about that trick. Yeah, they do need to differ in structs.
>
> Hmm, so I think keep the remap_plane_info and reuse that?
>
> struct intel_remapped_info {
> struct intel_remapped_plane_info {
> /* tiles */
> unsigned int width, height, stride, offset;
> } plane[2];
> int unused_mbz;
> };
>
>
> struct intel_rotation_info {
> struct intel_remmaped_plane_info plane[2];
> };
>
> static inline void assert_intel_rotation_matches_remapped_info(void)
> {
> /* Check that rotation/remapped shares offsets for simplicity */
> BUILD_BUG_ON(offsetof(struct intel_remapped_info, plane[0]) !=
> offsetof(struct intel_rotation_info, plane[0]));
> BUILD_BUG_ON(offsetofend(struct intel_remapped_info, plane[1]) !=
> offsetofend(struct intel_rotation_info, plane[1]));
> }
Yeah, something like that could work.
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-07-19 19:55 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-19 18:21 [PATCH 00/18] drm/i915: GTT remapping for display Ville Syrjala
2018-07-19 18:21 ` [PATCH 01/18] drm/i915: Fix glk/cnl display w/a #1175 Ville Syrjala
2018-07-20 10:55 ` Imre Deak
2018-07-19 18:21 ` [PATCH 02/18] drm/i915: s/tile_offset/aligned_offset/ Ville Syrjala
2018-08-22 21:55 ` Souza, Jose
2018-07-19 18:21 ` [PATCH 03/18] drm/i915: Add .max_stride() plane hook Ville Syrjala
2018-08-22 22:03 ` Souza, Jose
2018-08-22 22:19 ` Souza, Jose
2018-08-23 14:48 ` Ville Syrjälä
2018-08-23 14:52 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 04/18] drm/i915: Use pipe A primary plane .max_stride() as the global stride limit Ville Syrjala
2018-08-22 22:22 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 05/18] drm/i915: Rename the plane_state->main/aux to plane_state->color_plane[] Ville Syrjala
2018-08-22 23:02 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 06/18] drm/i915: Store the final plane stride in plane_state Ville Syrjala
2018-07-20 11:06 ` [PATCH v2 " Ville Syrjala
2018-08-22 23:44 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 07/18] drm/i915: Store ggtt_view " Ville Syrjala
2018-08-24 20:13 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 08/18] drm/i915: s/int plane/int color_plane/ Ville Syrjala
2018-08-23 1:14 ` Rodrigo Vivi
2018-08-24 0:05 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 09/18] drm/i915: Nuke plane->can_scale/min_downscale Ville Syrjala
2018-08-24 0:32 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 10/18] drm/i915: Extract per-platform plane->check() functions Ville Syrjala
2018-08-24 1:01 ` Souza, Jose
2018-08-24 12:03 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 11/18] drm/i915: Move skl plane fb related checks into a better place Ville Syrjala
2018-08-24 19:56 ` Souza, Jose
2018-08-27 11:48 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 12/18] drm/i915: Move display w/a #1175 Ville Syrjala
2018-08-23 1:09 ` Rodrigo Vivi
2018-07-19 18:22 ` [PATCH 13/18] drm/i915: Move chv rotation checks to plane->check() Ville Syrjala
2018-08-24 20:04 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 14/18] drm/i915: Extract intel_cursor_check_surface() Ville Syrjala
2018-08-24 20:08 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 15/18] drm/i915: Add a new "remapped" gtt_view Ville Syrjala
2018-07-19 18:59 ` Chris Wilson
2018-07-19 19:33 ` Ville Syrjälä
2018-07-19 19:46 ` Chris Wilson
2018-07-19 19:55 ` Ville Syrjälä [this message]
2018-07-19 20:16 ` Ville Syrjälä
2018-07-19 20:25 ` Chris Wilson
2018-07-19 18:22 ` [PATCH 16/18] drm/i915: Overcome display engine stride limits via GTT remapping Ville Syrjala
2018-07-19 19:01 ` Chris Wilson
2018-07-19 19:20 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 17/18] drm/i915: Bump gen4+ fb stride limit to 256KiB Ville Syrjala
2018-08-24 20:49 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 18/18] drm/i915: Bump gen4+ fb size limits to 32kx32k Ville Syrjala
2018-08-24 20:49 ` Souza, Jose
2018-07-19 18:52 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: GTT remapping for display Patchwork
2018-07-19 19:00 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-07-19 19:15 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-20 0:02 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-07-20 11:15 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: GTT remapping for display (rev2) Patchwork
2018-07-20 11:23 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-07-20 11:37 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-21 14:16 ` ✓ Fi.CI.IGT: " 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=20180719195529.GH5565@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@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 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.