Testing Out Mesa's GLSL-To-TGSI Translator

Written by Michael Larabel in Display Drivers on 21 July 2011 at 01:38 AM EDT. Page 1 of 4. 24 Comments.

Being merged into the mainline Mesa tree once Mesa 7.11 has been released is the GLSL-To-TGSI translator. This allows core Mesa to translate directly from GLSL IR to TGSI, rather than stepping through the crufty Mesa IR, before reaching the Gallium3D hardware drivers. It's more efficient this way -- leading to possible performance improvements -- and it's also a stepping-stone in bringing GL Shading Language 1.30 support, which is required for OpenGL 3.0 compatibility.

Bryan Cain, an independent open-source developer, has been working on the GLSL IR to TGSI translator since April and then he announced it was ready to be merged. It's going to be merged after the Mesa 7.11 release later in the month, since merging it early may complicate cherry-picking patches from master and landing it in the stable 7.11 branch. Mesa IR and has long been sought to be removed, so this translator is a welcome change by Gallium3D developers since it allows going directly from the GL Shading Language intermediate representation and directly to TGSI, the Tungsten Graphics representation used by Gallium3D drivers. This work is in competition to LunarGLASS, which is using LLVM IR within Mesa, but it hasn't been merged to master.

This GLSL-to-TGSI work already has native integer support as needed by GLSL 1.30, but the respective Gallium3D drivers need to support the respective TGSI opcode. Bryan is also doing other work to support GLSL 1.30 by these open-source drivers commonly used on Linux. This developer is also a member of the Phoronix Forums where he has been commenting in more detail.

Tests were carried out last week by the Phoronix Test Suite to investigate the effects of this GLSL-To-TGSI work. The code will soon be merged to master later in the month, but for now it is available in a branch from the Plombo Mesa repository on GitHub. At the time of testing, the tip of the branch was git-8df3510 and the last commits in there pulled from mainline Mesa at the time was from git-6f243ec, which was the revision of mainline Mesa 7.11-devel that we used for testing in comparison to the current implementation.

Benchmarking was done on an Intel Core i5 2500K setup with a Sapphire Pure Black P67 motherboard, 4GB of RAM, and a 64GB OCZ Agility SSD. Ubuntu 11.04 was used with the Linux 3.0 kernel, GNOME 2.32.1, X.Org Server 1.10.1, GCC 4.5.2, LLVM 2.8, EXT4, and the latest Git DDX for xf86-video-ati and xf86-video-nouveau as of last week. The GLSL-To-TGSI Mesa and mainline Mesa were tested using the commits mentioned in the last paragraph.

Due to the different Gallium3D driver having different optimizations and code-paths, the R300, R600, and Nouveau NV50 Gallium3D drivers were benchmarked for this initial GLSL-To-TGSI testing. The Radeon HD 5830, Radeon HD 4650, Radeon X1800XL, and GeForce 9800GTX graphics cards were used for this driver testing. Not only was the frame-rate looked at for some of the shader-using OpenGL Linux benchmarks, but the CPU and GPU usage was also polled automatically by the Phoronix Test Suite.


Related Articles