All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
To: Katarzyna Dec <katarzyna.dec@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [PATCH i-g-t 17/20] tests/psr: Prepare for using timestamps.
Date: Thu, 12 Apr 2018 17:21:58 -0700	[thread overview]
Message-ID: <1523578918.2453.11.camel@dk-H97M-D3H> (raw)
In-Reply-To: <20180412125048.GH20211@kdec5-desk.ger.corp.intel.com>




On Thu, 2018-04-12 at 14:50 +0200, Katarzyna Dec wrote:
> On Tue, Apr 10, 2018 at 07:37:29PM -0700, Dhinakaran Pandiyan wrote:
> > Wrap some functions, move condition checks etc to make it easy to add
> > timestamp support.
> 
> Could you please add more details here? What and why has to be changed?
> 
> > 
> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > ---
> >  tests/kms_psr_sink_crc.c | 86 +++++++++++++++++++++++++++++++-----------------
> >  1 file changed, 55 insertions(+), 31 deletions(-)
> > 
> > diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
> > index 3e06e14e..043b9e38 100644
> > --- a/tests/kms_psr_sink_crc.c
> > +++ b/tests/kms_psr_sink_crc.c
> > @@ -223,11 +223,8 @@ static bool wait_psr_entry(data_t *data)
> >  	return false;
> >  }
> >  
> > -static void get_sink_crc(data_t *data, char *crc)
> > +static void __get_sink_crc(data_t *data, char *crc)
> >  {
> > -	if (igt_interactive_debug)
> > -		return;
> > -
> >  	igt_require_f(igt_sysfs_read(data->debugfs_fd, "i915_sink_crc_eDP1",
> >  				     crc, CRC_LEN) == CRC_LEN,
> >  		      "Sink CRC is unreliable on this machine. Try manual debug with --interactive-debug=no-crc\n");
> > @@ -237,22 +234,53 @@ static void get_sink_crc(data_t *data, char *crc)
> >  	igt_assert(strncmp(crc, CRC_BLACK, CRC_LEN));
> >  }
> During reviewing this patch I started to wonder what get_sinc_crc
> does indeed. Could you explain it to me, please? Or point some docs
> with information?
> 

The DP sink (eDP panel) calculates CRC for the frame it receives;
get_sink_crc() uses a debugfs interface to get this value. The idea is
to check if the frame that the sink is displaying is what we expect. PSR
allows the sink to self-refresh from it's own buffer when screen
contents have not changed. The tests are written to make sure when the
source wants to update the frame, the sink switches to using the frame
from the source and not self-refresh from it's own buffer.


> Kasia
> >  
> > -static bool is_green(char *crc)
> > +static bool __is_green(data_t *data, char *out_crc)
> >  {
> >  	const char *mask = "0000FFFF0000";
> > -	uint32_t *p = (uint32_t *)crc, *mask_p = (uint32_t *)mask;
> > -	if (igt_interactive_debug)
> > -		return false;
> > +	uint32_t *p, *mask_p = (uint32_t *)mask;
> > +	char _crc[CRC_LEN], *crc;
> > +
> > +	crc = out_crc ? out_crc : _crc;
> > +	__get_sink_crc(data, crc);
> > +	p = (uint32_t *)crc;
> >  
> >  	/* Check R and B components are 0 and G is non-zero */
> > -	return *p == *mask_p && *(p + 2) == *(mask_p + 2) &&
> > -	       (*(p + 1) & *(mask_p + 1)) != 0;
> > +	return *p == *mask_p &&
> > +	       *(p + 2) == *(mask_p + 2) &&
> > +	       *(p + 1) & *(mask_p + 1);
> >  }
> >  
> > -static void assert_or_manual(bool condition, const char *expected)
> > +static void is_green_crc(data_t *data, char *out_crc)
> >  {
> > -	igt_debug_manual_check("no-crc", expected);
> > -	igt_assert(igt_interactive_debug || condition);
> > +	if (!data->with_sink_crc)
> > +		return;
> > +
> > +	igt_assert(__is_green(data, out_crc));
> > +}
> > +
> > +static void is_not_green_crc(data_t *data, char *out_crc)
> > +{
> > +	if (!data->with_sink_crc)
> > +		return;
> > +
> > +	igt_fail_on(__is_green(data, out_crc));
> > +}
> > +
> > +static void is_not_equal_crc(data_t *data, const char *ref_crc)
> > +{
> > +	char crc[CRC_LEN];
> > +
> > +	if (!data->with_sink_crc)
> > +		return;
> > +
> > +	__get_sink_crc(data, crc);
> > +	igt_assert_f(strncmp(ref_crc, crc, CRC_LEN), "screen update failed\n");
> > +}
> > +
> > +static void manual(const char *expected)
> > +{
> > +	if (igt_interactive_debug)
> > +		igt_debug_manual_check("no-crc", expected);
> >  }
> >  
> >  static bool drrs_disabled(data_t *data)
> > @@ -270,21 +298,20 @@ static void run_test(data_t *data)
> >  	igt_plane_t *test_plane = data->test_plane;
> >  	void *ptr;
> >  	char ref_crc[CRC_LEN];
> > -	char crc[CRC_LEN];
> >  	const char *expected = "";
> >  
> > -	if (!igt_interactive_debug)
> > -		igt_require_f(data->with_sink_crc,
> > -			      "Enable sink CRC with --sink-crc\n");
> > +	igt_require_f(igt_interactive_debug || data->with_sink_crc,
> > +		      "Enable interactive debug with --interactive-debug or "
> > +		      "enable sink crc with --sink-crc\n");
> >  
> >  	/* Confirm that screen became Green */
> > -	get_sink_crc(data, ref_crc);
> > -	assert_or_manual(is_green(ref_crc), "screen GREEN");
> > +	manual("screen GREEN");
> > +	is_green_crc(data, NULL);
> >  
> >  	/* Confirm screen stays Green after PSR got active */
> >  	igt_assert(wait_psr_entry(data));
> > -	get_sink_crc(data, ref_crc);
> > -	assert_or_manual(is_green(ref_crc), "screen GREEN");
> > +	manual("screen GREEN");
> > +	is_green_crc(data, NULL);
> >  
> >  	/* Setting a secondary fb/plane */
> >  	igt_plane_set_fb(test_plane, &data->fb_white);
> > @@ -292,20 +319,17 @@ static void run_test(data_t *data)
> >  
> >  	/* Confirm it is not Green anymore */
> >  	igt_assert(wait_psr_entry(data));
> > -	get_sink_crc(data, ref_crc);
> > -	if (test_plane->type == DRM_PLANE_TYPE_PRIMARY)
> > -		assert_or_manual(!is_green(ref_crc), "screen WHITE");
> > -	else
> > -		assert_or_manual(!is_green(ref_crc), "GREEN background with WHITE box");
> > +	manual(test_plane->type == DRM_PLANE_TYPE_PRIMARY ?
> > +	       "screen WHITE" : "WHITE box on GREEN");
> > +	is_not_green_crc(data, ref_crc);
> >  
> >  	switch (data->op) {
> >  	case PAGE_FLIP:
> >  		/* Only in use when testing primary plane */
> >  		igt_assert(drmModePageFlip(data->drm_fd, data->crtc_id,
> >  					   data->fb_green.fb_id, 0, NULL) == 0);
> > -		get_sink_crc(data, crc);
> > -		assert_or_manual(is_green(crc), "screen GREEN");
> > -		expected = "still GREEN";
> > +		is_green_crc(data, NULL);
> > +		expected = "screen GREEN";
> >  		break;
> >  	case MMAP_GTT:
> >  		ptr = gem_mmap__gtt(data->drm_fd, handle, data->mod_size,
> > @@ -347,8 +371,8 @@ static void run_test(data_t *data)
> >  		expected = "screen GREEN";
> >  		break;
> >  	}
> > -	get_sink_crc(data, crc);
> > -	assert_or_manual(strncmp(ref_crc, crc, CRC_LEN) != 0, expected);
> > +	manual(expected);
> > +	is_not_equal_crc(data, ref_crc);
> >  }
> >  
> >  static void test_cleanup(data_t *data) {
> > -- 
> > 2.14.1
> > 
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2018-04-12 23:57 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-11  2:37 [igt-dev] [PATCH i-g-t 01/20] tests/psr: Print the reason for skipping when sink lacks PSR support Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 02/20] tests/psr: Remove "psr_" prefix from basic and drrs subtests Dhinakaran Pandiyan
2018-04-13 10:57   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 03/20] tests/psr: Rename psr_active() to psr_enabled() Dhinakaran Pandiyan
2018-04-13 10:58   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 04/20] tests/psr: Store the debugfs file descriptor Dhinakaran Pandiyan
2018-04-13 10:58   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 05/20] tests/psr: Assert sink CRC length and make use of igt_sysfs_read() Dhinakaran Pandiyan
2018-04-13 10:59   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 06/20] tests/psr: Optimize check for green frame Dhinakaran Pandiyan
2018-04-13 10:59   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 07/20] tests/psr: Kill MMAP_GTT_WAITING Dhinakaran Pandiyan
2018-04-12 11:11   ` Katarzyna Dec
2018-04-16 21:44     ` Pandiyan, Dhinakaran
2018-04-23 23:01       ` Rodrigo Vivi
2018-04-16 22:08     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 08/20] tests/psr: Merge PSR dpms and suspend variants Dhinakaran Pandiyan
2018-04-12 11:20   ` Katarzyna Dec
2018-04-16 21:46     ` Pandiyan, Dhinakaran
2018-04-17  7:58       ` Katarzyna Dec
2018-04-23 23:03       ` Rodrigo Vivi
2018-04-16 22:10     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 09/20] tests/psr: Check for PSR entry more often and only for a second Dhinakaran Pandiyan
2018-04-12 11:25   ` Katarzyna Dec
2018-04-16 22:43     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 10/20] tests/psr: Remove delay between dpms toggle Dhinakaran Pandiyan
2018-04-12 11:26   ` Katarzyna Dec
2018-04-13  0:24     ` Dhinakaran Pandiyan
2018-04-13 11:05       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 11/20] tests/psr: Check for drrs status only after checking for PSR Dhinakaran Pandiyan
2018-04-13 11:21   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 12/20] tests/sink_crc_basic: Debug print CRC values Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 13/20] tests/psr: Get rid of global variable running_with_psr_disabled Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 14/20] tests/psr: Make testing with sink CRC non-default Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 15/20] tests/psr: Eliminate storing pointers for igt_plane_type Dhinakaran Pandiyan
2018-04-13 11:23   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 16/20] tests/psr: Pass data_t pointer to dpms_off_on Dhinakaran Pandiyan
2018-04-13 11:23   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 17/20] tests/psr: Prepare for using timestamps Dhinakaran Pandiyan
2018-04-12 12:50   ` Katarzyna Dec
2018-04-13  0:21     ` Dhinakaran Pandiyan [this message]
2018-04-13 11:33       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 18/20] tests/psr: Check for timestamp support Dhinakaran Pandiyan
2018-04-12 12:52   ` Katarzyna Dec
2018-04-13  0:13     ` Dhinakaran Pandiyan
2018-04-13  0:13       ` Dhinakaran Pandiyan
2018-04-13 11:34       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 19/20] tests/psr: Test PSR using interrupt timestamps Dhinakaran Pandiyan
2018-04-12 12:56   ` Katarzyna Dec
2018-04-16 22:49     ` [igt-dev] [PATCH i-g-t v2] " Dhinakaran Pandiyan
2018-04-17 12:53       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 20/20] tests/psr: Add more PSR subtests to fast feedback list Dhinakaran Pandiyan
2018-04-11  8:42   ` Petri Latvala
2018-04-11 16:14     ` Pandiyan, Dhinakaran
2018-04-13  9:16       ` Petri Latvala
2018-04-15  1:13         ` Dhinakaran Pandiyan
2018-04-23 23:06           ` Rodrigo Vivi
2018-04-23 23:58             ` Dhinakaran Pandiyan
2018-04-24  9:34               ` Petri Latvala
2018-04-24 15:32                 ` Saarinen, Jani
2018-04-24 17:48                   ` Dhinakaran Pandiyan
2018-04-24 21:28                     ` Rodrigo Vivi
2018-04-25  8:34                       ` Petri Latvala
2018-04-25 17:56                         ` Pandiyan, Dhinakaran
2018-04-25 20:15                           ` Rodrigo Vivi
2018-04-11  3:07 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/20] tests/psr: Print the reason for skipping when sink lacks PSR support Patchwork
2018-04-11  3:53 ` [igt-dev] ✗ Fi.CI.IGT: warning " Patchwork
2018-04-12 11:08 ` [igt-dev] [PATCH i-g-t 01/20] " Katarzyna Dec
2018-04-12 13:03 ` Katarzyna Dec
2018-04-13 10:57 ` Katarzyna Dec
2018-04-16 23:10 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t,01/20] tests/psr: Print the reason for skipping when sink lacks PSR support (rev2) Patchwork
2018-04-25 21:00 ` Patchwork
2018-04-26  8:40   ` Petri Latvala
2018-05-09 23:41     ` Dhinakaran Pandiyan
2018-04-26  9:58 ` 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=1523578918.2453.11.camel@dk-H97M-D3H \
    --to=dhinakaran.pandiyan@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=katarzyna.dec@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 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.