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

GPU driver development
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


Carlos García Campos 22/03/2016

WebKitGTK+ 2.12

We did it again, the Igalia WebKit team is pleased to announce a new stable release of WebKitGTK+, with a bunch of bugs fixed, some new API bits and many other improvements. I’m going to talk here about some of the most important changes, but as...

Samuel Iglesias 25/09/2015

ARB_program_interface_query and shader_runner

Lately I have worked on ARB_shader_storage_buffer_object  extension implementation on Mesa, along with Iago (who has already explained how we implement it). One of the features we implemented was adding support for buffer variables to the queries defined...

Alejandro Piñeiro 18/09/2015

Optimizing shader assembly instruction on Mesa using shader-db (II)

On my previous post I mentioned that I have been working on optimizing the shader instruction count for specific shaders guided by shader-db, and showed one specific example. In this post I will show another one, slightly more complex on the triaging and...

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...


tests: Add integration with Khronos CTS OpenGL runner

This adds support for running Khronos' deqp-based conformance suite for OpenGL with piglit. This commits renames PIGLIT_CTS_BIN / PIGLIT_CTS_EXTRA_ARGS envvars to PIGLIT_CTS_GLES_BIN / PIGLIT_CTS_GLES_EXTRA_ARGS respectively. v2 (Dylan Baker): - Use...


glsl/linker: dvec3/dvec4 consume twice input vertex attributes

From the GL 4.5 core spec, section 11.1.1 (Vertex Attributes): "A program with more than the value of MAX_VERTEX_ATTRIBS active attribute variables may fail to link, unless device-dependent optimizations are able to make the program fit within...


glsl: use var with initializer on global var validation

Currently, when cross validating global variables, all global variables seen in the shaders that are part of a program are saved in a table. When checking a variable this already exist in the table, we check both are initialized to the same value. If...


arb_internalformat_query2: use PRIi64 instead of PRIu64 macro

As all the values we are printing are 64 bit integers, not unsigned integers. In general this is not relevant, as no query for a supported combination of pname,target and internalformat will return a negative value. But for pnames like SAMPLES, if not...

Alejandro Piñeiro02/05/2016

nir: rename lower_flrp to lower_flrp32

A later patch will add lower_flrp64 option to NIR. Signed-off-by: Samuel Iglesias Gonsálvez Reviewed-by: Jason Ekstrand

Samuel Iglesias28/04/2016