Skip to contentSkip to conversation

xorg: fix dependencies, add fbturbo driver (branch yem/xorg)

PATCH New Yann E. MORIN 4 participants 9 messages Jul 30, 2015 – Oct 3, 2015

lore
Share & tools
lore
#0 lore raw

v2 cover xorg: fix dependencies, add fbturbo driver (branch yem/xorg)

Hello All!

This series introduces three changes in our Xorg stack:
- the dependency on libdrm is cleaned up
- a missing dependency on libdrm has been added for DRI2
- a new video driver, fbturbo, has been added (thanks Scott)

Changes v1 -> v2:
- drop modular-server-as-default patch, committed
- add fbturbo driver, which triggered the libdrm issue

Regards,
Yann E. MORIN.

The following changes since commit f986cca8b1967095871065371e75b2498b2185cd:

freerdp: Add support for tz package (2015-07-30 23:37:26 +0200)

are available in the git repository at:

git://git.busybox.net/~ymorin/git/buildroot yem/xorg

for you to fetch changes up to 1717e338b9d4e5998366a2d5f11897749a546ca1:

xdriver_xf86-video-fbturbo: new package (2015-07-31 00:22:13 +0200)

----------------------------------------------------------------
Scott Fan (1):
xdriver_xf86-video-fbturbo: new package

Yann E. MORIN (2):
package/xserver: commonalise dependency on libdrm package/xserver_xorg-server: dri2 needs libdrm

 package/x11r7/Config.in                             |  1 +
 package/x11r7/xdriver_xf86-video-fbturbo/Config.in  | 16 ++++++++++++++++
 .../xdriver_xf86-video-fbturbo.mk                   | 21 +++++++++++++++++++++
 package/x11r7/xserver_xorg-server/Config.in         |  1 +
 .../xserver_xorg-server/xserver_xorg-server.mk      | 19 ++++++++++++++-----
 5 files changed, 53 insertions(+), 5 deletions(-)
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/Config.in
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#1 lore raw

PATCH v2 1/3 package/xserver: commonalise dependency on libdrm

Currently, we have two locations that may want to enable and.or disable libdrm, and it's not clear how those two location correlate one to the other, i.e. they may well want o do one the opposite of the other.

Introduce an intermediate variable that records whether libdrm is needed, and use that to depend on, and enable, libdrm.

Cc Thomas Petazzoni <[email protected]>
Cc Bernd Kuhls <[email protected]>

---
Note: there might be other libs in the same situation, but that can come in later patches as the need arises... I just change this one lbdrm, because it will be needed by a followup patch to fix building with dri2proto enabled.

---
 .../x11r7/xserver_xorg-server/xserver_xorg-server.mk   | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)
package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +13 -5
index 79d663c..374a9c3 100644
@@ -122,10 +122,11 @@ XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive --disable-xfbdev
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)
-XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-libdrm --enable-glx
-XSERVER_XORG_SERVER_DEPENDENCIES += libdrm mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx
+XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y
 else
-XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri --disable-libdrm --disable-glx
+XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri --disable-glx
 endif
 
 ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX),y)
@@ -145,8 +146,8 @@ XSERVER_XORG_SERVER_DEPENDENCIES += udev
 XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev
 # udev kms support depends on libdrm
 ifeq ($(BR2_PACKAGE_LIBDRM),y)
-XSERVER_XORG_SERVER_DEPENDENCIES += libdrm
-XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms --enable-libdrm
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y
 else
 XSERVER_XORG_SERVER_CONF_OPTS += --disable-config-udev-kms
 endif
@@ -228,4 +229,11 @@ XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libsha1
 XSERVER_XORG_SERVER_DEPENDENCIES += libsha1
 endif
 
+ifeq ($(XSERVER_XORG_SERVER_NEEDS_LIBDRM),y)
+XSERVER_XORG_SERVER_DEPENDENCIES += libdrm
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-libdrm
+else
+XSERVER_XORG_SERVER_CONF_OPTS += --disable-libdrm
+endif
+
 $(eval $(autotools-package))
Signature · 1 line
1.9.1
#2 lore raw

PATCH v2 1/3 package/xserver: commonalise dependency on libdrm

Yann,

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive --disable-xfbdev · line 127

Quoted 6 lines · Yann E. MORIN

ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +3 -2
-XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-libdrm --enable-glx
-XSERVER_XORG_SERVER_DEPENDENCIES += libdrm mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx
+XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y

Hum, didn't we say that this should be a hidden Config.in boolean?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH v2 1/3 package/xserver: commonalise dependency on libdrm

Thomas, All,

On 2015-07-31 07:57 +0200, Thomas Petazzoni spake thusly:

Quoted 9 lines · Yann E. MORIN

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive --disable-xfbdev · line 127

Quoted 6 lines

ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +3 -2
-XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-libdrm --enable-glx
-XSERVER_XORG_SERVER_DEPENDENCIES += libdrm mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx
+XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y

Hum, didn't we say that this should be a hidden Config.in boolean?

Yes, you suggested so; I said yes; I tried; I said no... ;-)

    http://lists.busybox.net/pipermail/buildroot/2015-July/135100.html

Basically, all the conditional code is in the .mk , and there's almost no conditional in the Config.in.

So, I'd like not to duplicate the decision making in Config.in and keep all in a single place, the .mk .

That's why I did not move that to a blind kconfig option.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#4 lore raw

PATCH v2 1/3 package/xserver: commonalise dependency on libdrm

Thomas, All,

On 2015-07-31 18:59 +0200, Yann E. MORIN spake thusly:

Quoted 14 lines

On 2015-07-31 07:57 +0200, Thomas Petazzoni spake thusly:

Quoted 9 lines · Yann E. MORIN

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive --disable-xfbdev · line 127

Quoted 6 lines

ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)

package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +3 -2
-XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-libdrm --enable-glx
-XSERVER_XORG_SERVER_DEPENDENCIES += libdrm mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx
+XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y

Hum, didn't we say that this should be a hidden Config.in boolean?

Yes, you suggested so; I said yes; I tried; I said no... ;-)

    http://lists.busybox.net/pipermail/buildroot/2015-July/135100.html
Quoted 7 lines

Basically, all the conditional code is in the .mk , and there's almost no conditional in the Config.in.

So, I'd like not to duplicate the decision making in Config.in and keep all in a single place, the .mk .

That's why I did not move that to a blind kconfig option.

Did you make up your mind about this?

Now that we've switched to a mdular server by default, this series is now fixing actual autobuild errors...

If you really prefer that we duplicate all the logic in Config.in , I'll do it.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#6 lore raw

PATCH v2 2/3 package/xserver_xorg-server: dri2 needs libdrm

In reply to Yann E. MORIN

Fixes build issues like:

CC dri2.lo
CC dri2ext.lo
dri2.c: In function 'dri2_probe_driver_name':
dri2.c:1434:9: error: unknown type name 'drmVersionPtr'
dri2.c:1434:9: warning: implicit declaration of function 'drmGetVersion' [-Wimplicit-function-declaration] dri2.c:1434:9: warning: nested extern declaration of 'drmGetVersion' [-Wnested-externs] dri2.c:1444:40: error: invalid type argument of '->' (have 'int')
dri2.c:1444:55: error: invalid type argument of '->' (have 'int')
dri2.c:1445:9: warning: implicit declaration of function 'drmFreeVersion' [-Wimplicit-function-declaration] dri2.c:1445:9: warning: nested extern declaration of 'drmFreeVersion' [-Wnested-externs] make[7]: *** [dri2.lo] Error 1

with this defconfig:

    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_PACKAGE_XORG7=y
    BR2_PACKAGE_XSERVER_XORG_SERVER=y
    BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR=y
    BR2_PACKAGE_XPROTO_DRI2PROTO=y
---
 package/x11r7/xserver_xorg-server/Config.in              | 1 +
 package/x11r7/xserver_xorg-server/xserver_xorg-server.mk | 1 +
 2 files changed, 2 insertions(+)
package/x11r7/xserver_xorg-server/Config.in +1 -0
index f0ec598..5a6814b 100644
@@ -93,6 +93,7 @@ choice
 config BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
 	bool "Modular X.org"
 	depends on BR2_INSTALL_LIBSTDCPP
+	select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_XPROTO_DRI2PROTO
 	help
 	  This variant of the X.org server is the full-blown variant,
 	  as used by desktop GNU/Linux distributions. The drivers (for
package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +1 -0
index 374a9c3..7115e3f 100644
@@ -190,6 +190,7 @@ ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y)
 ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y)
 XSERVER_XORG_SERVER_DEPENDENCIES += xproto_dri2proto
 XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri2
+XSERVER_XORG_SERVER_NEEDS_LIBDRM = y
 else
 XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri2
 endif
Signature · 1 line
1.9.1
#7 lore raw

PATCH v2 3/3 xdriver_xf86-video-fbturbo: new package

In reply to Yann E. MORIN

From: Scott Fan <[email protected]>

Add the fbturbo video driver, which is based on xf86-video-fbdev (with none of the original features stripped), primarily optimized for the devices powered by the Allwinner SoC (A10, A13, A20).

https://github.com/ssvb/xf86-video-fbturbo/

[yann.morin.1998 at free.fr: strip help text to the basics only]
---
 package/x11r7/Config.in                             |  1 +
 package/x11r7/xdriver_xf86-video-fbturbo/Config.in  | 16 ++++++++++++++++
 .../xdriver_xf86-video-fbturbo.mk                   | 21 +++++++++++++++++++++
 3 files changed, 38 insertions(+)
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/Config.in
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk
package/x11r7/Config.in +1 -0
index 859e895..4e996fc 100644
@@ -162,6 +162,7 @@ if BR2_PACKAGE_XORG7
 		source package/x11r7/xdriver_xf86-video-cirrus/Config.in
 		source package/x11r7/xdriver_xf86-video-dummy/Config.in
 		source package/x11r7/xdriver_xf86-video-fbdev/Config.in
+		source package/x11r7/xdriver_xf86-video-fbturbo/Config.in
 		source package/x11r7/xdriver_xf86-video-geode/Config.in
 		source package/x11r7/xdriver_xf86-video-glide/Config.in
 		source package/x11r7/xdriver_xf86-video-glint/Config.in
package/x11r7/xdriver_xf86-video-fbturbo/Config.in new file +16 -0
new file mode 100644
index 0000000..cab12d2
@@ -0,0 +1,16 @@
+config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO
+	bool "xf86-video-fbturbo"
+	select BR2_PACKAGE_LIBDRI2
+	select BR2_PACKAGE_XPROTO_FONTSPROTO
+	select BR2_PACKAGE_XPROTO_RANDRPROTO
+	select BR2_PACKAGE_XPROTO_RENDERPROTO
+	select BR2_PACKAGE_XPROTO_VIDEOPROTO
+	select BR2_PACKAGE_XPROTO_XPROTO
+	select BR2_PACKAGE_XPROTO_XF86DRIPROTO
+	help
+	  video driver, primarily optimized for the devices powered
+	  by the Allwinner SoC (A10, A13, A20). It can use some of
+	  the 2D/3D hardware acceleration features.
+
+	  https://github.com/ssvb/xf86-video-fbturbo
+
package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk new file +21 -0
new file mode 100644
index 0000000..18f80d5
@@ -0,0 +1,21 @@
+################################################################################
+#
+# xdriver_xf86-video-fbturbo
+#
+################################################################################
+
+XDRIVER_XF86_VIDEO_FBTURBO_VERSION = 0.4.0
+XDRIVER_XF86_VIDEO_FBTURBO_SITE = $(call github,ssvb,xf86-video-fbturbo,$(XDRIVER_XF86_VIDEO_FBTURBO_VERSION))
+XDRIVER_XF86_VIDEO_FBTURBO_LICENSE = MIT
+XDRIVER_XF86_VIDEO_FBTURBO_LICENSE_FILES = COPYING
+XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xproto
+
+XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += xproto_xf86driproto libdri2
+
+define XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE
+        $(INSTALL) -m 0644 -D $(@D)/xorg.conf $(TARGET_DIR)/etc/X11/xorg.conf
+endef
+
+XDRIVER_XF86_VIDEO_FBTURBO_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE
+
+$(eval $(autotools-package))
Signature · 1 line
1.9.1
#8 lore raw

PATCH v2 3/3 xdriver_xf86-video-fbturbo: new package

Quoted 21 lines · Yann E. MORIN

From: Scott Fan <[email protected]>

Add the fbturbo video driver, which is based on xf86-video-fbdev (with none of the original features stripped), primarily optimized for the devices powered by the Allwinner SoC (A10, A13, A20).

https://github.com/ssvb/xf86-video-fbturbo/

[yann.morin.1998 at free.fr: strip help text to the basics only]
---
 package/x11r7/Config.in                             |  1 +
 package/x11r7/xdriver_xf86-video-fbturbo/Config.in  | 16 ++++++++++++++++
 .../xdriver_xf86-video-fbturbo.mk                   | 21 +++++++++++++++++++++
 3 files changed, 38 insertions(+)
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/Config.in
 create mode 100644 package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk

+++ b/package/x11r7/xdriver_xf86-video-fbturbo/Config.in

package/x11r7/xdriver_xf86-video-fbturbo/Config.in line 3

Quoted 3 lines
package/x11r7/xdriver_xf86-video-fbturbo/Config.in new file +3 -0
@@ -0,0 +1,16 @@
+config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO
+       bool "xf86-video-fbturbo"
+       select BR2_PACKAGE_LIBDRI2

It actually doesn't use libdri2 for anything (it does contain a stray #include "dri2.h" but it isn't needed and I've added a patch to drop it).

The configure script also checks for libdrm and pixman, so I've added that as well.

Quoted 22 lines
package/x11r7/xdriver_xf86-video-fbturbo/Config.in new file +13 -0
+       select BR2_PACKAGE_XPROTO_FONTSPROTO
+       select BR2_PACKAGE_XPROTO_RANDRPROTO
+       select BR2_PACKAGE_XPROTO_RENDERPROTO
+       select BR2_PACKAGE_XPROTO_VIDEOPROTO
+       select BR2_PACKAGE_XPROTO_XPROTO
+       select BR2_PACKAGE_XPROTO_XF86DRIPROTO
+       help
+         video driver, primarily optimized for the devices powered
+         by the Allwinner SoC (A10, A13, A20). It can use some of
+         the 2D/3D hardware acceleration features.
+
+         https://github.com/ssvb/xf86-video-fbturbo
+
package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk new file +3 -0
new file mode 100644
index 0000000..18f80d5
@@ -0,0 +1,21 @@
+################################################################################
+#
+# xdriver_xf86-video-fbturbo

package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk line 13

Quoted 10 lines
package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk new file +10 -0
+#
+################################################################################
+
+XDRIVER_XF86_VIDEO_FBTURBO_VERSION = 0.4.0
+XDRIVER_XF86_VIDEO_FBTURBO_SITE = $(call github,ssvb,xf86-video-fbturbo,$(XDRIVER_XF86_VIDEO_FBTURBO_VERSION))
+XDRIVER_XF86_VIDEO_FBTURBO_LICENSE = MIT
+XDRIVER_XF86_VIDEO_FBTURBO_LICENSE_FILES = COPYING
+XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xproto
+
+XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += xproto_xf86driproto libdri2

There's no need for the += here, it can all be handled on a single _DEPENDENCIES assignment. I've fixed the overlong line as well.

The package also has optional support for libpciaccess, so I've added that.

Committed with these fixes, thanks.

Signature · 1 line
Bye, Peter Korsgaard