svga: Add support for `get_screen_fd`
authorLucas Fryzek <lfryzek@igalia.com>
Thu, 2 Mar 2023 19:48:56 +0000 (14:48 -0500)
committerMarge Bot <emma+marge@anholt.net>
Fri, 31 Mar 2023 13:39:06 +0000 (13:39 +0000)
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21654>

src/gallium/drivers/svga/svga_screen.c
src/gallium/drivers/svga/svga_winsys.h
src/gallium/winsys/svga/drm/vmw_screen_svga.c

index f70b406..eac5475 100644 (file)
@@ -1046,6 +1046,15 @@ svga_destroy_screen( struct pipe_screen *screen )
 }
 
 
+static int
+svga_screen_get_fd( struct pipe_screen *screen )
+{
+   struct svga_winsys_screen *sws = svga_screen(screen)->sws;
+
+   return sws->get_fd(sws);
+}
+
+
 /**
  * Create a new svga_screen object
  */
@@ -1084,6 +1093,7 @@ svga_screen_create(struct svga_winsys_screen *sws)
    screen->get_name = svga_get_name;
    screen->get_vendor = svga_get_vendor;
    screen->get_device_vendor = svga_get_vendor; // TODO actual device vendor
+   screen->get_screen_fd = svga_screen_get_fd;
    screen->get_param = svga_get_param;
    screen->get_shader_param = svga_get_shader_param;
    screen->get_compiler_options = svga_get_compiler_options;
index 6818c29..fce1128 100644 (file)
@@ -505,6 +505,9 @@ struct svga_winsys_screen
    SVGA3dHardwareVersion
    (*get_hw_version)(struct svga_winsys_screen *sws);
 
+   int
+   (*get_fd)(struct svga_winsys_screen *sws);
+
    boolean
    (*get_cap)(struct svga_winsys_screen *sws,
               SVGA3dDevCapIndex index,
index db7cdcc..b36b42e 100644 (file)
@@ -875,11 +875,20 @@ vmw_svga_winsys_stats_time_pop_noop(struct svga_winsys_screen *sws)
    /* noop */
 }
 
+static int
+vmw_svga_winsys_get_fd(struct svga_winsys_screen *sws)
+{
+   struct vmw_winsys_screen *const vws = vmw_winsys_screen(sws);
+
+   return vws->ioctl.drm_fd;
+}
+
 boolean
 vmw_winsys_screen_init_svga(struct vmw_winsys_screen *vws)
 {
    vws->base.destroy = vmw_svga_winsys_destroy;
    vws->base.get_hw_version = vmw_svga_winsys_get_hw_version;
+   vws->base.get_fd = vmw_svga_winsys_get_fd;
    vws->base.get_cap = vmw_svga_winsys_get_cap;
    vws->base.context_create = vmw_svga_winsys_context_create;
    vws->base.surface_create = vmw_svga_winsys_surface_create;