vulkan renderer definitions and public headers
The virgl stack has a good number of public header files that are defined and consumed by different projects:
Kernel/VMM or vtest in the diagram is what I call transport mechanisms. They don't parse most of the traffic between Mesa and virglrenderer.
Examples of traffic that the transport mechanisms don't parse are
- resource parameters (
virgl_formats
,VIRGL_BIND_*
invirgl_hw.h
) - virgl capsets (
virgl_capsets
andvirgl_caps_v*
in virgl_hw.h) - virgl protocol (
VIRGL_CCMD_*
invirgl_protocol.h
)
Examples of traffic that the transport mechanisms do parse are
- blob resource types
- blob resource flags
These are new and are parsed because the transport mechanisms need to allocate differently and set up mappings for example.
For vulkan renderer, I need to add some new definitions
- context types (virgl or venus)
- venus capset
- venus protocol
The least intrusive change is to
- add context types to
virgl_hw.h
because they are things the transport mechanisms don't parse - add venus capset to
virgl_hw.h
where virgl capsets are defined - add venus protocol to a new protocol header
But we could also use the chance to clean up virgl_hw.h
such that Vulkan bits do not end up in virgl_hw.h
. Thoughts?