Query regarding DRM mastership sharing between multiple process

Daniel Vetter daniel at ffwll.ch
Thu Mar 11 14:00:13 UTC 2021


On Fri, Mar 05, 2021 at 05:44:04PM +0200, Pekka Paalanen wrote:
> 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.

One option is kms leases, where the main compositor with exclusive control
over the display can pass a select set of resources to another process.
But it's a clear lessor/lessee relationship, and the main compositor can
always revoke the lease if needed.
-Daniel

> 
> > 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



> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list