...
...
3D mode will offload rendering operations to the host gpu and therefore requires a gpu with 3D support on the host machine. The guest side requires additional software in order to convert OpenGL commands to the raw graphics stack state (Gallium state) and channel them through virtio-gpu to the host. Currently the 'mesa' library is used for this purpose. The backend then receives the raw graphics stack state and interprets it using the virglrenderer library from the raw state into an OpenGL form, which can be executed as entirely normal OpenGL on the host machine. The host also translates shaders from the TGSI format used by Gallium into the GLSL format used by OpenGL.
These requirements are likely to change as VIRTIO-VULKAN is introduced. We expect the virtual platform interface to be VULKAN based without relation to OpenGL (which will exist only in the layers above).
Device ID.
REQ-1: The device ID MUST be set according to the requirement in chapter 5.7.1 in [VIRTIO-GPU].
...
REQ-5: The implementation MUST suport support the device operation concept (the command set and the operation flow) according to chapter 5.7.6 in [VIRTIO-GPU].
REQ-5.1: The implementation MUST support scatter-gather operations to fulfil the to fulfill the requirement in chapter 5.7.6.1 in [VIRTIO-GPU].
...
REQ-5.6: The implementation MUST SHOULD be capable to perform DMA operations to and from client's attached resources to fulfil the requirement in chapter 5.7.6.1 in [VIRTIO-GPU] and in 'Virtio-GPU | Virgl3D commands' in [VIRTIO-VIRGL].
...
NOTE: The current specification draft looks quite neat except the fact that it marks many requirements as SHO
ULD SHOULD or MAY and leaves it for an implementation. Here I try to provide more strict rules when it is applicable.
...