igt-dev.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Kazlauskas, Nicholas" <Nicholas.Kazlauskas@amd.com>
Cc: "igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>,
	Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
Subject: Re: [igt-dev] [PATCH i-g-t 01/25] lib/igt_kms: Fill the plane format/mod information for pre-blobifier drivers
Date: Tue, 27 Nov 2018 23:20:00 +0200	[thread overview]
Message-ID: <20181127212000.GE9144@intel.com> (raw)
In-Reply-To: <dd14c7f3-e561-c9be-96ee-dc626a067e05@amd.com>

On Tue, Nov 27, 2018 at 08:30:39PM +0000, Kazlauskas, Nicholas wrote:
> On 9/21/18 5:39 PM, Paulo Zanoni wrote:
> > Em Sex, 2018-09-21 às 16:26 +0300, Ville Syrjälä escreveu:
> >> On Thu, Sep 20, 2018 at 01:26:42PM -0700, Paulo Zanoni wrote:
> >>> Em Qui, 2018-07-19 às 18:03 +0300, Ville Syrjala escreveu:
> >>>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>>>
> >>>> For drivers that don't support the IN_FORMATS blob we should just
> >>>> consult the format list returned by getplane. Since we can't know
> >>>> which modifiers are supported we'll assume linear-only. Obviously
> >>>> that may not work for every driver out there, but not much more
> >>>> we can do unless we start to actually probing with addfb.
> >>>
> >>> Can you please elaborate on why we need that change? What exactly
> >>> do we
> >>> gain from it?
> >>
> >> We gain the ability to write tests without worrying about IN_FORMATS
> >> everywhere.
> >>
> >>> IMHO there's always the worry that this could be misused
> >>> in the future, restricting tests to linear only when other formats
> >>> are
> >>> indeed possible. Having NULL buffers crashing the test is a good
> >>> way to
> >>> prevent misuse.
> >>
> >> I don't know what kind of misuse you're thinking of. Actually not
> >> sure what misuse in this context would mean really.
> > 
> > 
> > Thinking that everything is linear only when in fact other formats are
> > actually supported.
> > 
> > 
> >>
> >>>
> >>> What if we populate plane->formats like we do here but leave plane-
> >>>> modifiers NULL? It would allow other pieces of the code to rely
> >>>> on the
> >>>
> >>> format list while not exposing the risk of the "linear only"
> >>> incorrect
> >>> restriction.
> >>
> >> So every test would have to check for !modifiers and come up with
> >> some kind of fallback mechanism?
> > 
> > Yes, if IN_FORMATS is not present you have to fallback to the old "try
> > it until you don't get an EINVAL". Isn't this the old protocol?
> > 
> > 
> >>   What would such a fallback mechanism
> >> even be other than "let's assume linear"?
> > 
> > The same mechanism we used before we created IN_FORMATS.
> > 
> > 
> >>   I see no reason to inflict
> >> that pain on every test that just wants to know "is this format
> >> supported?".
> > 
> > The way I see, not populating a wrong table helps the test more than
> > setting a table with data that may not reflect reality.
> > 
> >>
> >> Also any driver that advertizes formats that don't support linear
> >> and doesn't expose IN_FORMATS clearly doesn't care about supporting
> >> driver/hw agnostic userspace, so having some tests fail for them
> >> seems perfectly reasonable to me.
> > 
> > So older i915 didn't care about supporting driver/hw agnostic user
> > space?
> > 
> >>
> >>>
> >>> That said, the patch is correct in the sense that it does what it
> >>> proposes to do.
> >>>
> >>>>
> >>>> Cc: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
> >>>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> This patch allows for the igt_plane_has_format_mod and 
> igt_display_has_format_mod helpers to be used on drivers that don't 
> support IN_FORMATS (amdgpu being an example).
> 
> The helpers are really useful for fixing up IGT tests that run and fail 
> on hardware that isn't i915 but use i915 tiling modifiers. This allows 
> helps remove a lot of the genid checks to see if y/yf tiling is supported.
> 
> Without this patch the supported modifier list for these helpers is 
> empty so everything ends up skipping.
> 
> I've tested this patch with amdgpu along with the helpers and it works well.
> 
> Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>

Thanks. Pushed.

> 
> >>>> ---
> >>>>   lib/igt_kms.c | 22 +++++++++++++++++++++-
> >>>>   1 file changed, 21 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> >>>> index 476a786233c0..5641d8c1cf7c 100644
> >>>> --- a/lib/igt_kms.c
> >>>> +++ b/lib/igt_kms.c
> >>>> @@ -4068,8 +4068,28 @@ static void
> >>>> igt_fill_plane_format_mod(igt_display_t *display, igt_plane_t
> >>>> *plane
> >>>>   	int idx = 0;
> >>>>   	int count;
> >>>>   
> >>>> -	if (!igt_plane_has_prop(plane, IGT_PLANE_IN_FORMATS))
> >>>> +	if (!igt_plane_has_prop(plane, IGT_PLANE_IN_FORMATS)) {
> >>>> +		drmModePlanePtr p = plane->drm_plane;
> >>>> +
> >>>> +		count = p->count_formats;
> >>>> +
> >>>> +		plane->format_mod_count = count;
> >>>> +		plane->formats = calloc(count, sizeof(plane-
> >>>>> formats[0]));
> >>>>
> >>>> +		igt_assert(plane->formats);
> >>>> +		plane->modifiers = calloc(count, sizeof(plane-
> >>>>> modifiers[0]));
> >>>>
> >>>> +		igt_assert(plane->modifiers);
> >>>> +
> >>>> +		/*
> >>>> +		 * We don't know which modifiers are
> >>>> +		 * supported, so we'll assume linear only.
> >>>> +		 */
> >>>> +		for (int i = 0; i < count; i++) {
> >>>> +			plane->formats[i] = p->formats[i];
> >>>> +			plane->modifiers[i] =
> >>>> DRM_FORMAT_MOD_LINEAR;
> >>>> +		}
> >>>> +
> >>>>   		return;
> >>>> +	}
> >>>>   
> >>>>   	blob_id = igt_plane_get_prop(plane,
> >>>> IGT_PLANE_IN_FORMATS);
> >>>>   
> >>
> >>
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
> > 
> 

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

      reply	other threads:[~2018-11-27 21:20 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-19 15:03 [igt-dev] [PATCH i-g-t 01/25] lib/igt_kms: Fill the plane format/mod information for pre-blobifier drivers Ville Syrjala
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 02/25] tests/kms_ccs: Use igt_plane_has_format_mod() Ville Syrjala
2018-09-20 20:56   ` Paulo Zanoni
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 03/25] tests/kms_plane: Add validate-in-formats subtest Ville Syrjala
2018-09-20 21:10   ` Paulo Zanoni
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 04/25] tests/kms_addfb_basic: Check that addfb2 accepts/rejects the expected formats Ville Syrjala
2018-09-20 23:36   ` Paulo Zanoni
2018-09-21 13:37     ` Ville Syrjälä
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 05/25] tests/gem_render_copy: Fix clipped height Ville Syrjala
2018-08-24  3:17   ` Dhinakaran Pandiyan
2018-08-28 14:21     ` Ville Syrjälä
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 06/25] lib/igt_fb: Respect the users choice of stride Ville Syrjala
2018-09-21  0:04   ` Paulo Zanoni
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 07/25] lib: Add DIV_ROUND_UP() Ville Syrjala
2018-09-18 21:17   ` Paulo Zanoni
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 08/25] lib/igt_fb: Use fb_blit_upload as the base class for fb_convert_blit_upload Ville Syrjala
2018-09-21  0:15   ` Paulo Zanoni
2018-07-19 15:03 ` [igt-dev] [PATCH i-g-t 09/25] lib/igt_fb: Pass fb_blit_upload to free_linear_mapping() Ville Syrjala
2018-09-21  0:20   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 10/25] lib/igt_fb: s/planar_foo/fb_plane_foo/ Ville Syrjala
2018-09-21 21:58   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 11/25] lib/igt_fb: Add fb_plane_bpp() Ville Syrjala
2018-09-21 22:02   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 12/25] lib/igt_fb: Add fb_num_planes() Ville Syrjala
2018-09-21 22:05   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 13/25] lib/igt_fb: Extract calc_plane_stride() Ville Syrjala
2018-09-21 22:33   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 14/25] lib/igt_fb: Consolidate fb size calculation to one function Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 15/25] lib/kms: Pass strides[] to __kms_addfb Ville Syrjala
2018-09-21 22:45   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 16/25] lib/kms: Pass the number of planes explicitly to __kms_addfb() Ville Syrjala
2018-09-21 22:54   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 17/25] lib/igt_fb: Remove the hand rolled addfb2 Ville Syrjala
2018-09-21 23:15   ` Paulo Zanoni
2018-10-03 10:56     ` Petri Latvala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 18/25] lib/igt_fb: Constify format_desc_struct Ville Syrjala
2018-09-21 23:20   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 19/25] lib/igt_fb: Pass around igt_fb internally Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 20/25] lib/igt_fb: Refactor blitter usage Ville Syrjala
2018-09-21 23:48   ` Paulo Zanoni
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 21/25] lib/igt_fb: Don't use blitter for large buffers Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 22/25] lib/rendercopy: Add support for Yf/Ys tiling to gen9 rendercopy Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 23/25] tests/gem_render_copy: Test Yf tiling Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 24/25] lib/igt_fb: Use rendercopy for rendering into compressed buffers Ville Syrjala
2018-07-19 15:04 ` [igt-dev] [PATCH i-g-t 25/25] tests/kms_plane: Test all modifiers as well Ville Syrjala
2018-07-19 15:26 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/25] lib/igt_kms: Fill the plane format/mod information for pre-blobifier drivers Patchwork
2018-07-19 17:40 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-09-20 20:26 ` [igt-dev] [PATCH i-g-t 01/25] " Paulo Zanoni
2018-09-21 13:26   ` Ville Syrjälä
2018-09-21 21:39     ` Paulo Zanoni
2018-11-27 20:30       ` Kazlauskas, Nicholas
2018-11-27 21:20         ` Ville Syrjälä [this message]

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=20181127212000.GE9144@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=Nicholas.Kazlauskas@amd.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=ulrich.hecht+renesas@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).