Query regarding DRM mastership sharing between multiple process

Pekka Paalanen ppaalanen at gmail.com
Fri Mar 5 15:44:04 UTC 2021


On Thu, 4 Mar 2021 09:43:22 +0530
Hardik Panchal <hardik.panchal at matrixcomsec.com> wrote:

> Hello Sir/Madam,
> 
> I am trying to render some stuff using DRM with Qt GUI application and
> decoded stream from Intel H/w decoder.
> 
> I have two applications one is for GUI content and another one is for
> decoded video streams. While doing this I am facing an issue that only
> singal process acquires DRM mastership while the other one is getting
> error.

Hi,

yes, this is deliberate and by design.

The idea of having two separate processes simultaneously controlling
KMS planes of the same CRTC is fundamentally forbidden. Even if it was
not forbidden, doing so would lead to other technical problems.

You have to change your architecture so that only one process controls
KMS. It you need other processes, they have to pass buffers or
rendering commands to the process that does control KMS. In other
words, you need a display server.

> While wondering how to get the privilege to render stuff I came
> across GET_MAGIC and AUTH_MAGIC.
> Please refer to this text from the MAN page of DRM.

Those will not help you with breaking the DRM master concept.

> > All DRM devices provide authentication mechanisms. Only a DRM-Master is
> > allowed to perform mode-setting or modify core state and only one user can
> > be DRM-Master at a time. See drmSetMaster
> > <https://www.commandlinux.com/man-page/man3/drmSetMaster.3.html>(3) for
> > information on how to become DRM-Master and what the limitations are. Other
> > DRM users can be authenticated to the DRM-Master via drmAuthMagic
> > <https://www.commandlinux.com/man-page/man3/drmAuthMagic.3.html>(3) so
> > they can perform buffer allocations and rendering.
> >  
> 
> As per this the client which is authenticated using magic code should be
> able to allocate buffer and rendering.
> But while doing this I am not able to use drmModeSetPlane() for rendering
> stuff on display from an authenticated client application. It is giving me
> Permission Denied.
> 
> As per my understanding if the client is authenticated by using
> GET/AUTH_MAGIC it should be able to set a plane and render stuff on the
> display.

No. Authentication gives access to buffer allocation and submitting
rendering commands to the GPU. It does not give access to KMS.


Sorry,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210305/99eaaf40/attachment.sig>


More information about the dri-devel mailing list