diff mbox series

[2/2] package/mesa3d: get glxgears working for v3d/vc4 minimal builds

Message ID 20200306092504.30340-2-hm@hmbedded.co.uk
State Superseded
Headers show
Series [1/2] package/mesa3d: select vc4 and kmsro driver for gallium v3d | expand

Commit Message

Howard Mitchell March 6, 2020, 9:25 a.m. UTC
Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
selected, no dri drivers selected) results in working X11 except that
glxgears shows a blank window. This commit effectively results in the
following conf options being added: -Dglx-direct=true -Ddri3=true

Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
---
 package/mesa3d/Config.in | 1 +
 1 file changed, 1 insertion(+)

Comments

Peter Seiderer March 6, 2020, 2:38 p.m. UTC | #1
Hello Howard,

On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:

> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
> selected, no dri drivers selected) results in working X11 except that
> glxgears shows a blank window. This commit effectively results in the
> following conf options being added: -Dglx-direct=true -Ddri3=true
>
> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
> ---
>  package/mesa3d/Config.in | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index 3950170533..59b8f60773 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>  	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>  	select BR2_PACKAGE_LIBDRM_VC4
>  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER

On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
only be selected by x11/glxgears)?

Regards,
Peter

>  	help
>  	  Driver for Broadcom VC4 (rpi2/3) GPUs.
>  	  It requires a vanilla 4.5+ kernel with drm vc4 (open) support.
Howard Mitchell March 6, 2020, 5:22 p.m. UTC | #2
Hello Peter,

On 06/03/2020 14:38, Peter Seiderer wrote:
> Hello Howard,
>
> On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
>
>> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
>> selected, no dri drivers selected) results in working X11 except that
>> glxgears shows a blank window. This commit effectively results in the
>> following conf options being added: -Dglx-direct=true -Ddri3=true
>>
>> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
>> ---
>>   package/mesa3d/Config.in | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>> index 3950170533..59b8f60773 100644
>> --- a/package/mesa3d/Config.in
>> +++ b/package/mesa3d/Config.in
>> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>>   	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>>   	select BR2_PACKAGE_LIBDRM_VC4
>>   	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
> On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
> MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
> only be selected by x11/glxgears)?

In fact the '-Ddri3=true' option is already dependent on X11 (in mesa3d.mk)
so only '-Dglx-direct=true' would be left without X. Do you think that is
likelyto break Qt/eglfs?

Regards,
Howard
Peter Seiderer March 6, 2020, 6:27 p.m. UTC | #3
Hello Howard,

On Fri, 6 Mar 2020 17:22:28 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:

> Hello Peter,
>
> On 06/03/2020 14:38, Peter Seiderer wrote:
> > Hello Howard,
> >
> > On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
> >
> >> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
> >> selected, no dri drivers selected) results in working X11 except that
> >> glxgears shows a blank window. This commit effectively results in the
> >> following conf options being added: -Dglx-direct=true -Ddri3=true
> >>
> >> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
> >> ---
> >>   package/mesa3d/Config.in | 1 +
> >>   1 file changed, 1 insertion(+)
> >>
> >> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> >> index 3950170533..59b8f60773 100644
> >> --- a/package/mesa3d/Config.in
> >> +++ b/package/mesa3d/Config.in
> >> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
> >>   	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
> >>   	select BR2_PACKAGE_LIBDRM_VC4
> >>   	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> >> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
> > On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
> > MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
> > only be selected by x11/glxgears)?
>
> In fact the '-Ddri3=true' option is already dependent on X11 (in mesa3d.mk)
> so only '-Dglx-direct=true' would be left without X. Do you think that is
> likelyto break Qt/eglfs?

Its not so much about breaking the Qt/eglfs case, but about being minimal and
not enabling un-needed/-wanted options...

Your list of options above is not very precise when looking
at package/mesa3d/mesa3d.mk (missing -Dshared-glapi=true -Ddri-drivers=,
and -Ddri3=true/false dependent on BR2_PACKAGE_XLIB_LIBXSHMFENCE)...

Regards,
Peter

>
> Regards,
> Howard
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Howard Mitchell March 9, 2020, 7:52 p.m. UTC | #4
Hello Peter,

On 06/03/2020 18:27, Peter Seiderer wrote:
> Hello Howard,
>
> On Fri, 6 Mar 2020 17:22:28 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
>
>> Hello Peter,
>>
>> On 06/03/2020 14:38, Peter Seiderer wrote:
>>> Hello Howard,
>>>
>>> On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
>>>
>>>> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
>>>> selected, no dri drivers selected) results in working X11 except that
>>>> glxgears shows a blank window. This commit effectively results in the
>>>> following conf options being added: -Dglx-direct=true -Ddri3=true
>>>>
>>>> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
>>>> ---
>>>>    package/mesa3d/Config.in | 1 +
>>>>    1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>>>> index 3950170533..59b8f60773 100644
>>>> --- a/package/mesa3d/Config.in
>>>> +++ b/package/mesa3d/Config.in
>>>> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>>>>    	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>>>>    	select BR2_PACKAGE_LIBDRM_VC4
>>>>    	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>>>> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
>>> On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
>>> MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
>>> only be selected by x11/glxgears)?
>> In fact the '-Ddri3=true' option is already dependent on X11 (in mesa3d.mk)
>> so only '-Dglx-direct=true' would be left without X. Do you think that is
>> likelyto break Qt/eglfs?
> Its not so much about breaking the Qt/eglfs case, but about being minimal and
> not enabling un-needed/-wanted options...
>
> Your list of options above is not very precise when looking
> at package/mesa3d/mesa3d.mk (missing -Dshared-glapi=true -Ddri-drivers=,
> and -Ddri3=true/false dependent on BR2_PACKAGE_XLIB_LIBXSHMFENCE)...

The options I specified are the difference between before and after 
applying the
patch. I used 'make printvars VARS=MESA3D_CONF_OPTS' to verify. Looking at
mesa3d.mk, -Dshared_glapi=true is already included because
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER=y and is therefore repeated. 
-Ddri-drivers=
is an empty list with or without the patch. So as I stated before only
-Dglx-direct=true is additional if you're building without X11. When 
building
with X11 then additionally -Ddri3 changes from false to true when the 
patch is
applied.

To see how much difference the -Dglx-direct=true option makes I built mesa3d
without X11 both with and without the patch applied and compared the 
file sizes
produced. Interestingly there was no difference at all, all output files 
were
exactly the same size with or without the patch. I was a bit surprised 
by this
so I retraced my steps to be absolutely sure. I suspect it is because
-Dglx=disabled so -Dglx-direct=true has no effect.

Regards,
Howard
Peter Seiderer March 9, 2020, 8:46 p.m. UTC | #5
Hello Howard,

On Mon, 9 Mar 2020 19:52:12 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:

> Hello Peter,
>
> On 06/03/2020 18:27, Peter Seiderer wrote:
> > Hello Howard,
> >
> > On Fri, 6 Mar 2020 17:22:28 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
> >
> >> Hello Peter,
> >>
> >> On 06/03/2020 14:38, Peter Seiderer wrote:
> >>> Hello Howard,
> >>>
> >>> On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell <hm@hmbedded.co.uk> wrote:
> >>>
> >>>> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
> >>>> selected, no dri drivers selected) results in working X11 except that
> >>>> glxgears shows a blank window. This commit effectively results in the
> >>>> following conf options being added: -Dglx-direct=true -Ddri3=true
> >>>>
> >>>> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
> >>>> ---
> >>>>    package/mesa3d/Config.in | 1 +
> >>>>    1 file changed, 1 insertion(+)
> >>>>
> >>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> >>>> index 3950170533..59b8f60773 100644
> >>>> --- a/package/mesa3d/Config.in
> >>>> +++ b/package/mesa3d/Config.in
> >>>> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
> >>>>    	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
> >>>>    	select BR2_PACKAGE_LIBDRM_VC4
> >>>>    	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> >>>> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
> >>> On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
> >>> MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
> >>> only be selected by x11/glxgears)?
> >> In fact the '-Ddri3=true' option is already dependent on X11 (in mesa3d.mk)
> >> so only '-Dglx-direct=true' would be left without X. Do you think that is
> >> likelyto break Qt/eglfs?
> > Its not so much about breaking the Qt/eglfs case, but about being minimal and
> > not enabling un-needed/-wanted options...
> >
> > Your list of options above is not very precise when looking
> > at package/mesa3d/mesa3d.mk (missing -Dshared-glapi=true -Ddri-drivers=,
> > and -Ddri3=true/false dependent on BR2_PACKAGE_XLIB_LIBXSHMFENCE)...
>
> The options I specified are the difference between before and after
> applying the
> patch. I used 'make printvars VARS=MESA3D_CONF_OPTS' to verify. Looking at
> mesa3d.mk, -Dshared_glapi=true is already included because
> BR2_PACKAGE_MESA3D_GALLIUM_DRIVER=y and is therefore repeated.
> -Ddri-drivers=
> is an empty list with or without the patch. So as I stated before only
> -Dglx-direct=true is additional if you're building without X11. When
> building
> with X11 then additionally -Ddri3 changes from false to true when the
> patch is
> applied.

But not dependent on X11 but dependent on BR2_PACKAGE_MESA3D_DRI_DRIVER=y/BR2_PACKAGE_XLIB_LIBXSHMFENCE=y?

I still state that forcing BR2_PACKAGE_MESA3D_DRI_DRIVER=y to gain -Ddri=true
(or toggle between true/false via random other dependencies) to satisfy glxgears needs
feels like the wrong approach...

Regards,
Peter

>
> To see how much difference the -Dglx-direct=true option makes I built mesa3d
> without X11 both with and without the patch applied and compared the
> file sizes
> produced. Interestingly there was no difference at all, all output files
> were
> exactly the same size with or without the patch. I was a bit surprised
> by this
> so I retraced my steps to be absolutely sure. I suspect it is because
> -Dglx=disabled so -Dglx-direct=true has no effect.
>
> Regards,
> Howard
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Howard Mitchell March 10, 2020, 10:16 a.m. UTC | #6
Hello Peter,

On 09/03/2020 20:46, Peter Seiderer wrote:
> Hello Howard,
>
> On Mon, 9 Mar 2020 19:52:12 +0000, Howard Mitchell<hm@hmbedded.co.uk>  wrote:
>
>> Hello Peter,
>>
>> On 06/03/2020 18:27, Peter Seiderer wrote:
>>> Hello Howard,
>>>
>>> On Fri, 6 Mar 2020 17:22:28 +0000, Howard Mitchell<hm@hmbedded.co.uk>  wrote:
>>>
>>>> Hello Peter,
>>>>
>>>> On 06/03/2020 14:38, Peter Seiderer wrote:
>>>>> Hello Howard,
>>>>>
>>>>> On Fri,  6 Mar 2020 09:25:04 +0000, Howard Mitchell<hm@hmbedded.co.uk>  wrote:
>>>>>
>>>>>> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
>>>>>> selected, no dri drivers selected) results in working X11 except that
>>>>>> glxgears shows a blank window. This commit effectively results in the
>>>>>> following conf options being added: -Dglx-direct=true -Ddri3=true
>>>>>>
>>>>>> Signed-off-by: Howard Mitchell<hm@hmbedded.co.uk>
>>>>>> ---
>>>>>>     package/mesa3d/Config.in | 1 +
>>>>>>     1 file changed, 1 insertion(+)
>>>>>>
>>>>>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>>>>>> index 3950170533..59b8f60773 100644
>>>>>> --- a/package/mesa3d/Config.in
>>>>>> +++ b/package/mesa3d/Config.in
>>>>>> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>>>>>>     	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>>>>>>     	select BR2_PACKAGE_LIBDRM_VC4
>>>>>>     	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>>>>>> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
>>>>> On rpi4 v3d/vc4 work definitely for the Qt/eglfs case without
>>>>> MESA3D_DRI_DRIVER, so this should at minimum depend on X11 (or
>>>>> only be selected by x11/glxgears)?
>>>> In fact the '-Ddri3=true' option is already dependent on X11 (in mesa3d.mk)
>>>> so only '-Dglx-direct=true' would be left without X. Do you think that is
>>>> likelyto break Qt/eglfs?
>>> Its not so much about breaking the Qt/eglfs case, but about being minimal and
>>> not enabling un-needed/-wanted options...
>>>
>>> Your list of options above is not very precise when looking
>>> at package/mesa3d/mesa3d.mk (missing -Dshared-glapi=true -Ddri-drivers=,
>>> and -Ddri3=true/false dependent on BR2_PACKAGE_XLIB_LIBXSHMFENCE)...
>> The options I specified are the difference between before and after
>> applying the
>> patch. I used 'make printvars VARS=MESA3D_CONF_OPTS' to verify. Looking at
>> mesa3d.mk, -Dshared_glapi=true is already included because
>> BR2_PACKAGE_MESA3D_GALLIUM_DRIVER=y and is therefore repeated.
>> -Ddri-drivers=
>> is an empty list with or without the patch. So as I stated before only
>> -Dglx-direct=true is additional if you're building without X11. When
>> building
>> with X11 then additionally -Ddri3 changes from false to true when the
>> patch is
>> applied.
> But not dependent on X11 but dependent on BR2_PACKAGE_MESA3D_DRI_DRIVER=y/BR2_PACKAGE_XLIB_LIBXSHMFENCE=y?
>
> I still state that forcing BR2_PACKAGE_MESA3D_DRI_DRIVER=y to gain -Ddri=true
> (or toggle between true/false via random other dependencies) to satisfy glxgears needs
> feels like the wrong approach...

Maybe, but as I'm building for an OpenGL platform I'd expect glxgears to 
work correctly.
The fact that it didn't suggested that mesa3d was incorrectly 
configured. Without my patch
to get a 'minimal' build in which glxgears works you need to select one 
of the dri drivers.
Any one will do. You then get, for example:
-Dglx-direct=true -Ddri3=true -Ddri-drivers=swrast as additional/changed 
options. So all
my patch effectively does is reduce -Ddri-drivers to an empty list.
Arnout Vandecappelle Jan. 9, 2022, 3:55 p.m. UTC | #7
On 06/03/2020 10:25, Howard Mitchell wrote:
> Currently a minimal build for rpi2/3/4 (i.e. only v3d and/or vc4
> selected, no dri drivers selected) results in working X11 except that
> glxgears shows a blank window. This commit effectively results in the
> following conf options being added: -Dglx-direct=true -Ddri3=true
> 
> Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>

  Instead of this patch, I applied [1]. Based on Howard's observation, the key 
is in fact the -Dglx-direct=true. I did a bit of investigation and I concluded 
that we can always enable that if GLX is enabled.

  Bernd, Peter, could you shout if that doesn't work for you?

  Regards,
  Arnout


[1] 
https://git.buildroot.org/buildroot/commit/?id=6a51177af14a2ddaa6431bb7fc618fe138b59b72


> ---
>   package/mesa3d/Config.in | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index 3950170533..59b8f60773 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -274,6 +274,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>   	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>   	select BR2_PACKAGE_LIBDRM_VC4
>   	select BR2_PACKAGE_MESA3D_OPENGL_EGL
> +	select BR2_PACKAGE_MESA3D_DRI_DRIVER
>   	help
>   	  Driver for Broadcom VC4 (rpi2/3) GPUs.
>   	  It requires a vanilla 4.5+ kernel with drm vc4 (open) support.
>
diff mbox series

Patch

diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
index 3950170533..59b8f60773 100644
--- a/package/mesa3d/Config.in
+++ b/package/mesa3d/Config.in
@@ -274,6 +274,7 @@  config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
 	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
 	select BR2_PACKAGE_LIBDRM_VC4
 	select BR2_PACKAGE_MESA3D_OPENGL_EGL
+	select BR2_PACKAGE_MESA3D_DRI_DRIVER
 	help
 	  Driver for Broadcom VC4 (rpi2/3) GPUs.
 	  It requires a vanilla 4.5+ kernel with drm vc4 (open) support.