* [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb
@ 2014-07-11 14:09 Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 2/5] lib: Split the GTT mapping out of get_cairo_surface() Damien Lespiau
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-11 14:09 UTC (permalink / raw)
To: intel-gfx
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
lib/igt_fb.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/igt_fb.h b/lib/igt_fb.h
index 6d030e6..f5110d4 100644
--- a/lib/igt_fb.h
+++ b/lib/igt_fb.h
@@ -48,7 +48,6 @@ struct igt_fb {
uint32_t drm_format;
int width;
int height;
- int depth;
unsigned stride;
unsigned tiling;
unsigned size;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH i-g-t 2/5] lib: Split the GTT mapping out of get_cairo_surface()
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
@ 2014-07-11 14:09 ` Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 3/5] lib: NULLify ->cairo_surface once unmapped Damien Lespiau
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-11 14:09 UTC (permalink / raw)
To: intel-gfx
This is preparation work for when we need a different way to get a
linear buffer we can use with cairo.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
lib/igt_fb.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index f43af93..39a1f62 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -518,24 +518,28 @@ static cairo_format_t drm_format_to_cairo(uint32_t drm_format)
igt_fail(101);
}
-static void __destroy_cairo_surface(void *arg)
+static void destroy_cairo_surface__gtt(void *arg)
{
struct igt_fb *fb = arg;
munmap(cairo_image_surface_get_data(fb->cairo_surface), fb->size);
}
+static void create_cairo_surface__gtt(int fd, struct igt_fb *fb)
+{
+ fb->cairo_surface =
+ cairo_image_surface_create_for_data(gem_mmap(fd, fb->gem_handle, fb->size, PROT_READ | PROT_WRITE),
+ drm_format_to_cairo(fb->drm_format),
+ fb->width, fb->height, fb->stride);
+
+ cairo_surface_set_user_data(fb->cairo_surface,
+ (cairo_user_data_key_t *)create_cairo_surface__gtt,
+ fb, destroy_cairo_surface__gtt);
+}
+
static cairo_surface_t *get_cairo_surface(int fd, struct igt_fb *fb)
{
- if (fb->cairo_surface == NULL) {
- fb->cairo_surface =
- cairo_image_surface_create_for_data(gem_mmap(fd, fb->gem_handle, fb->size, PROT_READ | PROT_WRITE),
- drm_format_to_cairo(fb->drm_format),
- fb->width, fb->height, fb->stride);
-
- cairo_surface_set_user_data(fb->cairo_surface,
- (cairo_user_data_key_t *)get_cairo_surface,
- fb, __destroy_cairo_surface);
- }
+ if (fb->cairo_surface == NULL)
+ create_cairo_surface__gtt(fd, fb);
gem_set_domain(fd, fb->gem_handle,
I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH i-g-t 3/5] lib: NULLify ->cairo_surface once unmapped
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 2/5] lib: Split the GTT mapping out of get_cairo_surface() Damien Lespiau
@ 2014-07-11 14:09 ` Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 4/5] lib: Don't take a reference to the surface in get_cairo_surface() Damien Lespiau
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-11 14:09 UTC (permalink / raw)
To: intel-gfx
Just a matter of not leaving dangling pointers around.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
lib/igt_fb.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 39a1f62..83f4343 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -521,7 +521,9 @@ static cairo_format_t drm_format_to_cairo(uint32_t drm_format)
static void destroy_cairo_surface__gtt(void *arg)
{
struct igt_fb *fb = arg;
+
munmap(cairo_image_surface_get_data(fb->cairo_surface), fb->size);
+ fb->cairo_surface = NULL;
}
static void create_cairo_surface__gtt(int fd, struct igt_fb *fb)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH i-g-t 4/5] lib: Don't take a reference to the surface in get_cairo_surface()
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 2/5] lib: Split the GTT mapping out of get_cairo_surface() Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 3/5] lib: NULLify ->cairo_surface once unmapped Damien Lespiau
@ 2014-07-11 14:09 ` Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 5/5] testdisplay: Destroy the cairo context once the fb is painted Damien Lespiau
2014-07-29 11:16 ` [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
4 siblings, 0 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-11 14:09 UTC (permalink / raw)
To: intel-gfx
We don't need to keep a reference to the surface, the cairo context will
keep a reference to it until we destroy it.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
lib/igt_fb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 83f4343..d07af0d 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -547,7 +547,7 @@ static cairo_surface_t *get_cairo_surface(int fd, struct igt_fb *fb)
I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
igt_assert(cairo_surface_status(fb->cairo_surface) == CAIRO_STATUS_SUCCESS);
- return cairo_surface_reference(fb->cairo_surface);
+ return fb->cairo_surface;
}
/**
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH i-g-t 5/5] testdisplay: Destroy the cairo context once the fb is painted
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
` (2 preceding siblings ...)
2014-07-11 14:09 ` [PATCH i-g-t 4/5] lib: Don't take a reference to the surface in get_cairo_surface() Damien Lespiau
@ 2014-07-11 14:09 ` Damien Lespiau
2014-07-29 11:16 ` [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
4 siblings, 0 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-11 14:09 UTC (permalink / raw)
To: intel-gfx
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
tests/testdisplay.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 6d8fe3a..887105d 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -314,6 +314,8 @@ static void paint_output_info(struct connector *c, struct igt_fb *fb)
paint_image(cr, IGT_DATADIR"/pass.png");
igt_assert(!cairo_status(cr));
+
+ cairo_destroy(cr);
}
static void sighandler(int signo)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
` (3 preceding siblings ...)
2014-07-11 14:09 ` [PATCH i-g-t 5/5] testdisplay: Destroy the cairo context once the fb is painted Damien Lespiau
@ 2014-07-29 11:16 ` Damien Lespiau
4 siblings, 0 replies; 6+ messages in thread
From: Damien Lespiau @ 2014-07-29 11:16 UTC (permalink / raw)
To: intel-gfx
Pushed those, before I forget.
--
Damien
On Fri, Jul 11, 2014 at 03:09:01PM +0100, Damien Lespiau wrote:
> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
> ---
> lib/igt_fb.h | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/lib/igt_fb.h b/lib/igt_fb.h
> index 6d030e6..f5110d4 100644
> --- a/lib/igt_fb.h
> +++ b/lib/igt_fb.h
> @@ -48,7 +48,6 @@ struct igt_fb {
> uint32_t drm_format;
> int width;
> int height;
> - int depth;
> unsigned stride;
> unsigned tiling;
> unsigned size;
> --
> 1.8.3.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-07-29 11:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-11 14:09 [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 2/5] lib: Split the GTT mapping out of get_cairo_surface() Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 3/5] lib: NULLify ->cairo_surface once unmapped Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 4/5] lib: Don't take a reference to the surface in get_cairo_surface() Damien Lespiau
2014-07-11 14:09 ` [PATCH i-g-t 5/5] testdisplay: Destroy the cairo context once the fb is painted Damien Lespiau
2014-07-29 11:16 ` [PATCH i-g-t 1/5] lib: Remove unused field from struct igt_fb Damien Lespiau
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox