kms_cursor_crc: Simplify the pipe_crc mess

Instead of allocating an array of igt_pipe_ctc_t objects, just allocate
one and stick it into test_data.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
This commit is contained in:
Ville Syrjälä 2014-04-24 19:07:18 +03:00
parent aaef7ad376
commit f6e869732c

View File

@ -44,7 +44,6 @@ typedef struct {
igt_display_t display; igt_display_t display;
struct igt_fb primary_fb; struct igt_fb primary_fb;
struct igt_fb fb; struct igt_fb fb;
igt_pipe_crc_t **pipe_crc;
} data_t; } data_t;
typedef struct { typedef struct {
@ -55,6 +54,7 @@ typedef struct {
int left, right, top, bottom; int left, right, top, bottom;
int screenw, screenh; int screenw, screenh;
int curw, curh; /* cursor size */ int curw, curh; /* cursor size */
igt_pipe_crc_t *pipe_crc;
} test_data_t; } test_data_t;
static void draw_cursor(cairo_t *cr, int x, int y, int w) static void draw_cursor(cairo_t *cr, int x, int y, int w)
@ -95,19 +95,12 @@ static void cursor_disable(test_data_t *test_data)
igt_display_commit(display); igt_display_commit(display);
} }
static igt_pipe_crc_t *create_crc(data_t *data, enum pipe pipe)
{
igt_pipe_crc_t *crc;
crc = igt_pipe_crc_new(pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
return crc;
}
static void do_single_test(test_data_t *test_data, int x, int y) static void do_single_test(test_data_t *test_data, int x, int y)
{ {
data_t *data = test_data->data; data_t *data = test_data->data;
igt_display_t *display = &data->display; igt_display_t *display = &data->display;
igt_pipe_crc_t *pipe_crc = data->pipe_crc[test_data->pipe]; igt_pipe_crc_t *pipe_crc = test_data->pipe_crc;
igt_crc_t crc, ref_crc; igt_crc_t crc, ref_crc;
igt_plane_t *cursor; igt_plane_t *cursor;
cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, &data->primary_fb); cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, &data->primary_fb);
@ -233,7 +226,6 @@ static bool prepare_crtc(test_data_t *test_data, igt_output_t *output,
drmModeModeInfo *mode; drmModeModeInfo *mode;
data_t *data = test_data->data; data_t *data = test_data->data;
igt_display_t *display = &data->display; igt_display_t *display = &data->display;
igt_pipe_crc_t *pipe_crc;
igt_plane_t *primary; igt_plane_t *primary;
/* select the pipe we want to use */ /* select the pipe we want to use */
@ -253,18 +245,17 @@ static bool prepare_crtc(test_data_t *test_data, igt_output_t *output,
igt_display_commit(display); igt_display_commit(display);
/* create the pipe_crc object for this pipe */ /* create the pipe_crc object for this pipe */
igt_pipe_crc_free(data->pipe_crc[test_data->pipe]); if (test_data->pipe_crc)
data->pipe_crc[test_data->pipe] = NULL; igt_pipe_crc_free(test_data->pipe_crc);
pipe_crc = create_crc(data, test_data->pipe); test_data->pipe_crc = igt_pipe_crc_new(test_data->pipe,
if (!pipe_crc) { INTEL_PIPE_CRC_SOURCE_AUTO);
if (!test_data->pipe_crc) {
printf("auto crc not supported on this connector with pipe %i\n", printf("auto crc not supported on this connector with pipe %i\n",
test_data->pipe); test_data->pipe);
return false; return false;
} }
data->pipe_crc[test_data->pipe] = pipe_crc;
/* x/y position where the cursor is still fully visible */ /* x/y position where the cursor is still fully visible */
test_data->left = 0; test_data->left = 0;
test_data->right = mode->hdisplay - cursor_w; test_data->right = mode->hdisplay - cursor_w;
@ -280,7 +271,7 @@ static bool prepare_crtc(test_data_t *test_data, igt_output_t *output,
igt_wait_for_vblank(data->drm_fd, test_data->pipe); igt_wait_for_vblank(data->drm_fd, test_data->pipe);
/* get reference crc w/o cursor */ /* get reference crc w/o cursor */
igt_pipe_crc_collect_crc(pipe_crc, &test_data->ref_crc); igt_pipe_crc_collect_crc(test_data->pipe_crc, &test_data->ref_crc);
return true; return true;
} }
@ -290,8 +281,8 @@ static void cleanup_crtc(test_data_t *test_data, igt_output_t *output)
data_t *data = test_data->data; data_t *data = test_data->data;
igt_plane_t *primary; igt_plane_t *primary;
igt_pipe_crc_free(data->pipe_crc[test_data->pipe]); igt_pipe_crc_free(test_data->pipe_crc);
data->pipe_crc[test_data->pipe] = NULL; test_data->pipe_crc = NULL;
igt_remove_fb(data->drm_fd, &data->primary_fb); igt_remove_fb(data->drm_fd, &data->primary_fb);
@ -404,15 +395,11 @@ igt_main
igt_require_pipe_crc(); igt_require_pipe_crc();
igt_display_init(&data.display, data.drm_fd); igt_display_init(&data.display, data.drm_fd);
data.pipe_crc = calloc(igt_display_get_n_pipes(&data.display),
sizeof(data.pipe_crc[0]));
} }
run_test_generic(&data, cursor_width); run_test_generic(&data, cursor_width);
igt_fixture { igt_fixture {
free(data.pipe_crc);
igt_display_fini(&data.display); igt_display_fini(&data.display);
} }
} }