From 8033200560f6d76b1f84480cc0df809112389686 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 15 Oct 2020 14:15:42 -0700 Subject: [PATCH] docs/v3d: Add a little stub of v3d documentation. Reviewed-by: Erik Faye-Lund Part-of: --- docs/contents.rst | 1 + docs/drivers/v3d.rst | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 docs/drivers/v3d.rst diff --git a/docs/contents.rst b/docs/contents.rst index 2873bbf43b7..9e321c02b15 100644 --- a/docs/contents.rst +++ b/docs/contents.rst @@ -54,6 +54,7 @@ drivers/freedreno drivers/llvmpipe drivers/openswr + drivers/v3d drivers/vc4 drivers/vmware-guest drivers/zink diff --git a/docs/drivers/v3d.rst b/docs/drivers/v3d.rst new file mode 100644 index 00000000000..2873369d533 --- /dev/null +++ b/docs/drivers/v3d.rst @@ -0,0 +1,47 @@ +V3D +=== + +Mesa's ``v3d`` graphics driver stack includes a `conformant GLES3.1 +driver +`__ +called ``v3d`` and a Vulkan graphics driver called ``v3dv``, notably +used on the Raspberry Pi 4. + +The v3d Mesa drivers communicate directly with the `v3d +`__ kernel DRM +driver for scheduling GPU commands. Additionally, on the Raspberry Pi +4, the kernel uses the vc4 DRM driver for display support, so Mesa +exposes a ``vc4_dri.so`` using the kmsro helpers to do +behind-the-scenes buffer management between the two kernel drivers, +while executing rendering on the v3d kernel module. + +Initial development work was done on the Broadcom 7268 (V3D 3.3) and +7278 (V3D 4.1). Development since then has been on V3D 4.2, and +though the 3.3 and 4.1 support continues to remain in tree, it is not +tested any more. Broadcom's reference software platforms do not make +use of the open source v3d stack, but porting a particular hardware +implementation to use it would still be possible. + +Hardware Documentation +---------------------- + +Broadcom never released a public specification for the V3D 3.x or 4.x +series. + +For driver developers, Broadcom publicly released a `specification +`__ PDF for the 21553, which +is closely related to the vc4 GPU present in the Raspberry Pi. They +also released a `snapshot `__ +of a corresponding Android graphics driver. That graphics driver was +ported to Raspbian for a demo, but was not expected to have ongoing +development. + +Developers with NDA access with Broadcom or Raspberry Pi can get +access to the V3D architecture specification for documentation of the +GPU's programming model. There is also a C++ software simulator +called simpenrose, and the Mesa driver includes a backend +(``src/broadcom/drm-shim/``) to use simpenrose from an x86 system with +the i915 graphics driver with all of the vc4 rendering commands +emulated on simpenrose and memcpyed to the real GPU. Note that +simpenrose's API drifts over time, so you need to be syned up with +whatever version Mesa was last being developed against.