From: Rob Herring Date: Fri, 25 Jan 2019 16:39:40 +0000 (-0600) Subject: kmsro: Add lima renderonly support X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b1da1946c75bdf5d6bd27bfcec3354028808aacb;p=mesa.git kmsro: Add lima renderonly support Enable using lima for KMS renderonly. This still needs KMS driver name mapping to kmsro to be used automatically. Reviewed-by: Eric Anholt Signed-off-by: Rob Herring Signed-off-by: Qiang Yu --- diff --git a/meson.build b/meson.build index ae52ac137c0..0e8aa25d336 100644 --- a/meson.build +++ b/meson.build @@ -217,8 +217,8 @@ 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) - error('kmsro driver requires one or more renderonly drivers (vc4, etnaviv, freedreno, panfrost)') +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) + error('kmsro driver requires one or more renderonly drivers (vc4, etnaviv, freedreno, panfrost, lima)') endif if with_gallium_tegra and not with_gallium_nouveau error('tegra driver requires nouveau driver') diff --git a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c index 59f2c28a2eb..4869e6329f9 100644 --- a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c +++ b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c @@ -30,6 +30,7 @@ #include "etnaviv/drm/etnaviv_drm_public.h" #include "freedreno/drm/freedreno_drm_public.h" #include "panfrost/drm/panfrost_drm_public.h" +#include "lima/drm/lima_drm_public.h" #include "xf86drm.h" #include "pipe/p_screen.h" @@ -96,7 +97,17 @@ struct pipe_screen *kmsro_drm_screen_create(int fd) } #endif +#if defined(GALLIUM_LIMA) + ro.gpu_fd = drmOpenWithType("lima", NULL, DRM_NODE_RENDER); + if (ro.gpu_fd >= 0) { + ro.create_for_resource = renderonly_create_kms_dumb_buffer_for_resource, + screen = lima_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 51246b68e34..02064025b4d 100644 --- a/src/gallium/winsys/kmsro/drm/meson.build +++ b/src/gallium/winsys/kmsro/drm/meson.build @@ -22,6 +22,9 @@ kmsro_c_args = [] if with_gallium_etnaviv kmsro_c_args += '-DGALLIUM_ETNAVIV' endif +if with_gallium_lima + kmsro_c_args += '-DGALLIUM_LIMA' +endif if with_gallium_vc4 kmsro_c_args += '-DGALLIUM_VC4' endif