On Wed, Feb 20, 2019 at 04:34:21PM -0800, Matt Roper wrote: > When using --interactive-debug, it's sometimes desirable to ignore CRC > mismatches and let the test proceed as if they passed so that the > on-screen outcome can be inspected. Let's add a debug option to allow > this. > > Cc: igt-dev@xxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx> > --- > lib/igt_core.c | 7 +++++++ > lib/igt_core.h | 1 + > lib/igt_debugfs.c | 8 +++++++- > 3 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/lib/igt_core.c b/lib/igt_core.c > index 71b05d3b..5523950f 100644 > --- a/lib/igt_core.c > +++ b/lib/igt_core.c > @@ -256,6 +256,7 @@ > > static unsigned int exit_handler_count; > const char *igt_interactive_debug; > +bool igt_skip_crc_compare; > > /* subtests helpers */ > static bool list_subtests = false; > @@ -285,6 +286,7 @@ enum { > OPT_DESCRIPTION, > OPT_DEBUG, > OPT_INTERACTIVE_DEBUG, > + OPT_SKIP_CRC, > OPT_HELP = 'h' > }; > > @@ -552,6 +554,7 @@ static void print_usage(const char *help_str, bool output_on_stderr) > " --run-subtest <pattern>\n" > " --debug[=log-domain]\n" > " --interactive-debug[=domain]\n" > + " --skip-crc-compare\n" > " --help-description\n" > " --help\n"); > if (help_str) > @@ -668,6 +671,7 @@ static int common_init(int *argc, char **argv, > {"help-description", 0, 0, OPT_DESCRIPTION}, > {"debug", optional_argument, 0, OPT_DEBUG}, > {"interactive-debug", optional_argument, 0, OPT_INTERACTIVE_DEBUG}, > + {"skip-crc-compare", 0, 0, OPT_SKIP_CRC}, > {"help", 0, 0, OPT_HELP}, > {0, 0, 0, 0} > }; > @@ -768,6 +772,9 @@ static int common_init(int *argc, char **argv, > print_test_description(); > ret = -1; > goto out; > + case OPT_SKIP_CRC: > + igt_skip_crc_compare = true; > + goto out; > case OPT_HELP: > print_usage(help_str, false); > ret = -1; > diff --git a/lib/igt_core.h b/lib/igt_core.h > index 47ffd9e7..f12fc5cb 100644 > --- a/lib/igt_core.h > +++ b/lib/igt_core.h > @@ -843,6 +843,7 @@ bool igt_run_in_simulation(void); > void igt_skip_on_simulation(void); > > extern const char *igt_interactive_debug; > +extern bool igt_skip_crc_compare; > > /** > * igt_log_level: > diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c > index 640c78e9..04d1648b 100644 > --- a/lib/igt_debugfs.c > +++ b/lib/igt_debugfs.c > @@ -405,6 +405,12 @@ static bool igt_find_crc_mismatch(const igt_crc_t *a, const igt_crc_t *b, > * assert that CRCs match, never that they are different. Otherwise there might > * be random testcase failures when different screen contents end up with the > * same CRC by chance. > + * > + * Passing --skip-crc-compare on the command line will force this function > + * to always pass, which can be useful in interactive debugging where you > + * might know the test will fail, but still want the test to keep going as if > + * it had succeeded so that you can see the on-screen behavior. > + * > */ > void igt_assert_crc_equal(const igt_crc_t *a, const igt_crc_t *b) > { > @@ -416,7 +422,7 @@ void igt_assert_crc_equal(const igt_crc_t *a, const igt_crc_t *b) > igt_debug("CRC mismatch at index %d: 0x%x != 0x%x\n", index, > a->crc[index], b->crc[index]); > > - igt_assert(!mismatch); > + igt_assert(!mismatch || igt_skip_crc_compare); I think an igt_debug line here could be useful when we skip the assert. With that Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> aka Ville convinced me. -Daniel > } > > /** > -- > 2.14.5 > > _______________________________________________ > igt-dev mailing list > igt-dev@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/igt-dev -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx