Reverse Engineering PowerVR Is Now A High Priority

Posted by Michael Larabel on February 13, 2011

The Free Software Foundation has now determined that reverse-engineering the PowerVR Linux drivers in order to create a free software driver capable of 3D hardware acceleration is a high priority action item. With an increasing number of mobile devices running Linux bearing these PowerVR graphics chipsets, which currently require the use of binary blobs for graphics acceleration, is not acceptable and that action must be taken to create an open driver for this hardware.

Following a proposal last month of reverse-engineering the PowerVR SGX GPU to create a "free software OpenGL library", the Free Software Foundation has agreed this is a high priority project. "PowerVR is a popular 3D graphics engine found in phones, netbooks, and laptops, for which we currently have no free software driver capable of doing 3D graphics acceleration."

The Wiki page for this project outlines the goals as being to create a Gallium3D PowerVR driver called G3D-SGX, port the OpenGL 3.0 Mesa library to G3D-SGX (but no complete OpenGL 3.0 implementation is yet available for Mesa...), investigate compiling through LLVM (the Low-Level Virtual Machine) to take advantage of the multi-core SoC with the ARM Cortex A9 and other CPUs along with the vertex processing units and other co-processors on many of these SoCs. Their last, lower-priority goal is to create a DirectX acceleration for use by Wine. Phoronix readers will already know that there is a Direct3D 10/11 state tracker for Gallium3D.

The G3D-SGX goal of using LLVM to take better advantage of the SoCs where the PowerVR SGX is often deployed is quite interesting. Hopefully many of those goals will align and fit into the grand scheme of other plans with the LLVM IR of LunarGLASS and other projects to take advantage of this compiler infrastructure within Mesa and Gallium3D. Taking the Gallium3D route also means in-kernel memory management and very likely we'll see kernel mode-setting too, assuming this project materializes.

Before worrying about nifty features, the project needs to reverse-engineer the SGX and actually get an open-source driver working. Right now only the USSE opcodes and assembly have been decoded. The SGX reverse-engineering is being done in part by modifying PowerVR's kernel shim, which is open-source as it's what compiles against the kernel, to dump the information being passed to the driver.

Having an open-source PowerVR driver for Linux would be a huge win. Right now one of the only open-source mobile graphics drivers is the reverse-engineered Samsung GLES driver while some vendors have tried putting out open-source kernel drivers while leaving the user-space library closed-up. The embedded Linux GPU situation is a huge mess as it stands right now, but last month we reported that there may be an open-source PowerVR driver in Q3-2011, but now it seems that the free software community will not wait until then to see such open hardware support.

The PowerVR SGX from Imagination Technologies is what powers Intel's Poulsbo and Moorestown graphics and SoCs using its IP are found in the Apple A4 (iPhone 4 / iPad), Texas Instruments OMAP 3/4 with the Nokia N900, Motorola Droid, Archos 70, Samsung Hummingbird SoC with the Galaxy S / Galaxy Tab, and many other mobile devices.

Other high priority free software projects by the FSF include the development of the Gnash Flash player, the Coreboot open-source BIOS project, a free software replacement to Skype, free software video editing software, a free Google Earth replacement, reversible debugging in GDB, and free software drivers for network routers.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. Intel Linux OpenGL Driver Leading Over Apple OS X
  3. The Cost Of Ubuntu Disk Encryption
  4. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
Latest Linux News
  1. Unity 8, Mir Made Progress This Week On Features
  2. LLVM Clang 3.3 RC2 Is Ready For Testing
  3. AMD RadeonSI Gallium3D Begins Simple CL Demos
  4. Intel Shows Off GNOME3-Based Tizen Shell
  5. Linux Desktop Security Could Be A Whole Lot Better
  6. KDE 4.11 Will Be The Last Major KDE4 Workspaces Feature Release
  7. New NVIDIA Linux Driver Supports The GeForce GTX 780
  8. Chrome 28 To Offer More Speed Improvements
  9. Digia Announces "Boot To Qt" Project
  10. X.Org Libraries Hit By Round Of Security Issues
  11. Wayland's Weston Gets Output Scaling Support
Latest Forum Talk
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. AMD RadeonSI Gallium3D Begins Simple CL Demos
  3. Sun x4500 firmware
  4. KDE 4.11 Will Be The Last Major KDE4 Workspaces...
  5. Could the forum help improve the quality of...
  6. Linux Desktop Security Could Be A Whole Lot Better
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite