diff mbox series

package/piglit: Only support mesa and nvidia OpenGL provider

Message ID 20201114144554.1795422-1-romain.naour@gmail.com
State Changes Requested
Headers show
Series package/piglit: Only support mesa and nvidia OpenGL provider | expand

Commit Message

Romain Naour Nov. 14, 2020, 2:45 p.m. UTC
Even if piglit could be used to test any OpenGl implementation, it's really a
mesa's project because it follow closely the mesa implementation (API).

Other OpenGl vendor (binary blob) are quickly out of date and incompatible with
piglit. Especially ARM OpenGl vendors such TI, Allwinner (sunxi) and rpi.

So introduce BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS to list all supported
OpenGL providers. For now only mesa and Nvidia are supported.

Fixes:
[BR2_PACKAGE_PROVIDES_LIBEGL="sunxi-mali-mainline"]:
http://autobuild.buildroot.net/results/76212834a3065c4c3d479a49a16297d4679098a0

[BR2_PACKAGE_PROVIDES_LIBEGL="rpi-userland"]:
http://autobuild.buildroot.net/results/2cb799919d47e57eb401b7ece00b65707f9bd3ec

Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
 package/piglit/Config.in | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Thomas Petazzoni Nov. 14, 2020, 3:25 p.m. UTC | #1
Hello,

On Sat, 14 Nov 2020 15:45:54 +0100
Romain Naour <romain.naour@gmail.com> wrote:

> Even if piglit could be used to test any OpenGl implementation, it's really a
> mesa's project because it follow closely the mesa implementation (API).
> 
> Other OpenGl vendor (binary blob) are quickly out of date and incompatible with
> piglit. Especially ARM OpenGl vendors such TI, Allwinner (sunxi) and rpi.
> 
> So introduce BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS to list all supported
> OpenGL providers. For now only mesa and Nvidia are supported.
> 
> Fixes:
> [BR2_PACKAGE_PROVIDES_LIBEGL="sunxi-mali-mainline"]:
> http://autobuild.buildroot.net/results/76212834a3065c4c3d479a49a16297d4679098a0
> 
> [BR2_PACKAGE_PROVIDES_LIBEGL="rpi-userland"]:
> http://autobuild.buildroot.net/results/2cb799919d47e57eb401b7ece00b65707f9bd3ec

I'm not sure this is the best way to handle this. Perhaps we need to
have a better handling of OpenGL/EGL versions.

Indeed, looking at the failures with sunxi-mali-mainline, the issue is
that some EGLDeviceEXT stuff is used. From a quick look, this seems to
be related to the EXT_device_base EGL extension, documented at
https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_base.txt,
and which appeared in EGL 1.5.

So perhaps we should instead have some logic that allows OpenGL and EGL
providers to also declare which version of the OpenGL/EGL spec they
provide, so that users can appropriate depend on OpenEGL and EGL
providers that are suitable ?

This is something I already intend to work on about libgbm: we need a
virtual package for libgbm, but not all OpenGL implementations provide
the same version of the libgbm API.

What do you think ?

Thomas
Romain Naour Nov. 15, 2020, 10:24 a.m. UTC | #2
Hello Thomas,

Le 14/11/2020 à 16:25, Thomas Petazzoni a écrit :
> Hello,
> 
> On Sat, 14 Nov 2020 15:45:54 +0100
> Romain Naour <romain.naour@gmail.com> wrote:
> 
>> Even if piglit could be used to test any OpenGl implementation, it's really a
>> mesa's project because it follow closely the mesa implementation (API).
>>
>> Other OpenGl vendor (binary blob) are quickly out of date and incompatible with
>> piglit. Especially ARM OpenGl vendors such TI, Allwinner (sunxi) and rpi.
>>
>> So introduce BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS to list all supported
>> OpenGL providers. For now only mesa and Nvidia are supported.
>>
>> Fixes:
>> [BR2_PACKAGE_PROVIDES_LIBEGL="sunxi-mali-mainline"]:
>> http://autobuild.buildroot.net/results/76212834a3065c4c3d479a49a16297d4679098a0
>>
>> [BR2_PACKAGE_PROVIDES_LIBEGL="rpi-userland"]:
>> http://autobuild.buildroot.net/results/2cb799919d47e57eb401b7ece00b65707f9bd3ec
> 
> I'm not sure this is the best way to handle this. Perhaps we need to
> have a better handling of OpenGL/EGL versions.
> 
> Indeed, looking at the failures with sunxi-mali-mainline, the issue is
> that some EGLDeviceEXT stuff is used. From a quick look, this seems to
> be related to the EXT_device_base EGL extension, documented at
> https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_base.txt,
> and which appeared in EGL 1.5.

Indeed, that what I meant by "mesa implementation (API)"
(ok my explanation was not really precise :p)

> 
> So perhaps we should instead have some logic that allows OpenGL and EGL
> providers to also declare which version of the OpenGL/EGL spec they
> provide, so that users can appropriate depend on OpenEGL and EGL
> providers that are suitable ?

Something like BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION ?

> 
> This is something I already intend to work on about libgbm: we need a
> virtual package for libgbm, but not all OpenGL implementations provide
> the same version of the libgbm API.
> 
> What do you think ?

I believe it's worth the effort if other packages can also benefit from
OpenGL/EGL version spec provided by providers.

For piglit, I'm not sure. (I'm only using/testing piglit with mesa).
Piglit will always requires the same OpenGL/EGL API than mesa package.

I guess piglit still build with nvidia provider because it's not yet out of date.

Best regards,
Romain

> 
> Thomas
>
Thomas Petazzoni Jan. 23, 2021, 9:39 p.m. UTC | #3
On Sun, 15 Nov 2020 11:24:24 +0100
Romain Naour <romain.naour@gmail.com> wrote:

> > So perhaps we should instead have some logic that allows OpenGL and EGL
> > providers to also declare which version of the OpenGL/EGL spec they
> > provide, so that users can appropriate depend on OpenEGL and EGL
> > providers that are suitable ?  
> 
> Something like BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION ?

Yes, I'd rather work in terms of OpenGL/EGL versions or features
provided by the different OpenGL providers, rather than ad-hoc
conditions in each user of OpenGL APIs.

Thomas
diff mbox series

Patch

diff --git a/package/piglit/Config.in b/package/piglit/Config.in
index 736fd95d71..bfa2ba4e9a 100644
--- a/package/piglit/Config.in
+++ b/package/piglit/Config.in
@@ -1,7 +1,19 @@ 
+config BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS
+	bool
+	# Only mesa3d is officially supported, other opengl provider
+	# (binary blob) could break piglit at build or runtime.
+	# At least the binary-only driver blob for NVidia cards is
+	# still able to build piglit.
+	default y if BR2_PACKAGE_MESA3D_OPENGL_GLX || \
+		BR2_PACKAGE_MESA3D_OPENGL_EGL || \
+		BR2_PACKAGE_MESA3D_OPENGL_ES || \
+		BR2_PACKAGE_NVIDIA_DRIVER_XORG
+
 config BR2_PACKAGE_PIGLIT
 	bool "piglit"
 	depends on BR2_PACKAGE_PYTHON3 # python3 only script
 	depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS
 	depends on BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || \
 		BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND || \
 		BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL || \
@@ -32,4 +44,5 @@  config BR2_PACKAGE_PIGLIT
 	  https://piglit.freedesktop.org
 
 comment "piglit needs glibc or musl"
+	depends on BR2_PACKAGE_PIGLIT_SUPPORTED_GL_PROVIDERS
 	depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)