Files
TheRock/third-party/sysdeps/linux/amd-mesa/mesa-fork/docs/drivers/v3d.rst
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

51 lines
2.3 KiB
ReStructuredText

V3D
===
Mesa's V3D graphics driver stack includes a `conformant GLES3.1
driver
<https://www.khronos.org/conformance/adopters/conformant-products/opengles#submission_882>`__
called V3D and a Vulkan graphics driver called V3DV, notably
used on the Raspberry Pi 4 and Raspberry Pi 5.
The V3D Mesa drivers communicate directly with the `V3D
<https://www.kernel.org/doc/html/latest/gpu/v3d.html>`__ kernel DRM
driver for scheduling GPU commands. Additionally, on the Raspberry Pi
4 and 5, 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 (Raspberry
Pi 4), and V3D 7.1 (Raspberry Pi 5). When the support for V3D 7.1
landed, the support for 3.3 and 4.1 was dropped as it was not tested
anymore (see `MR#25851
<https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25851>`__)
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
<https://docs.broadcom.com/doc/12358545>`__ PDF for the 21553, which
is closely related to the VC4 GPU present in the Raspberry Pi. They
also released a `snapshot <https://docs.broadcom.com/docs/12358546>`__
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 synced up with
whatever version Mesa was last being developed against.