All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
@ 2021-06-12 22:30 Peter Seiderer
  2021-06-12 22:30 ` [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11 Peter Seiderer
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Peter Seiderer @ 2021-06-12 22:30 UTC (permalink / raw)
  To: buildroot

Add config option for DRI3 support and use it instead
of DRI3 enable/disable logic in *.mk file.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
 package/mesa3d/Config.in |  8 ++++++++
 package/mesa3d/mesa3d.mk | 12 +++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
index d1b3af2054..36acd9758c 100644
--- a/package/mesa3d/Config.in
+++ b/package/mesa3d/Config.in
@@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
 
 if BR2_PACKAGE_MESA3D
 
+config BR2_PACKAGE_MESA3D_DRI3
+	bool "Enable DRI3 support"
+	help
+	  Enable DRI3 support.
+
 # Some Gallium driver needs libelf when built with LLVM support
 config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
 	bool
@@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
 		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
 		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
 		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
+	select BR2_PACKAGE_MESA3D_DRI3 if \
+		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
 	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
 		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
 
@@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
 	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
 	depends on BR2_PACKAGE_XORG7 # xorgproto
+	select BR2_PACKAGE_MESA3D_DRI3
 	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
 	select BR2_PACKAGE_XORGPROTO
 	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
index 5c5f8a33f3..da6e55bf93 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
 MESA3D_CONF_OPTS += -Db_asneeded=false
 endif
 
+ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
+MESA3D_CONF_OPTS += -Ddri3=enabled
+else
+MESA3D_CONF_OPTS += -Ddri3=disabled
+endif
+
 ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
 MESA3D_DEPENDENCIES += host-llvm llvm
 MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
@@ -122,13 +128,10 @@ endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
 MESA3D_CONF_OPTS += \
-	-Ddri-drivers= -Ddri3=disabled
+	-Ddri-drivers=
 else
 ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
 MESA3D_DEPENDENCIES += xlib_libxshmfence
-MESA3D_CONF_OPTS += -Ddri3=enabled
-else
-MESA3D_CONF_OPTS += -Ddri3=disabled
 endif
 MESA3D_CONF_OPTS += \
 	-Dshared-glapi=enabled \
@@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
 else
 MESA3D_DEPENDENCIES += xlib_libxshmfence
 MESA3D_CONF_OPTS += \
-	-Ddri3=enabled \
 	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
 endif
 
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11
  2021-06-12 22:30 [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Peter Seiderer
@ 2021-06-12 22:30 ` Peter Seiderer
  2021-06-13  9:33   ` Arnout Vandecappelle
  2021-06-13  9:25 ` [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Arnout Vandecappelle
  2021-12-17 21:00 ` Arnout Vandecappelle
  2 siblings, 1 reply; 14+ messages in thread
From: Peter Seiderer @ 2021-06-12 22:30 UTC (permalink / raw)
  To: buildroot

- add upstream patch 0005-meson-kmsro-require-dri3-for-X11.patch
  ([1])

- simplfy libxshmfence dependency, always depend on it if selected

- select BR2_PACKAGE_MESA3D_DRI3 for all gallium/kmsro drivers in case
  X11 is selected, see meson.build:

  240 with_gallium_kmsro = with_gallium_v3d or with_gallium_vc4 or with_gallium_etnaviv or with_gallium_panfrost or with_gallium_lima or with_gallium_freedreno
  [...]
  524 if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
  525   error('kmsro requires dri3 for X11 support')
  526 endif

- select BR2_PACKAGE_XLIB_LIBXSHMFENCE for all gallium/kmsro drivers in case
  X11 is selected, see meson.build:

  1897     if with_dri3
  [...]
  1907       dep_xshmfence = dependency('xshmfence', version : '>= 1.1')

Fixes:

  - https://bugs.busybox.net/show_bug.cgi?id=13831

[1] https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
 ...005-meson-kmsro-require-dri3-for-X11.patch | 42 +++++++++++++++++++
 package/mesa3d/Config.in                      | 18 ++++++++
 package/mesa3d/mesa3d.mk                      |  8 ++--
 3 files changed, 64 insertions(+), 4 deletions(-)
 create mode 100644 package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch

diff --git a/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
new file mode 100644
index 0000000000..e20078b712
--- /dev/null
+++ b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
@@ -0,0 +1,42 @@
+From 945f32f09a010407035582712109d616dae31f6d Mon Sep 17 00:00:00 2001
+From: Erico Nunes <nunes.erico@gmail.com>
+Date: Thu, 10 Jun 2021 21:20:28 +0200
+Subject: [PATCH] meson: kmsro: require dri3 for X11
+
+The current implementation in kmsro relies on buffer sharing using
+WINSYS_HANDLE_TYPE_FD, which in x11 is only used by default when dri3
+is enabled.
+Since the current implementation will not work without it, we can
+prevent user error by checking that it is not disabled at configuration
+time.
+
+Closes #4861
+
+Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Reviewed-by: Eric Engestrom <eric@engestrom.ch>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11305>
+[Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba.patch]
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ meson.build | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index e1e94e7..37b8868 100644
+--- a/meson.build
++++ b/meson.build
+@@ -521,6 +521,10 @@ if with_dri
+   endif
+ endif
+ 
++if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
++  error('kmsro requires dri3 for X11 support')
++endif
++
+ _vdpau = get_option('gallium-vdpau')
+ if _vdpau == 'true'
+   _vdpau = 'enabled'
+-- 
+2.31.1
+
diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
index 36acd9758c..c8af2a17cb 100644
--- a/package/mesa3d/Config.in
+++ b/package/mesa3d/Config.in
@@ -105,7 +105,10 @@ comment "Gallium drivers"
 
 config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV
 	bool "Gallium Etnaviv driver"
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_LIBDRM_ETNAVIV
 	help
 	  Mesa driver for Vivante GPUs.
@@ -118,7 +121,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
 	# can't see is just spurious. However, that dependency is about
 	# the toolchain having sync4 primitives, which is always a given
 	# for arm/aarch64.
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_LIBDRM_FREEDRENO
 	help
 	  Mesa driver for Freedreno GPUs.
@@ -145,7 +151,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
 
 config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA
 	bool "Gallium lima driver"
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	help
 	  Mesa driver for ARM Mali Utgard GPUs.
 
@@ -160,7 +169,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
 
 config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
 	bool "Gallium panfrost driver"
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	help
 	  Mesa driver for ARM Mali Midgard and Bifrost GPUs.
 
@@ -247,7 +259,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA
 config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
 	bool "Gallium v3d driver"
 	depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_LIBDRM_VC4
 	select BR2_PACKAGE_MESA3D_OPENGL_EGL
 	help
@@ -261,7 +276,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
 config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
 	bool "Gallium vc4 driver"
 	depends on BR2_arm || BR2_aarch64
+	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
 	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
 	select BR2_PACKAGE_LIBDRM_VC4
 	select BR2_PACKAGE_MESA3D_OPENGL_EGL
 	help
diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
index da6e55bf93..290295255a 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -29,6 +29,10 @@ MESA3D_CONF_OPTS = \
 	-Dgallium-omx=disabled \
 	-Dpower8=disabled
 
+ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
+MESA3D_DEPENDENCIES += xlib_libxshmfence
+endif
+
 # Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker
 # flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217).
 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
@@ -130,9 +134,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
 MESA3D_CONF_OPTS += \
 	-Ddri-drivers=
 else
-ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
-MESA3D_DEPENDENCIES += xlib_libxshmfence
-endif
 MESA3D_CONF_OPTS += \
 	-Dshared-glapi=enabled \
 	-Dglx-direct=true \
@@ -143,7 +144,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
 MESA3D_CONF_OPTS += \
 	-Dvulkan-drivers=
 else
-MESA3D_DEPENDENCIES += xlib_libxshmfence
 MESA3D_CONF_OPTS += \
 	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
 endif
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-12 22:30 [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Peter Seiderer
  2021-06-12 22:30 ` [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11 Peter Seiderer
@ 2021-06-13  9:25 ` Arnout Vandecappelle
  2021-06-14 21:54   ` Peter Seiderer
  2021-12-17 21:00 ` Arnout Vandecappelle
  2 siblings, 1 reply; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-06-13  9:25 UTC (permalink / raw)
  To: buildroot

 Hi Peter,

On 13/06/2021 00:30, Peter Seiderer wrote:
> Add config option for DRI3 support and use it instead
> of DRI3 enable/disable logic in *.mk file.
> 
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
>  package/mesa3d/Config.in |  8 ++++++++
>  package/mesa3d/mesa3d.mk | 12 +++++++-----
>  2 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index d1b3af2054..36acd9758c 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>  
>  if BR2_PACKAGE_MESA3D
>  
> +config BR2_PACKAGE_MESA3D_DRI3
> +	bool "Enable DRI3 support"

 Does it make sense to have this as a user-selectable option? Wouldn't it be
better to make this a blind option? (The latter has the advantage that we can
easily refactor it later, without legacy handling and stuff.)

 I just did a build with just DRI3 selected and it didn't install anything to
target or staging. This suggests that the option isn't useful on its own.

 More importantly: have you checked that DRI3 doesn't have any dependencies of
itself? Check the meson files to see if there are dependencies that are implied
directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
than the individual dri driver). Those things should be moved around as well,
similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
individual drivers.


 Series marked as Changes Requested.

 Regards,
 Arnout

> +	help
> +	  Enable DRI3 support.
> +
>  # Some Gallium driver needs libelf when built with LLVM support
>  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>  	bool
> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
> +	select BR2_PACKAGE_MESA3D_DRI3 if \
> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>  
> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>  	depends on BR2_PACKAGE_XORG7 # xorgproto
> +	select BR2_PACKAGE_MESA3D_DRI3
>  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>  	select BR2_PACKAGE_XORGPROTO
>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index 5c5f8a33f3..da6e55bf93 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>  MESA3D_CONF_OPTS += -Db_asneeded=false
>  endif
>  
> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
> +MESA3D_CONF_OPTS += -Ddri3=enabled
> +else
> +MESA3D_CONF_OPTS += -Ddri3=disabled
> +endif
> +
>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>  MESA3D_DEPENDENCIES += host-llvm llvm
>  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
> @@ -122,13 +128,10 @@ endif
>  
>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>  MESA3D_CONF_OPTS += \
> -	-Ddri-drivers= -Ddri3=disabled
> +	-Ddri-drivers=
>  else
>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> -MESA3D_CONF_OPTS += -Ddri3=enabled
> -else
> -MESA3D_CONF_OPTS += -Ddri3=disabled
>  endif
>  MESA3D_CONF_OPTS += \
>  	-Dshared-glapi=enabled \
> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>  else
>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>  MESA3D_CONF_OPTS += \
> -	-Ddri3=enabled \
>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>  endif
>  
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11
  2021-06-12 22:30 ` [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11 Peter Seiderer
@ 2021-06-13  9:33   ` Arnout Vandecappelle
  2021-06-14 21:47     ` Peter Seiderer
  0 siblings, 1 reply; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-06-13  9:33 UTC (permalink / raw)
  To: buildroot



On 13/06/2021 00:30, Peter Seiderer wrote:
> - add upstream patch 0005-meson-kmsro-require-dri3-for-X11.patch
>   ([1])
> 
> - simplfy libxshmfence dependency, always depend on it if selected

 Maybe that should be done in a separate commit, with a better explanation why.

> 
> - select BR2_PACKAGE_MESA3D_DRI3 for all gallium/kmsro drivers in case
>   X11 is selected, see meson.build:
> 
>   240 with_gallium_kmsro = with_gallium_v3d or with_gallium_vc4 or with_gallium_etnaviv or with_gallium_panfrost or with_gallium_lima or with_gallium_freedreno
>   [...]
>   524 if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
>   525   error('kmsro requires dri3 for X11 support')
>   526 endif

 Now *that's* an excellent explanation!

> 
> - select BR2_PACKAGE_XLIB_LIBXSHMFENCE for all gallium/kmsro drivers in case
>   X11 is selected, see meson.build:
> 
>   1897     if with_dri3
>   [...]
>   1907       dep_xshmfence = dependency('xshmfence', version : '>= 1.1')

 nitpick: I don't see the "in case X11 is selected" part in the quoted code.

> 
> Fixes:
> 
>   - https://bugs.busybox.net/show_bug.cgi?id=13831
> 
> [1] https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba
> 
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
>  ...005-meson-kmsro-require-dri3-for-X11.patch | 42 +++++++++++++++++++
>  package/mesa3d/Config.in                      | 18 ++++++++
>  package/mesa3d/mesa3d.mk                      |  8 ++--
>  3 files changed, 64 insertions(+), 4 deletions(-)
>  create mode 100644 package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> 
> diff --git a/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> new file mode 100644
> index 0000000000..e20078b712
> --- /dev/null
> +++ b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> @@ -0,0 +1,42 @@
> +From 945f32f09a010407035582712109d616dae31f6d Mon Sep 17 00:00:00 2001
> +From: Erico Nunes <nunes.erico@gmail.com>
> +Date: Thu, 10 Jun 2021 21:20:28 +0200
> +Subject: [PATCH] meson: kmsro: require dri3 for X11
> +
> +The current implementation in kmsro relies on buffer sharing using
> +WINSYS_HANDLE_TYPE_FD, which in x11 is only used by default when dri3
> +is enabled.
> +Since the current implementation will not work without it, we can
> +prevent user error by checking that it is not disabled at configuration
> +time.
> +
> +Closes #4861
> +
> +Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
> +Reviewed-by: Adam Jackson <ajax@redhat.com>
> +Reviewed-by: Eric Engestrom <eric@engestrom.ch>
> +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11305>
> +[Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba.patch]
> +Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> +---
> + meson.build | 4 ++++
> + 1 file changed, 4 insertions(+)
> +
> +diff --git a/meson.build b/meson.build
> +index e1e94e7..37b8868 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -521,6 +521,10 @@ if with_dri
> +   endif
> + endif
> + 
> ++if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
> ++  error('kmsro requires dri3 for X11 support')
> ++endif
> ++
> + _vdpau = get_option('gallium-vdpau')
> + if _vdpau == 'true'
> +   _vdpau = 'enabled'
> +-- 
> +2.31.1
> +
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index 36acd9758c..c8af2a17cb 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -105,7 +105,10 @@ comment "Gallium drivers"
>  
>  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV
>  	bool "Gallium Etnaviv driver"
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7

 Given the quoted code above, I think all of these should be moved to
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER. The "depends on" would have to be copied, not
moved. Having it in the BR2_PACKAGE_MESA3D_GALLIUM_DRIVER is kind of redundant,
but it serves as a reminder to people adding gallium drivers that they need to
copy that dependency.

>  	select BR2_PACKAGE_LIBDRM_ETNAVIV
>  	help
>  	  Mesa driver for Vivante GPUs.
> @@ -118,7 +121,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
>  	# can't see is just spurious. However, that dependency is about
>  	# the toolchain having sync4 primitives, which is always a given
>  	# for arm/aarch64.
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>  	select BR2_PACKAGE_LIBDRM_FREEDRENO
>  	help
>  	  Mesa driver for Freedreno GPUs.
> @@ -145,7 +151,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
>  
>  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA
>  	bool "Gallium lima driver"
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>  	help
>  	  Mesa driver for ARM Mali Utgard GPUs.
>  
> @@ -160,7 +169,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
>  
>  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
>  	bool "Gallium panfrost driver"
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7

 This, for example, makes me suspect that the libxshmfence select should really
be part of DRI3.


 Regards,
 Arnout

>  	help
>  	  Mesa driver for ARM Mali Midgard and Bifrost GPUs.
>  
> @@ -247,7 +259,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA
>  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
>  	bool "Gallium v3d driver"
>  	depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>  	select BR2_PACKAGE_LIBDRM_VC4
>  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>  	help
> @@ -261,7 +276,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
>  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>  	bool "Gallium vc4 driver"
>  	depends on BR2_arm || BR2_aarch64
> +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>  	select BR2_PACKAGE_LIBDRM_VC4
>  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>  	help
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index da6e55bf93..290295255a 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -29,6 +29,10 @@ MESA3D_CONF_OPTS = \
>  	-Dgallium-omx=disabled \
>  	-Dpower8=disabled
>  
> +ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> +MESA3D_DEPENDENCIES += xlib_libxshmfence
> +endif
> +
>  # Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker
>  # flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217).
>  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
> @@ -130,9 +134,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>  MESA3D_CONF_OPTS += \
>  	-Ddri-drivers=
>  else
> -ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> -MESA3D_DEPENDENCIES += xlib_libxshmfence
> -endif
>  MESA3D_CONF_OPTS += \
>  	-Dshared-glapi=enabled \
>  	-Dglx-direct=true \
> @@ -143,7 +144,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
>  MESA3D_CONF_OPTS += \
>  	-Dvulkan-drivers=
>  else
> -MESA3D_DEPENDENCIES += xlib_libxshmfence
>  MESA3D_CONF_OPTS += \
>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>  endif
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11
  2021-06-13  9:33   ` Arnout Vandecappelle
@ 2021-06-14 21:47     ` Peter Seiderer
  0 siblings, 0 replies; 14+ messages in thread
From: Peter Seiderer @ 2021-06-14 21:47 UTC (permalink / raw)
  To: buildroot

Hello Arnout,

On Sun, 13 Jun 2021 11:33:52 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 13/06/2021 00:30, Peter Seiderer wrote:
> > - add upstream patch 0005-meson-kmsro-require-dri3-for-X11.patch
> >   ([1])
> >
> > - simplfy libxshmfence dependency, always depend on it if selected
>
>  Maybe that should be done in a separate commit, with a better explanation why.

- simplfy libxshmfence dependency, always depend on it if selected to avoid
  code duplication in the mk file

Hope this explanation is better?

First considered an separate patch, but the it would only reduce the duplication
at two places...., but with this patch adding more libxshmfence at more
places it makes more sense..., but can extract as as separate patch?

>
> >
> > - select BR2_PACKAGE_MESA3D_DRI3 for all gallium/kmsro drivers in case
> >   X11 is selected, see meson.build:
> >
> >   240 with_gallium_kmsro = with_gallium_v3d or with_gallium_vc4 or with_gallium_etnaviv or with_gallium_panfrost or with_gallium_lima or with_gallium_freedreno
> >   [...]
> >   524 if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
> >   525   error('kmsro requires dri3 for X11 support')
> >   526 endif
>
>  Now *that's* an excellent explanation!
>
> >
> > - select BR2_PACKAGE_XLIB_LIBXSHMFENCE for all gallium/kmsro drivers in case
> >   X11 is selected, see meson.build:
> >

  1873 if with_platform_x11
  [...]
  1894   if with_any_vk or with_egl or (with_glx == 'dri' and with_dri_platform ==      'drm')
  [...]

> >   1897     if with_dri3
> >   [...]
> >   1907       dep_xshmfence = dependency('xshmfence', version : '>= 1.1')
>
>  nitpick: I don't see the "in case X11 is selected" part in the quoted code.

Will fix in next patch iteration...

>
> >
> > Fixes:
> >
> >   - https://bugs.busybox.net/show_bug.cgi?id=13831
> >
> > [1] https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba
> >
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> > ---
> >  ...005-meson-kmsro-require-dri3-for-X11.patch | 42 +++++++++++++++++++
> >  package/mesa3d/Config.in                      | 18 ++++++++
> >  package/mesa3d/mesa3d.mk                      |  8 ++--
> >  3 files changed, 64 insertions(+), 4 deletions(-)
> >  create mode 100644 package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> >
> > diff --git a/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> > new file mode 100644
> > index 0000000000..e20078b712
> > --- /dev/null
> > +++ b/package/mesa3d/0005-meson-kmsro-require-dri3-for-X11.patch
> > @@ -0,0 +1,42 @@
> > +From 945f32f09a010407035582712109d616dae31f6d Mon Sep 17 00:00:00 2001
> > +From: Erico Nunes <nunes.erico@gmail.com>
> > +Date: Thu, 10 Jun 2021 21:20:28 +0200
> > +Subject: [PATCH] meson: kmsro: require dri3 for X11
> > +
> > +The current implementation in kmsro relies on buffer sharing using
> > +WINSYS_HANDLE_TYPE_FD, which in x11 is only used by default when dri3
> > +is enabled.
> > +Since the current implementation will not work without it, we can
> > +prevent user error by checking that it is not disabled at configuration
> > +time.
> > +
> > +Closes #4861
> > +
> > +Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
> > +Reviewed-by: Adam Jackson <ajax@redhat.com>
> > +Reviewed-by: Eric Engestrom <eric@engestrom.ch>
> > +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11305>
> > +[Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/commit/479bda78480d472e1f311bf0ea5b5fafb47ac7ba.patch]
> > +Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> > +---
> > + meson.build | 4 ++++
> > + 1 file changed, 4 insertions(+)
> > +
> > +diff --git a/meson.build b/meson.build
> > +index e1e94e7..37b8868 100644
> > +--- a/meson.build
> > ++++ b/meson.build
> > +@@ -521,6 +521,10 @@ if with_dri
> > +   endif
> > + endif
> > +
> > ++if with_gallium_kmsro and (with_platform_x11 and not with_dri3)
> > ++  error('kmsro requires dri3 for X11 support')
> > ++endif
> > ++
> > + _vdpau = get_option('gallium-vdpau')
> > + if _vdpau == 'true'
> > +   _vdpau = 'enabled'
> > +--
> > +2.31.1
> > +
> > diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> > index 36acd9758c..c8af2a17cb 100644
> > --- a/package/mesa3d/Config.in
> > +++ b/package/mesa3d/Config.in
> > @@ -105,7 +105,10 @@ comment "Gallium drivers"
> >
> >  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV
> >  	bool "Gallium Etnaviv driver"
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>
>  Given the quoted code above, I think all of these should be moved to
> BR2_PACKAGE_MESA3D_GALLIUM_DRIVER. The "depends on" would have to be copied, not
> moved. Having it in the BR2_PACKAGE_MESA3D_GALLIUM_DRIVER is kind of redundant,
> but it serves as a reminder to people adding gallium drivers that they need to
> copy that dependency.
>
> >  	select BR2_PACKAGE_LIBDRM_ETNAVIV
> >  	help
> >  	  Mesa driver for Vivante GPUs.
> > @@ -118,7 +121,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
> >  	# can't see is just spurious. However, that dependency is about
> >  	# the toolchain having sync4 primitives, which is always a given
> >  	# for arm/aarch64.
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
> >  	select BR2_PACKAGE_LIBDRM_FREEDRENO
> >  	help
> >  	  Mesa driver for Freedreno GPUs.
> > @@ -145,7 +151,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
> >
> >  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA
> >  	bool "Gallium lima driver"
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
> >  	help
> >  	  Mesa driver for ARM Mali Utgard GPUs.
> >
> > @@ -160,7 +169,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
> >
> >  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
> >  	bool "Gallium panfrost driver"
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
>
>  This, for example, makes me suspect that the libxshmfence select should really
> be part of DRI3.

As far as I read the meson.build file there is at least one place where dri3 is
required without X11...., and (at least for an older version) the libxshmfence
dependency was not triggered by DRI3 but by GLX, see [1]...

The other advantage is that the new added depends is near the new added select...

Regards,
Peter

[1] https://patchwork.ozlabs.org/project/buildroot/patch/20210110222833.26301-5-ps.report at gmx.net/
>
>
>  Regards,
>  Arnout
>
> >  	help
> >  	  Mesa driver for ARM Mali Midgard and Bifrost GPUs.
> >
> > @@ -247,7 +259,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA
> >  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
> >  	bool "Gallium v3d driver"
> >  	depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
> >  	select BR2_PACKAGE_LIBDRM_VC4
> >  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> >  	help
> > @@ -261,7 +276,10 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D
> >  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
> >  	bool "Gallium vc4 driver"
> >  	depends on BR2_arm || BR2_aarch64
> > +	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
> >  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> > +	select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> > +	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
> >  	select BR2_PACKAGE_LIBDRM_VC4
> >  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> >  	help
> > diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> > index da6e55bf93..290295255a 100644
> > --- a/package/mesa3d/mesa3d.mk
> > +++ b/package/mesa3d/mesa3d.mk
> > @@ -29,6 +29,10 @@ MESA3D_CONF_OPTS = \
> >  	-Dgallium-omx=disabled \
> >  	-Dpower8=disabled
> >
> > +ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> > +MESA3D_DEPENDENCIES += xlib_libxshmfence
> > +endif
> > +
> >  # Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker
> >  # flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217).
> >  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
> > @@ -130,9 +134,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
> >  MESA3D_CONF_OPTS += \
> >  	-Ddri-drivers=
> >  else
> > -ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> > -MESA3D_DEPENDENCIES += xlib_libxshmfence
> > -endif
> >  MESA3D_CONF_OPTS += \
> >  	-Dshared-glapi=enabled \
> >  	-Dglx-direct=true \
> > @@ -143,7 +144,6 @@ ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
> >  MESA3D_CONF_OPTS += \
> >  	-Dvulkan-drivers=
> >  else
> > -MESA3D_DEPENDENCIES += xlib_libxshmfence
> >  MESA3D_CONF_OPTS += \
> >  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
> >  endif
> >
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-13  9:25 ` [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Arnout Vandecappelle
@ 2021-06-14 21:54   ` Peter Seiderer
  2021-06-15 20:19     ` Arnout Vandecappelle
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Seiderer @ 2021-06-14 21:54 UTC (permalink / raw)
  To: buildroot

Hello Arnout,

On Sun, 13 Jun 2021 11:25:36 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:

>  Hi Peter,
>
> On 13/06/2021 00:30, Peter Seiderer wrote:
> > Add config option for DRI3 support and use it instead
> > of DRI3 enable/disable logic in *.mk file.
> >
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> > ---
> >  package/mesa3d/Config.in |  8 ++++++++
> >  package/mesa3d/mesa3d.mk | 12 +++++++-----
> >  2 files changed, 15 insertions(+), 5 deletions(-)
> >
> > diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> > index d1b3af2054..36acd9758c 100644
> > --- a/package/mesa3d/Config.in
> > +++ b/package/mesa3d/Config.in
> > @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
> >
> >  if BR2_PACKAGE_MESA3D
> >
> > +config BR2_PACKAGE_MESA3D_DRI3
> > +	bool "Enable DRI3 support"
>
>  Does it make sense to have this as a user-selectable option? Wouldn't it be
> better to make this a blind option? (The latter has the advantage that we can
> easily refactor it later, without legacy handling and stuff.)

As it is an feature option exposed by mesa3d I believe it makes sense...

>
>  I just did a build with just DRI3 selected and it didn't install anything to
> target or staging. This suggests that the option isn't useful on its own.

Same for numerous other options in buildroot which enable/disable compile time
feature include in packages, see e.g. the BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5,
BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2, ... and many others...

>
>  More importantly: have you checked that DRI3 doesn't have any dependencies of
> itself? Check the meson files to see if there are dependencies that are implied
> directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
> than the individual dri driver). Those things should be moved around as well,
> similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
> individual drivers.

But this mimics the mesa3d internal logic (without an mesa3d exposed feature
option)....

Regards,
Peter

>
>
>  Series marked as Changes Requested.
>
>  Regards,
>  Arnout
>
> > +	help
> > +	  Enable DRI3 support.
> > +
> >  # Some Gallium driver needs libelf when built with LLVM support
> >  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
> >  	bool
> > @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
> >  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
> >  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
> >  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
> > +	select BR2_PACKAGE_MESA3D_DRI3 if \
> > +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
> >  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >
> > @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
> >  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
> >  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
> >  	depends on BR2_PACKAGE_XORG7 # xorgproto
> > +	select BR2_PACKAGE_MESA3D_DRI3
> >  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
> >  	select BR2_PACKAGE_XORGPROTO
> >  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
> > diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> > index 5c5f8a33f3..da6e55bf93 100644
> > --- a/package/mesa3d/mesa3d.mk
> > +++ b/package/mesa3d/mesa3d.mk
> > @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
> >  MESA3D_CONF_OPTS += -Db_asneeded=false
> >  endif
> >
> > +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
> > +MESA3D_CONF_OPTS += -Ddri3=enabled
> > +else
> > +MESA3D_CONF_OPTS += -Ddri3=disabled
> > +endif
> > +
> >  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
> >  MESA3D_DEPENDENCIES += host-llvm llvm
> >  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
> > @@ -122,13 +128,10 @@ endif
> >
> >  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
> >  MESA3D_CONF_OPTS += \
> > -	-Ddri-drivers= -Ddri3=disabled
> > +	-Ddri-drivers=
> >  else
> >  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> >  MESA3D_DEPENDENCIES += xlib_libxshmfence
> > -MESA3D_CONF_OPTS += -Ddri3=enabled
> > -else
> > -MESA3D_CONF_OPTS += -Ddri3=disabled
> >  endif
> >  MESA3D_CONF_OPTS += \
> >  	-Dshared-glapi=enabled \
> > @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
> >  else
> >  MESA3D_DEPENDENCIES += xlib_libxshmfence
> >  MESA3D_CONF_OPTS += \
> > -	-Ddri3=enabled \
> >  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
> >  endif
> >
> >

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-14 21:54   ` Peter Seiderer
@ 2021-06-15 20:19     ` Arnout Vandecappelle
  2021-06-16 19:54       ` Peter Seiderer
  0 siblings, 1 reply; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-06-15 20:19 UTC (permalink / raw)
  To: buildroot



On 14/06/2021 23:54, Peter Seiderer wrote:
> Hello Arnout,
> 
> On Sun, 13 Jun 2021 11:25:36 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
> 
>>  Hi Peter,
>>
>> On 13/06/2021 00:30, Peter Seiderer wrote:
>>> Add config option for DRI3 support and use it instead
>>> of DRI3 enable/disable logic in *.mk file.
>>>
>>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
>>> ---
>>>  package/mesa3d/Config.in |  8 ++++++++
>>>  package/mesa3d/mesa3d.mk | 12 +++++++-----
>>>  2 files changed, 15 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>>> index d1b3af2054..36acd9758c 100644
>>> --- a/package/mesa3d/Config.in
>>> +++ b/package/mesa3d/Config.in
>>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>>>
>>>  if BR2_PACKAGE_MESA3D
>>>
>>> +config BR2_PACKAGE_MESA3D_DRI3
>>> +	bool "Enable DRI3 support"
>>
>>  Does it make sense to have this as a user-selectable option? Wouldn't it be
>> better to make this a blind option? (The latter has the advantage that we can
>> easily refactor it later, without legacy handling and stuff.)
> 
> As it is an feature option exposed by mesa3d I believe it makes sense...

 I think putting "option exposed by mesa3d" and "make sense" in the same
sentence is a bit of a stretch :-) The proper thing for mesa3d to do would be to
enable dri3 automatically if a driver needs it. That we have to pass it
explicitly is just silly IMHO.


>>  I just did a build with just DRI3 selected and it didn't install anything to
>> target or staging. This suggests that the option isn't useful on its own.
> 
> Same for numerous other options in buildroot which enable/disable compile time
> feature include in packages, see e.g. the BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5,
> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2, ... and many others...

 BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 *will* install libcrypto to staging and
target, so I fail to see your point.

 What I'm saying is: having it as a user-visible option only makes sense if a
user can do something with that option. Since mesa3d doesn't install anything
when dri3 is selected, I suspect that it's useless as a user-visible option. And
as I wrote, making it user-visible has a cost: it means that changing/removing
the option later becomes more difficult (legacy handling and all that).

 Of course, I could still be wrong. Maybe dri3 does something useful. But to me
it looks more like the shared-glapi option, that is meaningless by itself but
that enables a subsystem that is required by some drivers.


>>  More importantly: have you checked that DRI3 doesn't have any dependencies of
>> itself? Check the meson files to see if there are dependencies that are implied
>> directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
>> than the individual dri driver). Those things should be moved around as well,
>> similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
>> individual drivers.
> 
> But this mimics the mesa3d internal logic (without an mesa3d exposed feature
> option)....

 I'm not sure what you mean. What I mean is: in meson.build there is:

if with_platform_x11
...
  if (with_egl or
      with_dri3 or (
      with_gallium_vdpau or with_gallium_xvmc or with_gallium_xa or
      with_gallium_omx != 'disabled'))
    dep_xcb_xfixes = dependency('xcb-xfixes')
  endif


 This means, IMHO, that in Config.in we need:

config BR2_PACKAGE_MESA3D_DRI3
	bool
	depends on ...
	select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7

and there are a bunch more like that.


 Regards,
 Arnout

> 
> Regards,
> Peter
> 
>>
>>
>>  Series marked as Changes Requested.
>>
>>  Regards,
>>  Arnout
>>
>>> +	help
>>> +	  Enable DRI3 support.
>>> +
>>>  # Some Gallium driver needs libelf when built with LLVM support
>>>  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>>>  	bool
>>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>>>  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>>>  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>>>  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
>>> +	select BR2_PACKAGE_MESA3D_DRI3 if \
>>> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>>>  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>>
>>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>>>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>>>  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>>>  	depends on BR2_PACKAGE_XORG7 # xorgproto
>>> +	select BR2_PACKAGE_MESA3D_DRI3
>>>  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>>>  	select BR2_PACKAGE_XORGPROTO
>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
>>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>>> index 5c5f8a33f3..da6e55bf93 100644
>>> --- a/package/mesa3d/mesa3d.mk
>>> +++ b/package/mesa3d/mesa3d.mk
>>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>>>  MESA3D_CONF_OPTS += -Db_asneeded=false
>>>  endif
>>>
>>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
>>> +MESA3D_CONF_OPTS += -Ddri3=enabled
>>> +else
>>> +MESA3D_CONF_OPTS += -Ddri3=disabled
>>> +endif
>>> +
>>>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>>>  MESA3D_DEPENDENCIES += host-llvm llvm
>>>  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
>>> @@ -122,13 +128,10 @@ endif
>>>
>>>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>>>  MESA3D_CONF_OPTS += \
>>> -	-Ddri-drivers= -Ddri3=disabled
>>> +	-Ddri-drivers=
>>>  else
>>>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>>> -MESA3D_CONF_OPTS += -Ddri3=enabled
>>> -else
>>> -MESA3D_CONF_OPTS += -Ddri3=disabled
>>>  endif
>>>  MESA3D_CONF_OPTS += \
>>>  	-Dshared-glapi=enabled \
>>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>>>  else
>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>>>  MESA3D_CONF_OPTS += \
>>> -	-Ddri3=enabled \
>>>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>>>  endif
>>>
>>>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-15 20:19     ` Arnout Vandecappelle
@ 2021-06-16 19:54       ` Peter Seiderer
  2021-06-16 21:50         ` Arnout Vandecappelle
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Seiderer @ 2021-06-16 19:54 UTC (permalink / raw)
  To: buildroot

Hello Arnout,

On Tue, 15 Jun 2021 22:19:11 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 14/06/2021 23:54, Peter Seiderer wrote:
> > Hello Arnout,
> >
> > On Sun, 13 Jun 2021 11:25:36 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
> >
> >>  Hi Peter,
> >>
> >> On 13/06/2021 00:30, Peter Seiderer wrote:
> >>> Add config option for DRI3 support and use it instead
> >>> of DRI3 enable/disable logic in *.mk file.
> >>>
> >>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> >>> ---
> >>>  package/mesa3d/Config.in |  8 ++++++++
> >>>  package/mesa3d/mesa3d.mk | 12 +++++++-----
> >>>  2 files changed, 15 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> >>> index d1b3af2054..36acd9758c 100644
> >>> --- a/package/mesa3d/Config.in
> >>> +++ b/package/mesa3d/Config.in
> >>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
> >>>
> >>>  if BR2_PACKAGE_MESA3D
> >>>
> >>> +config BR2_PACKAGE_MESA3D_DRI3
> >>> +	bool "Enable DRI3 support"
> >>
> >>  Does it make sense to have this as a user-selectable option? Wouldn't it be
> >> better to make this a blind option? (The latter has the advantage that we can
> >> easily refactor it later, without legacy handling and stuff.)
> >
> > As it is an feature option exposed by mesa3d I believe it makes sense...
>
>  I think putting "option exposed by mesa3d" and "make sense" in the same
> sentence is a bit of a stretch :-) The proper thing for mesa3d to do would be to
> enable dri3 automatically if a driver needs it. That we have to pass it
> explicitly is just silly IMHO.
>
>
> >>  I just did a build with just DRI3 selected and it didn't install anything to
> >> target or staging. This suggests that the option isn't useful on its own.
> >
> > Same for numerous other options in buildroot which enable/disable compile time
> > feature include in packages, see e.g. the BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5,
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2, ... and many others...
>
>  BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 *will* install libcrypto to staging and
> target, so I fail to see your point.

With:

BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBOPENSSL=y
BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
# BR2_PACKAGE_LIBOPENSSL_BIN is not set
# BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_DES is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3 is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST is not set
# BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
# BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
# BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP is not set

	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
libopenssl,./usr/lib/libcrypto.so.1.1
libopenssl,./usr/lib/libcrypto.a
libopenssl,./usr/lib/libcrypto.so
libopenssl,./usr/lib/pkgconfig/libcrypto.pc


With:

BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBOPENSSL=y
BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
# BR2_PACKAGE_LIBOPENSSL_BIN is not set
# BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_DES=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK=y
BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST=y
# BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
# BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP=y

	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
libopenssl,./usr/lib/libcrypto.so.1.1
libopenssl,./usr/lib/libcrypto.a
libopenssl,./usr/lib/libcrypto.so
libopenssl,./usr/lib/pkgconfig/libcrypto.pc


I would describe the _ENABLE_... options as enabling/disabling (compile time)
features of libcrypto...

Regards,
Peter


>
>  What I'm saying is: having it as a user-visible option only makes sense if a
> user can do something with that option. Since mesa3d doesn't install anything
> when dri3 is selected, I suspect that it's useless as a user-visible option. And
> as I wrote, making it user-visible has a cost: it means that changing/removing
> the option later becomes more difficult (legacy handling and all that).
>
>  Of course, I could still be wrong. Maybe dri3 does something useful. But to me
> it looks more like the shared-glapi option, that is meaningless by itself but
> that enables a subsystem that is required by some drivers.
>
>
> >>  More importantly: have you checked that DRI3 doesn't have any dependencies of
> >> itself? Check the meson files to see if there are dependencies that are implied
> >> directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
> >> than the individual dri driver). Those things should be moved around as well,
> >> similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
> >> individual drivers.
> >
> > But this mimics the mesa3d internal logic (without an mesa3d exposed feature
> > option)....
>
>  I'm not sure what you mean. What I mean is: in meson.build there is:
>
> if with_platform_x11
> ...
>   if (with_egl or
>       with_dri3 or (
>       with_gallium_vdpau or with_gallium_xvmc or with_gallium_xa or
>       with_gallium_omx != 'disabled'))
>     dep_xcb_xfixes = dependency('xcb-xfixes')
>   endif
>
>
>  This means, IMHO, that in Config.in we need:
>
> config BR2_PACKAGE_MESA3D_DRI3
> 	bool
> 	depends on ...
> 	select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7
>
> and there are a bunch more like that.
>
>
>  Regards,
>  Arnout
>
> >
> > Regards,
> > Peter
> >
> >>
> >>
> >>  Series marked as Changes Requested.
> >>
> >>  Regards,
> >>  Arnout
> >>
> >>> +	help
> >>> +	  Enable DRI3 support.
> >>> +
> >>>  # Some Gallium driver needs libelf when built with LLVM support
> >>>  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
> >>>  	bool
> >>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
> >>>  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
> >>>  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
> >>>  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
> >>> +	select BR2_PACKAGE_MESA3D_DRI3 if \
> >>> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
> >>>  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >>>
> >>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
> >>>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
> >>>  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
> >>>  	depends on BR2_PACKAGE_XORG7 # xorgproto
> >>> +	select BR2_PACKAGE_MESA3D_DRI3
> >>>  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
> >>>  	select BR2_PACKAGE_XORGPROTO
> >>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
> >>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> >>> index 5c5f8a33f3..da6e55bf93 100644
> >>> --- a/package/mesa3d/mesa3d.mk
> >>> +++ b/package/mesa3d/mesa3d.mk
> >>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
> >>>  MESA3D_CONF_OPTS += -Db_asneeded=false
> >>>  endif
> >>>
> >>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
> >>> +MESA3D_CONF_OPTS += -Ddri3=enabled
> >>> +else
> >>> +MESA3D_CONF_OPTS += -Ddri3=disabled
> >>> +endif
> >>> +
> >>>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
> >>>  MESA3D_DEPENDENCIES += host-llvm llvm
> >>>  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
> >>> @@ -122,13 +128,10 @@ endif
> >>>
> >>>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
> >>>  MESA3D_CONF_OPTS += \
> >>> -	-Ddri-drivers= -Ddri3=disabled
> >>> +	-Ddri-drivers=
> >>>  else
> >>>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> >>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> >>> -MESA3D_CONF_OPTS += -Ddri3=enabled
> >>> -else
> >>> -MESA3D_CONF_OPTS += -Ddri3=disabled
> >>>  endif
> >>>  MESA3D_CONF_OPTS += \
> >>>  	-Dshared-glapi=enabled \
> >>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
> >>>  else
> >>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> >>>  MESA3D_CONF_OPTS += \
> >>> -	-Ddri3=enabled \
> >>>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
> >>>  endif
> >>>
> >>>
> >

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-16 19:54       ` Peter Seiderer
@ 2021-06-16 21:50         ` Arnout Vandecappelle
  2021-06-16 22:21           ` Peter Seiderer
  0 siblings, 1 reply; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-06-16 21:50 UTC (permalink / raw)
  To: buildroot



On 16/06/2021 21:54, Peter Seiderer wrote:
> Hello Arnout,
> 
> On Tue, 15 Jun 2021 22:19:11 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
> 
>> On 14/06/2021 23:54, Peter Seiderer wrote:
>>> Hello Arnout,
>>>
>>> On Sun, 13 Jun 2021 11:25:36 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
>>>
>>>>  Hi Peter,
>>>>
>>>> On 13/06/2021 00:30, Peter Seiderer wrote:
>>>>> Add config option for DRI3 support and use it instead
>>>>> of DRI3 enable/disable logic in *.mk file.
>>>>>
>>>>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
>>>>> ---
>>>>>  package/mesa3d/Config.in |  8 ++++++++
>>>>>  package/mesa3d/mesa3d.mk | 12 +++++++-----
>>>>>  2 files changed, 15 insertions(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>>>>> index d1b3af2054..36acd9758c 100644
>>>>> --- a/package/mesa3d/Config.in
>>>>> +++ b/package/mesa3d/Config.in
>>>>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>>>>>
>>>>>  if BR2_PACKAGE_MESA3D
>>>>>
>>>>> +config BR2_PACKAGE_MESA3D_DRI3
>>>>> +	bool "Enable DRI3 support"
>>>>
>>>>  Does it make sense to have this as a user-selectable option? Wouldn't it be
>>>> better to make this a blind option? (The latter has the advantage that we can
>>>> easily refactor it later, without legacy handling and stuff.)
>>>
>>> As it is an feature option exposed by mesa3d I believe it makes sense...
>>
>>  I think putting "option exposed by mesa3d" and "make sense" in the same
>> sentence is a bit of a stretch :-) The proper thing for mesa3d to do would be to
>> enable dri3 automatically if a driver needs it. That we have to pass it
>> explicitly is just silly IMHO.
>>
>>
>>>>  I just did a build with just DRI3 selected and it didn't install anything to
>>>> target or staging. This suggests that the option isn't useful on its own.
>>>
>>> Same for numerous other options in buildroot which enable/disable compile time
>>> feature include in packages, see e.g. the BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5,
>>> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2, ... and many others...
>>
>>  BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 *will* install libcrypto to staging and
>> target, so I fail to see your point.
> 
> With:
> 
> BR2_PACKAGE_OPENSSL=y
> BR2_PACKAGE_LIBOPENSSL=y
> BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
> # BR2_PACKAGE_LIBOPENSSL_BIN is not set
> # BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_DES is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3 is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST is not set
> # BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
> # BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
> # BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP is not set
> 
> 	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
> libopenssl,./usr/lib/libcrypto.so.1.1
> libopenssl,./usr/lib/libcrypto.a
> libopenssl,./usr/lib/libcrypto.so
> libopenssl,./usr/lib/pkgconfig/libcrypto.pc
> 
> 
> With:
> 
> BR2_PACKAGE_OPENSSL=y
> BR2_PACKAGE_LIBOPENSSL=y
> BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
> # BR2_PACKAGE_LIBOPENSSL_BIN is not set
> # BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
> BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_DES=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK=y
> BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST=y
> # BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
> # BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
> BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP=y
> 
> 	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
> libopenssl,./usr/lib/libcrypto.so.1.1
> libopenssl,./usr/lib/libcrypto.a
> libopenssl,./usr/lib/libcrypto.so
> libopenssl,./usr/lib/pkgconfig/libcrypto.pc
> 
> 
> I would describe the _ENABLE_... options as enabling/disabling (compile time)
> features of libcrypto...

 Exactly: by enabling the RC4 option, something additional gets built into
libcrypto. But I think the dri3 option doesn't really enable anything at all...

- dri3 enabled but none of the drivers using it enabled: has no effect on what
is installed to taret/staging (i.e. anything that does get installed is exactly
the same as without that optoin.

- dri3 not enabled but one of the drivers using it is enabled: build fails.

 I'm not sure of this, but I suspect this is the case. that's why I suspect that
it makes no sense as a user-visible option:

>>  What I'm saying is: having it as a user-visible option only makes sense if a
>> user can do something with that option. Since mesa3d doesn't install anything
>> when dri3 is selected, I suspect that it's useless as a user-visible option. And
>> as I wrote, making it user-visible has a cost: it means that changing/removing
>> the option later becomes more difficult (legacy handling and all that).


 Regards,
 Arnout

>>
>>  Of course, I could still be wrong. Maybe dri3 does something useful. But to me
>> it looks more like the shared-glapi option, that is meaningless by itself but
>> that enables a subsystem that is required by some drivers.
>>
>>
>>>>  More importantly: have you checked that DRI3 doesn't have any dependencies of
>>>> itself? Check the meson files to see if there are dependencies that are implied
>>>> directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
>>>> than the individual dri driver). Those things should be moved around as well,
>>>> similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
>>>> individual drivers.
>>>
>>> But this mimics the mesa3d internal logic (without an mesa3d exposed feature
>>> option)....
>>
>>  I'm not sure what you mean. What I mean is: in meson.build there is:
>>
>> if with_platform_x11
>> ...
>>   if (with_egl or
>>       with_dri3 or (
>>       with_gallium_vdpau or with_gallium_xvmc or with_gallium_xa or
>>       with_gallium_omx != 'disabled'))
>>     dep_xcb_xfixes = dependency('xcb-xfixes')
>>   endif
>>
>>
>>  This means, IMHO, that in Config.in we need:
>>
>> config BR2_PACKAGE_MESA3D_DRI3
>> 	bool
>> 	depends on ...
>> 	select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7
>>
>> and there are a bunch more like that.
>>
>>
>>  Regards,
>>  Arnout
>>
>>>
>>> Regards,
>>> Peter
>>>
>>>>
>>>>
>>>>  Series marked as Changes Requested.
>>>>
>>>>  Regards,
>>>>  Arnout
>>>>
>>>>> +	help
>>>>> +	  Enable DRI3 support.
>>>>> +
>>>>>  # Some Gallium driver needs libelf when built with LLVM support
>>>>>  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>>>>>  	bool
>>>>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>>>>>  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>>>>>  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>>>>>  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
>>>>> +	select BR2_PACKAGE_MESA3D_DRI3 if \
>>>>> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>>>>>  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>>>>
>>>>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>>>>>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>>>>>  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>>>>>  	depends on BR2_PACKAGE_XORG7 # xorgproto
>>>>> +	select BR2_PACKAGE_MESA3D_DRI3
>>>>>  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>>>>>  	select BR2_PACKAGE_XORGPROTO
>>>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
>>>>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>>>>> index 5c5f8a33f3..da6e55bf93 100644
>>>>> --- a/package/mesa3d/mesa3d.mk
>>>>> +++ b/package/mesa3d/mesa3d.mk
>>>>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>>>>>  MESA3D_CONF_OPTS += -Db_asneeded=false
>>>>>  endif
>>>>>
>>>>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
>>>>> +MESA3D_CONF_OPTS += -Ddri3=enabled
>>>>> +else
>>>>> +MESA3D_CONF_OPTS += -Ddri3=disabled
>>>>> +endif
>>>>> +
>>>>>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>>>>>  MESA3D_DEPENDENCIES += host-llvm llvm
>>>>>  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
>>>>> @@ -122,13 +128,10 @@ endif
>>>>>
>>>>>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>>>>>  MESA3D_CONF_OPTS += \
>>>>> -	-Ddri-drivers= -Ddri3=disabled
>>>>> +	-Ddri-drivers=
>>>>>  else
>>>>>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>>>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>>>>> -MESA3D_CONF_OPTS += -Ddri3=enabled
>>>>> -else
>>>>> -MESA3D_CONF_OPTS += -Ddri3=disabled
>>>>>  endif
>>>>>  MESA3D_CONF_OPTS += \
>>>>>  	-Dshared-glapi=enabled \
>>>>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>>>>>  else
>>>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>>>>>  MESA3D_CONF_OPTS += \
>>>>> -	-Ddri3=enabled \
>>>>>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>>>>>  endif
>>>>>
>>>>>
>>>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-16 21:50         ` Arnout Vandecappelle
@ 2021-06-16 22:21           ` Peter Seiderer
  0 siblings, 0 replies; 14+ messages in thread
From: Peter Seiderer @ 2021-06-16 22:21 UTC (permalink / raw)
  To: buildroot

On Wed, 16 Jun 2021 23:50:41 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 16/06/2021 21:54, Peter Seiderer wrote:
> > Hello Arnout,
> >
> > On Tue, 15 Jun 2021 22:19:11 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
> >
> >> On 14/06/2021 23:54, Peter Seiderer wrote:
> >>> Hello Arnout,
> >>>
> >>> On Sun, 13 Jun 2021 11:25:36 +0200, Arnout Vandecappelle <arnout@mind.be> wrote:
> >>>
> >>>>  Hi Peter,
> >>>>
> >>>> On 13/06/2021 00:30, Peter Seiderer wrote:
> >>>>> Add config option for DRI3 support and use it instead
> >>>>> of DRI3 enable/disable logic in *.mk file.
> >>>>>
> >>>>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> >>>>> ---
> >>>>>  package/mesa3d/Config.in |  8 ++++++++
> >>>>>  package/mesa3d/mesa3d.mk | 12 +++++++-----
> >>>>>  2 files changed, 15 insertions(+), 5 deletions(-)
> >>>>>
> >>>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> >>>>> index d1b3af2054..36acd9758c 100644
> >>>>> --- a/package/mesa3d/Config.in
> >>>>> +++ b/package/mesa3d/Config.in
> >>>>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
> >>>>>
> >>>>>  if BR2_PACKAGE_MESA3D
> >>>>>
> >>>>> +config BR2_PACKAGE_MESA3D_DRI3
> >>>>> +	bool "Enable DRI3 support"
> >>>>
> >>>>  Does it make sense to have this as a user-selectable option? Wouldn't it be
> >>>> better to make this a blind option? (The latter has the advantage that we can
> >>>> easily refactor it later, without legacy handling and stuff.)
> >>>
> >>> As it is an feature option exposed by mesa3d I believe it makes sense...
> >>
> >>  I think putting "option exposed by mesa3d" and "make sense" in the same
> >> sentence is a bit of a stretch :-) The proper thing for mesa3d to do would be to
> >> enable dri3 automatically if a driver needs it. That we have to pass it
> >> explicitly is just silly IMHO.
> >>
> >>
> >>>>  I just did a build with just DRI3 selected and it didn't install anything to
> >>>> target or staging. This suggests that the option isn't useful on its own.
> >>>
> >>> Same for numerous other options in buildroot which enable/disable compile time
> >>> feature include in packages, see e.g. the BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5,
> >>> BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2, ... and many others...
> >>
> >>  BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 *will* install libcrypto to staging and
> >> target, so I fail to see your point.
> >
> > With:
> >
> > BR2_PACKAGE_OPENSSL=y
> > BR2_PACKAGE_LIBOPENSSL=y
> > BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
> > # BR2_PACKAGE_LIBOPENSSL_BIN is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_DES is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3 is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST is not set
> > # BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
> > # BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP is not set
> >
> > 	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
> > libopenssl,./usr/lib/libcrypto.so.1.1
> > libopenssl,./usr/lib/libcrypto.a
> > libopenssl,./usr/lib/libcrypto.so
> > libopenssl,./usr/lib/pkgconfig/libcrypto.pc
> >
> >
> > With:
> >
> > BR2_PACKAGE_OPENSSL=y
> > BR2_PACKAGE_LIBOPENSSL=y
> > BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH="linux-aarch64"
> > # BR2_PACKAGE_LIBOPENSSL_BIN is not set
> > # BR2_PACKAGE_LIBOPENSSL_ENGINES is not set
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_DES=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK=y
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST=y
> > # BR2_PACKAGE_LIBOPENSSL_UNSECURE is not set
> > # BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE is not set
> > BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP=y
> >
> > 	$ grep libcrypto build/libopenssl-1.1.1k/.files-list.txt
> > libopenssl,./usr/lib/libcrypto.so.1.1
> > libopenssl,./usr/lib/libcrypto.a
> > libopenssl,./usr/lib/libcrypto.so
> > libopenssl,./usr/lib/pkgconfig/libcrypto.pc
> >
> >
> > I would describe the _ENABLE_... options as enabling/disabling (compile time)
> > features of libcrypto...
>
>  Exactly: by enabling the RC4 option, something additional gets built into
> libcrypto. But I think the dri3 option doesn't really enable anything at all...

If an option does not enable anything why is it needed, why does it make a difference?

>
> - dri3 enabled but none of the drivers using it enabled: has no effect on what
> is installed to taret/staging (i.e. anything that does get installed is exactly
> the same as without that optoin.

??? See above about feature option..., and why should disable/enable make
a runtime difference, see original bug report [1], [2]...

>
> - dri3 not enabled but one of the drivers using it is enabled: build fails.

No build failure... only a runtime failure, see original bug report [1], [2]...

Regards,
Peter

[1] https://bugs.busybox.net/show_bug.cgi?id=13831
[2] https://gitlab.freedesktop.org/mesa/mesa/-/issues/4861

>
>  I'm not sure of this, but I suspect this is the case. that's why I suspect that
> it makes no sense as a user-visible option:
>
> >>  What I'm saying is: having it as a user-visible option only makes sense if a
> >> user can do something with that option. Since mesa3d doesn't install anything
> >> when dri3 is selected, I suspect that it's useless as a user-visible option. And
> >> as I wrote, making it user-visible has a cost: it means that changing/removing
> >> the option later becomes more difficult (legacy handling and all that).
>
>
>  Regards,
>  Arnout
>
> >>
> >>  Of course, I could still be wrong. Maybe dri3 does something useful. But to me
> >> it looks more like the shared-glapi option, that is meaningless by itself but
> >> that enables a subsystem that is required by some drivers.
> >>
> >>
> >>>>  More importantly: have you checked that DRI3 doesn't have any dependencies of
> >>>> itself? Check the meson files to see if there are dependencies that are implied
> >>>> directly by dri3 (i.e., maybe the xshmfence dependency comes from dri3 rather
> >>>> than the individual dri driver). Those things should be moved around as well,
> >>>> similar how they are put in BR2_PACKAGE_MESA3D_DRI_DRIVER instead of the
> >>>> individual drivers.
> >>>
> >>> But this mimics the mesa3d internal logic (without an mesa3d exposed feature
> >>> option)....
> >>
> >>  I'm not sure what you mean. What I mean is: in meson.build there is:
> >>
> >> if with_platform_x11
> >> ...
> >>   if (with_egl or
> >>       with_dri3 or (
> >>       with_gallium_vdpau or with_gallium_xvmc or with_gallium_xa or
> >>       with_gallium_omx != 'disabled'))
> >>     dep_xcb_xfixes = dependency('xcb-xfixes')
> >>   endif
> >>
> >>
> >>  This means, IMHO, that in Config.in we need:
> >>
> >> config BR2_PACKAGE_MESA3D_DRI3
> >> 	bool
> >> 	depends on ...
> >> 	select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7
> >>
> >> and there are a bunch more like that.
> >>
> >>
> >>  Regards,
> >>  Arnout
> >>
> >>>
> >>> Regards,
> >>> Peter
> >>>
> >>>>
> >>>>
> >>>>  Series marked as Changes Requested.
> >>>>
> >>>>  Regards,
> >>>>  Arnout
> >>>>
> >>>>> +	help
> >>>>> +	  Enable DRI3 support.
> >>>>> +
> >>>>>  # Some Gallium driver needs libelf when built with LLVM support
> >>>>>  config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
> >>>>>  	bool
> >>>>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
> >>>>>  		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
> >>>>>  		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
> >>>>>  		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
> >>>>> +	select BR2_PACKAGE_MESA3D_DRI3 if \
> >>>>> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >>>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
> >>>>>  		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
> >>>>>
> >>>>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
> >>>>>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
> >>>>>  	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
> >>>>>  	depends on BR2_PACKAGE_XORG7 # xorgproto
> >>>>> +	select BR2_PACKAGE_MESA3D_DRI3
> >>>>>  	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
> >>>>>  	select BR2_PACKAGE_XORGPROTO
> >>>>>  	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
> >>>>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> >>>>> index 5c5f8a33f3..da6e55bf93 100644
> >>>>> --- a/package/mesa3d/mesa3d.mk
> >>>>> +++ b/package/mesa3d/mesa3d.mk
> >>>>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
> >>>>>  MESA3D_CONF_OPTS += -Db_asneeded=false
> >>>>>  endif
> >>>>>
> >>>>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
> >>>>> +MESA3D_CONF_OPTS += -Ddri3=enabled
> >>>>> +else
> >>>>> +MESA3D_CONF_OPTS += -Ddri3=disabled
> >>>>> +endif
> >>>>> +
> >>>>>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
> >>>>>  MESA3D_DEPENDENCIES += host-llvm llvm
> >>>>>  MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
> >>>>> @@ -122,13 +128,10 @@ endif
> >>>>>
> >>>>>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
> >>>>>  MESA3D_CONF_OPTS += \
> >>>>> -	-Ddri-drivers= -Ddri3=disabled
> >>>>> +	-Ddri-drivers=
> >>>>>  else
> >>>>>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
> >>>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> >>>>> -MESA3D_CONF_OPTS += -Ddri3=enabled
> >>>>> -else
> >>>>> -MESA3D_CONF_OPTS += -Ddri3=disabled
> >>>>>  endif
> >>>>>  MESA3D_CONF_OPTS += \
> >>>>>  	-Dshared-glapi=enabled \
> >>>>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
> >>>>>  else
> >>>>>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> >>>>>  MESA3D_CONF_OPTS += \
> >>>>> -	-Ddri3=enabled \
> >>>>>  	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
> >>>>>  endif
> >>>>>
> >>>>>
> >>>
> >
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-06-12 22:30 [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Peter Seiderer
  2021-06-12 22:30 ` [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11 Peter Seiderer
  2021-06-13  9:25 ` [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Arnout Vandecappelle
@ 2021-12-17 21:00 ` Arnout Vandecappelle
  2021-12-19  7:16   ` Michael Taubert
       [not found]   ` <c8c49a7c-fea0-c96c-ba23-4ff17a1c0d3e@arachnodroid.de>
  2 siblings, 2 replies; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-12-17 21:00 UTC (permalink / raw)
  To: Peter Seiderer, buildroot
  Cc: Bernd Kuhls, Marek Kraus, Romain Naour, Michael Taubert



On 13/06/2021 00:30, Peter Seiderer wrote:
> Add config option for DRI3 support and use it instead
> of DRI3 enable/disable logic in *.mk file.
> 
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>

  As discussed in another thread, I applied a heavily modified version of both 
patches to master, thanks. Please try again if master works for you.

  Regards,
  Arnout

> ---
>   package/mesa3d/Config.in |  8 ++++++++
>   package/mesa3d/mesa3d.mk | 12 +++++++-----
>   2 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index d1b3af2054..36acd9758c 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>   
>   if BR2_PACKAGE_MESA3D
>   
> +config BR2_PACKAGE_MESA3D_DRI3
> +	bool "Enable DRI3 support"
> +	help
> +	  Enable DRI3 support.
> +
>   # Some Gallium driver needs libelf when built with LLVM support
>   config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>   	bool
> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>   		!BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>   		!BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>   		!BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
> +	select BR2_PACKAGE_MESA3D_DRI3 if \
> +		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>   	select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>   		(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>   
> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>   	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>   	depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>   	depends on BR2_PACKAGE_XORG7 # xorgproto
> +	select BR2_PACKAGE_MESA3D_DRI3
>   	select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>   	select BR2_PACKAGE_XORGPROTO
>   	select BR2_PACKAGE_XLIB_LIBXSHMFENCE
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index 5c5f8a33f3..da6e55bf93 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>   MESA3D_CONF_OPTS += -Db_asneeded=false
>   endif
>   
> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
> +MESA3D_CONF_OPTS += -Ddri3=enabled
> +else
> +MESA3D_CONF_OPTS += -Ddri3=disabled
> +endif
> +
>   ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>   MESA3D_DEPENDENCIES += host-llvm llvm
>   MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
> @@ -122,13 +128,10 @@ endif
>   
>   ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>   MESA3D_CONF_OPTS += \
> -	-Ddri-drivers= -Ddri3=disabled
> +	-Ddri-drivers=
>   else
>   ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>   MESA3D_DEPENDENCIES += xlib_libxshmfence
> -MESA3D_CONF_OPTS += -Ddri3=enabled
> -else
> -MESA3D_CONF_OPTS += -Ddri3=disabled
>   endif
>   MESA3D_CONF_OPTS += \
>   	-Dshared-glapi=enabled \
> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>   else
>   MESA3D_DEPENDENCIES += xlib_libxshmfence
>   MESA3D_CONF_OPTS += \
> -	-Ddri3=enabled \
>   	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>   endif
>   
> 
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-12-17 21:00 ` Arnout Vandecappelle
@ 2021-12-19  7:16   ` Michael Taubert
       [not found]   ` <c8c49a7c-fea0-c96c-ba23-4ff17a1c0d3e@arachnodroid.de>
  1 sibling, 0 replies; 14+ messages in thread
From: Michael Taubert @ 2021-12-19  7:16 UTC (permalink / raw)
  To: Arnout Vandecappelle, Peter Seiderer, buildroot
  Cc: Bernd Kuhls, Marek Kraus, Romain Naour

Hi!

Got back to this topic this morning.

According to this line for V3D/VC4:

select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7

Mesa3D will be built with DRI3 support only if xorg is going to be used 
too. Though I'm actually using xorg, and can confirm that is compiling 
properly with X, I may have a switch to wayland anytime soon. Is xorg 
really required?

I must admit that the build did not complete, due to an error with 
libnss. So it's just what I got from the build logs.

Regards,
Michael

Am 12/17/21 um 10:00 PM schrieb Arnout Vandecappelle:
> 
> 
> On 13/06/2021 00:30, Peter Seiderer wrote:
>> Add config option for DRI3 support and use it instead
>> of DRI3 enable/disable logic in *.mk file.
>>
>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> 
>   As discussed in another thread, I applied a heavily modified version 
> of both patches to master, thanks. Please try again if master works for 
> you.
> 
>   Regards,
>   Arnout
> 
>> ---
>>   package/mesa3d/Config.in |  8 ++++++++
>>   package/mesa3d/mesa3d.mk | 12 +++++++-----
>>   2 files changed, 15 insertions(+), 5 deletions(-)
>>
>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>> index d1b3af2054..36acd9758c 100644
>> --- a/package/mesa3d/Config.in
>> +++ b/package/mesa3d/Config.in
>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>>   if BR2_PACKAGE_MESA3D
>> +config BR2_PACKAGE_MESA3D_DRI3
>> +    bool "Enable DRI3 support"
>> +    help
>> +      Enable DRI3 support.
>> +
>>   # Some Gallium driver needs libelf when built with LLVM support
>>   config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>>       bool
>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>>           !BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>>           !BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>>           !BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
>> +    select BR2_PACKAGE_MESA3D_DRI3 if \
>> +        (BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>       select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>>           (BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>>       depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>>       depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>>       depends on BR2_PACKAGE_XORG7 # xorgproto
>> +    select BR2_PACKAGE_MESA3D_DRI3
>>       select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>>       select BR2_PACKAGE_XORGPROTO
>>       select BR2_PACKAGE_XLIB_LIBXSHMFENCE
>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>> index 5c5f8a33f3..da6e55bf93 100644
>> --- a/package/mesa3d/mesa3d.mk
>> +++ b/package/mesa3d/mesa3d.mk
>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>>   MESA3D_CONF_OPTS += -Db_asneeded=false
>>   endif
>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
>> +MESA3D_CONF_OPTS += -Ddri3=enabled
>> +else
>> +MESA3D_CONF_OPTS += -Ddri3=disabled
>> +endif
>> +
>>   ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>>   MESA3D_DEPENDENCIES += host-llvm llvm
>>   MESA3D_MESON_EXTRA_BINARIES += 
>> llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
>> @@ -122,13 +128,10 @@ endif
>>   ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>>   MESA3D_CONF_OPTS += \
>> -    -Ddri-drivers= -Ddri3=disabled
>> +    -Ddri-drivers=
>>   else
>>   ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>>   MESA3D_DEPENDENCIES += xlib_libxshmfence
>> -MESA3D_CONF_OPTS += -Ddri3=enabled
>> -else
>> -MESA3D_CONF_OPTS += -Ddri3=disabled
>>   endif
>>   MESA3D_CONF_OPTS += \
>>       -Dshared-glapi=enabled \
>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>>   else
>>   MESA3D_DEPENDENCIES += xlib_libxshmfence
>>   MESA3D_CONF_OPTS += \
>> -    -Ddri3=enabled \
>>       -Dvulkan-drivers=$(subst 
>> $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>>   endif
>>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
       [not found]   ` <c8c49a7c-fea0-c96c-ba23-4ff17a1c0d3e@arachnodroid.de>
@ 2021-12-19  7:22     ` Michael Taubert
  2021-12-20 22:00       ` Arnout Vandecappelle
  0 siblings, 1 reply; 14+ messages in thread
From: Michael Taubert @ 2021-12-19  7:22 UTC (permalink / raw)
  To: buildroot

Hi!

Got back to this topic this morning.

According to this line for V3D/VC4:

select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7

Mesa3D will be built with DRI3 support only if xorg is going to be used
too. Though I'm actually using xorg, and can confirm that is compiling
properly with X, I may have a switch to wayland anytime soon. Is xorg
really required?

I must admit that the build did not complete, due to an error with
libnss. So it's just what I got from the build logs.

Regards,
Michael

p.s. Thunderbird caused a mess with the last mail, somehow. Sorry.

Am 12/19/21 um 8:14 AM schrieb Michael Taubert:
> Hi!
> 
> Got back to this topic this morning.
> 
> According to this line:
> 
> select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> 
> Mesa3D will be built with DRI3 support only if xorg is going to be used 
> too. Though I'm actually using xorg, and can confirm that is compiling 
> properly with X, I may have a switch to wayland anytime soon. Is xorg 
> really required?
> 
> I must admit that it
> 
> Regards,
> Michael
> 
> Am 12/17/21 um 10:00 PM schrieb Arnout Vandecappelle:
>>
>>
>> On 13/06/2021 00:30, Peter Seiderer wrote:
>>> Add config option for DRI3 support and use it instead
>>> of DRI3 enable/disable logic in *.mk file.
>>>
>>> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
>>
>>   As discussed in another thread, I applied a heavily modified version 
>> of both patches to master, thanks. Please try again if master works 
>> for you.
>>
>>   Regards,
>>   Arnout
>>
>>> ---
>>>   package/mesa3d/Config.in |  8 ++++++++
>>>   package/mesa3d/mesa3d.mk | 12 +++++++-----
>>>   2 files changed, 15 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>>> index d1b3af2054..36acd9758c 100644
>>> --- a/package/mesa3d/Config.in
>>> +++ b/package/mesa3d/Config.in
>>> @@ -16,6 +16,11 @@ menuconfig BR2_PACKAGE_MESA3D
>>>   if BR2_PACKAGE_MESA3D
>>> +config BR2_PACKAGE_MESA3D_DRI3
>>> +    bool "Enable DRI3 support"
>>> +    help
>>> +      Enable DRI3 support.
>>> +
>>>   # Some Gallium driver needs libelf when built with LLVM support
>>>   config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>>>       bool
>>> @@ -65,6 +70,8 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER
>>>           !BR2_PACKAGE_MESA3D_OPENGL_GLX && \
>>>           !BR2_PACKAGE_MESA3D_OPENGL_EGL && \
>>>           !BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
>>> +    select BR2_PACKAGE_MESA3D_DRI3 if \
>>> +        (BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>>       select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \
>>>           (BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4)
>>> @@ -359,6 +366,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
>>>       depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
>>>       depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
>>>       depends on BR2_PACKAGE_XORG7 # xorgproto
>>> +    select BR2_PACKAGE_MESA3D_DRI3
>>>       select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>>>       select BR2_PACKAGE_XORGPROTO
>>>       select BR2_PACKAGE_XLIB_LIBXSHMFENCE
>>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>>> index 5c5f8a33f3..da6e55bf93 100644
>>> --- a/package/mesa3d/mesa3d.mk
>>> +++ b/package/mesa3d/mesa3d.mk
>>> @@ -35,6 +35,12 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
>>>   MESA3D_CONF_OPTS += -Db_asneeded=false
>>>   endif
>>> +ifeq ($(BR2_PACKAGE_MESA3D_DRI3),y)
>>> +MESA3D_CONF_OPTS += -Ddri3=enabled
>>> +else
>>> +MESA3D_CONF_OPTS += -Ddri3=disabled
>>> +endif
>>> +
>>>   ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>>>   MESA3D_DEPENDENCIES += host-llvm llvm
>>>   MESA3D_MESON_EXTRA_BINARIES += 
>>> llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
>>> @@ -122,13 +128,10 @@ endif
>>>   ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>>>   MESA3D_CONF_OPTS += \
>>> -    -Ddri-drivers= -Ddri3=disabled
>>> +    -Ddri-drivers=
>>>   else
>>>   ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>>>   MESA3D_DEPENDENCIES += xlib_libxshmfence
>>> -MESA3D_CONF_OPTS += -Ddri3=enabled
>>> -else
>>> -MESA3D_CONF_OPTS += -Ddri3=disabled
>>>   endif
>>>   MESA3D_CONF_OPTS += \
>>>       -Dshared-glapi=enabled \
>>> @@ -142,7 +145,6 @@ MESA3D_CONF_OPTS += \
>>>   else
>>>   MESA3D_DEPENDENCIES += xlib_libxshmfence
>>>   MESA3D_CONF_OPTS += \
>>> -    -Ddri3=enabled \
>>>       -Dvulkan-drivers=$(subst 
>>> $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>>>   endif
>>>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support
  2021-12-19  7:22     ` Michael Taubert
@ 2021-12-20 22:00       ` Arnout Vandecappelle
  0 siblings, 0 replies; 14+ messages in thread
From: Arnout Vandecappelle @ 2021-12-20 22:00 UTC (permalink / raw)
  To: Michael Taubert, buildroot



On 19/12/2021 08:22, Michael Taubert wrote:
> Hi!
> 
> Got back to this topic this morning.
> 
> According to this line for V3D/VC4:
> 
> select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7
> 
> Mesa3D will be built with DRI3 support only if xorg is going to be used
> too. Though I'm actually using xorg, and can confirm that is compiling
> properly with X, I may have a switch to wayland anytime soon. Is xorg
> really required?

  AFAIU, dri3 requires xshmfence, and our xshmfence package depends on xorg7. A 
similar condition existed already, so I kept it.

  If someone can get it working without xshmfence (thus without xorg7), they can 
send a patch :-)

  Note that it's possible to select BR2_PACKAGE_XORG7 without selecting any X 
library. By itself, it doesn't actually do anything. Perhaps we should even get 
rid of that option, I don't know.

  Regards,
  Arnout


> 
> I must admit that the build did not complete, due to an error with
> libnss. So it's just what I got from the build logs.
> 
> Regards,
> Michael
> 
> p.s. Thunderbird caused a mess with the last mail, somehow. Sorry.
[snip]
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-12-20 22:00 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-12 22:30 [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Peter Seiderer
2021-06-12 22:30 ` [Buildroot] [PATCH v1 2/2] package/mesa3d: gallium/kmsro drivers require dri3 for X11 Peter Seiderer
2021-06-13  9:33   ` Arnout Vandecappelle
2021-06-14 21:47     ` Peter Seiderer
2021-06-13  9:25 ` [Buildroot] [PATCH v1 1/2] package/mesa3d: add config option for DRI3 support Arnout Vandecappelle
2021-06-14 21:54   ` Peter Seiderer
2021-06-15 20:19     ` Arnout Vandecappelle
2021-06-16 19:54       ` Peter Seiderer
2021-06-16 21:50         ` Arnout Vandecappelle
2021-06-16 22:21           ` Peter Seiderer
2021-12-17 21:00 ` Arnout Vandecappelle
2021-12-19  7:16   ` Michael Taubert
     [not found]   ` <c8c49a7c-fea0-c96c-ba23-4ff17a1c0d3e@arachnodroid.de>
2021-12-19  7:22     ` Michael Taubert
2021-12-20 22:00       ` Arnout Vandecappelle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.