[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