VideoCore is a series oflow-powermobile multimedia processors originally developed byAlphamosaic Ltd and now owned byBroadcom. Alphamosaic marketed its first version as a two-dimensionalDSP architecture that makes it flexible and efficient enough to decode (as well as encode) a number of multimedia codecs in software while maintaining low power usage.[1] Thesemiconductor intellectual property core (SIP core) has been found so far only on Broadcom SoCs.
Mobile multimedia devices require a lot of high-speed video processing but at low power for long battery life. TheARM processor core has a highIPS per watt figure (and thus dominates the mobile phone market) but requires video acceleration coprocessors and display controllers for a complete system. The amount of data passing between these chips at high speed results in higher power consumption. Specialised co-processors may be optimised for throughput over latency (more cores and data parallelism, but at a lower clock speed) and have instruction-sets and memory architectures designed for media processing (e.g. saturation arithmetic, and handling of specialised data formats).
The VideoCoreIV-AG100-R found in theRaspberry Pi 1, 2 and 3, is documented to fully supportOpenGL ES 2.0 andOpenVG 1.1.
The 3D engine is composed of various subsystems, the most abundant being the QPUs. A QPU is a 16-waysingle instruction, multiple data (SIMD) processor.
"Each processor has two vector floating-pointALUs which carry out multiply and non-multiply operations in parallel with single instruction cycle latency. Internally the QPU is a 4-way SIMD processor multiplexed 4× over four cycles, making it particularly suited to processing streams of quads of pixels," according to Broadcom'sVideoCore® IV 3D Architecture Reference Guide.[1]
"QPUs are organized into groups of up to four, termed slices, which share certain common resources," the document continues. cf.Vertex andshader.
These "slices" correspond roughly toAMD's Compute Units.
At least VC 4 (e.g. in the Raspberry Pi) does not supportS3 Texture Compression (S3TC).[2] It probably also does not supportAdaptive Scalable Texture Compression (ASTC).
Of video compression algorithms currently in wide use, such asH.263,H.264/MPEG-4 AVC,MPEG-4,MPEG-2,MPEG-1,H.265,Daala,Theora,VP8 andVP9, Broadcom's VideoCore products support hardware acceleration of some operations. In some cases only decompression, only compression or both up to a certain resolution (e.g. 720p or 1080p) and up to a certain frame rate (e.g. 30 or 60 frames per second).
The VideoCore I-based VC01 provides video and multimedia capabilities to various Samsung phones, including SCH-V540, SCH-V4200, SCH-V490.[3]
The VideoCore II-based VC02 / BCM2722 processor provides video capabilities forApple's5th generation iPod.[4]
The VideoCore III-basedBCM2727 processor provides video, still and 3D graphics capabilities for theNokia N8.
The VideoCore IVBCM2763 processor improves on the VideoCore III with support for1080p encode and decode, along with higher resolution camera support and faster 2D and 3D graphics, all at very low power. It is used in theNokia 808 PureView,[5] some versions ofRoku hardware and theRaspberry Pi (2835/2836 models for versions 1/2 accordingly).[6]
The VideoCore IVBCM28155 processor supports for 1080p encode and decode, improved 2D and 3D graphics withdual-coreARM Cortex-A9 CPU in BCM28155 chipset. It is used in theSamsung Galaxy S II Plus,Samsung Galaxy Grand andAmazon Fire TV Stick.
The VideoCore V BCM7251 processor supports 2160p60 decode and transcode or dual 1080p60 encode/decode, features improved codec support (H.265), DDR3 and DDR4 support, USB 3.0, PCIe, Gigabit Ethernet and 802.11ac on adual-coreARM Cortex-A15 Brahma15 dual core CPU.
SoC | GPU | CPU | Max display | Utilizing devices | ||||
---|---|---|---|---|---|---|---|---|
Microarchitecture | Freq. (MHz) | Instruction set | Microarchitecture | Cores | Freq. (MHz) | |||
VC01 | VideoCore 1 | None | CIF | List
| ||||
BCM2702 (VC02) | VideoCore 2 | None | SD PAL/NTSC | List
| ||||
BCM2705 (VC05) | VideoCore 2 | None | SD PAL/NTSC | |||||
BCM2091 | VideoCore 4 | None | Unspecified | |||||
BCM2722 | VideoCore 2 | None | SD PAL/NTSC | List | ||||
BCM2724 | VideoCore 2 | None | SD PAL/NTSC | |||||
BCM2727 | VideoCore 3 | None | HD720p | List | ||||
BCM11181 | VideoCore 3 | None | HD720p | |||||
BCM2763 | VideoCore 4 | None | Full HD1080p | |||||
BCM2820 | VideoCore 4 | ARMv6 | ARM1176 | 1 | 600 | Full HD1080p | ||
BCM2835 | VideoCore 4 | 250 | ARMv6 | ARM1176 | 1 | 700 | Full HD1080p | |
BCM2836 | VideoCore 4 | 250 | ARMv7 | Cortex-A7 | 4 | 900 | Full HD1080p[a] | Raspberry Pi 2[7] |
BCM2837 | VideoCore 4 | 300 | ARMv8 | Cortex-A53 | 4 | 1200 | Full HD1080p[a] | Raspberry Pi 3[7] |
BCM11182 | VideoCore 4 | None | Full HD1080p | |||||
BCM11311 | VideoCore 4 | ARMv7 | Cortex-A9 | 2 | Full HD1080p | |||
BCM21654 | VideoCore 4 | ARMv7 | Cortex-A9 +Cortex-R4 | 1+1 | Full HD1080p | |||
BCM21654G | VideoCore 4 | ARMv7 | Cortex-A9 | 1 | up to 1000 | HD 720p | ||
BCM21663 | VideoCore 4 | ARMv7 | Cortex-A9 | 1 | up to 1200 | HD720p | List
| |
BCM21664 | VideoCore 4 | ARMv7 | Cortex-A9 | 1 | up to 1000 | HD720p | ||
BCM21664T | VideoCore 4 | ARMv7 | Cortex-A9 | 1 | up to 1200 | Full HD1080p | List
| |
BCM28150 | VideoCore 4 | ARMv7 | Cortex-A9 | 2 | Full HD1080p | List
| ||
BCM21553 | VideoCore 4 | ARMv6 | ARM11 | 1 | Full HD1080p | List
| ||
BCM28145/28155 | VideoCore 4 | ARMv7 | Cortex-A9 | 2 | 1200 | Full HD1080p | ||
BCM23550 | VideoCore 4 | ARMv7 | Cortex-A7 | 4 | 1200 | Full HD1080p | List
| |
BCM7251 (archive.org) | VideoCore 5 | ARMv7 | ARM Cortex-A15 | 2 | 1666 | 4K2160p | ||
BCM2711B0 | VideoCore 6 | 500 | ARMv8 | ARM Cortex-A72 | 4 | 1800 | Dual 4K2160p | Raspberry Pi 4B[11] |
BCM2712 | VideoCore 7 | 800 | ARMv8 | ARM Cortex-A76 | 4 | 2400 | Dual 4K2160p 60fps | Raspberry Pi 5[12] |
SoC | Microarchitecture | Freq. (MHz) | Instruction set | Microarchitecture | Cores | Freq. (MHz) | Max display | Utilizing devices |
GPU | CPU |
![]() | This sectioncontainspromotional content. Please helpimprove it by removingpromotional language and inappropriateexternal links, and by adding encyclopedic text written from aneutral point of view.(January 2024) (Learn how and when to remove this message) |
VideoCore chips can run complete applications – DSP chips are not simply just video DSP chips that require a separate processor to supply and collect data. The VideoCore may also not be optimally power-efficient at non-DSP tasks, but may be coupled with a highly efficient CPU core. For instance, typical non-multimedia tasks rarely require more than 32-bit bus width, while the VideoCore design employs multiple wide-bus-width cores.
The video decoding was offloaded onto a video accelerator board using a BCM chip.[citation needed]
Blu-ray players can also use it as a low-power video accelerator.
Noting that VideoCore chips were usually used with ARM-based chips, the latest chips have VideoCore and ARM processors.
On 28 February 2014, on the day of the second anniversary of theRaspberry Pi, Broadcom, together with the Raspberry Pi Foundation, announced the release of full documentation for the VideoCore IV graphics core, and a complete source release of the graphics stack under a3-clause BSD license.[13][14][15]
However, only a minor part of the driver was released as open source; all of the video acceleration is done using a firmware coded for its proprietary GPU, which was not open sourced. The entire SoC itself is managed by aThreadX-basedRTOS that is loaded into the VideoCore's VPU during bootup.[16]
An architectural overview of the VideoCore based system was compiled (based on reverse engineering & patent research) by Herman Hermitage and is available on GitHub.[17]
In June 2014, Emma Anholt left Intel for Broadcom to develop a free driver (DRM/KMS driver andGallium3D-driver) for VC4 (VideoCore 4).[18] After one week, she reported noteworthy progress.[19][20]
I've taken on a new role as an open source developer there. I'm going to be working on building anMIT-licensedMesa 3D and kernelDRM driver for the 2708 (aka the 2835), the chip that's in theRaspberry Pi.[21]
The freely licensed 3D graphics code was committed to Mesa on 29 August 2014,[22] and was first released as part of Mesa 10.3.
The open source community has produced a C++ library calledV3DLib for directly running customcompute kernels on the VideoCore GPU on all Raspberry Pi's. This allows general-purpose computing on graphics processing units (GPGPU) which is not limited by OpenGL'sgraphics-orientedAPI.
Similar mobile multimedia chip ranges includeAdreno,Texas Instruments OMAP,Nvidia Tegra,AllWinner A1X andFreescale i.MX. These are ARM-based with arrays of graphics processing units.
The Broadcom YouTube page[23] has videos demonstrating the video processing capability, but their website only goes as far as providing product briefs. Detailed data and development tools are only available underNDA, and then only for manufacturers with a market for very many units.