1 | V3D
|
---|
2 | ===
|
---|
3 |
|
---|
4 | Mesa's V3D graphics driver stack includes a `conformant GLES3.1
|
---|
5 | driver
|
---|
6 | <https://www.khronos.org/conformance/adopters/conformant-products/opengles#submission_882>`__
|
---|
7 | called V3D and a Vulkan graphics driver called V3DV, notably
|
---|
8 | used on the Raspberry Pi 4 and Raspberry Pi 5.
|
---|
9 |
|
---|
10 | The V3D Mesa drivers communicate directly with the `V3D
|
---|
11 | <https://www.kernel.org/doc/html/latest/gpu/v3d.html>`__ kernel DRM
|
---|
12 | driver for scheduling GPU commands. Additionally, on the Raspberry Pi
|
---|
13 | 4 and 5, the kernel uses the VC4 DRM driver for display support, so Mesa
|
---|
14 | exposes a ``vc4_dri.so`` using the kmsro helpers to do
|
---|
15 | behind-the-scenes buffer management between the two kernel drivers,
|
---|
16 | while executing rendering on the V3D kernel module.
|
---|
17 |
|
---|
18 | Initial development work was done on the Broadcom 7268 (V3D 3.3) and
|
---|
19 | 7278 (V3D 4.1). Development since then has been on V3D 4.2 (Raspberry
|
---|
20 | Pi 4), and V3D 7.1 (Raspberry Pi 5). When the support for V3D 7.1
|
---|
21 | landed, the support for 3.3 and 4.1 was dropped as it was not tested
|
---|
22 | anymore (see `MR#25851
|
---|
23 | <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25851>`__)
|
---|
24 | Broadcom's reference software platforms do not make use of the open
|
---|
25 | source V3D stack, but porting a particular hardware implementation to
|
---|
26 | use it would still be possible.
|
---|
27 |
|
---|
28 | Hardware Documentation
|
---|
29 | ----------------------
|
---|
30 |
|
---|
31 | Broadcom never released a public specification for the V3D 3.x or 4.x
|
---|
32 | series.
|
---|
33 |
|
---|
34 | For driver developers, Broadcom publicly released a `specification
|
---|
35 | <https://docs.broadcom.com/doc/12358545>`__ PDF for the 21553, which
|
---|
36 | is closely related to the VC4 GPU present in the Raspberry Pi. They
|
---|
37 | also released a `snapshot <https://docs.broadcom.com/docs/12358546>`__
|
---|
38 | of a corresponding Android graphics driver. That graphics driver was
|
---|
39 | ported to Raspbian for a demo, but was not expected to have ongoing
|
---|
40 | development.
|
---|
41 |
|
---|
42 | Developers with NDA access with Broadcom or Raspberry Pi can get
|
---|
43 | access to the V3D architecture specification for documentation of the
|
---|
44 | GPU's programming model. There is also a C++ software simulator
|
---|
45 | called simpenrose, and the Mesa driver includes a backend
|
---|
46 | (``src/broadcom/drm-shim/``) to use simpenrose from an x86 system with
|
---|
47 | the i915 graphics driver with all of the VC4 rendering commands
|
---|
48 | emulated on simpenrose and memcpyed to the real GPU. Note that
|
---|
49 | simpenrose's API drifts over time, so you need to be synced up with
|
---|
50 | whatever version Mesa was last being developed against.
|
---|