diff --git a/configs/autoconf.in b/configs/autoconf.in index 3428e3a2944..417138b2a1f 100644 --- a/configs/autoconf.in +++ b/configs/autoconf.in @@ -97,7 +97,7 @@ GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drive # Driver specific build vars DRI_DIRS = @DRI_DIRS@ -EGL_DISPLAYS = @EGL_DISPLAYS@ +EGL_PLATFORMS = @EGL_PLATFORMS@ EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ # Dependencies diff --git a/configs/default b/configs/default index 9241e807977..3d9744409ae 100644 --- a/configs/default +++ b/configs/default @@ -110,8 +110,8 @@ GALLIUM_WINSYS_DIRS = sw sw/xlib GALLIUM_TARGET_DIRS = libgl-xlib GALLIUM_STATE_TRACKERS_DIRS = glx vega -# native displays EGL should support -EGL_DISPLAYS = x11 +# native platforms EGL should support +EGL_PLATFORMS = x11 EGL_CLIENT_APIS = $(GL_LIB) # Library dependencies diff --git a/configure.ac b/configure.ac index 7089a87075f..21123eccccb 100644 --- a/configure.ac +++ b/configure.ac @@ -1301,18 +1301,22 @@ if test "x$HAVE_ST_XORG" = xyes; then HAVE_XEXTPROTO_71="no") fi +AC_ARG_WITH([egl-platforms], + [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], + [comma delimited native platforms libEGL supports, e.g. + "x11,kms" @<:@default=auto@:>@])], + [with_egl_platforms="$withval"], + [with_egl_platforms=yes]) AC_ARG_WITH([egl-displays], [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@], - [comma delimited native displays libEGL supports, e.g. - "x11,kms" @<:@default=auto@:>@])], - [with_egl_displays="$withval"], - [with_egl_displays=yes]) + [DEPRECATED. Use --with-egl-platforms instead])], + [with_egl_platforms="$withval"]) -EGL_DISPLAYS="" -case "$with_egl_displays" in +EGL_PLATFORMS="" +case "$with_egl_platforms" in yes) if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then - EGL_DISPLAYS="x11" + EGL_PLATFORMS="x11" fi ;; *) @@ -1320,18 +1324,18 @@ yes) AC_MSG_ERROR([cannot build egl state tracker without EGL library]) fi # verify the requested driver directories exist - egl_displays=`IFS=', '; echo $with_egl_displays` - for dpy in $egl_displays; do - test -d "$srcdir/src/gallium/state_trackers/egl/$dpy" || \ - AC_MSG_ERROR([EGL display '$dpy' does't exist]) - if test "$dpy" = "fbdev"; then + egl_platforms=`IFS=', '; echo $with_egl_platforms` + for plat in $egl_platforms; do + test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \ + AC_MSG_ERROR([EGL platform '$plat' does't exist]) + if test "$plat" = "fbdev"; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev" fi done - EGL_DISPLAYS="$egl_displays" + EGL_PLATFORMS="$egl_platforms" ;; esac -AC_SUBST([EGL_DISPLAYS]) +AC_SUBST([EGL_PLATFORMS]) AC_ARG_WITH([egl-driver-dir], [AS_HELP_STRING([--with-egl-driver-dir=DIR], @@ -1579,7 +1583,7 @@ echo " Shared libs: $enable_shared" echo " Static libs: $enable_static" if test "$enable_egl" = yes; then echo " EGL: $EGL_DRIVERS_DIRS" - echo " EGL displays: $EGL_DISPLAYS" + echo " EGL platforms: $EGL_PLATFORMS" else echo " EGL: no" fi diff --git a/docs/egl.html b/docs/egl.html index 559bd990469..b2198e931d0 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -69,17 +69,17 @@ drivers will be installed to ${libdir}/egl.

-
  • --with-egl-displays +
  • --with-egl-platforms -

    List the window system(s) to support. It is by default x11, -which supports the X Window System. Its argument is a comma separated string -like, for example, --with-egl-displays=x11,kms. Because an EGL -driver decides which window system to support, this example will enable two -(sets of) EGL drivers. One supports the X window system and the other supports -bare KMS (kernel modesetting).

    +

    List the native platform window system(s) to support. It is by default +x11, which supports the X Window System. Its argument is a comma +separated string like, for example, --with-egl-platforms=x11,kms. +Because an EGL driver decides which window system to support, this example will +enable two (sets of) EGL drivers. One supports the X window system and the +other supports bare KMS (kernel modesetting).

    -

    The available displays are x11, kms, -fbdev, and gdi. The gdi display can +

    The available platforms are x11, kms, +fbdev, and gdi. The gdi platform can only be built with SCons.

  • @@ -151,14 +151,14 @@ specific driver. This variable is ignored for setuid/setgid binaries.

    -
  • EGL_DISPLAY +
  • EGL_PLATFORM

    When EGL_DRIVER is not set, the main library loads all -EGL drivers that support a certain window system. EGL_DISPLAY can -be used to specify the window system and the valid values are, for example, +EGL drivers that support a certain window system. EGL_PLATFORM +can be used to specify the window system and the valid values are, for example, x11 or kms. When the variable is not set, the main library defaults the value to the first window system listed in ---with-egl-displays at configuration time. +--with-egl-platforms at configuration time.

  • @@ -195,9 +195,9 @@ drivers are

  • egl_<dpy>_vmwgfx
  • -

    <dpy> is given by --with-egl-displays at +

    <dpy> is given by --with-egl-platforms at configuration time. There is usually one EGL driver for each combination of -the displays listed and the pipe drivers enabled. When the display is pure +the platforms listed and the pipe drivers enabled. When the platform is pure software or pure hardware, non-working combinations will not be built.

    Classic EGL drivers, on the other hand, support only a subset of the @@ -322,7 +322,7 @@ should as well lock the display before using it.

    diff --git a/src/egl/main/Makefile b/src/egl/main/Makefile index 0af964d8741..d9e9e4fcd6d 100644 --- a/src/egl/main/Makefile +++ b/src/egl/main/Makefile @@ -7,7 +7,7 @@ include $(TOP)/configs/current EGL_MAJOR = 1 EGL_MINOR = 0 -INCLUDE_DIRS = -I$(TOP)/include $(X11_CFLAGS) +INCLUDE_DIRS = -I$(TOP)/include HEADERS = \ eglcompiler.h \ @@ -51,10 +51,10 @@ OBJECTS = $(SOURCES:.c=.o) # use dl*() to load drivers LOCAL_CFLAGS = -D_EGL_OS_UNIX=1 -EGL_DEFAULT_DISPLAY = $(word 1, $(EGL_DISPLAYS)) +EGL_DEFAULT_PLATFORM = $(firstword $(EGL_PLATFORMS)) LOCAL_CFLAGS += \ - -D_EGL_DEFAULT_DISPLAY=\"$(EGL_DEFAULT_DISPLAY)\" \ + -D_EGL_DEFAULT_PLATFORM=\"$(EGL_DEFAULT_PLATFORM)\" \ -D_EGL_DRIVER_SEARCH_DIR=\"$(EGL_DRIVER_INSTALL_DIR)\" .c.o: diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index ce5f0f22f05..f56214472e9 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -464,24 +464,27 @@ _eglPreloadUserDriver(void) /** - * Preload display drivers. + * Preload platform drivers. * - * Display drivers are a set of drivers that support a certain display system. - * The display system may be specified by EGL_DISPLAY. + * Platform drivers are a set of drivers that support a certain window system. + * The window system may be specified by EGL_PLATFORM. * * FIXME This makes libEGL a memory hog if an user driver is not specified and - * there are many display drivers. + * there are many platform drivers. */ static EGLBoolean -_eglPreloadDisplayDrivers(void) +_eglPreloadPlatformDrivers(void) { const char *dpy; char prefix[32]; int ret; - dpy = getenv("EGL_DISPLAY"); + dpy = getenv("EGL_PLATFORM"); + /* try deprecated env variable */ if (!dpy || !dpy[0]) - dpy = _EGL_DEFAULT_DISPLAY; + dpy = getenv("EGL_DISPLAY"); + if (!dpy || !dpy[0]) + dpy = _EGL_DEFAULT_PLATFORM; if (!dpy || !dpy[0]) return EGL_FALSE; @@ -515,7 +518,7 @@ _eglPreloadDrivers(void) } loaded = (_eglPreloadUserDriver() || - _eglPreloadDisplayDrivers()); + _eglPreloadPlatformDrivers()); _eglUnlockMutex(_eglGlobal.Mutex); diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile index a11dbf5395c..fec178ffb30 100644 --- a/src/gallium/state_trackers/egl/Makefile +++ b/src/gallium/state_trackers/egl/Makefile @@ -42,9 +42,9 @@ ALL_OBJECTS = $(common_OBJECTS) $(x11_OBJECTS) $(kms_OBJECTS) $(fbdev_OBJECTS) ##### TARGETS ##### -EGL_DISPLAYS_MODS = $(foreach dpy, $(EGL_DISPLAYS), libegl$(dpy).a) +EGL_PLATFORMS_MODS = $(foreach plat, $(EGL_PLATFORMS), libegl$(plat).a) -default: depend $(EGL_DISPLAYS_MODS) +default: depend $(EGL_PLATFORMS_MODS) libeglx11.a: $(x11_OBJECTS) $(common_OBJECTS) Makefile @@ -63,7 +63,7 @@ depend: clean: rm -f $(ALL_OBJECTS) - rm -f $(EGL_DISPLAYS_MODS) + rm -f $(EGL_PLATFORMS_MODS) rm -f depend depend.bak # Dummy target diff --git a/src/gallium/targets/Makefile.egl b/src/gallium/targets/Makefile.egl index bde5d3ce293..315856014b7 100644 --- a/src/gallium/targets/Makefile.egl +++ b/src/gallium/targets/Makefile.egl @@ -63,18 +63,18 @@ INCLUDES = \ ##### TARGETS ##### ifeq ($(EGL_DRIVER_NAME),swrast) -EGL_DISPLAYS := $(filter-out kms, $(EGL_DISPLAYS)) +EGL_PLATFORMS := $(filter-out kms, $(EGL_PLATFORMS)) else -EGL_DISPLAYS := $(filter-out fbdev, $(EGL_DISPLAYS)) +EGL_PLATFORMS := $(filter-out fbdev, $(EGL_PLATFORMS)) endif -EGL_DISPLAY_DRIVERS = $(foreach dpy, $(EGL_DISPLAYS), egl_$(dpy)_$(EGL_DRIVER_NAME).so) +EGL_PLATFORM_DRIVERS = $(foreach plat, $(EGL_PLATFORMS), egl_$(plat)_$(EGL_DRIVER_NAME).so) -EGL_DISPLAY_LIBS = $(foreach drv, $(EGL_DISPLAY_DRIVERS), $(TOP)/$(LIB_DIR)/egl/$(drv)) +EGL_PLATFORM_LIBS = $(foreach drv, $(EGL_PLATFORM_DRIVERS), $(TOP)/$(LIB_DIR)/egl/$(drv)) -default: $(EGL_DISPLAY_LIBS) +default: $(EGL_PLATFORM_LIBS) -$(EGL_DISPLAY_LIBS): $(TOP)/$(LIB_DIR)/egl/%.so: %.so +$(EGL_PLATFORM_LIBS): $(TOP)/$(LIB_DIR)/egl/%.so: %.so @$(INSTALL) -d $(TOP)/$(LIB_DIR)/egl $(INSTALL) $< $(TOP)/$(LIB_DIR)/egl @@ -97,11 +97,11 @@ egl_fbdev_$(EGL_DRIVER_NAME).so: $(EGL_DRIVER_OBJECTS) $(fbdev_ST) $(EGL_DRIVER_ clean: -rm -f $(EGL_DRIVER_OBJECTS) - -rm -f $(EGL_DISPLAY_DRIVERS) + -rm -f $(EGL_PLATFORM_DRIVERS) -install: $(EGL_DISPLAY_LIBS) +install: $(EGL_PLATFORM_LIBS) $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) - for lib in $(EGL_DISPLAY_LIBS); do \ + for lib in $(EGL_PLATFORM_LIBS); do \ $(MINSTALL) -m 755 "$$lib" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \ done