Message ID | 20170921143933.14618-3-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Sep 21, 2017 at 05:39:30PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Raw usage of cairo_image_surface_create_from_png() doesn't work > since it doesn't know about IGT_DATADIR and IGT_SRCDIR. Let's extract > the helper from igt_paint_image() that uses igt_fopen_data() + > cairo_image_surface_create_from_png_stream() and call it > igt_cairo_image_surface_create_from_png_file(). s/from_png_file/from_png/ > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Thanks for fixing this. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92248 (Not sure if this patch fixes it yet or if CI switch to make install -deployment is also needed) kms_plane_fitting doesn't seem to have a separate bug report. Reviewed-by: Petri Latvala <petri.latvala@intel.com> > --- > lib/igt_fb.c | 21 ++++++++++++++------- > lib/igt_fb.h | 1 + > 2 files changed, 15 insertions(+), 7 deletions(-) > > diff --git a/lib/igt_fb.c b/lib/igt_fb.c > index 95434a699dcf..d4eaed71acef 100644 > --- a/lib/igt_fb.c > +++ b/lib/igt_fb.c > @@ -583,6 +583,18 @@ stdio_read_func(void *closure, unsigned char* data, unsigned int size) > return CAIRO_STATUS_SUCCESS; > } > > +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename) > +{ > + cairo_surface_t *image; > + FILE *f; > + > + f = igt_fopen_data(filename); > + image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); > + fclose(f); > + > + return image; > +} > + > /** > * igt_paint_image: > * @cr: cairo drawing context > @@ -601,11 +613,8 @@ void igt_paint_image(cairo_t *cr, const char *filename, > cairo_surface_t *image; > int img_width, img_height; > double scale_x, scale_y; > - FILE* f; > - > - f = igt_fopen_data(filename); > > - image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); > + image = igt_cairo_image_surface_create_from_png(filename); > igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS); > > img_width = cairo_image_surface_get_width(image); > @@ -624,8 +633,6 @@ void igt_paint_image(cairo_t *cr, const char *filename, > cairo_surface_destroy(image); > > cairo_restore(cr); > - > - fclose(f); > } > > /** > @@ -877,7 +884,7 @@ unsigned int igt_create_image_fb(int fd, int width, int height, > uint32_t fb_id; > cairo_t *cr; > > - image = cairo_image_surface_create_from_png(filename); > + image = igt_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); > diff --git a/lib/igt_fb.h b/lib/igt_fb.h > index a193a1e7572d..3f549036abc5 100644 > --- a/lib/igt_fb.h > +++ b/lib/igt_fb.h > @@ -136,6 +136,7 @@ uint64_t igt_fb_tiling_to_mod(uint64_t tiling); > > /* cairo-based painting */ > cairo_surface_t *igt_get_cairo_surface(int fd, struct igt_fb *fb); > +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename); > cairo_t *igt_get_cairo_ctx(int fd, struct igt_fb *fb); > void igt_paint_color(cairo_t *cr, int x, int y, int w, int h, > double r, double g, double b); > -- > 2.13.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Fri, Sep 22, 2017 at 12:52:59PM +0300, Petri Latvala wrote: > On Thu, Sep 21, 2017 at 05:39:30PM +0300, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Raw usage of cairo_image_surface_create_from_png() doesn't work > > since it doesn't know about IGT_DATADIR and IGT_SRCDIR. Let's extract > > the helper from igt_paint_image() that uses igt_fopen_data() + > > cairo_image_surface_create_from_png_stream() and call it > > igt_cairo_image_surface_create_from_png_file(). > > > s/from_png_file/from_png/ Argh, still one left. My brain kept subconsciously adding the _file() (to match the _stream() I suppose). In fact at one point I was scratching my head for quite a while wondering why it wasn't compiling... > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Thanks for fixing this. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92248 > (Not sure if this patch fixes it yet or if CI switch to make install -deployment is also needed) Hmm. The asserts I see there seem to be about display commits failing. > kms_plane_fitting doesn't seem to have a separate bug report. I'm pretty sure such a bug report did exist in the past. But I wasn't able to find it either. I guess it was closed for some reason. > > Reviewed-by: Petri Latvala <petri.latvala@intel.com> Thanks. > > > > > > > > --- > > lib/igt_fb.c | 21 ++++++++++++++------- > > lib/igt_fb.h | 1 + > > 2 files changed, 15 insertions(+), 7 deletions(-) > > > > diff --git a/lib/igt_fb.c b/lib/igt_fb.c > > index 95434a699dcf..d4eaed71acef 100644 > > --- a/lib/igt_fb.c > > +++ b/lib/igt_fb.c > > @@ -583,6 +583,18 @@ stdio_read_func(void *closure, unsigned char* data, unsigned int size) > > return CAIRO_STATUS_SUCCESS; > > } > > > > +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename) > > +{ > > + cairo_surface_t *image; > > + FILE *f; > > + > > + f = igt_fopen_data(filename); > > + image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); > > + fclose(f); > > + > > + return image; > > +} > > + > > /** > > * igt_paint_image: > > * @cr: cairo drawing context > > @@ -601,11 +613,8 @@ void igt_paint_image(cairo_t *cr, const char *filename, > > cairo_surface_t *image; > > int img_width, img_height; > > double scale_x, scale_y; > > - FILE* f; > > - > > - f = igt_fopen_data(filename); > > > > - image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); > > + image = igt_cairo_image_surface_create_from_png(filename); > > igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS); > > > > img_width = cairo_image_surface_get_width(image); > > @@ -624,8 +633,6 @@ void igt_paint_image(cairo_t *cr, const char *filename, > > cairo_surface_destroy(image); > > > > cairo_restore(cr); > > - > > - fclose(f); > > } > > > > /** > > @@ -877,7 +884,7 @@ unsigned int igt_create_image_fb(int fd, int width, int height, > > uint32_t fb_id; > > cairo_t *cr; > > > > - image = cairo_image_surface_create_from_png(filename); > > + image = igt_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); > > diff --git a/lib/igt_fb.h b/lib/igt_fb.h > > index a193a1e7572d..3f549036abc5 100644 > > --- a/lib/igt_fb.h > > +++ b/lib/igt_fb.h > > @@ -136,6 +136,7 @@ uint64_t igt_fb_tiling_to_mod(uint64_t tiling); > > > > /* cairo-based painting */ > > cairo_surface_t *igt_get_cairo_surface(int fd, struct igt_fb *fb); > > +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename); > > cairo_t *igt_get_cairo_ctx(int fd, struct igt_fb *fb); > > void igt_paint_color(cairo_t *cr, int x, int y, int w, int h, > > double r, double g, double b); > > -- > > 2.13.5 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Fri, Sep 22, 2017 at 03:05:44PM +0300, Ville Syrjälä wrote: > On Fri, Sep 22, 2017 at 12:52:59PM +0300, Petri Latvala wrote: > > On Thu, Sep 21, 2017 at 05:39:30PM +0300, Ville Syrjala wrote: > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > Raw usage of cairo_image_surface_create_from_png() doesn't work > > > since it doesn't know about IGT_DATADIR and IGT_SRCDIR. Let's extract > > > the helper from igt_paint_image() that uses igt_fopen_data() + > > > cairo_image_surface_create_from_png_stream() and call it > > > igt_cairo_image_surface_create_from_png_file(). > > > > > > s/from_png_file/from_png/ > > Argh, still one left. My brain kept subconsciously adding the _file() > (to match the _stream() I suppose). In fact at one point I was scratching > my head for quite a while wondering why it wasn't compiling... > > > > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Thanks for fixing this. > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92248 > > (Not sure if this patch fixes it yet or if CI switch to make install -deployment is also needed) > > Hmm. The asserts I see there seem to be about display commits failing. Oh, gah. The bug report has changed meaning. I was looking at the original description that had Failed assertion: cairo_surface_status(image) == CAIRO_STATUS_SUCCESS > > > kms_plane_fitting doesn't seem to have a separate bug report. > > I'm pretty sure such a bug report did exist in the past. But I > wasn't able to find it either. I guess it was closed for some reason. (For those following along, I did search for kms_panel_fitting too, not just that brainfart of a misname.) I suppose kms_panel_fitting failure is bundled up in #92248 along with kms_plane_scaling.
diff --git a/lib/igt_fb.c b/lib/igt_fb.c index 95434a699dcf..d4eaed71acef 100644 --- a/lib/igt_fb.c +++ b/lib/igt_fb.c @@ -583,6 +583,18 @@ stdio_read_func(void *closure, unsigned char* data, unsigned int size) return CAIRO_STATUS_SUCCESS; } +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename) +{ + cairo_surface_t *image; + FILE *f; + + f = igt_fopen_data(filename); + image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); + fclose(f); + + return image; +} + /** * igt_paint_image: * @cr: cairo drawing context @@ -601,11 +613,8 @@ void igt_paint_image(cairo_t *cr, const char *filename, cairo_surface_t *image; int img_width, img_height; double scale_x, scale_y; - FILE* f; - - f = igt_fopen_data(filename); - image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); + image = igt_cairo_image_surface_create_from_png(filename); igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS); img_width = cairo_image_surface_get_width(image); @@ -624,8 +633,6 @@ void igt_paint_image(cairo_t *cr, const char *filename, cairo_surface_destroy(image); cairo_restore(cr); - - fclose(f); } /** @@ -877,7 +884,7 @@ unsigned int igt_create_image_fb(int fd, int width, int height, uint32_t fb_id; cairo_t *cr; - image = cairo_image_surface_create_from_png(filename); + image = igt_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); diff --git a/lib/igt_fb.h b/lib/igt_fb.h index a193a1e7572d..3f549036abc5 100644 --- a/lib/igt_fb.h +++ b/lib/igt_fb.h @@ -136,6 +136,7 @@ uint64_t igt_fb_tiling_to_mod(uint64_t tiling); /* cairo-based painting */ cairo_surface_t *igt_get_cairo_surface(int fd, struct igt_fb *fb); +cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename); cairo_t *igt_get_cairo_ctx(int fd, struct igt_fb *fb); void igt_paint_color(cairo_t *cr, int x, int y, int w, int h, double r, double g, double b);