From 7e069832a05ebd5948d3ef95d3b5028156c829b3 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 3 Apr 2019 15:40:22 -0700 Subject: [PATCH] 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 --- 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 #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 -- 2.30.2