From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> As it stands running the test like "sudo tests/kms_plane_scaling" does not work. Fix it by using the same method igt_paint_image uses. v2: Export Cairo read callback instead of duplicating it. (Thomas Wood) Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Cc: chandra konduru <chandra.konduru@xxxxxxxxx> Cc: Thomas Wood <thomas.wood@xxxxxxxxx> --- lib/igt_fb.c | 17 ++++++++++++++--- lib/igt_fb.h | 2 ++ tests/kms_plane_scaling.c | 7 ++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/igt_fb.c b/lib/igt_fb.c index cc4b8ee..2416e76 100644 --- a/lib/igt_fb.c +++ b/lib/igt_fb.c @@ -338,8 +338,18 @@ void igt_paint_test_pattern(cairo_t *cr, int width, int height) igt_assert(!cairo_status(cr)); } -static cairo_status_t -stdio_read_func(void *closure, unsigned char* data, unsigned int size) +/** + * igt_cairo_read_func: + * @closure: callback closure parameter + * @data: callback data parameter + * @size: callback size parameter + * + * Read callback for cairo_image_surface_create_from_png_stream to be used + * in conjuction with igt_fopen_data in order to open data files from IGT + * standard locations. + */ +cairo_status_t +igt_cairo_read_func(void *closure, unsigned char* data, unsigned int size) { if (fread(data, 1, size, (FILE*)closure) != size) return CAIRO_STATUS_READ_ERROR; @@ -369,7 +379,8 @@ void igt_paint_image(cairo_t *cr, const char *filename, f = igt_fopen_data(filename); - image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); + image = cairo_image_surface_create_from_png_stream(&igt_cairo_read_func, + f); igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS); img_width = cairo_image_surface_get_width(image); diff --git a/lib/igt_fb.h b/lib/igt_fb.h index a07acd2..2da5f0c 100644 --- a/lib/igt_fb.h +++ b/lib/igt_fb.h @@ -98,6 +98,8 @@ void igt_write_fb_to_png(int fd, struct igt_fb *fb, const char *filename); int igt_cairo_printf_line(cairo_t *cr, enum igt_text_align align, double yspacing, const char *fmt, ...) __attribute__((format (printf, 4, 5))); +cairo_status_t +igt_cairo_read_func(void *closure, unsigned char* data, unsigned int size); /* helpers to handle drm fourcc codes */ uint32_t igt_bpp_depth_to_drm_format(int bpp, int depth); diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c index 00db5cb..272f759 100644 --- a/tests/kms_plane_scaling.c +++ b/tests/kms_plane_scaling.c @@ -210,6 +210,7 @@ static void test_plane_scaling(data_t *d) enum pipe pipe; int valid_tests = 0; int primary_plane_scaling = 0; /* For now */ + FILE* f; igt_require(d->display.has_universal_planes); igt_require(d->num_scalers); @@ -223,11 +224,15 @@ 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); + + f = igt_fopen_data(FILE_NAME); + image = cairo_image_surface_create_from_png_stream( + &igt_cairo_read_func, f); 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); + fclose(f); d->fb_id2 = igt_create_fb(d->drm_fd, d->image_w, d->image_h, -- 2.3.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx