[Mesa-dev] [PATCH 06/11] loader: Use drirc device_id parameter in complement to DRI_PRIME

Emil Velikov emil.l.velikov at gmail.com
Wed May 28 05:40:19 PDT 2014


On 28/05/14 01:55, Axel Davy wrote:
> Signed-off-by: Axel Davy <axel.davy at ens.fr>
Hi Axel

Can you give the scons build a try. I suspect that this patch will leave it in
somewhat broken state.

> ---
>  src/Makefile.am                                 |  4 +++-
>  src/loader/Makefile.am                          | 21 ++++++++++++++++---
>  src/loader/loader.c                             | 27 +++++++++++++++++++++++++
>  src/mesa/drivers/dri/common/xmlconfig.h         |  2 ++
>  src/mesa/drivers/dri/common/xmlpool/t_options.h | 14 +++++++++++++
>  5 files changed, 64 insertions(+), 4 deletions(-)
> 
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 9d1580f..d4a7090 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -19,12 +19,14 @@
>  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
>  # IN THE SOFTWARE.
>  
> -SUBDIRS = gtest loader mapi
> +SUBDIRS = gtest mapi
>  
>  if NEED_OPENGL_COMMON
>  SUBDIRS += glsl mesa
>  endif
>  
> +SUBDIRS += loader
> +
>  if HAVE_DRI_GLX
>  SUBDIRS += glx
>  endif
> diff --git a/src/loader/Makefile.am b/src/loader/Makefile.am
> index bddf7ac..3503a51 100644
> --- a/src/loader/Makefile.am
> +++ b/src/loader/Makefile.am
> @@ -29,6 +29,23 @@ libloader_la_CPPFLAGS = \
>  	$(VISIBILITY_CFLAGS) \
>  	$(LIBUDEV_CFLAGS)
>  
> +libloader_la_SOURCES = $(LOADER_C_FILES)
> +libloader_la_LIBADD = $()
> +
Please drop the "$()"

> +if NEED_OPENGL_COMMON
> +libloader_la_CPPFLAGS += \
> +	-I$(top_srcdir)/src/mesa/drivers/dri/common/ \
Out of tree builds will fail without
-I$(top_builddir)/src/mesa/drivers/dri/common/ \

and possibly similar treatment for the other two

> +	-I$(top_srcdir)/src/mesa/ \
> +	-I$(top_srcdir)/src/mapi/ \
> +	-DUSE_DRICONF
> +
> +libloader_la_SOURCES += \
> +	$(top_srcdir)/src/mesa/drivers/dri/common/xmlconfig.c
> +
> +libloader_la_LIBADD += \
> +	-lexpat
EXPAT_LIBS might be better.

> +endif
> +
>  if !HAVE_LIBDRM
>  libloader_la_CPPFLAGS += \
>  	-D__NOT_HAVE_DRM_H
> @@ -36,8 +53,6 @@ else
>  libloader_la_CPPFLAGS += \
>  	$(LIBDRM_CFLAGS)
>  
> -libloader_la_LIBADD = \
> +libloader_la_LIBADD += \
>  	$(LIBDRM_LIBS)
>  endif
> -
> -libloader_la_SOURCES = $(LOADER_C_FILES)
> diff --git a/src/loader/loader.c b/src/loader/loader.c
> index 3d504f7..e9a8c46 100644
> --- a/src/loader/loader.c
> +++ b/src/loader/loader.c
> @@ -74,6 +74,10 @@
>  #include <unistd.h>
>  #include <stdlib.h>
>  #include <errno.h>
> +#ifdef USE_DRICONF
> +#include "xmlconfig.h"
> +#include "xmlpool.h"
> +#endif
>  #endif
>  #include "loader.h"
>  
> @@ -310,9 +314,22 @@ drm_open_device(const char *device_name)
>     return fd;
>  }
>  
> +#ifdef USE_DRICONF
> +const char __driConfigOptionsLoader[] =
> +DRI_CONF_BEGIN
> +    DRI_CONF_SECTION_INITIALIZATION
> +        DRI_CONF_DEVICE_ID_PATH_TAG()
> +    DRI_CONF_SECTION_END
> +DRI_CONF_END;
> +#endif
> +
>  int loader_get_user_preferred_fd(int default_fd, int *different_device)
>  {
>     struct udev *udev;
> +#ifdef USE_DRICONF
> +   driOptionCache defaultInitOptions;
> +   driOptionCache userInitOptions;
> +#endif
>     const char *dri_prime = getenv("DRI_PRIME");
>     char *prime = NULL;
>     int is_different_device = 0, fd = default_fd;
> @@ -324,6 +341,16 @@ int loader_get_user_preferred_fd(int default_fd, int *different_device)
>  
>     if (dri_prime)
>        prime = strdup(dri_prime);
> +#ifdef USE_DRICONF
> +   else {
> +      driParseOptionInfo(&defaultInitOptions, __driConfigOptionsLoader);
> +      driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, "loader");
> +      if (driCheckOption(&userInitOptions, "device_id", DRI_STRING))
> +         prime = strdup(driQueryOptionstr(&userInitOptions, "device_id"));
> +      driDestroyOptionCache(&userInitOptions);
> +      driDestroyOptionInfo(&defaultInitOptions);
> +   }
> +#endif
>  
>     if (prime == NULL) {
>        *different_device = 0;
> diff --git a/src/mesa/drivers/dri/common/xmlconfig.h b/src/mesa/drivers/dri/common/xmlconfig.h
> index 786caae..a4daa6b 100644
> --- a/src/mesa/drivers/dri/common/xmlconfig.h
> +++ b/src/mesa/drivers/dri/common/xmlconfig.h
> @@ -30,6 +30,8 @@
>  #ifndef __XMLCONFIG_H
>  #define __XMLCONFIG_H
>  
> +#include <GL/gl.h>
> +
^^ This is rather ugly, although the GL* types used throughout kind of mandate
it :\

Thanks
Emil




More information about the mesa-dev mailing list