Intel Publishes Ivy Bridge Programming Documentation
While Intel has a large team of developers within their Open-Source Technology Center working on their open-source Linux graphics driver, they continue to produce very detailed programming documentation for the public. These documents cover the key registers for their hardware and other information to benefit anyone wishing to get into low-level graphics driver programming or just wanting to better understand how Intel's latest graphics core works.
Intel has put out documentation on their graphics chips for several generations now and they just did so for Ivy Bridge. The Ivy Bridge processors have been available since April, and the open-source Linux code for the graphics driver has been available for more than a year, but they finally received permission to do the public drop of their programming documentation.
This Intel HD Graphics Open Source Programmer’s Reference Manual (PRM) describes the architectural behavior and programming environment of the Ivy Bridge chipset family. The Graphics Controller (GC) contains an extensive set of registers and instructions for configuration, 2D, 3D, and video systems. The PRM describes the register, instruction, and memory interfaces, and the device behaviors as controlled and observed through those interfaces. The PRM also describes the registers and instructions, and provides detailed bit/field descriptions.Intel continues to be the most open-source and Linux friendly hardware vendor -- see Linux Driver Support Still Leaves A Lot To Desire. Meanwhile, NVIDIA is the single worst Linux company, according to Linus Torvalds. As for AMD, they are working on their open-source Linux driver in tandem with their proprietary driver, but they still have yet to publish any extensive GPU documentation for their Radeon HD 7000 "Southern Islands" graphics processors that have been available for about a half-year.
There's been some ISA documentation and other bits out of other groups at AMD for GCN / S.I., but not the mode-setting docs and other GPU programming guides. AMD's been lagging behind in pushing out public programming documentation, with some of the documentation even for the "R600" era still sitting behind closed doors. NVIDIA remains the worst when it comes to being open-source friendly with either public documentation / specifications or open-source driver support, but that's beginning to lose them a great sum of money in losing out on at least one huge deal.
Anyhow, back onto Ivy Bridge: this documentation appears to be rather complete from the initial look through it this morning. There's just under 2,500 pages of information spanning 17 PDF files. The graphics core is covered including the MMIO registers, memory interface, render engine, blitter engine, and video codec engine command streamer. There's also coverage on the GT interface register, L3 cache and URB, 3D media pipeline, media and general purpose pipeline, multi-format transcoder, VGA registers, PCI registers, north/south display engines, message gateway, and execution unit ISA.
no current OpenCL driver support on the graphics core.
Beyond that, Intel also continues documenting their video acceleration engine. This is one area where AMD has never publicly documented or provided code for since their long-standing concern has been that documenting the video encode/decode engine of their Radeon hardware could potentially compromise their Digital Rights Management mechanism under Microsoft Windows. Intel's open-source VA-API video acceleration is great.
Intel releases this "OpenSource HD Graphics Programmer's Reference Manual" documentation under the Creative Commons License. Intel's public documentation is available for unrestricted download from IntelLinuxGraphics.org.
Great job, Intel! For those curious about the Intel Ivy Bridge Linux performance (CPU and GPU) under Linux, see the many Phoronix articles. (More Ivy Bridge Linux benchmarks are on the horizon.) Overall it's in great shape with good performance and comparable features, but the key outstanding items include:
- No GPGPU/OpenCL support yet.
- The Linux driver only handles OpenGL 3.0 (the Intel Windows driver goes GL 4.0 and the Intel Linux developers don't even expect OpenGL 3.1 until 2013)
- The Intel Windows driver is much faster and there's talk of fundamental improvements coming to the Intel Windows driver this year.
- The Intel Linux developers are still working on some fundamental features like support for multi-sample anti-aliasing that Windows and Mac OS X users take for granted. S3 Texture Compression support also continues to not be available by default.
Thankfully they at least already have working open-source Linux graphics driver code for Haswell and Valley View. Once their 2013 Haswell platform is out and the next-gen Atom SoC, there will hopefully be another pleasant documentation / register specification drop.