From 853b4801f27fcb7ef15d3109d61e95397afa0282 Mon Sep 17 00:00:00 2001 From: Lucas Fryzek Date: Thu, 2 Mar 2023 14:48:14 -0500 Subject: [PATCH] i915: Add support for `get_screen_fd` Reviewed-by: Rob Clark Part-of: --- src/gallium/drivers/i915/i915_screen.c | 9 +++++++++ src/gallium/drivers/i915/i915_winsys.h | 5 +++++ src/gallium/winsys/i915/drm/i915_drm_winsys.c | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index 2530aa73494..1240da087e4 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -639,6 +639,14 @@ i915_destroy_screen(struct pipe_screen *screen) FREE(is); } +static int +i915_screen_get_fd(struct pipe_screen *screen) +{ + struct i915_screen *is = i915_screen(screen); + + return is->iws->get_fd(is->iws); +} + /** * Create a new i915_screen object */ @@ -681,6 +689,7 @@ i915_screen_create(struct i915_winsys *iws) is->base.get_name = i915_get_name; is->base.get_vendor = i915_get_vendor; is->base.get_device_vendor = i915_get_device_vendor; + is->base.get_screen_fd = i915_screen_get_fd; is->base.get_param = i915_get_param; is->base.get_shader_param = i915_get_shader_param; is->base.get_paramf = i915_get_paramf; diff --git a/src/gallium/drivers/i915/i915_winsys.h b/src/gallium/drivers/i915/i915_winsys.h index 1c7a501ecf0..7d99ce98804 100644 --- a/src/gallium/drivers/i915/i915_winsys.h +++ b/src/gallium/drivers/i915/i915_winsys.h @@ -236,6 +236,11 @@ struct i915_winsys { * Destroy the winsys. */ void (*destroy)(struct i915_winsys *iws); + + /** + * Get FD if the winsys provides one + */ + int (*get_fd)(struct i915_winsys *iws); }; #endif diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.c b/src/gallium/winsys/i915/drm/i915_drm_winsys.c index 38110d347b5..e579ee2d16d 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_winsys.c +++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.c @@ -44,6 +44,14 @@ i915_drm_winsys_destroy(struct i915_winsys *iws) FREE(idws); } +static int +i915_drm_winsys_get_fd(struct i915_winsys *iws) +{ + struct i915_drm_winsys *idws = i915_drm_winsys(iws); + + return idws->fd; +} + struct i915_winsys * i915_drm_winsys_create(int drmFD) {