An Improved Register Allocator For Gallium3D R300

Posted by Michael Larabel on March 29, 2011

In recent days I have mentioned many interesting Google Summer of Code project that have been proposed for this year: WebM VDPAU state tracker, better multi-GPU support, the OpenCL state tracker, and even a Direct3D HLSL shader compiler. It will be interesting to see which of these projects actually materialize since the success rate of GSoC projects aren't incredibly high, especially if counting the ones that end up succeeding but never end up being maintained after the summer or the code is never merged. Fortunately, one of last year's GSoC Mesa projects is still being hacked on and there's more to report on it today.

One of last year's projects for Mesa was on improving the GLSL (GL Shading Language) compiler for the ATI R300 Gallium3D driver. Improvements were made to the R300 GLSL compiler, some of which were merged to master. Tom Stellard, the student developer working on this project, didn't stop working on the code once the summer was over and he was paid by Google.

Tom Stellard has just announced that he's nearly done with a new and improved register allocator for fragment shaders in the R300 compiler. "The new allocator takes advantage of a register allocation algorithm designed for irregular architectures from a paper by Johan Runeson and Sven-Olof Nyström. Eric Anholt implemented this algorithm and added it to mesa, so all drivers could make use of it." Tom mentioned this work on his blog.

Tom mentions this new register allocator will cause a big impact on shaders that use a lot of scalar values. As an example, the Lightsmark benchmark uses 30~50% less registers with this new design and on a RV515 GPU he's seeing a ~10% increase in performance as a result. This looks like an invitation for me to run some new benchmarks on some higher-end R500 GPUs.

Right now this R300 allocator is living in a branch of Mesa, but hopefully it will be merged to master in time for Mesa 7.11. It would also be great if this is eventually supported in the R600 Gallium3D driver.

In related Mesa news, Marek Olšák completed a bit more OpenGL 3.x support for Mesa. To master he's committed clamping controls support via GL_ARB_color_buffer_float and he's completed work on signed normalized textures with GL_EXT_texture_snorm. Though as acknowledged in GL3.txt, there's still a lot of work left before OpenGL 3.0 support will be finished, especially as some of the work is held up by legal issues.

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. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  2. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  3. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
  4. AMD Radeon Gallium3D More Competitive With Catalyst On Linux
Latest Software Articles
  1. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. F2FS File-System Shows Regressions On Linux 3.10
  4. Previewing The Radeon Gallium3D Shader Optimizations
Latest Linux News
  1. DNF Still Advancing As Experimental Yum For Fedora
  2. Logitech Begins Supporting Linux Users
  3. Modern Intel Gallium3D Driver Still Being Toyed With
  4. Linux 3.10 Kernel Benchmarks On A Core i7 Laptop
  5. GCC 4.8.1 Compiler Due To Be Out Next Week
  6. Linux 3.10 Kernel Benchmarks For Intel Ivy Bridge
  7. Linux's "Ondemand" Governor Is No Longer Fit
  8. Firefox 22 Beta Enables WebRTC Support
  9. OpenSUSE 13.1 Milestone 1 Released
  10. DRM Graphics Driver Comes For Dove/Cubox
  11. JADE: An LLVM-Based Video Decoder For MPEG RVC
Latest Forum Talk
  1. Logitech Begins Supporting Linux Users
  2. Logitech supports linux!
  3. Modern Intel Gallium3D Driver Still Being Toyed...
  4. DNF Still Advancing As Experimental Yum For Fedora
  5. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  6. DRM Moves Ahead With HTML5 Specification
  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