diff mbox

[4/6] dri/intel: Add intel_fd_for_region

Message ID 1383261196-25093-5-git-send-email-keithp@keithp.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Keith Packard Oct. 31, 2013, 11:13 p.m. UTC
Returns a prime file descriptor for the specified region.

Signed-off-by: Keith Packard <keithp@keithp.com>
---
 src/mesa/drivers/dri/i915/intel_regions.c | 13 +++++++++++++
 src/mesa/drivers/dri/i915/intel_regions.h |  4 ++++
 src/mesa/drivers/dri/i965/intel_regions.c | 13 +++++++++++++
 src/mesa/drivers/dri/i965/intel_regions.h |  4 ++++
 4 files changed, 34 insertions(+)

Comments

Kristian Høgsberg Nov. 1, 2013, 5:58 p.m. UTC | #1
On Thu, Oct 31, 2013 at 04:13:14PM -0700, Keith Packard wrote:
> Returns a prime file descriptor for the specified region.
> 
> Signed-off-by: Keith Packard <keithp@keithp.com>
> ---
>  src/mesa/drivers/dri/i915/intel_regions.c | 13 +++++++++++++
>  src/mesa/drivers/dri/i915/intel_regions.h |  4 ++++
>  src/mesa/drivers/dri/i965/intel_regions.c | 13 +++++++++++++
>  src/mesa/drivers/dri/i965/intel_regions.h |  4 ++++
>  4 files changed, 34 insertions(+)

Makes sense.  We should use that in intel_query_image() instead of
calling drm_intel_bo_gem_export_to_prime() directly on
image->region->bo.

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>

> diff --git a/src/mesa/drivers/dri/i915/intel_regions.c b/src/mesa/drivers/dri/i915/intel_regions.c
> index 9f5b89e..bac997d 100644
> --- a/src/mesa/drivers/dri/i915/intel_regions.c
> +++ b/src/mesa/drivers/dri/i915/intel_regions.c
> @@ -238,6 +238,19 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
>     return region;
>  }
>  
> +int
> +intel_fd_for_region(struct intel_screen *screen,
> +                    struct intel_region *region)
> +{
> +   int  fd;
> +   int  ret;
> +
> +   ret = drm_intel_bo_gem_export_to_prime(region->bo, &fd);
> +   if (ret < 0)
> +      return ret;
> +   return fd;
> +}
> +
>  void
>  intel_region_reference(struct intel_region **dst, struct intel_region *src)
>  {
> diff --git a/src/mesa/drivers/dri/i915/intel_regions.h b/src/mesa/drivers/dri/i915/intel_regions.h
> index 6bc4a42..84c013a 100644
> --- a/src/mesa/drivers/dri/i915/intel_regions.h
> +++ b/src/mesa/drivers/dri/i915/intel_regions.h
> @@ -93,6 +93,10 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
>                            GLuint width, GLuint height, GLuint pitch,
>                            GLuint size, int fd, const char *name);
>  
> +int
> +intel_fd_for_region(struct intel_screen *screen,
> +                    struct intel_region *region);
> +
>  bool
>  intel_region_flink(struct intel_region *region, uint32_t *name);
>  
> diff --git a/src/mesa/drivers/dri/i965/intel_regions.c b/src/mesa/drivers/dri/i965/intel_regions.c
> index 3920f4f..2e70326 100644
> --- a/src/mesa/drivers/dri/i965/intel_regions.c
> +++ b/src/mesa/drivers/dri/i965/intel_regions.c
> @@ -238,6 +238,19 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
>     return region;
>  }
>  
> +int
> +intel_fd_for_region(struct intel_screen *screen,
> +                    struct intel_region *region)
> +{
> +   int  fd;
> +   int  ret;
> +
> +   ret = drm_intel_bo_gem_export_to_prime(region->bo, &fd);
> +   if (ret < 0)
> +      return ret;
> +   return fd;
> +}
> +
>  void
>  intel_region_reference(struct intel_region **dst, struct intel_region *src)
>  {
> diff --git a/src/mesa/drivers/dri/i965/intel_regions.h b/src/mesa/drivers/dri/i965/intel_regions.h
> index 05dfef3..f471b94 100644
> --- a/src/mesa/drivers/dri/i965/intel_regions.h
> +++ b/src/mesa/drivers/dri/i965/intel_regions.h
> @@ -95,6 +95,10 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
>                            GLuint size,
>                            int fd, const char *name);
>  
> +int
> +intel_fd_for_region(struct intel_screen *screen,
> +                    struct intel_region *region);
> +
>  bool
>  intel_region_flink(struct intel_region *region, uint32_t *name);
>  
> -- 
> 1.8.4.2
> 
> 
> ------------------------------------------------------------------------------
> Android is increasing in popularity, but the open development platform that
> developers love is also attractive to malware creators. Download this white
> paper to learn more about secure code signing practices that can help keep
> Android apps secure.
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> --
> _______________________________________________
> Dri-devel mailing list
> Dri-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/src/mesa/drivers/dri/i915/intel_regions.c b/src/mesa/drivers/dri/i915/intel_regions.c
index 9f5b89e..bac997d 100644
--- a/src/mesa/drivers/dri/i915/intel_regions.c
+++ b/src/mesa/drivers/dri/i915/intel_regions.c
@@ -238,6 +238,19 @@  intel_region_alloc_for_fd(struct intel_screen *screen,
    return region;
 }
 
+int
+intel_fd_for_region(struct intel_screen *screen,
+                    struct intel_region *region)
+{
+   int  fd;
+   int  ret;
+
+   ret = drm_intel_bo_gem_export_to_prime(region->bo, &fd);
+   if (ret < 0)
+      return ret;
+   return fd;
+}
+
 void
 intel_region_reference(struct intel_region **dst, struct intel_region *src)
 {
diff --git a/src/mesa/drivers/dri/i915/intel_regions.h b/src/mesa/drivers/dri/i915/intel_regions.h
index 6bc4a42..84c013a 100644
--- a/src/mesa/drivers/dri/i915/intel_regions.h
+++ b/src/mesa/drivers/dri/i915/intel_regions.h
@@ -93,6 +93,10 @@  intel_region_alloc_for_fd(struct intel_screen *screen,
                           GLuint width, GLuint height, GLuint pitch,
                           GLuint size, int fd, const char *name);
 
+int
+intel_fd_for_region(struct intel_screen *screen,
+                    struct intel_region *region);
+
 bool
 intel_region_flink(struct intel_region *region, uint32_t *name);
 
diff --git a/src/mesa/drivers/dri/i965/intel_regions.c b/src/mesa/drivers/dri/i965/intel_regions.c
index 3920f4f..2e70326 100644
--- a/src/mesa/drivers/dri/i965/intel_regions.c
+++ b/src/mesa/drivers/dri/i965/intel_regions.c
@@ -238,6 +238,19 @@  intel_region_alloc_for_fd(struct intel_screen *screen,
    return region;
 }
 
+int
+intel_fd_for_region(struct intel_screen *screen,
+                    struct intel_region *region)
+{
+   int  fd;
+   int  ret;
+
+   ret = drm_intel_bo_gem_export_to_prime(region->bo, &fd);
+   if (ret < 0)
+      return ret;
+   return fd;
+}
+
 void
 intel_region_reference(struct intel_region **dst, struct intel_region *src)
 {
diff --git a/src/mesa/drivers/dri/i965/intel_regions.h b/src/mesa/drivers/dri/i965/intel_regions.h
index 05dfef3..f471b94 100644
--- a/src/mesa/drivers/dri/i965/intel_regions.h
+++ b/src/mesa/drivers/dri/i965/intel_regions.h
@@ -95,6 +95,10 @@  intel_region_alloc_for_fd(struct intel_screen *screen,
                           GLuint size,
                           int fd, const char *name);
 
+int
+intel_fd_for_region(struct intel_screen *screen,
+                    struct intel_region *region);
+
 bool
 intel_region_flink(struct intel_region *region, uint32_t *name);