Mesa (master): kmsro: Add support for V3D.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 26 22:12:31 UTC 2019


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

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Apr  3 15:40:22 2019 -0700

kmsro: Add support for V3D.

Like vc4, we expect to have SOCs with various displays that have a single
V3D instance for rendering.

v2: Add v3d to the list of drivers that make enabling kmsro valid.

Acked-by: Rob Clark <robdclark at chromium.org>

---

 meson.build                                     |  2 +-
 src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c | 13 +++++++++++++
 src/gallium/winsys/kmsro/drm/meson.build        |  3 +++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 0e8aa25d336..58d383749d3 100644
--- a/meson.build
+++ b/meson.build
@@ -217,7 +217,7 @@ endif
 if with_dri_i915 and with_gallium_i915
   error('Only one i915 provider can be built')
 endif
-if with_gallium_kmsro and not (with_gallium_vc4 or with_gallium_etnaviv or with_gallium_freedreno or with_gallium_panfrost or with_gallium_lima)
+if with_gallium_kmsro and not (with_gallium_v3d or with_gallium_vc4 or with_gallium_etnaviv or with_gallium_freedreno or with_gallium_panfrost or with_gallium_lima)
   error('kmsro driver requires one or more renderonly drivers (vc4, etnaviv, freedreno, panfrost, lima)')
 endif
 if with_gallium_tegra and not with_gallium_nouveau
diff --git a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c
index 4869e6329f9..3a452f91315 100644
--- a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c
+++ b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c
@@ -26,6 +26,7 @@
 #include <unistd.h>
 
 #include "kmsro_drm_public.h"
+#include "v3d/drm/v3d_drm_public.h"
 #include "vc4/drm/vc4_drm_public.h"
 #include "etnaviv/drm/etnaviv_drm_public.h"
 #include "freedreno/drm/freedreno_drm_public.h"
@@ -109,5 +110,17 @@ struct pipe_screen *kmsro_drm_screen_create(int fd)
    }
 #endif
 
+#if defined(GALLIUM_V3D)
+   ro.gpu_fd = drmOpenWithType("v3d", NULL, DRM_NODE_RENDER);
+   if (ro.gpu_fd >= 0) {
+      ro.create_for_resource = renderonly_create_kms_dumb_buffer_for_resource,
+      screen = v3d_drm_screen_create_renderonly(&ro);
+      if (!screen)
+         close(ro.gpu_fd);
+
+      return screen;
+   }
+#endif
+
    return screen;
 }
diff --git a/src/gallium/winsys/kmsro/drm/meson.build b/src/gallium/winsys/kmsro/drm/meson.build
index 02064025b4d..13ed5a0ea43 100644
--- a/src/gallium/winsys/kmsro/drm/meson.build
+++ b/src/gallium/winsys/kmsro/drm/meson.build
@@ -25,6 +25,9 @@ endif
 if with_gallium_lima
   kmsro_c_args += '-DGALLIUM_LIMA'
 endif
+if with_gallium_v3d
+  kmsro_c_args += '-DGALLIUM_V3D'
+endif
 if with_gallium_vc4
   kmsro_c_args += '-DGALLIUM_VC4'
 endif




More information about the mesa-commit mailing list