[virglrenderer-devel] multiprocess model and GL

Gerd Hoffmann kraxel at redhat.com
Mon Feb 3 10:04:22 UTC 2020


> > Because they're defined in different headers and used by different ioctls:
> >
> > execbuffer: https://github.com/freedesktop/virglrenderer/blob/master/src/virgl_protocol.h
> > resouce create v1:
> > https://github.com/freedesktop/virglrenderer/blob/master/src/virgl_hw.h
> >
> > (note the formats and binding types -- virglrenderer wouldn't work without it)
> >
> > So I wouldn't call the resource create v2 protocol as execbuffer.
> I will say virgl_hw.h is a part of the virgl_protocol.h.  Together,
> they define the virgl protocol.  If you look at the various _FORMAT
> fields in virgl_protocol.h, they refers to the formats defined in
> virgl_hw.h.
> 
> I think a more fair way to put this is that some of the virgl protocol
> details are leaked by drm_virtgpu_resource_create.

Indeed.  We have some funny hard-coded values in the kernel because of
that, when creating dumb resources via CREATE_3D, which don't make sense
at all unless you have a look at the virgl protocol.

> IMO, a reasonable
> way to plug the leak is to make sure the virgl protocol details are
> contained in EXECBUFFER in resource create v2.

Agreeing here.

I'm not fully though whenever execbuffer is the best option for gbm
allocations.  gbm is just an allocation thing, not a full rendering
protocol, so IMHO gbm objects are more like dumb object.  Specifically
you'll go create them outside a context and go bind them to a gl/vk
context later on to use them for rendering ...

cheers,
  Gerd



More information about the virglrenderer-devel mailing list