VideoCore

{{Short description|Low-power mobile multimedia processor}}

{{Use dmy dates|date=March 2015}}

File:Raspberry-Pi-2-Bare-BR.jpg VideoCore processor powers the line of popular Raspberry Pi micro-computers.]]

VideoCore is a series of low-power mobile multimedia processors originally developed by Alphamosaic Ltd and now owned by Broadcom. Alphamosaic marketed its first version as a two-dimensional DSP 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.[https://web.archive.org/web/20030209213838/http://www.alphamosaic.com/videocore/ Alphamosaic Ltd > Technology – VideoCore], archived on 9 February 2003. The semiconductor intellectual property core (SIP core) has been found so far only on Broadcom SoCs.

Technical details

= Multimedia system constraints =

Mobile multimedia devices require a lot of high-speed video processing but at low power for long battery life. The ARM processor core has a high IPS 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).

= 3D engine =

The VideoCoreIV-AG100-R found in the Raspberry Pi 1, 2 and 3, is documented to fully support OpenGL ES 2.0 and OpenVG 1.1.

The 3D engine is composed of various subsystems, the most abundant being the QPUs. A QPU is a 16-way single instruction, multiple data (SIMD) processor.

"Each processor has two vector floating-point ALUs 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's VideoCore® IV 3D Architecture Reference Guide. [https://docs.broadcom.com/docs-and-downloads/docs/support/videocore/VideoCoreIV-AG100-R.pdf]

"QPUs are organized into groups of up to four, termed slices, which share certain common resources," the document continues. cf. Vertex and shader.

These "slices" correspond roughly to AMD's Compute Units.

At least VC 4 (e.g. in the Raspberry Pi) does not support S3 Texture Compression (S3TC).{{Cite web |url=https://openmw.org/faq/#what_can_you_do |title=Can I play Morrowind with OpenMW on other platforms like the Raspberry Pi?|date=6 August 2011 }} It probably also does not support Adaptive Scalable Texture Compression (ASTC).

= Video compression algorithms =

Of video compression algorithms currently in wide use, such as H.263, H.264/MPEG-4 AVC, MPEG-4, MPEG-2, MPEG-1, H.265, Daala, Theora, VP8 and VP9, 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).

= VideoCore key features =

  • Instruction set written with video processing in mind from the start. For example, saturation arithmetic so that the sum of two bright pixels does not 'wrap around' into dark values.
  • An array of graphics processing units for parallel computing of video data at relatively low clock speed.
  • Very high integration puts CPU, GPUs, memory and display circuitry on a single chip, removing the power burden of driving fast off-chip buses.

= Variants =

The VideoCore I-based VC01 provides video and multimedia capabilities to various Samsung phones, including SCH-V540, SCH-V4200, SCH-V490.{{cite web| url=http://media.corporate-ir.net/media_files/irol/11/114961/2006AnalystDay/Yossi_Cohen.pdf | title=Broadcom presentation by Yossi Cohen}}

The VideoCore II-based VC02 / BCM2722 processor provides video capabilities for Apple's 5th generation iPod.{{Cite web |url=https://arstechnica.com/reviews/hardware/video-ipod.ars/6 |title=Video iPod: Vivisection |last=Ecker |first=Clint |date=20 October 2005 |publisher=Ars Technica |access-date=29 March 2008}}

The VideoCore III-based [https://web.archive.org/web/20160919033249/http://www.broadcom.com/products/Cellular/Mobile-Multimedia-Processors/BCM2727 BCM2727] processor provides video, still and 3D graphics capabilities for the Nokia N8.

The VideoCore IV [https://web.archive.org/web/20110123051520/http://www.broadcom.com/products/Cellular/Mobile-Multimedia-Processors/BCM2763 BCM2763] processor improves on the VideoCore III with support for 1080p encode and decode, along with higher resolution camera support and faster 2D and 3D graphics, all at very low power. It is used in the Nokia 808 PureView,{{Cite web |url=http://www.staygrab.com/nokia-808-pureview/ |title=Nokia 808 PureView with Unbelievable 41 Megapixel Camera |website= staygrab.com |access-date=23 January 2013 |archive-date=13 January 2013 |archive-url=https://web.archive.org/web/20130113230727/http://www.staygrab.com/nokia-808-pureview/ |url-status=dead }} some versions of Roku hardware and the Raspberry Pi (2835/2836 models for versions 1/2 accordingly).{{Cite web |url=https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md |title=BCM2835 - Raspberry Pi Documentation}}

The VideoCore IV [https://web.archive.org/web/20130526115301/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM28145-28155 BCM28155] processor supports for 1080p encode and decode, improved 2D and 3D graphics with dual-core ARM Cortex-A9 CPU in BCM28155 chipset. It is used in the Samsung Galaxy S II Plus, Samsung Galaxy Grand and Amazon 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 a dual-core ARM Cortex-A15 Brahma15 dual core CPU.

= Table of SoCs adopting VideoCore SIP blocks =

class="wikitable"
rowspan="2" | SoC

! colspan="2" | GPU

! colspan="4" | CPU

! rowspan="2" | Max display

! rowspan="2" | Utilizing devices

Microarchitecture

! Freq. (MHz)

! Instruction set

! Microarchitecture

! Cores

! Freq. (MHz)

VC01

| VideoCore 1

| colspan="4" {{N/A|None}}

| CIF

| {{Collapsible list

| Samsung SCH-V490, Samsung SCH-V420, Samsung SCH-V450, Samsung SCH-V4200, Samsung SCH-V540, Samsung SCH-X699,

}}

[https://web.archive.org/web/20110824132129/http://www.broadcom.com/products/Wireless-LAN/Wi-Fi-Phone-Solutions/BCM2702 BCM2702 (VC02)]

| VideoCore 2

| colspan="4" {{N/A|None}}

| SD PAL/NTSC

| {{Collapsible list

| TCL D308, TCL D918, Samsung SPH-B3100, Samsung SPH-P730, Sandisk v-mate, BenQ S700, O2 X3, Nintendo Play-yan, Sagem MyMobileTV

}}

[https://web.archive.org/web/20110917025110/http://www.broadcom.com/products/Mobile-Multimedia/Mobile-Multimedia-Processors/BCM2705 BCM2705 (VC05)]

| VideoCore 2

| colspan="4" {{N/A|None}}

| SD PAL/NTSC

| {{Collapsible list

|

}}

[https://web.archive.org/web/20130818062001/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM2091 BCM2091]

| VideoCore 4

| colspan="4" {{N/A|None}}

| Unspecified

| {{Collapsible list

|

}}

[https://web.archive.org/web/20110917033609/http://www.broadcom.com/products/Mobile-Multimedia/Mobile-Multimedia-Processors/BCM2722 BCM2722]

| VideoCore 2

| colspan="4" {{N/A|None}}

| SD PAL/NTSC

| {{Collapsible list

| Apple's 5th generation iPod

}}

[https://web.archive.org/web/20110917051327/http://www.broadcom.com/products/Mobile-Multimedia/Mobile-Multimedia-Processors/BCM2724 BCM2724]

| VideoCore 2

| colspan="4" {{N/A|None}}

| SD PAL/NTSC

| {{Collapsible list

|

}}

[https://www.broadcom.com/products/broadband/set-top-box/bcm2727 BCM2727]

| VideoCore 3

| colspan="4" {{N/A|None}}

| HD 720p

| {{Collapsible list

| Nokia N8

}}

[https://web.archive.org/web/20120519014933/http://www.broadcom.com/products/Applications-and-Multimedia-Processors/Tablet-Application-Processors/BCM11181 BCM11181]

| VideoCore 3

| colspan="4" {{N/A|None}}

| HD 720p

| {{Collapsible list

|

}}

[https://web.archive.org/web/20110123051520/http://www.broadcom.com/products/Cellular/Mobile-Multimedia-Processors/BCM2763 BCM2763]

| VideoCore 4

| colspan="4" {{N/A|None}}

| Full HD 1080p

| {{Collapsible list

| Nokia 600, Nokia 700, Nokia 701, Nokia 603, Nokia 808

}}

[https://web.archive.org/web/20110917001158/http://www.broadcom.com/products/BCM2820 BCM2820]

| VideoCore 4

| ARMv6ARM11761600

| Full HD 1080p

| {{Collapsible list

|

}}

[https://web.archive.org/web/20150411042426/http://www.broadcom.com/products/BCM2835 BCM2835]

| VideoCore 4

250

| ARMv6

ARM11761700

| Full HD 1080p

| {{Collapsible list

|Raspberry Pi,{{Cite web |url=http://www.raspberrypi.org/faqs |title=Raspberry Pi FAQs - Frequently Asked Questions}} Roku 2 XS{{Cite web |url=http://www.mycablealternatives.com/2011/07/roku-2-xs-teardown/ |title=Roku 2 XS Teardown |date=28 July 2011 |website=My Cable Alternatives}}

}}

BCM2836

| VideoCore 4

250

| ARMv7

Cortex-A74900

| Full HD 1080p{{efn|name=fn1|1=Editing /boot/config.txt can yield higher resolutions by changing scan count and pixel clocks (i.e. 2560x1080){{Cite web |url=https://www.raspberrypi.org/forums/viewtopic.php?t=24679&start=50 |title=STICKY: HOWTO: Create Custom HDMI modes - Page 3 |website=Raspberry Pi Forums |access-date=2019-09-24}}}}

| Raspberry Pi 2

BCM2837

| VideoCore 4

300

| ARMv8

Cortex-A5341200

| Full HD 1080p{{efn|name=fn1}}

| Raspberry Pi 3

[https://web.archive.org/web/20130130141605/http://www.broadcom.com/products/Applications-and-Multimedia-Processors/Tablet-Application-Processors/BCM11182 BCM11182]

| VideoCore 4

| colspan="4" {{N/A|None}}

| Full HD 1080p

| {{Collapsible list

|

}}

[https://www.broadcom.com/products/embedded-and-networking-processors/embedded-socs/bcm11311 BCM11311]

| VideoCore 4

| ARMv7Cortex-A92| Full HD 1080p

| {{Collapsible list

|

}}

[https://web.archive.org/web/20130921054350/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21654 BCM21654]

| VideoCore 4

| ARMv7Cortex-A9 + Cortex-R41+1| Full HD 1080p

| {{Collapsible list

| Samsung Galaxy Fame (all variants GT-S6810/GT-S6810P/GT-S6812)

}}

[https://web.archive.org/web/20140504172351/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21654G BCM21654G]

| VideoCore 4

| ARMv7Cortex-A91up to 1000

| HD 720p

| {{Collapsible list

|

}}

[https://web.archive.org/web/20130818001525/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21663 BCM21663]

| VideoCore 4

| ARMv7Cortex-A91up to 1200

| HD 720p

| {{Collapsible list

| K-Touch W68, K-Touch W70

}}

[https://web.archive.org/web/20130909031325/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21664 BCM21664]

| VideoCore 4

| ARMv7Cortex-A91up to 1000

| HD 720p

| {{Collapsible list

|

}}

[https://web.archive.org/web/20130909010651/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21664T BCM21664T]

| VideoCore 4

| ARMv7Cortex-A91up to 1200

| Full HD 1080p

| {{Collapsible list

| Samsung Galaxy Ace Style, Samsung Galaxy Trend Plus (GT-S7580), Samsung Galaxy S Duos 2

}}

[https://web.archive.org/web/20110824132032/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM28150 BCM28150]

| VideoCore 4

| ARMv7Cortex-A92| Full HD 1080p

| {{Collapsible list

| Aimed at 3G baseband processing, powerful enough to run Android OS.

}}

[https://web.archive.org/web/20120403042741/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21553 BCM21553]

| VideoCore 4

| ARMv6ARM111| Full HD 1080p

| {{Collapsible list

| title = |Samsung Galaxy Y[http://www.samsung.com/africa_fr/consumer/mobile-phone/mobile-phone/smart-phone/GT-S5360MAAXFA][http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM21553][http://vr-zone.com/articles/broadcom--computex-2011-arm-based-socs-take-centerstage/12503.html] Samsung Wave Y, Samsung Galaxy Mini (GT-S5570i), Samsung Galaxy Ace (GT-S5830i/C/M and GT-S5839i), Vodafone Smart 2 (Alcatel TCT V860)

}}
[https://web.archive.org/web/20130526115301/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM28145-28155 BCM28145/28155]

| VideoCore 4

| ARMv7Cortex-A921200

| Full HD 1080p

| {{Collapsible list

| Samsung Galaxy SII Plus, Samsung Galaxy Grand, Samsung Galaxy Core Plus, Samsung Galaxy S Duos 2, Amazon Fire TV Stick

}}

[https://web.archive.org/web/20131029004818/http://www.broadcom.com/products/Cellular/3G-Baseband-Processors/BCM23550 BCM23550]

| VideoCore 4

| ARMv7Cortex-A741200

| Full HD 1080p

| {{Collapsible list|HTC Desire 601 Dual SIM, XOLO Opus-HD,{{Cite web |url=http://www.xolo.in/ |title=Opus HD |website=Xolo |archive-url=https://web.archive.org/web/20141010121055/http://www.xolo.in/Opus-HD |archive-date=10 October 2014}} Samsung Galaxy Grand Neo, K-Touch W96, K-Touch W98

}}

[https://web.archive.org/web/20190402155249/www.broadcom.com/products/broadband/set-top-box/bcm7251#overview BCM7251 (archive.org)]

| VideoCore 5

| ARMv7ARM Cortex-A1521666

| 4K 2160p

| {{Collapsible list

|

}}

BCM2711B0

| VideoCore 6

500

| ARMv8

ARM Cortex-A7241800

| Dual 4K 2160p

|Raspberry Pi 4B{{Cite web |url=https://www.tomshardware.com/reviews/raspberry-pi-4-b,6193.html |title=Raspberry Pi 4 Review: The New Gold Standard for Single-Board Computing |date=2019-08-28 |website=Tom's Hardware |language=en |access-date=2019-09-24}}

BCM2712

| VideoCore 7

800

| ARMv8

ARM Cortex-A7642400

| Dual 4K 2160p 60fps

| Raspberry Pi 5{{Cite web |url=https://www.raspberrypi.com/news/introducing-raspberry-pi-5/ |title=Introducing: Raspberry Pi 5! |date=2023-09-28 |website=Raspberry Pi |language=en |access-date=2023-09-28}}

rowspan="2" | SoC

! Microarchitecture

! Freq. (MHz)

! Instruction set

! Microarchitecture

! Cores

! Freq. (MHz)

! rowspan="2" | Max display

! rowspan="2" | Utilizing devices

colspan="2" | GPU

! colspan="4" | CPU

{{notelist}}

VideoCore products

{{advert section|date=January 2024}}

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|reason=reliable source needed for the whole sentence|date=December 2011}}

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.

Linux support

{{Main|Free and open-source graphics device driver#Broadcom}}

On 28 February 2014, on the day of the second anniversary of the Raspberry 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 a 3-clause BSD license.{{Cite web |url=https://arstechnica.com/information-technology/2014/02/raspberry-pi-marks-2nd-birthday-with-plan-for-open-source-graphics-driver/ |title=Raspberry Pi marks 2nd birthday with plan for open source graphics driver|date=28 February 2014}}{{Cite web |url=http://www.raspberrypi.org/archives/6299 |title=A birthday present from Broadcom |date=28 February 2014 |website=Raspberry Pi}}{{Cite web |url=https://www.broadcom.com/blog/android-for-all-broadcom-gives-developers-keys-to-the-videocore |title=Android for All: Broadcom Gives Developers Keys to the VideoCore Kingdom |website=www.broadcom.com |access-date=2019-09-24}}

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 a ThreadX-based RTOS that is loaded into the VideoCore's VPU during bootup.{{Cite web |url=https://github.com/hermanhermitage/videocoreiv-qpu |title=Fun and Games with the Videocoreiv Quad Processor Units |last=Hermitage |first=Herman |website=GitHub |date=21 Mar 2015}}

An architectural overview of the VideoCore based system was compiled (based on reverse engineering & patent research) by Herman Hermitage and is available on GitHub.{{Cite web |url=https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV---BCM2835-Overview |title=hermanhermitage/videocoreiv|website=GitHub}}

In June 2014, Emma Anholt left Intel for Broadcom to develop a free driver (DRM/KMS driver and Gallium3D-driver) for VC4 (VideoCore 4).{{Cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTcyMTc |title=Eric Anholt Leaves Intel's Linux Graphics Team For Broadcom |date=17 June 2014}} After one week, she reported noteworthy progress.{{Cite web |url=https://github.com/anholt/linux/tree/vc4 |title=VC4 Linux driver |website=GitHub |url-status=dead |archive-url=https://web.archive.org/web/20140722171402/https://github.com/anholt/linux/tree/vc4 |archive-date=22 July 2014 |access-date=22 June 2014 |df=dmy-all}}{{Cite web |url=http://anholt.livejournal.com/44312.html |title=VC4 driver week 1 |date=22 June 2014 |url-status=dead |archive-url=https://web.archive.org/web/20140816015553/http://anholt.livejournal.com/44312.html |archive-date=16 August 2014 |df=dmy-all}}

{{cquote|I've taken on a new role as an open source developer there. I'm going to be working on building an MIT-licensed Mesa 3D and kernel DRM driver for the 2708 (aka the 2835), the chip that's in the Raspberry Pi.{{cite web|author=Eric Anholt|url =http://anholt.livejournal.com/44239.html | access-date=2023-12-27 | title=new job! }}}}

The freely licensed 3D graphics code was committed to Mesa on 29 August 2014,{{Cite web |url=http://cgit.freedesktop.org/mesa/mesa/commit/?id=1850d0a1cbf044dc4d29b7a9ede2c634f667d853 |title=vc4: Initial skeleton driver import |date=2014-08-09 |publisher=The Mesa 3D Graphics Library}} and was first released as part of Mesa 10.3.

= Compute Kernel programming =

The open source community has produced a C++ library called [https://github.com/wimrijnders/V3DLib V3DLib] for directly running custom compute 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's graphics-oriented API.

Market competitors

Similar mobile multimedia chip ranges include Adreno, Texas Instruments OMAP, Nvidia Tegra, AllWinner A1X and Freescale i.MX. These are ARM-based with arrays of graphics processing units.

Data sources

The Broadcom YouTube page{{Cite web |url=https://www.youtube.com/user/BroadcomCorporation#p/u/3/dkhIZqOePps |title=Broadcom Limited|website=YouTube}} 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 under NDA, and then only for manufacturers with a market for very many units.

See also

References