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 <eric@anholt.net>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
This commit is contained in:
Rob Herring 2019-01-25 10:39:40 -06:00 committed by Qiang Yu
parent 92d7ca4b1c
commit b1da1946c7
3 changed files with 16 additions and 2 deletions

View File

@ -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')

View File

@ -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;
}

View File

@ -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