From ce1a1372280d737a1b85279995529206586ae480 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Tue, 10 Jun 2014 00:00:06 +0100 Subject: [PATCH] targets/egl-static: use inline_drm_helper and Automake.inc helpers Update all three build systems, and add freedreno to the android build. Pending future work on the ST we can convert egl-static to provide either static or dynamic access to the pipe-drivers. There is no functional change with this patch. v2: Don't add freedreno to android build, drop the wrapper winsys. Cc: Chia-I Wu Signed-off-by: Emil Velikov --- configure.ac | 1 + src/gallium/state_trackers/egl/Makefile.am | 9 +- src/gallium/targets/egl-static/Android.mk | 14 +- src/gallium/targets/egl-static/Makefile.am | 63 ++++--- src/gallium/targets/egl-static/SConscript | 2 +- src/gallium/targets/egl-static/egl.c | 21 +-- src/gallium/targets/egl-static/egl_pipe.c | 210 --------------------- src/gallium/targets/egl-static/egl_pipe.h | 3 - 8 files changed, 55 insertions(+), 268 deletions(-) diff --git a/configure.ac b/configure.ac index 9e90d85574b..1a8eb018791 100644 --- a/configure.ac +++ b/configure.ac @@ -1317,6 +1317,7 @@ if test "x$enable_gallium_egl" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static" +# enable_gallium_loader=yes fi AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes) diff --git a/src/gallium/state_trackers/egl/Makefile.am b/src/gallium/state_trackers/egl/Makefile.am index 828bf13e27c..0ea218d37ce 100644 --- a/src/gallium/state_trackers/egl/Makefile.am +++ b/src/gallium/state_trackers/egl/Makefile.am @@ -25,12 +25,13 @@ AUTOMAKE_OPTIONS = subdir-objects include Makefile.sources include $(top_srcdir)/src/gallium/Automake.inc -AM_CFLAGS = $(GALLIUM_CFLAGS) +AM_CFLAGS = \ + $(GALLIUM_CFLAGS) \ + $(VISIBILITY_CFLAGS) + AM_CPPFLAGS = \ - $(VISIBILITY_CFLAGS) \ -I$(top_srcdir)/src/egl/main \ - -I$(top_builddir)/src/egl/wayland/wayland-drm/ \ - -I$(top_srcdir)/include + -I$(top_builddir)/src/egl/wayland/wayland-drm/ noinst_LTLIBRARIES = libegl.la libegl_la_SOURCES = $(common_FILES) diff --git a/src/gallium/targets/egl-static/Android.mk b/src/gallium/targets/egl-static/Android.mk index 37244b5443a..00569dd0183 100644 --- a/src/gallium/targets/egl-static/Android.mk +++ b/src/gallium/targets/egl-static/Android.mk @@ -53,25 +53,25 @@ LOCAL_C_INCLUDES += \ endif ifneq ($(filter i915g, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_I915=1 +LOCAL_CFLAGS += -DGALLIUM_I915 endif ifneq ($(filter ilo, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_ILO=1 +LOCAL_CFLAGS += -DGALLIUM_ILO endif ifneq ($(filter nouveau, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_NOUVEAU=1 +LOCAL_CFLAGS += -DGALLIUM_NOUVEAU endif ifneq ($(filter r300g, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_R300=1 +LOCAL_CFLAGS += -DGALLIUM_R300 endif ifneq ($(filter r600g, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_R600=1 +LOCAL_CFLAGS += -DGALLIUM_R600 endif ifneq ($(filter radeonsi, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_RADEONSI=1 +LOCAL_CFLAGS += -DGALLIUM_RADEONSI endif ifneq ($(filter vmwgfx, $(MESA_GPU_DRIVERS)),) -LOCAL_CFLAGS += -D_EGL_PIPE_VMWGFX=1 +LOCAL_CFLAGS += -DGALLIUM_VMWGFX endif LOCAL_MODULE := libmesa_egl_gallium diff --git a/src/gallium/targets/egl-static/Makefile.am b/src/gallium/targets/egl-static/Makefile.am index f4990ad06a5..84f33381a0b 100644 --- a/src/gallium/targets/egl-static/Makefile.am +++ b/src/gallium/targets/egl-static/Makefile.am @@ -30,18 +30,14 @@ # include $(top_srcdir)/src/gallium/Automake.inc -AM_CFLAGS = $(PTHREAD_CFLAGS) +AM_CFLAGS = \ + $(GALLIUM_TARGET_CFLAGS) + AM_CPPFLAGS = \ - $(GALLIUM_CFLAGS) \ - $(VISIBILITY_CFLAGS) \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/src/loader \ - -I$(top_srcdir)/src/gallium/drivers \ - -I$(top_srcdir)/src/gallium/winsys \ - -I$(top_srcdir)/src/gallium/include \ - -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gallium/state_trackers/egl \ -I$(top_srcdir)/src/egl/main \ + -DGALLIUM_TRACE \ + -DGALLIUM_RBUG \ -D_EGL_MAIN=_eglMain AM_LDFLAGS = \ @@ -75,10 +71,6 @@ egl_gallium_la_LIBADD = \ $(top_builddir)/src/egl/main/libEGL.la \ $(GALLIUM_COMMON_LIB_DEPS) -if HAVE_MESA_LLVM -AM_LDFLAGS += $(LLVM_LDFLAGS) -endif - if HAVE_EGL_PLATFORM_X11 AM_CPPFLAGS += $(LIBDRM_CFLAGS) egl_gallium_la_LIBADD += \ @@ -131,6 +123,7 @@ egl_LTLIBRARIES += st_GL.la nodist_EXTRA_st_GL_la_SOURCES = dummy.cpp st_GL_la_SOURCES = st_GL.c +st_GL_la_LDFLAGS = $(AM_LDFLAGS) # st_GL, built only when shared glapi is not enabled st_GL_la_LIBADD = \ $(top_builddir)/src/mesa/libmesagallium.la \ @@ -159,8 +152,13 @@ egl_gallium_la_LIBADD += \ $(top_builddir)/src/mapi/vgapi/libOpenVG.la endif +#if HAVE_GALLIUM_STATIC_TARGETS + +egl_gallium_la_LDFLAGS = $(AM_LDFLAGS) +egl_gallium_la_CPPFLAGS = $(AM_CPPFLAGS) + if HAVE_GALLIUM_I915 -AM_CPPFLAGS += -D_EGL_PIPE_I915=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_I915 egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/winsys/i915/drm/libi915drm.la \ $(top_builddir)/src/gallium/drivers/i915/libi915.la \ @@ -168,7 +166,7 @@ egl_gallium_la_LIBADD += \ endif if HAVE_GALLIUM_ILO -AM_CPPFLAGS += -D_EGL_PIPE_ILO=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_ILO egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/winsys/intel/drm/libintelwinsys.la \ $(top_builddir)/src/gallium/drivers/ilo/libilo.la \ @@ -176,7 +174,7 @@ egl_gallium_la_LIBADD += \ endif if HAVE_GALLIUM_NOUVEAU -AM_CPPFLAGS += -D_EGL_PIPE_NOUVEAU=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_NOUVEAU egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/winsys/nouveau/drm/libnouveaudrm.la \ $(top_builddir)/src/gallium/drivers/nouveau/libnouveau.la \ @@ -194,35 +192,40 @@ egl_gallium_la_LIBADD += \ endif if HAVE_GALLIUM_R300 -AM_CPPFLAGS += -D_EGL_PIPE_R300=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_R300 egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/drivers/r300/libr300.la \ $(RADEON_LIBS) + +if !HAVE_OPENGL +egl_gallium_la_LIBADD += \ + $(top_builddir)/src/gallium/drivers/r300/libr300-helper.la +endif endif if HAVE_GALLIUM_R600 -AM_CPPFLAGS += -D_EGL_PIPE_R600=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_R600 egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/drivers/r600/libr600.la \ $(RADEON_LIBS) endif if HAVE_GALLIUM_RADEONSI -AM_CPPFLAGS += -D_EGL_PIPE_RADEONSI=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_RADEONSI egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/drivers/radeonsi/libradeonsi.la \ $(RADEON_LIBS) endif if HAVE_GALLIUM_SVGA -AM_CPPFLAGS += -D_EGL_PIPE_VMWGFX=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_VMWGFX egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/winsys/svga/drm/libsvgadrm.la \ $(top_builddir)/src/gallium/drivers/svga/libsvga.la endif if HAVE_GALLIUM_FREEDRENO -AM_CPPFLAGS += -D_EGL_PIPE_FREEDRENO=1 +egl_gallium_la_CPPFLAGS += -DGALLIUM_FREEDRENO egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/winsys/freedreno/drm/libfreedrenodrm.la \ $(top_builddir)/src/gallium/drivers/freedreno/libfreedreno.la \ @@ -231,25 +234,37 @@ egl_gallium_la_LIBADD += \ endif if HAVE_GALLIUM_SOFTPIPE -AM_CPPFLAGS += -DGALLIUM_SOFTPIPE -DGALLIUM_RBUG -DGALLIUM_TRACE +egl_gallium_la_CPPFLAGS += -DGALLIUM_SOFTPIPE egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la endif -if HAVE_GALLIUM_LLVMPIPE -AM_CPPFLAGS += -DGALLIUM_LLVMPIPE +if NEED_GALLIUM_LLVMPIPE_DRIVER +egl_gallium_la_CPPFLAGS += -DGALLIUM_LLVMPIPE egl_gallium_la_LIBADD += \ $(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la endif +#else # HAVE_GALLIUM_STATIC_TARGETS + +#egl_gallium_la_LIBADD += \ +# $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \ +# $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \ +# $(GALLIUM_PIPE_LOADER_LIBS) +#endif + if HAVE_MESA_LLVM + +egl_gallium_la_LDFLAGS += $(LLVM_LDFLAGS) egl_gallium_la_LIBADD += $(LLVM_LIBS) if HAVE_OPENGL if !HAVE_SHARED_GLAPI +st_GL_la_LDFLAGS += $(LLVM_LDFLAGS) st_GL_la_LIBADD += $(LLVM_LIBS) endif endif + endif include $(top_srcdir)/install-gallium-links.mk diff --git a/src/gallium/targets/egl-static/SConscript b/src/gallium/targets/egl-static/SConscript index afb5c11fa91..33db8e9f2a1 100644 --- a/src/gallium/targets/egl-static/SConscript +++ b/src/gallium/targets/egl-static/SConscript @@ -91,7 +91,7 @@ if env['HAVE_X11']: if env['HAVE_DRM']: env.PkgUseModules('DRM') - env.Append(CPPDEFINES = ['_EGL_PIPE_VMWGFX']) + env.Append(CPPDEFINES = ['GALLIUM_VMWGFX']) env.Prepend(LIBS = [ svgadrm, svga, diff --git a/src/gallium/targets/egl-static/egl.c b/src/gallium/targets/egl-static/egl.c index 552fae2f9ce..d6bce8b3bcc 100644 --- a/src/gallium/targets/egl-static/egl.c +++ b/src/gallium/targets/egl-static/egl.c @@ -32,6 +32,7 @@ #include "egl_pipe.h" #include "egl_st.h" +#include "target-helpers/inline_drm_helper.h" static struct egl_g3d_loader egl_g3d_loader; @@ -57,25 +58,7 @@ get_st_api(enum st_api_type api) static struct pipe_screen * create_drm_screen(const char *constname, int fd) { - struct pipe_screen *screen; - char *name = (char *)constname; - - if (!name) { - name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM); - if (!name) - return NULL; - } - - screen = egl_pipe_create_drm_screen(name, fd); - if (screen) - _eglLog(_EGL_INFO, "created a pipe screen for %s", name); - else - _eglLog(_EGL_WARNING, "failed to create a pipe screen for %s", name); - - if (name != constname) - free(name); - - return screen; + return dd_create_screen(fd); } static struct pipe_screen * diff --git a/src/gallium/targets/egl-static/egl_pipe.c b/src/gallium/targets/egl-static/egl_pipe.c index 4f960a52ffe..c38e4bc3c7f 100644 --- a/src/gallium/targets/egl-static/egl_pipe.c +++ b/src/gallium/targets/egl-static/egl_pipe.c @@ -28,216 +28,6 @@ #include "target-helpers/inline_sw_helper.h" #include "egl_pipe.h" -/* for i915 */ -#if _EGL_PIPE_I915 -#include "i915/drm/i915_drm_public.h" -#include "i915/i915_public.h" -#include "target-helpers/inline_wrapper_sw_helper.h" -#endif -/* for ilo */ -#if _EGL_PIPE_ILO -#include "intel/intel_winsys.h" -#include "ilo/ilo_public.h" -#endif -/* for nouveau */ -#if _EGL_PIPE_NOUVEAU -#include "nouveau/drm/nouveau_drm_public.h" -#endif -/* for r300 */ -#if _EGL_PIPE_R300 -#include "radeon/drm/radeon_winsys.h" -#include "radeon/drm/radeon_drm_public.h" -#include "r300/r300_public.h" -#endif -/* for r600 */ -#if _EGL_PIPE_R600 -#include "radeon/drm/radeon_winsys.h" -#include "radeon/drm/radeon_drm_public.h" -#include "r600/r600_public.h" -#endif -/* for radeonsi */ -#if _EGL_PIPE_RADEONSI -#include "radeon/drm/radeon_winsys.h" -#include "radeon/drm/radeon_drm_public.h" -#include "radeonsi/si_public.h" -#endif -/* for vmwgfx */ -#if _EGL_PIPE_VMWGFX -#include "svga/drm/svga_drm_public.h" -#include "svga/svga_public.h" -#endif -/* for freedreno */ -#if _EGL_PIPE_FREEDRENO -#include "freedreno/drm/freedreno_drm_public.h" -#endif - -static struct pipe_screen * -pipe_i915_create_screen(int fd) -{ -#if _EGL_PIPE_I915 - struct i915_winsys *iws; - struct pipe_screen *screen; - - iws = i915_drm_winsys_create(fd); - if (!iws) - return NULL; - - screen = i915_screen_create(iws); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_ilo_create_screen(int fd) -{ -#if _EGL_PIPE_ILO - struct intel_winsys *iws; - struct pipe_screen *screen; - - iws = intel_winsys_create_for_fd(fd); - if (!iws) - return NULL; - - screen = ilo_screen_create(iws); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_nouveau_create_screen(int fd) -{ -#if _EGL_PIPE_NOUVEAU - struct pipe_screen *screen; - - screen = nouveau_drm_screen_create(fd); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_r300_create_screen(int fd) -{ -#if _EGL_PIPE_R300 - struct radeon_winsys *sws; - - sws = radeon_drm_winsys_create(fd, r300_screen_create); - return sws ? debug_screen_wrap(sws->screen) : NULL; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_r600_create_screen(int fd) -{ -#if _EGL_PIPE_R600 - struct radeon_winsys *rw; - - rw = radeon_drm_winsys_create(fd, r600_screen_create); - return rw ? debug_screen_wrap(rw->screen) : NULL; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_radeonsi_create_screen(int fd) -{ -#if _EGL_PIPE_RADEONSI - struct radeon_winsys *rw; - - rw = radeon_drm_winsys_create(fd, radeonsi_screen_create); - return rw ? debug_screen_wrap(rw->screen) : NULL; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_vmwgfx_create_screen(int fd) -{ -#if _EGL_PIPE_VMWGFX - struct svga_winsys_screen *sws; - struct pipe_screen *screen; - - sws = svga_drm_winsys_screen_create(fd); - if (!sws) - return NULL; - - screen = svga_screen_create(sws); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -#else - return NULL; -#endif -} - -static struct pipe_screen * -pipe_freedreno_create_screen(int fd) -{ -#if _EGL_PIPE_FREEDRENO - struct pipe_screen *screen; - - screen = fd_drm_screen_create(fd); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -#else - return NULL; -#endif -} - -struct pipe_screen * -egl_pipe_create_drm_screen(const char *name, int fd) -{ - if (strcmp(name, "i915") == 0) - return pipe_i915_create_screen(fd); - else if (strcmp(name, "i965") == 0) - return pipe_ilo_create_screen(fd); - else if (strcmp(name, "nouveau") == 0) - return pipe_nouveau_create_screen(fd); - else if (strcmp(name, "r300") == 0) - return pipe_r300_create_screen(fd); - else if (strcmp(name, "r600") == 0) - return pipe_r600_create_screen(fd); - else if (strcmp(name, "radeonsi") == 0) - return pipe_radeonsi_create_screen(fd); - else if (strcmp(name, "vmwgfx") == 0) - return pipe_vmwgfx_create_screen(fd); - else if ((strcmp(name, "kgsl") == 0) || (strcmp(name, "msm") == 0)) - return pipe_freedreno_create_screen(fd); - else - return NULL; -} - struct pipe_screen * egl_pipe_create_swrast_screen(struct sw_winsys *ws) { diff --git a/src/gallium/targets/egl-static/egl_pipe.h b/src/gallium/targets/egl-static/egl_pipe.h index 65d25ba5462..15cc1c17c6e 100644 --- a/src/gallium/targets/egl-static/egl_pipe.h +++ b/src/gallium/targets/egl-static/egl_pipe.h @@ -30,9 +30,6 @@ struct pipe_screen; struct sw_winsys; -struct pipe_screen * -egl_pipe_create_drm_screen(const char *name, int fd); - struct pipe_screen * egl_pipe_create_swrast_screen(struct sw_winsys *ws); -- 2.30.2