Mesa (master): gallium/virgl: Add code path for virgl to read driconf

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 20 07:18:47 UTC 2019


Module: Mesa
Branch: master
Commit: 30eb1fdc51d96d443a755138acc425da9e949466
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=30eb1fdc51d96d443a755138acc425da9e949466

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Wed Apr 10 13:54:14 2019 +0200

gallium/virgl: Add code path for virgl to read driconf

This works only for the drm variant of virgl and not for the vtest
variant.

v2: Rebase, replace the configuration query function by a pointer to
    the configuration data.

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com> (v1)
Reviewed-by: Gurchetan Singh <gurchetansingh at chromium.org>

---

 src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c      | 1 +
 src/gallium/auxiliary/target-helpers/drm_helper.h        | 8 +++++++-
 src/gallium/auxiliary/target-helpers/drm_helper_public.h | 1 +
 src/gallium/auxiliary/target-helpers/inline_sw_helper.h  | 2 +-
 src/gallium/auxiliary/target-helpers/sw_helper.h         | 2 +-
 src/gallium/drivers/virgl/virgl_public.h                 | 3 ++-
 src/gallium/drivers/virgl/virgl_screen.c                 | 2 +-
 src/gallium/winsys/virgl/drm/virgl_drm_public.h          | 2 +-
 src/gallium/winsys/virgl/drm/virgl_drm_winsys.c          | 4 ++--
 9 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
index 9d75a9868e2..960d63b2c31 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
@@ -107,6 +107,7 @@ static const struct drm_driver_descriptor driver_descriptors[] = {
     {
         .driver_name = "virtio_gpu",
         .create_screen = pipe_virgl_create_screen,
+        .driconf_xml = &virgl_driconf_xml,
     },
     {
         .driver_name = "v3d",
diff --git a/src/gallium/auxiliary/target-helpers/drm_helper.h b/src/gallium/auxiliary/target-helpers/drm_helper.h
index 6bdd1a008db..6c5902d3c27 100644
--- a/src/gallium/auxiliary/target-helpers/drm_helper.h
+++ b/src/gallium/auxiliary/target-helpers/drm_helper.h
@@ -249,10 +249,14 @@ pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config)
 {
    struct pipe_screen *screen;
 
-   screen = virgl_drm_screen_create(fd);
+   screen = virgl_drm_screen_create(fd, config);
    return screen ? debug_screen_wrap(screen) : NULL;
 }
 
+const char *virgl_driconf_xml =
+      #include "virgl/virgl_driinfo.h"
+      ;
+
 #else
 
 struct pipe_screen *
@@ -262,6 +266,8 @@ pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config)
    return NULL;
 }
 
+const char *virgl_driconf_xml = NULL;
+
 #endif
 
 #ifdef GALLIUM_VC4
diff --git a/src/gallium/auxiliary/target-helpers/drm_helper_public.h b/src/gallium/auxiliary/target-helpers/drm_helper_public.h
index a3cb9279fd5..99018f0df88 100644
--- a/src/gallium/auxiliary/target-helpers/drm_helper_public.h
+++ b/src/gallium/auxiliary/target-helpers/drm_helper_public.h
@@ -7,6 +7,7 @@ struct pipe_screen_config;
 const char *iris_driconf_xml;
 const char *radeonsi_driconf_xml;
 const char *v3d_driconf_xml;
+const char *virgl_driconf_xml;
 
 struct pipe_screen *
 pipe_i915_create_screen(int fd, const struct pipe_screen_config *config);
diff --git a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
index 5bb77a5bde2..36146cf1e37 100644
--- a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
+++ b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
@@ -41,7 +41,7 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
    if (screen == NULL && strcmp(driver, "virpipe") == 0) {
       struct virgl_winsys *vws;
       vws = virgl_vtest_winsys_wrap(winsys);
-      screen = virgl_create_screen(vws);
+      screen = virgl_create_screen(vws, NULL);
    }
 #endif
 
diff --git a/src/gallium/auxiliary/target-helpers/sw_helper.h b/src/gallium/auxiliary/target-helpers/sw_helper.h
index 5e4e9f78af6..953412a3ff5 100644
--- a/src/gallium/auxiliary/target-helpers/sw_helper.h
+++ b/src/gallium/auxiliary/target-helpers/sw_helper.h
@@ -43,7 +43,7 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
    if (screen == NULL && strcmp(driver, "virpipe") == 0) {
       struct virgl_winsys *vws;
       vws = virgl_vtest_winsys_wrap(winsys);
-      screen = virgl_create_screen(vws);
+      screen = virgl_create_screen(vws, NULL);
    }
 #endif
 
diff --git a/src/gallium/drivers/virgl/virgl_public.h b/src/gallium/drivers/virgl/virgl_public.h
index a3ea560df7b..36bfb56eb3d 100644
--- a/src/gallium/drivers/virgl/virgl_public.h
+++ b/src/gallium/drivers/virgl/virgl_public.h
@@ -25,7 +25,8 @@
 
 struct pipe_screen;
 struct virgl_winsys;
+struct pipe_screen_config;
 
 struct pipe_screen *
-virgl_create_screen(struct virgl_winsys *vws);
+virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *config);
 #endif
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index 5d4374bf3dd..7d09ecc1bd8 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -822,7 +822,7 @@ fixup_readback_format(union virgl_caps *caps)
 }
 
 struct pipe_screen *
-virgl_create_screen(struct virgl_winsys *vws)
+virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *config)
 {
    struct virgl_screen *screen = CALLOC_STRUCT(virgl_screen);
 
diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_public.h b/src/gallium/winsys/virgl/drm/virgl_drm_public.h
index f70f0e50448..32df3945ff4 100644
--- a/src/gallium/winsys/virgl/drm/virgl_drm_public.h
+++ b/src/gallium/winsys/virgl/drm/virgl_drm_public.h
@@ -25,6 +25,6 @@
 
 struct pipe_screen;
 
-struct pipe_screen *virgl_drm_screen_create(int fd);
+struct pipe_screen *virgl_drm_screen_create(int fd, const struct pipe_screen_config *config);
 
 #endif
diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
index 41e47837acf..9eec92f5736 100644
--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
@@ -1057,7 +1057,7 @@ static int compare_fd(void *key1, void *key2)
 }
 
 struct pipe_screen *
-virgl_drm_screen_create(int fd)
+virgl_drm_screen_create(int fd, const struct pipe_screen_config *config)
 {
    struct pipe_screen *pscreen = NULL;
 
@@ -1081,7 +1081,7 @@ virgl_drm_screen_create(int fd)
          goto unlock;
       }
 
-      pscreen = virgl_create_screen(vws);
+      pscreen = virgl_create_screen(vws, config);
       if (pscreen) {
          util_hash_table_set(fd_tab, intptr_to_pointer(dup_fd), pscreen);
 




More information about the mesa-commit mailing list