summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-10-19 16:51:30 -0400
committerAlyssa Rosenzweig <[email protected]>2019-10-26 13:17:42 +0000
commit4949876dd04e8facc4ba3fd06c3b057295591a15 (patch)
treec93f7fdfe981482b83c1f688aecb238978611ce9 /src
parentace5138548c9833dacad14482ecadaa672884611 (diff)
pipe-loader: Add kmsro pipe_loader target
kmsro is used by numerous embedded GPUs for a common winsys abstraction. Let's add support for it for the dynamic pipe loader, so clover can probe on these drivers. We build the target with Panfrost. When other drivers need kmsro+clover, we can revisit the build system part; my mesonfu is wanting. Signed-off-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Christian Gmeiner <[email protected]> Acked-by: Karol Herbst <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/targets/pipe-loader/meson.build1
-rw-r--r--src/gallium/targets/pipe-loader/pipe_kmsro.c21
2 files changed, 22 insertions, 0 deletions
diff --git a/src/gallium/targets/pipe-loader/meson.build b/src/gallium/targets/pipe-loader/meson.build
index 8a6282dceb6..df6d223ab2d 100644
--- a/src/gallium/targets/pipe-loader/meson.build
+++ b/src/gallium/targets/pipe-loader/meson.build
@@ -54,6 +54,7 @@ pipe_loaders = [
[with_gallium_r600, 'r600', driver_r600, []],
[with_gallium_radeonsi, 'radeonsi', [driver_radeonsi, idep_xmlconfig], []],
[with_gallium_freedreno, 'msm', driver_freedreno, []],
+ [with_gallium_panfrost, 'kmsro', [driver_kmsro, driver_panfrost], []],
[with_gallium_svga, 'vmwgfx', driver_svga, []],
[with_gallium_softpipe, 'swrast', [driver_swrast, driver_swr], [libwsw, libws_null]],
]
diff --git a/src/gallium/targets/pipe-loader/pipe_kmsro.c b/src/gallium/targets/pipe-loader/pipe_kmsro.c
new file mode 100644
index 00000000000..1c1a8d24561
--- /dev/null
+++ b/src/gallium/targets/pipe-loader/pipe_kmsro.c
@@ -0,0 +1,21 @@
+
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "kmsro/drm/kmsro_drm_public.h"
+
+static struct pipe_screen *
+create_screen(int fd, const struct pipe_screen_config *config)
+{
+ struct pipe_screen *screen;
+
+ screen = kmsro_drm_screen_create(fd, config);
+ if (!screen)
+ return NULL;
+
+ screen = debug_screen_wrap(screen);
+
+ return screen;
+}
+
+PUBLIC
+DRM_DRIVER_DESCRIPTOR("kmsro", NULL, create_screen)