Graphics Pipeline and Rendering Technologies

High framerates, smooth animations, and quality display are key to user interaction. Igalia has years of experience building and optimizing many different parts of the graphics stack.

Companies developing software for mobile, embedded or desktop environments often find the graphics and rendering software stack to be one of their greatest challenges. The most successful devices and software platforms have optimized, frictionless user experience, including fast rendering and fluid touch interfaces.

At Igalia we have been creating high performance user interfaces and middleware for the past decade. Along the way, we've built accelerated compositors, eliminated hardware bottlenecks, optimized rendering of web browsers, and perfected font display.

Open source work is a part of our company culture, so we are long time contributors to and integrators of toolkits and APIs like Mesa, OpenGL, GTK+, EFL, Qt, Clutter/Cogl and Wayland. Some of our work includes:

  • Implementation of new standards such as WebGL and WebAudio, multimedia acceleration and GStreamer integration in WebKit
  • Maintenance of GStreamer support in WebKit
  • Accelerated large drop-shadows in web engines
  • Building cross-process graphics architectures and compositors for projects like WebKit2

We can help you ensure that your users have a compelling experience powered by an optimized graphics software stack.



  • OpenGL
  • WebGL
  • Mesa
  • Wayland
  • Cairo
  • HTML acceleration
  • Harfbuzz
  • Graphical toolkits
  • Graphical libraries
  • Accelerated Rendering
  • Accelerated Compositing

Featured Media

How to test OpenGL drivers using Free Software (FOSDEM 2015)
WebKitGTK+ Wayland: WebKit2 and Accelerated Compositing
WebKitGTK+: WebGL & Accelerated Compositing
Epiphany on Wayland: WebGL and CSS3D
OpenGL drivers using Free Software at FOSDEM 2015
WebGL game in Epiphany with WebKit2
WebGL game in Epiphany with WebKit2


Iago Toral 08/07/2015

Implementing ARB_shader_storage_buffer

In my previous post I introduced ARB_shader_storage_buffer, an OpenGL 4.3 feature that is coming soon to Mesa and the Intel i965 driver. While that post focused on explaining the features introduced by the extension, in this post I’ll dive into some...

Samuel Iglesias 12/06/2015

piglit (V): how to contribute to piglit and table of contents

Last post and the one before were about how to create your own piglit tests. Previously, I have written an introduction to piglit and how to launch a tailored piglit run (more details about these last two topics in my FOSDEM 2015 talk). Now it’s...

Samuel Iglesias 11/06/2015

piglit (IV): How to write binary test programs

Last post I talked about how to develop GLSL shader tests and how to add them to piglit. This is a nice way to develop simple tests but sometimes you need to do something more complex. For that case, piglit can run binary test programs. Introduction...

Samuel Iglesias 29/05/2015

piglit (III): How to write GLSL shader tests

In earlier posts I talked about how to install piglit on your system and run the first time and how to tailor your piglit run. I have given a talk in FOSDEM 2015 about how to test your OpenGL drivers using Free Software where I explained how to run...

Iago Toral 20/05/2015

Bringing ARB_shader_storage_buffer_object to Mesa and i965

In the last weeks I have been working together with my colleague Samuel on bringing support for ARB_shader_storage_buffer_object, an OpenGL 4.3 feature, to Mesa and the Intel i965 driver, so I figured I would write a bit on what this brings to OpenGL/GLSL...


mesa: Fix error in target validation of glCompressedTex(ture)SubImage3D() calls

Basically, two different target error checks are chained consecutively, and the second one is executed regardless the result of the first one. This produces an incorrect error if the first check fails but is overrided by the second. This patch...


i965/gen8: Fix antialiased line rendering with width < 1.5

The same fix Marius implemented for gen6 (commit a9b04d8a) and gen7 (commit 24ecf37a). Also, we need the same code to handle special cases of line width in gen6, gen7 and now gen8, so put that in the helper function we use to compute the line...

Iago Toral11/06/2015

nir: prevent use-after-free condition in should_lower_phi()

lower_phis_to_scalar() pass recurses the instruction dependence graph to determine if all the sources of a given instruction are scalarizable. To prevent cycles, it temporary marks the phi instruction before recursing in, then updates the entry with the...


swrast: Fix rgba_draw_pixels with GL_COLOR_INDEX

When we implemented the format conversion rewrite we forgot to handle GL_COLOR_INDEX here, which needs special handling. Fixes the following piglit test: bin/gl-1.0-drawpixels-color-index -auto -fbo Buzilla:...

Iago Toral04/05/2015