summaryrefslogtreecommitdiffstats
path: root/src/gallium/targets
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2013-08-29 17:26:16 -0400
committerRob Clark <[email protected]>2013-08-29 17:35:05 -0400
commitde10d383d029c8559522f731e04572dc997a0dbc (patch)
treee13062af1f99f2fa1e202feb84105f9ac8a2995d /src/gallium/targets
parente95b7d89b9cd7d82b6122f9ad9bbf2249a0a8802 (diff)
freedreno: pipe loader for either kgsl or msm
The downstream android kernel driver is "kgsl", the upstream drm/kms driver is called "msm". Since libdrm_freedreno handles the differences between the two, we need to load the same thing for either device. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/targets')
-rw-r--r--src/gallium/targets/dri-freedreno/Makefile.am27
-rw-r--r--src/gallium/targets/dri-freedreno/target-kgsl.c (renamed from src/gallium/targets/dri-freedreno/target.c)0
-rw-r--r--src/gallium/targets/dri-freedreno/target-msm.c20
-rw-r--r--src/gallium/targets/egl-static/egl_pipe.c2
4 files changed, 39 insertions, 10 deletions
diff --git a/src/gallium/targets/dri-freedreno/Makefile.am b/src/gallium/targets/dri-freedreno/Makefile.am
index cfa1f37fd37..615ae6f2de8 100644
--- a/src/gallium/targets/dri-freedreno/Makefile.am
+++ b/src/gallium/targets/dri-freedreno/Makefile.am
@@ -37,18 +37,16 @@ AM_CPPFLAGS = \
-DGALLIUM_NOOP
dridir = $(DRI_DRIVER_INSTALL_DIR)
-dri_LTLIBRARIES = kgsl_dri.la
+dri_LTLIBRARIES = kgsl_dri.la msm_dri.la
-nodist_EXTRA_kgsl_dri_la_SOURCES = dummy.cpp
-kgsl_dri_la_SOURCES = \
- target.c \
+COMMON_SOURCES = \
$(top_srcdir)/src/mesa/drivers/dri/common/utils.c \
$(top_srcdir)/src/mesa/drivers/dri/common/dri_util.c \
$(top_srcdir)/src/mesa/drivers/dri/common/xmlconfig.c
-kgsl_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined
+COMMON_LDFLAGS = -module -avoid-version -shared -no-undefined
-kgsl_dri_la_LIBADD = \
+COMMON_LIBADD = \
$(top_builddir)/src/mesa/libmesagallium.la \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
$(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \
@@ -62,12 +60,23 @@ kgsl_dri_la_LIBADD = \
$(FREEDRENO_LIBS)
if HAVE_MESA_LLVM
-kgsl_dri_la_LDFLAGS += $(LLVM_LDFLAGS)
-kgsl_dri_la_LIBADD += $(LLVM_LIBS)
+COMMON_LDFLAGS += $(LLVM_LDFLAGS)
+COMMON_LIBADD += $(LLVM_LIBS)
endif
+nodist_EXTRA_kgsl_dri_la_SOURCES = dummy.cpp
+kgsl_dri_la_SOURCES = target-kgsl.c $(COMMON_SOURCES)
+kgsl_dri_la_LDFLAGS = $(COMMON_LDFLAGS)
+kgsl_dri_la_LIBADD = $(COMMON_LIBADD)
+
+nodist_EXTRA_msm_dri_la_SOURCES = dummy.cpp
+msm_dri_la_SOURCES = target-msm.c $(COMMON_SOURCES)
+msm_dri_la_LDFLAGS = $(COMMON_LDFLAGS)
+msm_dri_la_LIBADD = $(COMMON_LIBADD)
+
# Provide compatibility with scripts for the old Mesa build system for
# a while by putting a link to the driver into /lib of the build tree.
-all-local: kgsl_dri.la
+all-local: kgsl_dri.la msm_dri.la
$(MKDIR_P) $(top_builddir)/$(LIB_DIR)/gallium
ln -f .libs/kgsl_dri.so $(top_builddir)/$(LIB_DIR)/gallium/kgsl_dri.so
+ ln -f .libs/msm_dri.so $(top_builddir)/$(LIB_DIR)/gallium/msm_dri.so
diff --git a/src/gallium/targets/dri-freedreno/target.c b/src/gallium/targets/dri-freedreno/target-kgsl.c
index dcaf299a05b..dcaf299a05b 100644
--- a/src/gallium/targets/dri-freedreno/target.c
+++ b/src/gallium/targets/dri-freedreno/target-kgsl.c
diff --git a/src/gallium/targets/dri-freedreno/target-msm.c b/src/gallium/targets/dri-freedreno/target-msm.c
new file mode 100644
index 00000000000..4a6299becb9
--- /dev/null
+++ b/src/gallium/targets/dri-freedreno/target-msm.c
@@ -0,0 +1,20 @@
+
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "freedreno/drm/freedreno_drm_public.h"
+
+static struct pipe_screen *
+create_screen(int fd)
+{
+ struct pipe_screen *screen;
+
+ screen = fd_drm_screen_create(fd);
+ if (!screen)
+ return NULL;
+
+ screen = debug_screen_wrap(screen);
+
+ return screen;
+}
+
+DRM_DRIVER_DESCRIPTOR("freedreno", "msm", create_screen, NULL)
diff --git a/src/gallium/targets/egl-static/egl_pipe.c b/src/gallium/targets/egl-static/egl_pipe.c
index 57a3233530f..e5100c173e6 100644
--- a/src/gallium/targets/egl-static/egl_pipe.c
+++ b/src/gallium/targets/egl-static/egl_pipe.c
@@ -241,7 +241,7 @@ egl_pipe_create_drm_screen(const char *name, int fd)
return pipe_radeonsi_create_screen(fd);
else if (strcmp(name, "vmwgfx") == 0)
return pipe_vmwgfx_create_screen(fd);
- else if (strcmp(name, "kgsl") == 0)
+ else if ((strcmp(name, "kgsl") == 0) || (strcmp(name, "msm") == 0))
return pipe_freedreno_create_screen(fd);
else
return NULL;