summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorGert Wollny <[email protected]>2019-04-10 13:54:14 +0200
committerGert Wollny <[email protected]>2019-06-20 08:50:38 +0200
commit30eb1fdc51d96d443a755138acc425da9e949466 (patch)
tree5f72b34b9ff2f3b47358b52ab911bf90be25381b /src/gallium
parentcf800998af2b3d57beff972d7e154db6d0944b21 (diff)
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 <[email protected]> Reviewed-by: Emil Velikov <[email protected]> (v1) Reviewed-by: Gurchetan Singh <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c1
-rw-r--r--src/gallium/auxiliary/target-helpers/drm_helper.h8
-rw-r--r--src/gallium/auxiliary/target-helpers/drm_helper_public.h1
-rw-r--r--src/gallium/auxiliary/target-helpers/inline_sw_helper.h2
-rw-r--r--src/gallium/auxiliary/target-helpers/sw_helper.h2
-rw-r--r--src/gallium/drivers/virgl/virgl_public.h3
-rw-r--r--src/gallium/drivers/virgl/virgl_screen.c2
-rw-r--r--src/gallium/winsys/virgl/drm/virgl_drm_public.h2
-rw-r--r--src/gallium/winsys/virgl/drm/virgl_drm_winsys.c4
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);