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)
- error('kmsro driver requires one or more renderonly drivers (vc4, etnaviv)')
+if with_gallium_kmsro and not (with_gallium_vc4 or with_gallium_etnaviv or with_gallium_freedreno)
+ error('kmsro driver requires one or more renderonly drivers (vc4, etnaviv, freedreno)')
endif
if with_gallium_tegra and not with_gallium_nouveau
error('tegra driver requires nouveau driver')
AM_CFLAGS += -DGALLIUM_VC4
endif
+if HAVE_GALLIUM_FREEDRENO
+AM_CFLAGS += -DGALLIUM_FREEDRENO
+endif
+
noinst_LTLIBRARIES = libkmsrodrm.la
libkmsrodrm_la_SOURCES = $(C_SOURCES)
#include "kmsro_drm_public.h"
#include "vc4/drm/vc4_drm_public.h"
#include "etnaviv/drm/etnaviv_drm_public.h"
+#include "freedreno/drm/freedreno_drm_public.h"
#include "xf86drm.h"
#include "pipe/p_screen.h"
}
#endif
+#if defined(GALLIUM_FREEDRENO)
+ ro.gpu_fd = drmOpenWithType("msm", NULL, DRM_NODE_RENDER);
+ if (ro.gpu_fd >= 0) {
+ ro.create_for_resource = renderonly_create_kms_dumb_buffer_for_resource,
+ screen = fd_drm_screen_create(ro.gpu_fd, &ro);
+ if (!screen)
+ close(ro.gpu_fd);
+
+ return screen;
+ }
+#endif
+
return screen;
}
if with_gallium_vc4
kmsro_c_args += '-DGALLIUM_VC4'
endif
+if with_gallium_freedreno
+ kmsro_c_args += '-DGALLIUM_FREEDRENO'
+endif
libkmsrowinsys = static_library(
'kmsrowinsys',