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
next prev parent 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 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.