[virglrenderer-devel] multiprocess model and GL

Gurchetan Singh gurchetansingh at chromium.org
Thu Feb 20 21:25:24 UTC 2020


On Mon, Feb 17, 2020 at 3:12 AM Gerd Hoffmann <kraxel at redhat.com> wrote:
>
>   Hi,
>
> > > The concern over EXECBUFFER seems to be about requiring dummy object
> > > ids to create resources.  How about switching virgl execbuffer to use
> > > object ids?
> >
> > Ah, there's the issue.  Object IDs imply something -- that subsequent
> > rendering commands will reference them.
>
> No.  Object IDs can be used to reference the object, period.  Userspace
> has the option to use that once for resource creation, then use resource
> ids in rendering commands.  Or it can use Object IDs in rendering
> commands.  Or a mix of both, even though that probably isn't a good
> idea.
>
> > Virgl contexts won't reference the object ID.  Generic allocation
> > contexts don't need object IDs either.  So, they are only useful in
> > the userspace that is designed around it.  Some userspace isn't.
>
> Yep.  They can just use some temporary cookie for the object id.
> Probably even some fixed value would work as there should never
> be more than one object without an resource id assigned.
>
> Object IDs allow some features, specifically addressing objects the
> kernel doesn't (need to) know anything about.  If you don't need this
> you can create a resource for each object and after doing so just ignore
> the object ids.  I still fail to see why this this is such a big deal
> and why we are discussing the same thing over and over again.
>
> We have fundamentally three options:
>
>   (a) Depend on object ids.
>   (b) Create a command set variant for allocation (doesn't need
>       object ids because the allocation commands can get the resid
>       from context).
>   (c) Add ioctl to reserve resource ids (doesn't need object ids
>       because userspace can pass the reserved resid to execbuffer
>       allocation commands).
>
> (c) was discussed in the past but I think we all agreed that it isn't a
> good idea because it introduces some non-trivial problems around
> handling non-initialized resources and resource ownership.
>
> (b) is favored by Gurchetan Singh.
>
> (a) is favored by Gerd Hoffmann and Chia-I Wu.
>
> So unless someone can come up with some brilliant idea (d) we should
> pick either (a) or (b) and move on instead of running the discussion
> in circles a few more weeks.

update: after discussing more with other members of the CrOS gfx team,
we decided to go with (a).  I guess the next steps, in terms of kernel
development, is perhaps landing incremental fixes in drm-misc-next ...

>
> My personal favorite is (a) obviously.  I think the design is better
> and I expect this will be easier to maintain long-term.  Variant (b)
> introduces some oddities and special cases and I suspect this might
> get into the way some day in the future.  I don't have any hard
> arguments, this is just a gut feeling based on a few decades
> experience ...
>
> cheers,
>   Gerd
>


More information about the virglrenderer-devel mailing list