public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Lionel Landwerlin <llandwerlin@gmail.com>
To: Mayuresh Gharpure <mayuresh.s.gharpure@intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Pratik Vishwakarma <pratik.vishwakarma@intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH i-g-t v7] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2()
Date: Wed, 09 Mar 2016 16:14:34 +0000	[thread overview]
Message-ID: <1457540074.19252.18.camel@gmail.com> (raw)
In-Reply-To: <56E03257.8080608@intel.com>

Thanks,

It seems the igt_atomic_prepare_plane_commit() function still needs to
reset the plane->rotation_changed field (it was at the bottom of my
previous email, sorry for that).

The way supported property ids are listed from the driver isn't
different in the atomic and non atomic cases.
The igt_atomic_fill_props and igt_atomic_fill_plane_props functions are
not atomic specific.
What I was suggesting is to have a unified way of listing the
properties regardless of whether we're committing things atomically or
not and just have the commit function do a special case for atomic.

That way it becomes easier to add new properties.


-
Lionel

On Wed, 2016-03-09 at 19:55 +0530, Mayuresh Gharpure wrote:
> Hi Lionel,
> 
> I've incorporated your comments using the diff patch submitted by
> Maarten and submitted the changes
> 
> https://patchwork.freedesktop.org/series/4274/ 
> 
> Also, please find my comments inline
> 
> Regards,
> Mayuresh
> 
> On 3/8/2016 9:41 PM, Lionel Landwerlin wrote:
> > Hi Maarten, 
> > 
> > Yeah that would be much simpler I think.
> > 
> > Damien also looked at this patch over my shoulder and had
> > additional comments.
> > So more or less proxying :
> > 
> > - Not sure why we're exposing the new enums and the
> > igt_atomic_popuplate_* macros in igt_kms.h.
> >   After all we're not using them anywhere outside igt_kms.c.
>  Macros are just to improve readability. In case some new feature
> needs to be added, we can just add an enum and use the macro to
> populate it in call to IOCTL.
> These were added in initial implementation by Marius. 
> 
> > 
> > - We have a couple of properties ids stored in igt_kms.h
> > (background_property & rotation_property), it would make sense to
> > get rid of those and use the new created arrays instead.
>  These are used by the COMMIT_LEGACY and COMMIT_UNIVERSAL style
> calls. So keeping it as is, as changing this may need a change in
> many existing tests
> > 
> > Cheers,
> > 
> > -
> > Lionel 
> > 
> > On 08/03/16 15:56, Maarten Lankhorst wrote:
> > > Op 07-03-16 om 13:50 schreef Lionel Landwerlin:
> > > > Hi Pratik,
> > > > 
> > > > I'm really looking forward to get this merged.
> > > > Just a few comments on the plane commit part below.
> > > Would the following diff to the patch satisfy you? It would clean
> > > up things a lot.
> > > 
> > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> > > index 1f738e14f52f..454ff7552b4a 100644
> > > --- a/lib/igt_kms.c
> > > +++ b/lib/igt_kms.c
> > > @@ -1534,14 +1534,6 @@
> > > igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_output_t
> > > *output,
> > >  
> > >  	igt_display_t *display = output->display;
> > >  	uint32_t fb_id, crtc_id;
> > > -	uint32_t src_x;
> > > -	uint32_t src_y;
> > > -	uint32_t src_w;
> > > -	uint32_t src_h;
> > > -	int32_t crtc_x;
> > > -	int32_t crtc_y;
> > > -	uint32_t crtc_w;
> > > -	uint32_t crtc_h;
> > >  
> > >  	igt_assert(plane->drm_plane);
> > >  
> > > @@ -1552,54 +1544,30 @@
> > > igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_output_t
> > > *output,
> > >  	fb_id = igt_plane_get_fb_id(plane);
> > >  	crtc_id = output->config.crtc->crtc_id;
> > >  
> > > -	if ((plane->fb_changed || plane->size_changed) && fb_id
> > > == 0) {
> > > -
> > > -		LOG(display,
> > > -		    "%s: populating plane data: pipe %s, plane
> > > %d, disabling\n",
> > > -		     igt_output_name(output),
> > > -		     kmstest_pipe_name(output->config.pipe),
> > > -		     plane->index);
> > > -
> > > -		/* populate plane req */
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_ID, 0);
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_FB_ID, 0);
> > > -
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_X, IGT_FIXED(0, 0));
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_Y, IGT_FIXED(0, 0));
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_W, IGT_FIXED(0, 0));
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_H, IGT_FIXED(0, 0));
> > > -
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_X, 0);
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_Y, 0);
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_W, 0);
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_H, 0);
> > > -
> > > -	} else if (plane->fb_changed || plane->position_changed
> > > ||
> > > -			plane->size_changed) {
> > > -
> > > -		src_x = IGT_FIXED(plane->fb->src_x, 0); /* src_x
> > > */
> > > -		src_y = IGT_FIXED(plane->fb->src_y, 0); /* src_y
> > > */
> > > -		src_w = IGT_FIXED(plane->fb->src_w, 0); /* src_w
> > > */
> > > -		src_h = IGT_FIXED(plane->fb->src_h, 0); /* src_h
> > > */
> > > -		crtc_x = plane->crtc_x;
> > > -		crtc_y = plane->crtc_y;
> > > -		crtc_w = plane->crtc_w;
> > > -		crtc_h = plane->crtc_h;
> > > -
> > > -		LOG(display,
> > > -		    "%s: populating plane data: %s.%d, fb %u,
> > > src = (%d, %d) "
> > > -		    "%ux%u dst = (%u, %u) %ux%u\n",
> > > -		    igt_output_name(output),
> > > -		    kmstest_pipe_name(output->config.pipe),
> > > -		    plane->index,
> > > -		    fb_id,
> > > -		    src_x >> 16, src_y >> 16, src_w >> 16, src_h
> > > >> 16,
> > > -		    crtc_x, crtc_y, crtc_w, crtc_h);
> > > -
> > > -
> > > -		/* populate plane req */
> > > -		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_ID, crtc_id);
> > > +	LOG(display,
> > > +	    "%s: populating plane data: %s.%d, fb %u, src = (%d,
> > > %d) "
> > > +	    "%ux%u dst = (%u, %u) %ux%u\n",
> > > +	    igt_output_name(output),
> > > +	    kmstest_pipe_name(output->config.pipe),
> > > +	    plane->index,
> > > +	    fb_id,
> > > +	    src_x >> 16, src_y >> 16, src_w >> 16, src_h >> 16,
> > > +	    crtc_x, crtc_y, crtc_w, crtc_h);
> > > +
> > > +	if (plane->fb_changed) {
> > > +		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_ID, fb_id ? crtc_id : 0);
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_FB_ID, fb_id);
> > > +	}
> > > +
> > > +	if (plane->position_changed || plane->size_changed) {
> > > +		uint32_t src_x = IGT_FIXED(plane->fb->src_x, 0);
> > > /* src_x */
> > > +		uint32_t src_y = IGT_FIXED(plane->fb->src_y, 0);
> > > /* src_y */
> > > +		uint32_t src_w = IGT_FIXED(plane->fb->src_w, 0);
> > > /* src_w */
> > > +		uint32_t src_h = IGT_FIXED(plane->fb->src_h, 0);
> > > /* src_h */
> > > +		int32_t crtc_x = plane->crtc_x;
> > > +		int32_t crtc_y = plane->crtc_y;
> > > +		uint32_t crtc_w = plane->crtc_w;
> > > +		uint32_t crtc_h = plane->crtc_h;
> > >  
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_X, src_x);
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_SRC_Y, src_y);
> > > @@ -1610,18 +1578,15 @@
> > > igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_output_t
> > > *output,
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_Y, crtc_y);
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_W, crtc_w);
> > >  		igt_atomic_populate_plane_req(req, plane,
> > > IGT_PLANE_CRTC_H, crtc_h);
> > > -
> > > -		if (plane->rotation_changed)
> > > -			igt_atomic_populate_plane_req(req,
> > > plane,
> > > -				IGT_PLANE_ROTATION, plane-
> > > >rotation);
> > > -
> > >  	}
> > >  
> > > +	if (plane->rotation_changed)
> > > +		igt_atomic_populate_plane_req(req, plane,
> > > +			IGT_PLANE_ROTATION, plane->rotation);
> > > +
> > >  	plane->fb_changed = false;
> > >  	plane->position_changed = false;
> > >  	plane->size_changed = false;
> >  
> > I missed that, but I think we need rotation_changed = false; here
> > too.
> > 
> > > -
> > > -	return;
> > >  }
> > >  
> > >  
> > > 
> >  
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>  
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-03-09 16:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-07 10:18 [PATCH i-g-t v7] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2() Pratik Vishwakarma
2016-03-07 12:50 ` Lionel Landwerlin
2016-03-08 15:56   ` Maarten Lankhorst
2016-03-08 16:11     ` Lionel Landwerlin
2016-03-09 14:25       ` Mayuresh Gharpure
2016-03-09 16:14         ` Lionel Landwerlin [this message]
2016-03-07 12:50 ` Lionel Landwerlin
2016-03-08 16:58 ` Matthew Auld

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=1457540074.19252.18.camel@gmail.com \
    --to=llandwerlin@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mayuresh.s.gharpure@intel.com \
    --cc=pratik.vishwakarma@intel.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