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
51 lines
2.3 KiB
ReStructuredText
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.
|