Re: [PATCH i-g-t 2/6] lib: Extract ssme common fb create+fill methods into helpers

Thomas Wood
2015-12-21T10:43:06Z

On 18 December 2015 at 17:25, <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Several tests do one or more of the followin:
> * igt_create_fb() + igt_paint_test_pattern()
> * igt_create_color_fb() + igt_paint_test_pattern()
> * igt_create_fb() + igt_paint_image()
>
> Extract them into new helpes: igt_create_pattern_fb(),
> igt_create_color_pattern_fb(), igt_create_image_fb().

Couple of typos above: "ssme", "followin", "helpes"

>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> lib/igt_fb.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_fb.h | 11 ++++
> tests/kms_atomic.c | 30 ++++-------
> tests/kms_flip_tiling.c | 25 +++-------
> tests/kms_panel_fitting.c | 42 ++++------------
> tests/kms_plane_scaling.c | 60 ++++++----------------
> tests/kms_pwrite_crc.c | 9 +---
> tests/kms_setmode.c | 11 ++--
> tests/pm_lpsp.c | 11 +---
> tests/pm_rpm.c | 10 ++--
> tests/testdisplay.c | 8 ++-
> 11 files changed, 188 insertions(+), 153 deletions(-)
>
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index 3ea9915c42c4..b3c7840a22ae 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -537,6 +537,130 @@ unsigned int igt_create_color_fb(int fd, int width, int height,
> return fb_id;
> }
>
> +/**
> + * igt_create_pattern_fb:
> + * @fd: open i915 drm file descriptor
> + * @width: width of the framebuffer in pixel
> + * @height: height of the framebuffer in pixel
> + * @format: drm fourcc pixel format code
> + * @tiling: tiling layout of the framebuffer
> + * @fb: pointer to an #igt_fb structure
> + *
> + * This function allocates a gem buffer object suitable to back a framebuffer
> + * with the requested properties and then wraps it up in a drm framebuffer
> + * object. All metadata is stored in @fb.
> + *
> + * Compared to igt_create_fb() this function also fills the entire framebuffer
> + * with the test pattern.
> + *
> + * Returns:
> + * The kms id of the created framebuffer on success or a negative error code on
> + * failure.
> + */
> +unsigned int igt_create_pattern_fb(int fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + struct igt_fb *fb /* out */)
> +{
> + unsigned int fb_id;
> + cairo_t *cr;
> +
> + fb_id = igt_create_fb(fd, width, height, format, tiling, fb);
> + igt_assert(fb_id);
> +
> + cr = igt_get_cairo_ctx(fd, fb);
> + igt_paint_test_pattern(cr, width, height);
> + igt_assert(cairo_status(cr) == 0);
> + cairo_destroy(cr);
> +
> + return fb_id;
> +}
> +
> +/**
> + * igt_create_pattern_fb:

This should be igt_create_color_pattern_fb.

> + * @fd: open i915 drm file descriptor
> + * @width: width of the framebuffer in pixel
> + * @height: height of the framebuffer in pixel
> + * @format: drm fourcc pixel format code
> + * @tiling: tiling layout of the framebuffer
> + * @r: red value to use as fill color
> + * @g: gree value to use as fill color

Typo of "green" here.

> + * @b: blue value to use as fill color
> + * @fb: pointer to an #igt_fb structure
> + *
> + * This function allocates a gem buffer object suitable to back a framebuffer
> + * with the requested properties and then wraps it up in a drm framebuffer
> + * object. All metadata is stored in @fb.
> + *
> + * Compared to igt_create_fb() this function also fills the entire framebuffer
> + * with the test pattern.
> + *
> + * Returns:
> + * The kms id of the created framebuffer on success or a negative error code on
> + * failure.
> + */
> +unsigned int igt_create_color_pattern_fb(int fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + double r, double g, double b,
> + struct igt_fb *fb /* out */)
> +{
> + unsigned int fb_id;
> + cairo_t *cr;
> +
> + fb_id = igt_create_fb(fd, width, height, format, tiling, fb);
> + igt_assert(fb_id);
> +
> + cr = igt_get_cairo_ctx(fd, fb);
> + igt_paint_color(cr, 0, 0, width, height, r, g, b);
> + igt_paint_test_pattern(cr, width, height);
> + igt_assert(cairo_status(cr) == 0);
> + cairo_destroy(cr);
> +
> + return fb_id;
> +}
> +
> +/**
> + * igt_create_image_fb:
> + * @drm_fd: open i915 drm file descriptor
> + * @width: width of the framebuffer in pixel or 0
> + * @height: height of the framebuffer in pixel or 0
> + * @format: drm fourcc pixel format code
> + * @tiling: tiling layout of the framebuffer
> + * @filename: filename of the png image to draw

@fb missing here.

> + *
> + * Create a framebuffer with the specified image. If @width is zero the
> + * image width will be used. If @height is zero the image height will be used.
> + *
> + * Returns:
> + * The kms id of the created framebuffer on success or a negative error code on
> + * failure.
> + */
> +unsigned int igt_create_image_fb(int fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + const char *filename,
> + struct igt_fb *fb /* out */)
> +{
> + cairo_surface_t *image;
> + uint32_t fb_id;
> + cairo_t *cr;
> +
> + image = cairo_image_surface_create_from_png(filename);
> + igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS);
> + if (width == 0)
> + width = cairo_image_surface_get_width(image);
> + if (height == 0)
> + height = cairo_image_surface_get_height(image);
> + cairo_surface_destroy(image);
> +
> + fb_id = igt_create_fb(fd, width, height, format, tiling, fb);
> +
> + cr = igt_get_cairo_ctx(fd, fb);
> + igt_paint_image(cr, filename, 0, 0, width, height);
> + igt_assert(cairo_status(cr) == 0);
> + cairo_destroy(cr);
> +
> + return fb_id;
> +}
> +
> struct box {
> int x, y, width, height;
> };
> diff --git a/lib/igt_fb.h b/lib/igt_fb.h
> index 37892b50d495..5cc8644d01d4 100644
> --- a/lib/igt_fb.h
> +++ b/lib/igt_fb.h
> @@ -80,6 +80,17 @@ unsigned int igt_create_color_fb(int fd, int width, int height,
> uint32_t format, uint64_t tiling,
> double r, double g, double b,
> struct igt_fb *fb /* out */);
> +unsigned int igt_create_pattern_fb(int fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + struct igt_fb *fb /* out */);
> +unsigned int igt_create_color_pattern_fb(int fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + double r, double g, double b,
> + struct igt_fb *fb /* out */);
> +unsigned int igt_create_image_fb(int drm_fd, int width, int height,
> + uint32_t format, uint64_t tiling,
> + const char *filename,
> + struct igt_fb *fb /* out */);
> unsigned int igt_create_stereo_fb(int drm_fd, drmModeModeInfo *mode,
> uint32_t format, uint64_t tiling);
> void igt_remove_fb(int fd, struct igt_fb *fb);
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 7006e5eae411..501093cc3962 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -867,7 +867,6 @@ static void plane_overlay(struct kms_atomic_crtc_state *crtc,
> uint32_t format = plane_get_igt_format(&plane);
> drmModeAtomicReq *req = drmModeAtomicAlloc();
> struct igt_fb fb;
> - cairo_t *cr;
>
> igt_require(req);
> igt_require(format != 0);
> @@ -881,12 +880,9 @@ static void plane_overlay(struct kms_atomic_crtc_state *crtc,
> plane.crtc_w = mode->hdisplay / 2;
> plane.crtc_h = mode->vdisplay / 2;
> plane.crtc_id = crtc->obj;
> - plane.fb_id = igt_create_fb(plane.state->desc->fd,
> - plane.crtc_w, plane.crtc_h,
> - format, I915_TILING_NONE, &fb);
> -
> - cr = igt_get_cairo_ctx(plane.state->desc->fd, &fb);
> - igt_paint_test_pattern(cr, plane.crtc_w, plane.crtc_h);
> + plane.fb_id = igt_create_pattern_fb(plane.state->desc->fd,
> + plane.crtc_w, plane.crtc_h,
> + format, I915_TILING_NONE, &fb);
>
> /* Enable the overlay plane using the atomic API, and double-check
> * state is what we think it should be. */
> @@ -916,7 +912,6 @@ static void plane_primary(struct kms_atomic_crtc_state *crtc,
> uint32_t *connectors;
> int num_connectors;
> struct igt_fb fb;
> - cairo_t *cr;
> int i;
>
> connectors = calloc(crtc->state->num_connectors, sizeof(*connectors));
> @@ -939,12 +934,9 @@ static void plane_primary(struct kms_atomic_crtc_state *crtc,
> plane.crtc_w = mode->hdisplay;
> plane.crtc_h = mode->vdisplay;
> plane.crtc_id = crtc->obj;
> - plane.fb_id = igt_create_fb(plane.state->desc->fd,
> - plane.crtc_w, plane.crtc_h,
> - format, I915_TILING_NONE, &fb);
> -
> - cr = igt_get_cairo_ctx(plane.state->desc->fd, &fb);
> - igt_paint_test_pattern(cr, plane.crtc_w, plane.crtc_h);
> + plane.fb_id = igt_create_pattern_fb(plane.state->desc->fd,
> + plane.crtc_w, plane.crtc_h,
> + format, I915_TILING_NONE, &fb);
>
> /* Flip the primary plane using the atomic API, and double-check
> * state is what we think it should be. */
> @@ -1044,7 +1036,6 @@ static void plane_invalid_params(struct kms_atomic_crtc_state *crtc,
> uint32_t format = plane_get_igt_format(&plane);
> drmModeAtomicReq *req = drmModeAtomicAlloc();
> struct igt_fb fb;
> - cairo_t *cr;
>
> /* Pass a series of invalid object IDs for the FB ID. */
> plane.fb_id = plane.obj;
> @@ -1098,12 +1089,9 @@ static void plane_invalid_params(struct kms_atomic_crtc_state *crtc,
> plane.crtc_w = mode->hdisplay;
> plane.crtc_h = mode->vdisplay;
> plane.crtc_id = crtc->obj;
> - plane.fb_id = igt_create_fb(plane.state->desc->fd,
> - plane.crtc_w - 1, plane.crtc_h - 1,
> - format, I915_TILING_NONE, &fb);
> -
> - cr = igt_get_cairo_ctx(plane.state->desc->fd, &fb);
> - igt_paint_test_pattern(cr, plane.crtc_w - 1, plane.crtc_h - 1);
> + plane.fb_id = igt_create_pattern_fb(plane.state->desc->fd,
> + plane.crtc_w - 1, plane.crtc_h - 1,
> + format, I915_TILING_NONE, &fb);
>
> plane_commit_atomic_err(&plane, plane_old, req,
> ATOMIC_RELAX_NONE, ENOSPC);
> diff --git a/tests/kms_flip_tiling.c b/tests/kms_flip_tiling.c
> index 653a9706a700..4f7334de65fe 100644
> --- a/tests/kms_flip_tiling.c
> +++ b/tests/kms_flip_tiling.c
> @@ -39,16 +39,6 @@ typedef struct {
> int gen;
> } data_t;
>
> -static void
> -fill_fb(struct igt_fb *fb, data_t *data, drmModeModeInfo *mode)
> -{
> - cairo_t *cr;
> -
> - cr = igt_get_cairo_ctx(data->drm_fd, fb);
> - igt_paint_test_pattern(cr, mode->hdisplay, mode->vdisplay);
> - cairo_destroy(cr);
> -}
> -
> static igt_pipe_crc_t *_pipe_crc;
>
> static igt_pipe_crc_t *pipe_crc_new(int pipe)
> @@ -121,20 +111,17 @@ test_flip_tiling(data_t *data, igt_output_t *output, uint64_t tiling[2])
> width *= 2;
> }
>
> - fb_id = igt_create_fb(data->drm_fd, width, mode->vdisplay,
> - DRM_FORMAT_XRGB8888, tiling[0],
> - &fb[0]);
> + fb_id = igt_create_pattern_fb(data->drm_fd, width, mode->vdisplay,
> + DRM_FORMAT_XRGB8888, tiling[0],
> + &fb[0]);
> igt_assert(fb_id);
>
> /* Second fb has different background so CRC does not match. */
> - fb_id = igt_create_color_fb(data->drm_fd, width, mode->vdisplay,
> - DRM_FORMAT_XRGB8888, tiling[1],
> - 0.5, 0.5, 0.5, &fb[1]);
> + fb_id = igt_create_color_pattern_fb(data->drm_fd, width, mode->vdisplay,
> + DRM_FORMAT_XRGB8888, tiling[1],
> + 0.5, 0.5, 0.5, &fb[1]);
> igt_assert(fb_id);
>
> - fill_fb(&fb[0], data, mode);
> - fill_fb(&fb[1], data, mode);
> -
> /* Set the crtc and generate a reference CRC. */
> igt_plane_set_fb(primary, &fb[1]);
> igt_display_commit(&data->display);
> diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
> index f8726e277c9d..829d9cdd0631 100644
> --- a/tests/kms_panel_fitting.c
> +++ b/tests/kms_panel_fitting.c
> @@ -53,26 +53,6 @@ typedef struct {
>
> #define FILE_NAME "1080p-left.png"
>
> -static void
> -paint_color(data_t *d, struct igt_fb *fb, uint16_t w, uint16_t h)
> -{
> - cairo_t *cr;
> -
> - cr = igt_get_cairo_ctx(d->drm_fd, fb);
> - igt_paint_test_pattern(cr, w, h);
> - cairo_destroy(cr);
> -}
> -
> -static void
> -paint_image(data_t *d, struct igt_fb *fb, uint16_t w, uint16_t h)
> -{
> - cairo_t *cr;
> -
> - cr = igt_get_cairo_ctx(d->drm_fd, fb);
> - igt_paint_image(cr, FILE_NAME, 0, 0, w, h);
> - cairo_destroy(cr);
> -}
> -
> static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
> igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
> {
> @@ -91,15 +71,13 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
> }
>
> /* allocate fb for plane 1 */
> - data->fb_id1 = igt_create_fb(data->drm_fd,
> - mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> - &data->fb1);
> + data->fb_id1 = igt_create_pattern_fb(data->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> + &data->fb1);
> igt_assert(data->fb_id1);
>
> - paint_color(data, &data->fb1, mode->hdisplay, mode->vdisplay);
> -
> /*
> * We always set the primary plane to actually enable the pipe as
> * there's no way (that works) to light up a pipe with only a sprite
> @@ -188,13 +166,11 @@ static void test_panel_fitting(data_t *d)
> d->image_h = cairo_image_surface_get_height(image);
> cairo_surface_destroy(image);
>
> - d->fb_id2 = igt_create_fb(d->drm_fd,
> - d->image_w, d->image_h,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> - &d->fb2);
> + d->fb_id2 = igt_create_image_fb(d->drm_fd, 0, 0,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> + FILE_NAME, &d->fb2);
> igt_assert(d->fb_id2);
> - paint_image(d, &d->fb2, d->fb2.width, d->fb2.height);
>
> /* Set up display to enable panel fitting */
> mode->hdisplay = 640;
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 74bc6f8c148e..ad5404d90bfa 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -55,26 +55,6 @@ typedef struct {
>
> #define FILE_NAME "1080p-left.png"
>
> -static void
> -paint_color(data_t *d, struct igt_fb *fb, uint16_t w, uint16_t h)
> -{
> - cairo_t *cr;
> -
> - cr = igt_get_cairo_ctx(d->drm_fd, fb);
> - igt_paint_test_pattern(cr, w, h);
> - cairo_destroy(cr);
> -}
> -
> -static void
> -paint_image(data_t *d, struct igt_fb *fb, uint16_t w, uint16_t h)
> -{
> - cairo_t *cr;
> -
> - cr = igt_get_cairo_ctx(d->drm_fd, fb);
> - igt_paint_image(cr, FILE_NAME, 0, 0, w, h);
> - cairo_destroy(cr);
> -}
> -
> static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
> igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
> {
> @@ -93,15 +73,13 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
> }
>
> /* allocate fb for plane 1 */
> - data->fb_id1 = igt_create_fb(data->drm_fd,
> - mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> - &data->fb1);
> + data->fb_id1 = igt_create_pattern_fb(data->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> + &data->fb1);
> igt_assert(data->fb_id1);
>
> - paint_color(data, &data->fb1, mode->hdisplay, mode->vdisplay);
> -
> /*
> * We always set the primary plane to actually enable the pipe as
> * there's no way (that works) to light up a pipe with only a sprite
> @@ -201,7 +179,6 @@ static void test_plane_scaling(data_t *d)
> {
> igt_display_t *display = &d->display;
> igt_output_t *output;
> - cairo_surface_t *image;
> enum pipe pipe;
> int valid_tests = 0;
> int primary_plane_scaling = 0; /* For now */
> @@ -218,27 +195,18 @@ static void test_plane_scaling(data_t *d)
> mode = igt_output_get_mode(output);
>
> /* allocate fb2 with image size */
> - image = cairo_image_surface_create_from_png(FILE_NAME);
> - igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS);
> - d->image_w = cairo_image_surface_get_width(image);
> - d->image_h = cairo_image_surface_get_height(image);
> - cairo_surface_destroy(image);
> -
> - d->fb_id2 = igt_create_fb(d->drm_fd,
> - d->image_w, d->image_h,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> - &d->fb2);
> + d->fb_id2 = igt_create_image_fb(d->drm_fd, 0, 0,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> + FILE_NAME, &d->fb2);
> igt_assert(d->fb_id2);
> - paint_image(d, &d->fb2, d->fb2.width, d->fb2.height);
>
> - d->fb_id3 = igt_create_fb(d->drm_fd,
> - mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> - &d->fb3);
> + d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> + &d->fb3);
> igt_assert(d->fb_id3);
> - paint_color(d, &d->fb3, mode->hdisplay, mode->vdisplay);
>
> /* Set up display with plane 1 */
> d->plane1 = igt_output_get_plane(output, IGT_PLANE_PRIMARY);
> diff --git a/tests/kms_pwrite_crc.c b/tests/kms_pwrite_crc.c
> index 983418f845cd..86292bda32b3 100644
> --- a/tests/kms_pwrite_crc.c
> +++ b/tests/kms_pwrite_crc.c
> @@ -50,7 +50,6 @@ static void test(data_t *data)
> igt_output_t *output = data->output;
> struct igt_fb *fb = &data->fb[1];
> drmModeModeInfo *mode;
> - cairo_t *cr;
> uint32_t caching;
> void *buf;
> igt_crc_t crc;
> @@ -58,12 +57,8 @@ static void test(data_t *data)
> mode = igt_output_get_mode(output);
>
> /* create a non-white fb where we can pwrite later */
> - igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, fb);
> -
> - cr = igt_get_cairo_ctx(data->drm_fd, fb);
> - igt_paint_test_pattern(cr, fb->width, fb->height);
> - cairo_destroy(cr);
> + igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, fb);
>
> /* flip to it to make it UC/WC and fully flushed */
> drmModeSetPlane(data->drm_fd,
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index d5ac8f931b55..531ce8391fa7 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -146,8 +146,6 @@ static int paint_fb(struct igt_fb *fb, const char *test_name,
>
> cr = igt_get_cairo_ctx(drm_fd, fb);
>
> - igt_paint_test_pattern(cr, fb->width, fb->height);
> -
> cairo_move_to(cr, fb->width / 2, fb->height / 2);
> cairo_set_font_size(cr, 24);
> igt_cairo_printf_line(cr, align_hcenter, 40, "%s", test_name);
> @@ -180,10 +178,11 @@ static void create_fb_for_crtc(struct crtc_config *crtc,
>
> bpp = 32;
> depth = 24;
> - fb_id = igt_create_fb(drm_fd, crtc->mode.hdisplay,
> - crtc->mode.vdisplay,
> - igt_bpp_depth_to_drm_format(bpp, depth),
> - LOCAL_DRM_FORMAT_MOD_NONE, fb_info);
> + fb_id = igt_create_pattern_fb(drm_fd, crtc->mode.hdisplay,
> + crtc->mode.vdisplay,
> + igt_bpp_depth_to_drm_format(bpp, depth),
> + LOCAL_DRM_FORMAT_MOD_NONE,
> + fb_info);
> igt_assert_lt(0, fb_id);
> }
>
> diff --git a/tests/pm_lpsp.c b/tests/pm_lpsp.c
> index 257ae1b8b1d9..a82420bf06de 100644
> --- a/tests/pm_lpsp.c
> +++ b/tests/pm_lpsp.c
> @@ -78,16 +78,9 @@ static void screens_disabled_subtest(int drm_fd, drmModeResPtr drm_res)
> static uint32_t create_fb(int drm_fd, int width, int height)
> {
> struct igt_fb fb;
> - cairo_t *cr;
> - uint32_t buffer_id;
>
> - buffer_id = igt_create_fb(drm_fd, width, height, DRM_FORMAT_XRGB8888,
> - LOCAL_DRM_FORMAT_MOD_NONE, &fb);
> - cr = igt_get_cairo_ctx(drm_fd, &fb);
> - igt_paint_test_pattern(cr, width, height);
> - cairo_destroy(cr);
> -
> - return buffer_id;
> + return igt_create_pattern_fb(drm_fd, width, height, DRM_FORMAT_XRGB8888,
> + LOCAL_DRM_FORMAT_MOD_NONE, &fb);
> }
>
> static void edp_subtest(int drm_fd, drmModeResPtr drm_res,
> diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> index 55fdb31cb723..3a5e8bafd3c7 100644
> --- a/tests/pm_rpm.c
> +++ b/tests/pm_rpm.c
> @@ -233,7 +233,6 @@ static bool init_modeset_params_for_type(struct mode_set_data *data,
> int i;
> uint32_t connector_id = 0;
> drmModeModeInfoPtr mode = NULL;
> - cairo_t *cr;
>
> for (i = 0; i < data->res->count_connectors; i++) {
> drmModeConnectorPtr c = data->connectors[i];
> @@ -256,12 +255,9 @@ static bool init_modeset_params_for_type(struct mode_set_data *data,
> if (!connector_id)
> return false;
>
> - igt_create_fb(drm_fd, mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE,
> - &params->fb);
> - cr = igt_get_cairo_ctx(drm_fd, &params->fb);
> - igt_paint_test_pattern(cr, mode->hdisplay, mode->vdisplay);
> - cairo_destroy(cr);
> + igt_create_pattern_fb(drm_fd, mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE,
> + &params->fb);
>
> params->crtc_id = data->res->crtcs[0];
> params->connector_id = connector_id;
> diff --git a/tests/testdisplay.c b/tests/testdisplay.c
> index 74e60b6f4bda..ff49e23a972d 100644
> --- a/tests/testdisplay.c
> +++ b/tests/testdisplay.c
> @@ -259,8 +259,6 @@ static void paint_output_info(struct connector *c, struct igt_fb *fb)
> double max_width;
> int i;
>
> - igt_paint_test_pattern(cr, l_width, l_height);
> -
> cairo_move_to(cr, l_width / 2, l_height / 2);
>
> /* Print connector and mode name */
> @@ -353,9 +351,9 @@ set_mode(struct connector *c)
> width = c->mode.hdisplay;
> height = c->mode.vdisplay;
>
> - fb_id = igt_create_fb(drm_fd, width, height,
> - igt_bpp_depth_to_drm_format(bpp, depth),
> - tiling, &fb_info[current_fb]);
> + fb_id = igt_create_pattern_fb(drm_fd, width, height,
> + igt_bpp_depth_to_drm_format(bpp, depth),
> + tiling, &fb_info[current_fb]);
> paint_output_info(c, &fb_info[current_fb]);
> paint_color_key(&fb_info[current_fb]);
>
> --
> 2.4.10
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx