public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Paulo Zanoni <paulo.r.zanoni@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH i-g-t] tests/kms_frontbuffer_tracking: convert macros to functions
Date: Mon, 04 Sep 2017 15:09:10 -0300	[thread overview]
Message-ID: <1504548550.2824.5.camel@intel.com> (raw)
In-Reply-To: <20170904080019.z6b3wg2gebiwywn2@phenom.ffwll.local>

Em Seg, 2017-09-04 às 10:00 +0200, Daniel Vetter escreveu:
> On Fri, Sep 01, 2017 at 04:44:38PM -0300, Paulo Zanoni wrote:
> > Em Seg, 2017-08-14 às 11:25 +0200, Daniel Vetter escreveu:
> > > Macros that should be C functions but aren't are really hard to
> > > read and confusing. Convert them over.
> > > 
> > > v2: Clean up commit message and keep printing the line numbers
> > > (Paulo).
> > > 
> > > v3: Actually git add (silly me).
> > > 
> > > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > 
> > Thanks for doing that. Works for me this way:
> > Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> Thanks, pushed.
> 
> > But I'm still waiting for the patch that removes those bogus line
> > numbers in every error message we print :).
> 
> Hm, which bogus line numbers where?

Every igt_log message is starts with:
(kms_frontbuffer_tracking:XXXX) where XXXX is a number that means
nothing but looks like a line number, except that that line usually has
nothing to do with the message.

> -Daniel
> > 
> > > ---
> > >  tests/kms_frontbuffer_tracking.c | 171 ++++++++++++++++++++-----
> > > ----
> > > ----------
> > >  1 file changed, 89 insertions(+), 82 deletions(-)
> > > 
> > > diff --git a/tests/kms_frontbuffer_tracking.c
> > > b/tests/kms_frontbuffer_tracking.c
> > > index e03524f1c45b..a068c8afb6d8 100644
> > > --- a/tests/kms_frontbuffer_tracking.c
> > > +++ b/tests/kms_frontbuffer_tracking.c
> > > @@ -1677,88 +1677,95 @@ static int adjust_assertion_flags(const
> > > struct test_mode *t, int flags)
> > >  	return flags;
> > >  }
> > >  
> > > -#define do_crc_assertions(flags, mandatory_sink_crc) do {	
> > > 	
> > > \
> > > -	int flags__ = (flags);					
> > > 	\
> > > -	struct both_crcs crc_;					
> > > 	\
> > > -									
> > > \
> > > -	if (!opt.check_crc || (flags__ & DONT_ASSERT_CRC))	
> > > 	
> > > \
> > > -		break;						
> > > 	\
> > > -									
> > > \
> > > -	collect_crcs(&crc_, mandatory_sink_crc);			
> > > \
> > > -	print_crc("Calculated CRC:", &crc_);			
> > > 	
> > > \
> > > -									
> > > \
> > > -	igt_assert(wanted_crc);					
> > > 	\
> > > -	igt_assert_crc_equal(&crc_.pipe, &wanted_crc->pipe);	
> > > 	
> > > \
> > > -	if (mandatory_sink_crc)					
> > > 	\
> > > -		assert_sink_crc_equal(&crc_.sink, &wanted_crc-
> > > > sink);	\
> > > 
> > > -	else if (sink_crc.reliable &&				
> > > 	\
> > > -		 !sink_crc_equal(&crc_.sink, &wanted_crc->sink))
> > > 	
> > > \
> > > -		igt_info("Sink CRC differ, but not
> > > required\n"); 	
> > > \
> > > -} while (0)
> > > -
> > > -#define do_status_assertions(flags_) do {			
> > > 	
> > > \
> > > -	if (!opt.check_status) {					
> > > \
> > > -		/* Make sure we settle before continuing. */	
> > > 	
> > > \
> > > -		sleep(1);					
> > > 	
> > > \
> > > -		break;						
> > > 	\
> > > -	}							
> > > 	
> > > \
> > > -									
> > > \
> > > -	if (flags_ & ASSERT_FBC_ENABLED) {			
> > > 	
> > > \
> > > -		igt_require(!fbc_not_enough_stolen());		
> > > 	\
> > > -		igt_require(!fbc_stride_not_supported());	
> > > 	
> > > \
> > > -		if (!fbc_wait_until_enabled()) {			
> > > \
> > > -			fbc_print_status();			
> > > 	
> > > \
> > > -			igt_assert_f(false, "FBC disabled\n");	
> > > 	\
> > > -		}						
> > > 	
> > > \
> > > -									
> > > \
> > > -		if (opt.fbc_check_compression)			
> > > 	\
> > > -			igt_assert(fbc_wait_for_compression());	
> > > 	\
> > > -	} else if (flags_ & ASSERT_FBC_DISABLED) {		
> > > 	
> > > \
> > > -		igt_assert(!fbc_wait_until_enabled());		
> > > 	\
> > > -	}							
> > > 	
> > > \
> > > -									
> > > \
> > > -	if (flags_ & ASSERT_PSR_ENABLED) {			
> > > 	
> > > \
> > > -		if (!psr_wait_until_enabled()) {			
> > > \
> > > -			psr_print_status();			
> > > 	
> > > \
> > > -			igt_assert_f(false, "PSR disabled\n");	
> > > 	\
> > > -		}						
> > > 	
> > > \
> > > -	} else if (flags_ & ASSERT_PSR_DISABLED) {		
> > > 	
> > > \
> > > -		igt_assert(!psr_wait_until_enabled());		
> > > 	\
> > > -	}							
> > > 	
> > > \
> > > -} while (0)
> > > -
> > > -#define do_assertions(flags) do {				
> > > 	
> > > \
> > > -	int flags_ = adjust_assertion_flags(t, (flags));		
> > > \
> > > -	bool mandatory_sink_crc = t->feature & FEATURE_PSR;	
> > > 	
> > > \
> > > -									
> > > \
> > > -	wait_user(2, "Paused before assertions.");		
> > > 	
> > > \
> > > -									
> > > \
> > > -	/* Check the CRC to make sure the drawing operations
> > > work	
> > > \
> > > -	 * immediately, independently of the features being
> > > enabled.
> > > */	\
> > > -	do_crc_assertions(flags_, mandatory_sink_crc);		
> > > 	\
> > > -									
> > > \
> > > -	/* Now we can flush things to make the test faster. */	
> > > 	\
> > > -	do_flush(t);						
> > > 	
> > > \
> > > -									
> > > \
> > > -	do_status_assertions(flags_);				
> > > 	\
> > > -									
> > > \
> > > -	/* Check CRC again to make sure the compressed screen is
> > > ok,
> > > 	\
> > > -	 * except if we're not drawing on the primary screen. On
> > > this	\
> > > -	 * case, the first check should be enough and a new CRC
> > > check	\
> > > -	 * would only delay the test suite while adding no value
> > > to
> > > the	\
> > > -	 * test suite. */					
> > > 	
> > > \
> > > -	if (t->screen == SCREEN_PRIM)				
> > > 	\
> > > -		do_crc_assertions(flags_, mandatory_sink_crc);	
> > > 	\
> > > -									
> > > \
> > > -	if (fbc.supports_last_action &&
> > > opt.fbc_check_last_action) {
> > > 	\
> > > -		if (flags_ & ASSERT_LAST_ACTION_CHANGED)		
> > > \
> > > -			igt_assert(fbc_last_action_changed());	
> > > 	\
> > > -		else if (flags_ & ASSERT_NO_ACTION_CHANGE)	
> > > 	
> > > \
> > > -			igt_assert(!fbc_last_action_changed());	
> > > 	\
> > > -	}							
> > > 	
> > > \
> > > -									
> > > \
> > > -	wait_user(1, "Paused after assertions.");		
> > > 	
> > > \
> > > -} while (0)
> > > +static void do_crc_assertions(int flags, bool
> > > mandatory_sink_crc)
> > > +{
> > > +	struct both_crcs crc;
> > > +
> > > +	if (!opt.check_crc || (flags & DONT_ASSERT_CRC))
> > > +		return;
> > > +
> > > +	collect_crcs(&crc, mandatory_sink_crc);
> > > +	print_crc("Calculated CRC:", &crc);
> > > +
> > > +	igt_assert(wanted_crc);
> > > +	igt_assert_crc_equal(&crc.pipe, &wanted_crc->pipe);
> > > +	if (mandatory_sink_crc)
> > > +		assert_sink_crc_equal(&crc.sink, &wanted_crc-
> > > >sink);
> > > +	else if (sink_crc.reliable &&
> > > +		 !sink_crc_equal(&crc.sink, &wanted_crc->sink))
> > > +		igt_info("Sink CRC differ, but not required\n");
> > > +}
> > > +
> > > +static void do_status_assertions(int flags)
> > > +{
> > > +	if (!opt.check_status) {
> > > +		/* Make sure we settle before continuing. */
> > > +		sleep(1);
> > > +		return;
> > > +	}
> > > +
> > > +	if (flags & ASSERT_FBC_ENABLED) {
> > > +		igt_require(!fbc_not_enough_stolen());
> > > +		igt_require(!fbc_stride_not_supported());
> > > +		if (!fbc_wait_until_enabled()) {
> > > +			fbc_print_status();
> > > +			igt_assert_f(false, "FBC disabled\n");
> > > +		}
> > > +
> > > +		if (opt.fbc_check_compression)
> > > +			igt_assert(fbc_wait_for_compression());
> > > +	} else if (flags & ASSERT_FBC_DISABLED) {
> > > +		igt_assert(!fbc_wait_until_enabled());
> > > +	}
> > > +
> > > +	if (flags & ASSERT_PSR_ENABLED) {
> > > +		if (!psr_wait_until_enabled()) {
> > > +			psr_print_status();
> > > +			igt_assert_f(false, "PSR disabled\n");
> > > +		}
> > > +	} else if (flags & ASSERT_PSR_DISABLED) {
> > > +		igt_assert(!psr_wait_until_enabled());
> > > +	}
> > > +}
> > > +
> > > +static void __do_assertions(const struct test_mode *t, int
> > > flags,
> > > +			    int line)
> > > +{
> > > +	flags = adjust_assertion_flags(t, flags);
> > > +	bool mandatory_sink_crc = t->feature & FEATURE_PSR;
> > > +
> > > +	igt_debug("checking asserts in line %i\n", line);
> > > +
> > > +	wait_user(2, "Paused before assertions.");
> > > +
> > > +	/* Check the CRC to make sure the drawing operations
> > > work
> > > +	 * immediately, independently of the features being
> > > enabled.
> > > */
> > > +	do_crc_assertions(flags, mandatory_sink_crc);
> > > +
> > > +	/* Now we can flush things to make the test faster. */
> > > +	do_flush(t);
> > > +
> > > +	do_status_assertions(flags);
> > > +
> > > +	/* Check CRC again to make sure the compressed screen is
> > > ok,
> > > +	 * except if we're not drawing on the primary screen. On
> > > this
> > > +	 * case, the first check should be enough and a new CRC
> > > check
> > > +	 * would only delay the test suite while adding no value
> > > to
> > > the
> > > +	 * test suite. */
> > > +	if (t->screen == SCREEN_PRIM)
> > > +		do_crc_assertions(flags, mandatory_sink_crc);
> > > +
> > > +	if (fbc.supports_last_action &&
> > > opt.fbc_check_last_action) {
> > > +		if (flags & ASSERT_LAST_ACTION_CHANGED)
> > > +			igt_assert(fbc_last_action_changed());
> > > +		else if (flags & ASSERT_NO_ACTION_CHANGE)
> > > +			igt_assert(!fbc_last_action_changed());
> > > +	}
> > > +
> > > +	wait_user(1, "Paused after assertions.");
> > > +}
> > > +
> > > +#define do_assertions(__flags) __do_assertions(t, (__flags),
> > > __LINE__)
> > >  
> > >  static void enable_prim_screen_and_wait(const struct test_mode
> > > *t)
> > >  {
> 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-09-04 18:09 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-14  9:25 [PATCH i-g-t] tests/kms_frontbuffer_tracking: convert macros to functions Daniel Vetter
2017-08-14 10:48 ` ✓ Fi.CI.BAT: success for tests/kms_frontbuffer_tracking: convert macros to functions (rev3) Patchwork
2017-09-01 19:44 ` [PATCH i-g-t] tests/kms_frontbuffer_tracking: convert macros to functions Paulo Zanoni
2017-09-04  8:00   ` Daniel Vetter
2017-09-04 18:09     ` Paulo Zanoni [this message]
2017-09-05 11:18       ` Daniel Vetter
  -- strict thread matches above, loose matches on Subject: below --
2017-08-14  9:25 Daniel Vetter
2017-08-04 16:21 Daniel Vetter
2017-08-04 18:30 ` Paulo Zanoni
2017-08-07 16:19   ` 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=1504548550.2824.5.camel@intel.com \
    --to=paulo.r.zanoni@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=daniel@ffwll.ch \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox