kms_pipe_crc_basic: Split the main test function a bit more

Let's put the per-output test in its own function to get rid of 1 level
of indentation. We'll need it to cycle through 2 different framebuffers
to make sure we compute different CRCs if the fbs are different.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
This commit is contained in:
Damien Lespiau 2014-05-28 17:33:32 +01:00
parent c8b8f8abf6
commit dbb80a63b4

View File

@ -105,26 +105,18 @@ static void test_bad_command(data_t *data, const char *cmd)
#define TEST_SEQUENCE (1<<0)
static void test_read_crc(data_t *data, int pipe, unsigned flags)
static int
test_read_crc_for_output(data_t *data, int pipe, igt_output_t *output,
unsigned flags)
{
igt_display_t *display = &data->display;
igt_pipe_crc_t *pipe_crc;
igt_crc_t *crcs = NULL;
int valid_connectors = 0;
igt_output_t *output;
igt_skip_on(pipe >= data->display.n_pipes);
for_each_connected_output(display, output) {
igt_plane_t *primary;
drmModeModeInfo *mode;
igt_pipe_crc_t *pipe_crc;
igt_crc_t *crcs = NULL;
igt_output_set_pipe(output, pipe);
igt_info("%s: Testing connector %s using pipe %c\n",
igt_subtest_name(), igt_output_name(output),
pipe_name(pipe));
mode = igt_output_get_mode(output);
igt_create_color_fb(data->drm_fd,
mode->hdisplay, mode->vdisplay,
@ -141,8 +133,7 @@ static void test_read_crc(data_t *data, int pipe, unsigned flags)
pipe_crc = igt_pipe_crc_new(pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
if (!pipe_crc)
continue;
valid_connectors++;
return 0;
igt_pipe_crc_start(pipe_crc);
@ -171,10 +162,28 @@ static void test_read_crc(data_t *data, int pipe, unsigned flags)
igt_plane_set_fb(primary, NULL);
igt_output_set_pipe(output, PIPE_ANY);
return 1;
}
static void test_read_crc(data_t *data, int pipe, unsigned flags)
{
igt_display_t *display = &data->display;
int valid_connectors = 0;
igt_output_t *output;
igt_skip_on(pipe >= data->display.n_pipes);
for_each_connected_output(display, output) {
igt_info("%s: Testing connector %s using pipe %c\n",
igt_subtest_name(), igt_output_name(output),
pipe_name(pipe));
valid_connectors += test_read_crc_for_output(data, pipe, output, flags);
}
igt_require_f(valid_connectors, "No connector found for pipe %i\n", pipe);
}
data_t data = {0, };