[Mesa-dev] EGL_EXT_*_drm - primary vs render node (Was Re: [Piglit] [PATCH 1/2] egl: Add sanity test for EGL_EXT_device_query (v3))

Emil Velikov emil.l.velikov at gmail.com
Thu Sep 8 11:19:23 UTC 2016


On 8 September 2016 at 08:19, Mathias Fröhlich
<Mathias.Froehlich at gmx.net> wrote:
> Hi Emil,
>
> Thanks for taking care so far.
>
> On Wednesday, 7 September 2016 12:18:24 CEST Emil Velikov wrote:
>> On 6 September 2016 at 18:32, Mathias Fröhlich
>> <Mathias.Froehlich at gmx.net> wrote:
>>
>> >>  ** EGL_EXT_output_drm
>> Correction - the above should read: EGL_EXT_{device,output}_drm
>>
>> >>  *** Using/exposing the card or render node
>> >>  - Extension is designed with EGL streams in mind (using the
>> >> primary/card node) while people expect to use to select the rendering
>> >> device.
>> >>  - Elaborate on the spec and/or introduce EGL_EXT_output{,_drm}_render ?
>> >>  *** Exposing EGL_EXT_output{,_drm}{,_render} on EGL implementations
>> >> supporting both SW and HW devices
>> >>  - Elaborate on the spec(s), add new one for SW devices and/or error
>> >> type to distinguish between the current errors and SW devices
>> > I do not care about anything built on top of EGL_EXT_output_base or
>> > EGL_*_stream_*. From my point of view this is beside.
>> >
>> >
>> > What I do care about is EGL_EXT_platform_device.
>> >
>> That's precisely what, where and why we want to clarify, correct the
>> spec or add a new one.
>
> I am under the impression that we are not talking about the same things:
> I believe that everything talking about EXT*_output_* is covering a completely
> different use case. The intent of what I am talking about is either a head-
> and outputless pbuffer or a context that is aimed to be used with
> EXT_KRH_surfaceless_context. There is not output required! And there is even
> no (sensible) output available. Also no remote output or virtualization
> output. This is just to produce offline image data.
> If I could not motivate the use case so far, there is a nice reference
> https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/
> explaining the use case.
>
> Given this is all headless a restricted and to be authenticated main node is
> of not so much use for this purpose. So to make the above usage work and under
> the assumption that render nodes were designed for this kind of use case there
> must be at least render nodes available in the device enumeration.
> May be device enumeration should just enumerate both, the main nodes that you
> may need to attach monitor outputs and the render nodes to get offline
> contexts?
>
I'm aware of your interest, yet the goal I'm aiming for here is to
tackle something that's "lower level", despite that
EGL_EXT_platform_device and EGL_EXT_device_drm are not (directly)
related.

Since people like pointing to the particular article can we work on
get it fixed. Here's a few things that come to mind, in order of
severity (high to low):
 - None of the *EXT_PROTOTYPES macros (that includes
EGL_EGLEXT_PROTOTYPES) should be used if you want portable
applications, period.
 - Justifying the ^^ define cause we're using an extension is a fallacy.
 - Missing (pseudo) code for that queries for the client extension(s)
EGL_EXT_device_base and device extension EGL_EXT_platform_device.
 - Naming the eglGetProcAddress retrieved symbols exactly as the entry
point name can lead to a number of issues depending on platform
specifics and *GL implementation.

Thanks
Emil


More information about the mesa-dev mailing list