Signed-off-by: Jonathan Marek <jonat...@marek.ca> --- configure.ac | 4 ++-- src/gallium/targets/dri/target.c | 5 +++- src/gallium/winsys/imx/drm/Makefile.am | 9 +++++++ src/gallium/winsys/imx/drm/imx_drm_winsys.c | 26 ++++++++++++++++----- 4 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac index f8bb131cb6..85cd3c1eeb 100644 --- a/configure.ac +++ b/configure.ac @@ -2835,8 +2835,8 @@ AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes) dnl We need to validate some needed dependencies for renderonly drivers. -if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then - AC_MSG_ERROR([Building with imx requires etnaviv]) +if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_FREEDRENO" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then + AC_MSG_ERROR([Building with imx requires etnaviv or freedreno]) fi if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c index 835d125f21..ddaca8501a 100644 --- a/src/gallium/targets/dri/target.c +++ b/src/gallium/targets/dri/target.c @@ -83,10 +83,13 @@ DEFINE_LOADER_DRM_ENTRYPOINT(pl111) #endif #if defined(GALLIUM_ETNAVIV) -DEFINE_LOADER_DRM_ENTRYPOINT(imx_drm) DEFINE_LOADER_DRM_ENTRYPOINT(etnaviv) #endif +#if defined(GALLIUM_IMX) +DEFINE_LOADER_DRM_ENTRYPOINT(imx_drm) +#endif + #if defined(GALLIUM_TEGRA) DEFINE_LOADER_DRM_ENTRYPOINT(tegra); #endif diff --git a/src/gallium/winsys/imx/drm/Makefile.am b/src/gallium/winsys/imx/drm/Makefile.am index f15b531f81..17068cb300 100644 --- a/src/gallium/winsys/imx/drm/Makefile.am +++ b/src/gallium/winsys/imx/drm/Makefile.am @@ -28,8 +28,17 @@ AM_CFLAGS = \ -I$(top_srcdir)/src/gallium/winsys \ $(GALLIUM_WINSYS_CFLAGS) +if HAVE_GALLIUM_ETNAVIV +AM_CFLAGS += -DGALLIUM_ETNAVIV +endif + +if HAVE_GALLIUM_FREEDRENO +AM_CFLAGS += -DGALLIUM_FREEDRENO +endif + noinst_LTLIBRARIES = libimxdrm.la libimxdrm_la_SOURCES = $(C_SOURCES) EXTRA_DIST = meson.build + diff --git a/src/gallium/winsys/imx/drm/imx_drm_winsys.c b/src/gallium/winsys/imx/drm/imx_drm_winsys.c index 4bd2125031..f8c4abffde 100644 --- a/src/gallium/winsys/imx/drm/imx_drm_winsys.c +++ b/src/gallium/winsys/imx/drm/imx_drm_winsys.c @@ -26,6 +26,7 @@ #include "imx_drm_public.h" #include "etnaviv/drm/etnaviv_drm_public.h" +#include "freedreno/drm/freedreno_drm_public.h" #include "loader/loader.h" #include "renderonly/renderonly.h" @@ -37,15 +38,28 @@ struct pipe_screen *imx_drm_screen_create(int fd) struct renderonly ro = { .create_for_resource = renderonly_create_kms_dumb_buffer_for_resource, .kms_fd = fd, - .gpu_fd = loader_open_render_node("etnaviv") }; + struct pipe_screen *screen; - if (ro.gpu_fd < 0) - return NULL; +#if defined(GALLIUM_ETNAVIV) + ro.gpu_fd = loader_open_render_node("etnaviv"); + if (ro.gpu_fd >= 0) { + screen = etna_drm_screen_create_renderonly(&ro); + if (screen) + return screen; + close(ro.gpu_fd); + } +#endif - struct pipe_screen *screen = etna_drm_screen_create_renderonly(&ro); - if (!screen) +#if defined(GALLIUM_FREEDRENO) + ro.gpu_fd = loader_open_render_node("msm"); + if (ro.gpu_fd >= 0) { + screen = fd_drm_screen_create_renderonly(&ro); + if (screen) + return screen; close(ro.gpu_fd); + } +#endif - return screen; + return NULL; } -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev