[Mesa-dev] [Mesa-stable] [PATCH 2/2] auxiliary: use vl_drm_screen_create method for surfaceless

Sharma, Deepak Deepak.Sharma at amd.com
Tue Oct 24 01:26:01 UTC 2017


Hi Emil,

Is your suggestion is to build mesa in chrome using --with-platforms=drm and --with-platforms=surfaceless both ? I am not sure if that is required for chrome.
The approach we are taking here is to build mesa only with --with-platforms=surfaceless and leverage existing 
VA_DISPLAY_DRM* to get VAAPI working on Chrome for platform.

Thanks,
Deepak

-----Original Message-----
From: Emil Velikov [mailto:emil.l.velikov at gmail.com] 
Sent: Tuesday, October 17, 2017 3:38 AM
To: Guttula, Suresh <Suresh.Guttula at amd.com>
Cc: ML mesa-dev <mesa-dev at lists.freedesktop.org>; Sharma, Deepak <Deepak.Sharma at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>; ML mesa-stable <mesa-stable at lists.freedesktop.org>; Emil Velikov <emil.velikov at collabora.com>
Subject: Re: [Mesa-stable] [PATCH 2/2] auxiliary: use vl_drm_screen_create method for surfaceless

HI Suresh,

Please try to avoid HTML emails. If that's not possible, make sure your reply is more readable.
At the moment it has 3 different fonts and 3 different colours, which makes is distracting and hard to read.

Please tweak the quoting format - older replies should be a level deeper. See [1] [2]

On 17 October 2017 at 07:36, Guttula, Suresh <Suresh.Guttula at amd.com> wrote:
> On 11 October 2017 at 07:13, Guttula, Suresh <Suresh.Guttula at amd.com> wrote:
>> HI,
>>
>>>- why do we need "surfaceless" support
>>    ChromeOS supports surfacelsess and we need this va enablement for 
>> surfaceless in chromium.
> Ack, that should have been part of the commit message.
>    >>>I will update the commit message.
>
>>> - does upstream VAAPI has surfaceless platform
>>     Yes. It uses headless support of VA-API for decoding.
> There's no VA_DISPLAY_SURFACELESS in libva [1]. Thus adding one here 
> is _very_ confusing and misleading.
>   >>>Sorry I understood wrongly the question, I thought you are asking 
> about mesa-vaapi. In libva it is using drm path only. If I understood 
> correctly , no need of any macro  VA_DISPLAY_SURFACELESS in libva as 
> there is no problem to use drm path for egl platform surfaceless. The 
> problem exists in mesa side as the check is added to enable va based on platform.
> https://github.com/01org/libva/blob/master/va/va_backend.h#L39
>   >>>libva uses “VA_DISPLAY_DRM_RENDERNODES”  in this case. In libva 
> ,Chromium (Ozone) for egl surfaceless platform goes for drm display .
> https://cs.chromium.org/chromium/src/media/gpu/vaapi_wrapper.cc?rcl=e1
> a85cf02acf0b4ccaad6e37afcf41d1fd26ce24&l=1188
>
>>>  - why is the surfaceless implementation identical to the DRM one
>>     If I understand your question correctly, In case of surfaceless 
>> platform ,it uses headless support of VAAPI, which will use drm 
>> implementation. If I miss something here please provide some more 
>> details on the question.
>>
Precisely - in hind sight, one might have called the libva display VA_DISPLAY_SURFACELESS.
Regardless, it's just a name so not a bit deal how it's called, as long as things are consistent.

You're adding surfaceless for Mesa VAAPI (backend) that interacts with libva VA_DISPLAY_DRM* (frontend). That's the confusing/misleading part I'm talking about.

> To put it otherwise:
>
> You're "adding" support for surfaceless for the sake of adding a name.
> There's no functional difference nor upstream (see the libva question
> above) demand for it.
>    >>>The reason for adding "surfaceless"  in mesa is the condition 
> checks for platform "drm/wayland/x11" to enable va.
> But in case of chromium ,we build mesa with_egl_platforms=surfaceless 
> and not mesa_gbm because chromium uses minigbm .So echo $platform is 
> surfaceless, even it is using drm path, condition check fail because 
> of platform type picked as surfaceless and va is not enabled.
>
Or in other words:
 - CrOS uses its own GBM,
 - using --with-platforms=gbm requires Mesa's GBM

Thus the solution here really is:
 - decouple the link-time dependency to a (once-off) runtime one
 - and(?) demote the configure error to a warning ;-) Right?

While we're there we could/should:
 - drop the (first_pointer == gbm_create_device) hack Replace with dladdr(first_pointer, &info) + strcmp(info.dli_sname,
"gbm_create_device") combo
 - make egl_dri2.c free of calls into gbm - only gbm_device_destroy remains Move the remaining gbm_device_destroy to platform_drm.c

Bonus points:
 - Add ABI and/or version check for Mesa GBM <> EGL interop.

Does that make sense? It seems like a more robust solution, IMHO.

Thanks
Emil

[1] https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
[2] https://www.extendoffice.com/documents/outlook/4006-outlook-reply-quote.html#a1


More information about the mesa-dev mailing list