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

Bringing GL_ARB_gpu_shader_fp64 to Intel GPUs (XDC 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)
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


Iago Toral 20/10/2016

OpenGL terrain renderer update: Bloom and Cascaded Shadow Maps

Bloom Filter The bloom filter makes bright objects glow and bleed through other objects positioned in between them and the camera. It is a common post-processing effect used all the time in video games and animated movies. The demo supports …...

Iago Toral 13/10/2016

OpenGL terrain renderer: rendering the terrain mesh

In this post I’ll discuss how I setup and render terrain mesh in the OpenGL terrain rendering demo. Most of the relevant code for this is in the ter-terrain.cpp file. Setting up a grid of vertices Unless you know how … Continue reading →

Eduardo Lima 06/10/2016

Example: Run an OpenGL (ES) compute shader on a DRM render-node

It has been a long time indeed since my last entry here. But I have actually been quite busy on a new adventure: graphics driver development. Two years ago I started contributing to Mesa, mostly to the Intel i965 backend, as a member of the Igalia...

Iago Toral 05/10/2016

Source code for the OpenGL terrain renderer demo

I have been quite busy with various things in the last few weeks, but I have finally found some time to clean up and upload the code of the OpenGL terrain render demo to Github. Since this was intended as … Continue reading →

Iago Toral 29/08/2016

OpenGL terrain renderer

Lately I have been working on a simple terrain OpenGL renderer demo, mostly to have a playground where I could try some techniques like shadow mapping and water rendering in a scenario with a non trivial amount of geometry, and … Continue reading...


i965: remove unused variable at intel_miptree_create_for_teximage

After commit "i965: Fix calculation of the image height at start level", it is not needed. This commit removes the "warning: unused variable ‘i’" warning. Reviewed-by: Timothy Arceri

Alejandro Piñeiro11/09/2016

arb_texture_barrier: count of elements need to be multiple of three

glDrawRangeElements is used to draw triangles so the count of elements needs to be a multiple of three, so we need to be careful when dividing by the number of draw range elements we want. Fixes the 40 failing subtests on i965. Reviewed-by: Andres Gomez

Alejandro Piñeiro08/07/2016

i965: Remove trailing whitespace

Reviewed-by: Topi Pohjolainen

Iago Toral05/07/2016

i965: Make inline function static

Without this the i965 driver fails to load. Reviewed-by: Topi Pohjolainen

Iago Toral05/07/2016

arb_copy_image-api_errors: fix one error check (INVALID_ENUM instead of INVALID_OPERATION)

This patch adapts the test to the last change on mesa. Copying the rationale on that patch here: For the case (both src or dst) where we had a texobject, but the texobject target was not the same that the method target, this spec paragraph was...

Alejandro Piñeiro01/07/2016