The vc4 driver can do prime sharing to many different KMS-only devices, such as the various tinydrm drivers for SPI-attached displays. Rename the driver away from "pl111" to represent what it will actually support: various sorts of KMS displays with the renderonly layer used to attach a GPU. Reviewed-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com> Acked-by: Emil Velikov <emil.velikov@collabora.com>tags/19.0-branchpoint
@@ -352,7 +352,7 @@ matrix: | |||
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl" | |||
- DRI_DRIVERS="" | |||
- GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx-bellagio --disable-gallium-osmesa" | |||
- GALLIUM_DRIVERS="i915,nouveau,pl111,r300,r600,freedreno,svga,swrast,v3d,vc4,virgl,etnaviv,imx" | |||
- GALLIUM_DRIVERS="i915,nouveau,kmsro,r300,r600,freedreno,svga,swrast,v3d,vc4,virgl,etnaviv,imx" | |||
- VULKAN_DRIVERS="" | |||
- LIBUNWIND_FLAGS="--enable-libunwind" | |||
addons: |
@@ -24,7 +24,7 @@ | |||
# BOARD_GPU_DRIVERS should be defined. The valid values are | |||
# | |||
# classic drivers: i915 i965 | |||
# gallium drivers: swrast freedreno i915g nouveau pl111 r300g r600g radeonsi vc4 virgl vmwgfx etnaviv imx | |||
# gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv imx | |||
# | |||
# The main target is libGLES_mesa. For each classic driver enabled, a DRI | |||
# module will also be built. DRI modules will be loaded by libGLES_mesa. | |||
@@ -52,7 +52,7 @@ gallium_drivers := \ | |||
freedreno.HAVE_GALLIUM_FREEDRENO \ | |||
i915g.HAVE_GALLIUM_I915 \ | |||
nouveau.HAVE_GALLIUM_NOUVEAU \ | |||
pl111.HAVE_GALLIUM_PL111 \ | |||
kmsro.HAVE_GALLIUM_KMSRO \ | |||
r300g.HAVE_GALLIUM_R300 \ | |||
r600g.HAVE_GALLIUM_R600 \ | |||
radeonsi.HAVE_GALLIUM_RADEONSI \ |
@@ -45,7 +45,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \ | |||
--enable-libunwind \ | |||
--with-platforms=x11,wayland,drm,surfaceless \ | |||
--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \ | |||
--with-gallium-drivers=i915,nouveau,r300,pl111,r600,radeonsi,freedreno,svga,swrast,vc4,tegra,virgl,swr,etnaviv,imx \ | |||
--with-gallium-drivers=i915,nouveau,r300,kmsro,r600,radeonsi,freedreno,svga,swrast,vc4,tegra,virgl,swr,etnaviv,imx \ | |||
--with-vulkan-drivers=intel,radeon | |||
ACLOCAL_AMFLAGS = -I m4 |
@@ -1408,7 +1408,7 @@ GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" | |||
AC_ARG_WITH([gallium-drivers], | |||
[AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], | |||
[comma delimited Gallium drivers list, e.g. | |||
"i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,tegra,v3d,vc4,virgl,etnaviv,imx" | |||
"i915,nouveau,r300,r600,radeonsi,freedreno,kmsro,svga,swrast,swr,tegra,v3d,vc4,virgl,etnaviv,imx" | |||
@<:@default=r300,r600,svga,swrast@:>@])], | |||
[with_gallium_drivers="$withval"], | |||
[with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) | |||
@@ -2830,8 +2830,8 @@ if test -n "$with_gallium_drivers"; then | |||
DEFINES="$DEFINES -DUSE_V3D_SIMULATOR"], | |||
[USE_V3D_SIMULATOR=no]) | |||
;; | |||
xpl111) | |||
HAVE_GALLIUM_PL111=yes | |||
xkmsro) | |||
HAVE_GALLIUM_KMSRO=yes | |||
;; | |||
xvirgl) | |||
HAVE_GALLIUM_VIRGL=yes | |||
@@ -2868,8 +2868,8 @@ if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then | |||
AC_MSG_ERROR([Building with imx requires etnaviv]) | |||
fi | |||
if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then | |||
AC_MSG_ERROR([Building with pl111 requires vc4]) | |||
if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_KMSRO" = xyes ; then | |||
AC_MSG_ERROR([Building with kmsro requires vc4]) | |||
fi | |||
if test "x$HAVE_GALLIUM_NOUVEAU" != xyes -a "x$HAVE_GALLIUM_TEGRA" = xyes; then | |||
@@ -2966,7 +2966,7 @@ fi | |||
AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_KMSRO, test "x$HAVE_GALLIUM_KMSRO" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) | |||
AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) | |||
@@ -3116,7 +3116,7 @@ AC_CONFIG_FILES([Makefile | |||
src/gallium/drivers/i915/Makefile | |||
src/gallium/drivers/llvmpipe/Makefile | |||
src/gallium/drivers/nouveau/Makefile | |||
src/gallium/drivers/pl111/Makefile | |||
src/gallium/drivers/kmsro/Makefile | |||
src/gallium/drivers/r300/Makefile | |||
src/gallium/drivers/r600/Makefile | |||
src/gallium/drivers/radeonsi/Makefile | |||
@@ -3164,7 +3164,7 @@ AC_CONFIG_FILES([Makefile | |||
src/gallium/winsys/freedreno/drm/Makefile | |||
src/gallium/winsys/i915/drm/Makefile | |||
src/gallium/winsys/nouveau/drm/Makefile | |||
src/gallium/winsys/pl111/drm/Makefile | |||
src/gallium/winsys/kmsro/drm/Makefile | |||
src/gallium/winsys/radeon/drm/Makefile | |||
src/gallium/winsys/amdgpu/drm/Makefile | |||
src/gallium/winsys/svga/drm/Makefile |
@@ -131,7 +131,7 @@ if _drivers.contains('auto') | |||
] | |||
elif ['arm', 'aarch64'].contains(host_machine.cpu_family()) | |||
_drivers = [ | |||
'pl111', 'v3d', 'vc4', 'freedreno', 'etnaviv', 'imx', 'nouveau', | |||
'kmsro', 'v3d', 'vc4', 'freedreno', 'etnaviv', 'imx', 'nouveau', | |||
'tegra', 'virgl', 'swrast', | |||
] | |||
else | |||
@@ -145,7 +145,7 @@ if _drivers.contains('auto') | |||
host_machine.system())) | |||
endif | |||
endif | |||
with_gallium_pl111 = _drivers.contains('pl111') | |||
with_gallium_kmsro = _drivers.contains('kmsro') | |||
with_gallium_radeonsi = _drivers.contains('radeonsi') | |||
with_gallium_r300 = _drivers.contains('r300') | |||
with_gallium_r600 = _drivers.contains('r600') | |||
@@ -213,8 +213,8 @@ endif | |||
if with_gallium_imx and not with_gallium_etnaviv | |||
error('IMX driver requires etnaviv driver') | |||
endif | |||
if with_gallium_pl111 and not with_gallium_vc4 | |||
error('pl111 driver requires vc4 driver') | |||
if with_gallium_kmsro and not with_gallium_vc4 | |||
error('kmsro driver requires vc4 driver') | |||
endif | |||
if with_gallium_tegra and not with_gallium_nouveau | |||
error('tegra driver requires nouveau driver') |
@@ -58,7 +58,7 @@ option( | |||
type : 'array', | |||
value : ['auto'], | |||
choices : [ | |||
'', 'auto', 'pl111', 'radeonsi', 'r300', 'r600', 'nouveau', 'freedreno', | |||
'', 'auto', 'kmsro', 'radeonsi', 'r300', 'r600', 'nouveau', 'freedreno', | |||
'swrast', 'v3d', 'vc4', 'etnaviv', 'imx', 'tegra', 'i915', 'svga', 'virgl', | |||
'swr', | |||
], |
@@ -38,7 +38,7 @@ SUBDIRS += winsys/sw/kms-dri winsys/sw/dri drivers/softpipe | |||
SUBDIRS += winsys/freedreno/drm drivers/freedreno | |||
SUBDIRS += winsys/i915/drm drivers/i915 | |||
SUBDIRS += winsys/nouveau/drm drivers/nouveau | |||
SUBDIRS += winsys/pl111/drm drivers/pl111 | |||
SUBDIRS += winsys/kmsro/drm drivers/kmsro | |||
SUBDIRS += winsys/radeon/drm drivers/r300 | |||
SUBDIRS += winsys/radeon/drm drivers/r600 | |||
SUBDIRS += winsys/radeon/drm winsys/amdgpu/drm drivers/radeonsi |
@@ -60,8 +60,8 @@ if HAVE_GALLIUM_IMX | |||
SUBDIRS += drivers/imx winsys/imx/drm | |||
endif | |||
if HAVE_GALLIUM_PL111 | |||
SUBDIRS += drivers/pl111 winsys/pl111/drm | |||
if HAVE_GALLIUM_KMSRO | |||
SUBDIRS += drivers/kmsro winsys/kmsro/drm | |||
endif | |||
## swrast/softpipe |
@@ -108,7 +108,7 @@ static const struct drm_driver_descriptor driver_descriptors[] = { | |||
}, | |||
{ | |||
.driver_name = "pl111", | |||
.create_screen = pipe_pl111_create_screen, | |||
.create_screen = pipe_kmsro_create_screen, | |||
.configuration = pipe_default_configuration_query, | |||
}, | |||
{ |
@@ -83,24 +83,24 @@ pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config) | |||
#endif | |||
#ifdef GALLIUM_PL111 | |||
#include "pl111/drm/pl111_drm_public.h" | |||
#ifdef GALLIUM_KMSRO | |||
#include "kmsro/drm/kmsro_drm_public.h" | |||
struct pipe_screen * | |||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config) | |||
pipe_kmsro_create_screen(int fd, const struct pipe_screen_config *config) | |||
{ | |||
struct pipe_screen *screen; | |||
screen = pl111_drm_screen_create(fd); | |||
screen = kmsro_drm_screen_create(fd); | |||
return screen ? debug_screen_wrap(screen) : NULL; | |||
} | |||
#else | |||
struct pipe_screen * | |||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config) | |||
pipe_kmsro_create_screen(int fd, const struct pipe_screen_config *config) | |||
{ | |||
fprintf(stderr, "pl111: driver missing\n"); | |||
fprintf(stderr, "kmsro: driver missing\n"); | |||
return NULL; | |||
} | |||
@@ -43,7 +43,7 @@ struct pipe_screen * | |||
pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config); | |||
struct pipe_screen * | |||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config); | |||
pipe_kmsro_create_screen(int fd, const struct pipe_screen_config *config); | |||
struct pipe_screen * | |||
pipe_etna_create_screen(int fd, const struct pipe_screen_config *config); |
@@ -28,12 +28,12 @@ include $(CLEAR_VARS) | |||
LOCAL_SRC_FILES := \ | |||
$(C_SOURCES) | |||
LOCAL_MODULE := libmesa_pipe_pl111 | |||
LOCAL_MODULE := libmesa_pipe_kmsro | |||
include $(GALLIUM_COMMON_MK) | |||
include $(BUILD_STATIC_LIBRARY) | |||
ifneq ($(HAVE_GALLIUM_PL111),) | |||
ifneq ($(HAVE_GALLIUM_KMSRO),) | |||
GALLIUM_TARGET_DRIVERS += pl111 | |||
$(eval GALLIUM_LIBS += $(LOCAL_MODULE) libmesa_winsys_pl111) | |||
$(eval GALLIUM_LIBS += $(LOCAL_MODULE) libmesa_winsys_kmsro) | |||
endif |
@@ -0,0 +1,9 @@ | |||
if HAVE_GALLIUM_KMSRO | |||
TARGET_DRIVERS += pl111 | |||
TARGET_CPPFLAGS += -DGALLIUM_KMSRO | |||
TARGET_LIB_DEPS += \ | |||
$(top_builddir)/src/gallium/winsys/kmsro/drm/libkmsrodrm.la \ | |||
$(LIBDRM_LIBS) | |||
endif |
@@ -3,6 +3,6 @@ include $(top_srcdir)/src/gallium/Automake.inc | |||
AM_CPPFLAGS = \ | |||
$(GALLIUM_CFLAGS) | |||
noinst_LTLIBRARIES = libpl111.la | |||
noinst_LTLIBRARIES = libkmsro.la | |||
libpl111_la_SOURCES = $(C_SOURCES) | |||
libkmsro_la_SOURCES = $(C_SOURCES) |
@@ -1,9 +0,0 @@ | |||
if HAVE_GALLIUM_PL111 | |||
TARGET_DRIVERS += pl111 | |||
TARGET_CPPFLAGS += -DGALLIUM_PL111 | |||
TARGET_LIB_DEPS += \ | |||
$(top_builddir)/src/gallium/winsys/pl111/drm/libpl111drm.la \ | |||
$(LIBDRM_LIBS) | |||
endif |
@@ -89,10 +89,10 @@ if with_gallium_vc4 | |||
else | |||
driver_vc4 = declare_dependency() | |||
endif | |||
if with_gallium_pl111 | |||
subdir('winsys/pl111/drm') | |||
if with_gallium_kmsro | |||
subdir('winsys/kmsro/drm') | |||
else | |||
driver_pl111 = declare_dependency() | |||
driver_kmsro = declare_dependency() | |||
endif | |||
if with_gallium_v3d | |||
subdir('winsys/v3d/drm') |
@@ -78,7 +78,7 @@ include $(top_srcdir)/src/gallium/drivers/tegra/Automake.inc | |||
include $(top_srcdir)/src/gallium/drivers/v3d/Automake.inc | |||
include $(top_srcdir)/src/gallium/drivers/vc4/Automake.inc | |||
include $(top_srcdir)/src/gallium/drivers/pl111/Automake.inc | |||
include $(top_srcdir)/src/gallium/drivers/kmsro/Automake.inc | |||
include $(top_srcdir)/src/gallium/drivers/virgl/Automake.inc | |||
@@ -56,13 +56,13 @@ libgallium_dri = shared_library( | |||
dependencies : [ | |||
dep_selinux, dep_expat, dep_libdrm, dep_llvm, dep_thread, | |||
driver_swrast, driver_r300, driver_r600, driver_radeonsi, driver_nouveau, | |||
driver_pl111, driver_v3d, driver_vc4, driver_freedreno, driver_etnaviv, | |||
driver_kmsro, driver_v3d, driver_vc4, driver_freedreno, driver_etnaviv, | |||
driver_imx, driver_tegra, driver_i915, driver_svga, driver_virgl, | |||
driver_swr, | |||
], | |||
) | |||
foreach d : [[with_gallium_pl111, 'pl111_dri.so'], | |||
foreach d : [[with_gallium_kmsro, 'pl111_dri.so'], | |||
[with_gallium_radeonsi, 'radeonsi_dri.so'], | |||
[with_gallium_nouveau, 'nouveau_dri.so'], | |||
[with_gallium_freedreno, ['msm_dri.so', 'kgsl_dri.so']], |
@@ -77,7 +77,7 @@ DEFINE_LOADER_DRM_ENTRYPOINT(v3d) | |||
#if defined(GALLIUM_VC4) | |||
DEFINE_LOADER_DRM_ENTRYPOINT(vc4) | |||
#if defined(GALLIUM_PL111) | |||
#if defined(GALLIUM_KMSRO) | |||
DEFINE_LOADER_DRM_ENTRYPOINT(pl111) | |||
#endif | |||
#endif |
@@ -27,7 +27,7 @@ include $(CLEAR_VARS) | |||
LOCAL_SRC_FILES := $(C_SOURCES) | |||
LOCAL_MODULE := libmesa_winsys_pl111 | |||
LOCAL_MODULE := libmesa_winsys_kmsro | |||
include $(GALLIUM_COMMON_MK) | |||
include $(BUILD_STATIC_LIBRARY) |
@@ -29,8 +29,8 @@ AM_CFLAGS = \ | |||
$(GALLIUM_WINSYS_CFLAGS) \ | |||
$(LIBDRM_CFLAGS) | |||
noinst_LTLIBRARIES = libpl111drm.la | |||
noinst_LTLIBRARIES = libkmsrodrm.la | |||
libpl111drm_la_SOURCES = $(C_SOURCES) | |||
libkmsrodrm_la_SOURCES = $(C_SOURCES) | |||
EXTRA_DIST = meson.build |
@@ -0,0 +1,3 @@ | |||
C_SOURCES := \ | |||
kmsro_drm_public.h \ | |||
kmsro_drm_winsys.c |
@@ -24,11 +24,11 @@ | |||
* Christian Gmeiner <christian.gmeiner@gmail.com> | |||
*/ | |||
#ifndef __PL111_DRM_PUBLIC_H__ | |||
#define __PL111_DRM_PUBLIC_H__ | |||
#ifndef __KMSRO_DRM_PUBLIC_H__ | |||
#define __KMSRO_DRM_PUBLIC_H__ | |||
struct pipe_screen; | |||
struct pipe_screen *pl111_drm_screen_create(int fd); | |||
struct pipe_screen *kmsro_drm_screen_create(int fd); | |||
#endif /* __PL111_DRM_PUBLIC_H__ */ | |||
#endif /* __KMSRO_DRM_PUBLIC_H__ */ |
@@ -25,17 +25,17 @@ | |||
#include <fcntl.h> | |||
#include <unistd.h> | |||
#include "pl111_drm_public.h" | |||
#include "kmsro_drm_public.h" | |||
#include "vc4/drm/vc4_drm_public.h" | |||
#include "xf86drm.h" | |||
#include "pipe/p_screen.h" | |||
#include "renderonly/renderonly.h" | |||
struct pipe_screen *pl111_drm_screen_create(int fd) | |||
struct pipe_screen *kmsro_drm_screen_create(int fd) | |||
{ | |||
struct renderonly ro = { | |||
/* Passes the vc4-allocated BO through to the pl111 DRM device using | |||
/* Passes the vc4-allocated BO through to the KMS-only DRM device using | |||
* PRIME buffer sharing. The VC4 BO must be linear, which the SCANOUT | |||
* flag on allocation will have ensured. | |||
*/ |
@@ -18,9 +18,9 @@ | |||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
# SOFTWARE. | |||
libpl111winsys = static_library( | |||
'pl111winsys', | |||
files('pl111_drm_winsys.c'), | |||
libkmsrowinsys = static_library( | |||
'kmsrowinsys', | |||
files('kmsro_drm_winsys.c'), | |||
include_directories : [ | |||
inc_src, inc_include, | |||
inc_gallium, inc_gallium_aux, inc_gallium_winsys, | |||
@@ -30,7 +30,7 @@ libpl111winsys = static_library( | |||
link_with : libvc4winsys, | |||
) | |||
driver_pl111 = declare_dependency( | |||
compile_args : '-DGALLIUM_PL111', | |||
link_with : libpl111winsys, | |||
driver_kmsro = declare_dependency( | |||
compile_args : '-DGALLIUM_KMSRO', | |||
link_with : libkmsrowinsys, | |||
) |
@@ -1,3 +0,0 @@ | |||
C_SOURCES := \ | |||
pl111_drm_public.h \ | |||
pl111_drm_winsys.c |