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(+)
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);