Review of Igalia’s Graphics activities (2018)

This is the first report about Igalia’s activities around Computer Graphics, specifically 3D graphics and, in particular, the Mesa3D Graphics Library (Mesa), focusing on the year 2018.

GL_ARB_gl_spirv and GL_ARB_spirv_extensions

GL_ARB_gl_spirv is an OpenGL extension whose purpose is to enable an OpenGL program to consume SPIR-V shaders. In the case of GL_ARB_spirv_extensions, it provides a mechanism by which an OpenGL implementation would be able to announce which particular SPIR-V extensions it supports, which is a nice complement to GL_ARB_gl_spirv.

As both extensions, GL_ARB_gl_spirv and GL_ARB_spirv_extensions, are core functionality in OpenGL 4.6, the drivers need to provide them in order to be compliant with that version.

Although Igalia picked up the already started implementation of these extensions in Mesa back in 2017, 2018 is a year in which we put a big deal of work to provide the needed push to have all the remaining bits in place. Much of this effort provides general support to all the drivers under the Mesa umbrella but, in particular, Igalia implemented the backend code for Intel‘s i965 driver (gen7+). Assuming that the review process for the remaining patches goes without important bumps, it is expected that the whole implementation will land in Mesa during the beginning of 2019.

Throughout the year, Alejandro Piñeiro gave status updates of the ongoing work through his talks at FOSDEM and XDC 2018. This is a video of the latter:

ETC2/EAC

The ETC and EAC formats are lossy compressed texture formats used mostly in embedded devices. OpenGL implementations of the versions 4.3 and upwards, and OpenGL/ES implementations of the versions 3.0 and upwards must support them in order to be conformant with the standard.

Most modern GPUs are able to work directly with the ETC2/EAC formats. Implementations for older GPUs that don’t have that support but want to be conformant with the latest versions of the specs need to provide that functionality through the software parts of the driver.

During 2018, Igalia implemented the missing bits to support GL_OES_copy_image in Intel’s i965 for gen7+, while gen8+ was already complying through its HW support. As we were writing this entry, the work has finally landed.

VK_KHR_16bit_storage

Igalia finished the work to provide support for the Vulkan extension VK_KHR_16bit_storage into Intel’s Anvil driver.

This extension allows the use of 16-bit types (half floats, 16-bit ints, and 16-bit uints) in push constant blocks, and buffers (shader storage buffer objects).  This feature can help to reduce the memory bandwith for Uniform and Storage Buffer data accessed from the shaders and / or optimize Push Constant space, of which there are only a few bytes available, making it a precious shader resource.

shaderInt16

Igalia added Vulkan’s optional feature shaderInt16 to Intel’s Anvil driver. This new functionality provides the means to operate with 16-bit integers inside a shader which, ideally, would lead to better performance when you don’t need a full 32-bit range. However, not all HW platforms may have native support, still needing to run in 32-bit and, hence, not benefiting from this feature. Such is the case for operations associated with integer division in the case of Intel platforms.

shaderInt16 complements the functionality provided by the VK_KHR_16bit_storage extension.

SPV_KHR_8bit_storage and VK_KHR_8bit_storage

SPV_KHR_8bit_storage is a SPIR-V extension that complements the VK_KHR_8bit_storage Vulkan extension to allow the use of 8-bit types in uniform and storage buffers, and push constant blocks. Similarly to the the VK_KHR_16bit_storage extension, this feature can help to reduce the needed memory bandwith.

Igalia implemented its support into Intel’s Anvil driver.

VK_KHR_shader_float16_int8

Igalia implemented the support for VK_KHR_shader_float16_int8 into Intel’s Anvil driver. This is an extension that enables Vulkan to consume SPIR-V shaders that use Float16 and Int8 types in arithmetic operations. It extends the functionality included with VK_KHR_16bit_storage and VK_KHR_8bit_storage.

In theory, applications that do not need the range and precision of regular 32-bit floating point and integers, can use these new types to improve performance. Additionally, its implementation is mostly API agnostic, so most of the work we did should also help to have a proper mediump implementation for GLSL ES shaders in the future.

The review process for the implementation is still ongoing and is on its way to land in Mesa.

VK_KHR_shader_float_controls

VK_KHR_shader_float_controls is a Vulkan extension which allows applications to query and override the implementation’s default floating point behavior for rounding modes, denormals, signed zero and infinity.

Igalia has coded its support into Intel’s Anvil driver and it is currently under review before being merged into Mesa.

VkRunner

VkRunner is a Vulkan shader tester based on shader_runner in Piglit. Its goal is to make it feasible to test scripts as similar as possible to Piglit’s shader_test format.

Igalia initially created VkRunner as a tool to get more test coverage during the implementation of GL_ARB_gl_spirv. Soon, it was clear that it was useful way beyond the implementation of this specific extension but as a generic way of testing SPIR-V shaders.

Since then, VkRunner has been enabled as an external dependency to run new tests added to the Piglit and VK-GL-CTS suites.

Neil Roberts introduced VkRunner at XDC 2018. This is his talk:

freedreno

During 2018, Igalia has also started contributing to the freedreno Mesa driver for Qualcomm GPUs. Among the work done, we have tackled multiple bugs identified through the usual testing suites used in the graphic drivers development: Piglit and VK-GL-CTS.

Khronos Conformance

The Khronos conformance program is intended to ensure that products that implement Khronos standards (such as OpenGL or Vulkan drivers) do what they are supposed to do and they do it consistently across implementations from the same or different vendors.

This is achieved by producing an extensive test suite, the Conformance Test Suite (VK-GL-CTS or CTS for short), which aims to verify that the semantics of the standard are properly implemented by as many vendors as possible.

In 2018, Igalia has continued its work ensuring that the Intel Mesa drivers for both Vulkan and OpenGL are conformant. This work included reviewing and testing patches submitted for inclusion in VK-GL-CTS and continuously checking that the drivers passed the tests. When failures were encountered we provided patches to correct the problem either in the tests or in the drivers, depending on the outcome of our analysis or, even, brought a discussion forward when the source of the problem was incomplete, ambiguous or incorrect spec language.

The most important result out of this significant dedication has been successfully passing conformance applications.

OpenGL 4.6

Igalia helped making Intel’s i965 driver conformant with OpenGL 4.6 since day zero. This was a significant achievement since, besides Intel Mesa, only nVIDIA managed to do this too.

Igalia specifically contributed to achieve the OpenGL 4.6 milestone providing the GL_ARB_gl_spirv implementation.

Vulkan 1.1

Igalia also helped to make Intel’s Anvil driver conformant with Vulkan 1.1 since day zero, too.

Igalia specifically contributed to achieve the Vulkan 1.1 milestone providing the VK_KHR_16bit_storage implementation.

Mesa Releases

Igalia continued the work that was already carrying on in Mesa’s Release Team throughout 2018. This effort involved a continuous dedication to track the general status of Mesa against the usual test suites and benchmarks but also to react quickly upon detected regressions, specially coordinating with the Mesa developers and the distribution packagers.

The work was obviously visible by releasing multiple bugfix releases as well as doing the branching and creating a feature release.

CI

Continuous Integration is a must in any serious SW project. In the case of API implementations it is even critical since there are many important variables that need to be controlled to avoid regressions and track the progress when including new features: agnostic tests that can be used by different implementations, different OS platforms, CPU architectures and, of course, different GPU architectures and generations.

Igalia has kept a sustained effort to keep Mesa (and Piglit) CI integrations in good health with an eye on the reported regressions to act immediately upon them. This has been a key tool for our work around Mesa releases and the experience allowed us to push the initial proposal for a new CI integration when the FreeDesktop projects decided to start its migration to GitLab.

This work, along with the one done with the Mesa releases, lead to a shared presentation, given by Juan Antonio Suárez during XDC 2018. This is the video of the talk:

XDC 2018

2018 was the year that saw A Coruña hosting the X.Org Developer’s Conference (XDC) and Igalia as Platinum Sponsor.

The conference was organized by GPUL (Galician Linux User and Developer Group) together with University of A Coruña, Igalia and, of course, the X.Org Foundation.

Since A Coruña is the town in which the company originated and where we have our headquarters, Igalia had a key role in the organization, which was greatly benefited by our vast experience running events. Moreover, several Igalians joined the conference crew and, as mentioned above, we delivered talks around GL_ARB_gl_spirv, VkRunner, and Mesa releases and CI testing.

The feedback from the attendees was very rewarding and we believe the conference was a great event. Here you can see the Closing Session speech given by Samuel Iglesias:

Other activities

Conferences

As usual, Igalia was present in many graphics related conferences during the year:

New Igalians in the team

Igalia’s graphics team kept growing. Two new developers joined us in 2018:

  • Hyunjun Ko is an experienced Igalian with a strong background in multimedia. Specifically, GStreamer and Intel’s VAAPI. He is now contributing his impressive expertise into our Graphics team.
  • Arcady Goldmints-Orlov is the latest addition to the team. His previous expertise as a graphics developer around the nVIDIA GPUs fits perfectly for the kind of work we are pushing currently in Igalia.

Conclusion

Thank you for reading this blog post and we look forward to more work on graphics in 2019!

Igalia

Pestañas laterales en Empathy

Vamos directamente a la parte interesante de esta entrada.

Si usas Ubuntu Saucy 13.10 y quieres tener pestañas laterales en Empathy, sólo tienes que ejecutar los comandos siguientes:


$ sudo add-apt-repository ppa:tanty/ppa

Si además de Ubuntu Saucy 13.10 también utilizas el PPA del GNOME3 Team, también tienes que ejecutar:


$ sudo add-apt-repository ppa:tanty/gnome3

Sin más, actualiza tus repositorios, actualiza Empathy y escoge la configuración adecuada:


$ sudo apt-get update && sudo apt-get install empathy
...
$ gsettings set org.gnome.Empathy.conversation tab-position 'left'

Lo siguiente es abrir una ventana de chat desde una nueva instancia de ejecución de Empathy. Esta es una captura de algo similar a lo que deberías de ver:

Side tabs in Empathy by ::Tanty::
Side tabs in Empathy, a screenshot by ::Tanty:: on Flickr.

Motivación

Desde hace mucho tiempo soy usuario de Jabber y Empathy. Los uso a diario en mis comunicaciones y en Igalia tenemos también salas internas que usamos para coordinarnos. Debido a la cantidad de salas en las que estoy habitualmente, la ventana de chat de Empathy no es capaz de mostrar todas las pestañas en la barra superior de las conversaciones.

Esto me obliga, o bien a abrir diferentes ventanas en las que repartir las pestañas, o bien a navegar entre las pestañas de la ventana en busca de alguna actualización interesante. Una tarea bastante molesta 🙂 .

Hace tiempo fue reportado el bug #586145 que pide tener la posibilidad de posicionar las pestañas no sólo en una barra superior sino, especialmente, también en los laterales.

Por esto, decidí retomar la propuesta de parche existente y hacer unos cuantos pequeños cambios sobre el trabajo previo de Neil Roberts completando la posibilidad de tener estas pestañas laterales.

Con esta característica nueva es posible cambiar la posición de las pestañas sólo con cambiar la configuración pertinente ya que ambas están conectadas. Para posicionar las pestañas ‘arriba’, a la ‘izquierda’, ‘abajo’ o a la ‘derecha’ respectivamente, sólo tenemos que ejecutar:


$ gsettings set org.gnome.Empathy.conversation tab-position 'top'
$ gsettings set org.gnome.Empathy.conversation tab-position 'left'
$ gsettings set org.gnome.Empathy.conversation tab-position 'bottom'
$ gsettings set org.gnome.Empathy.conversation tab-position 'right'

Tras los cambios, he actualizado el parche propuesto y ya sólo estoy esperando pasar la revisión e integrarlos en el código.

Esta característica es una pequeñísima mejora del gran trabajo realizado por varios desarrolladores de GNOME a lo largo de los años. Sin embargo, significa una importante diferencia en mi uso cotidiano y es por esto que he decidido compartirla lo más pronto posible por si hubiera más gente interesada ya que llevará un tiempo hasta que alcance a las principales distribuciones. Para ello, he migrado el parche a la versión de Empathy que estoy utilizando en mi Ubuntu Saucy 13.10.

Si quieres probarla, simplemente sigue las instrucciones que he escrito al principio de esta entrada.

Notas finales

Además de Empathy, también puedes encontrar en mis PPAs:

  • Una versión personalizada del paquete icecc oficial que no funciona. En ella he aplicado los parches que corrigen el bug LP#1182491.
  • Una versión personalizada de webkitgtk en la que he aplicado los parches que arreglan el bug WK#115650. Estos cambios aceleran sustancialmente la velocidad a la que se abren pestañas nuevas en Web.

Que disfrutes de Emapthy!

Actualización: Recientemente he añadido las versiones parcheadas de empathy también para Ubuntu Trusty 14.04.

Actualización 2: Recientemente he añadido las versiones parcheadas de empathy también para Ubuntu Utopic 14.10.

GUADEC 2012 T-Shirts and other [d|r]usty artwork

Let’s go quickly to the important stuff: I’ve been helping the great team that is organizing GUADEC 2012 in A Coruña. I cannot count myself among this amazing group of people since I’ve scarcely devoted any time to the tasks they needed from me but this is the result out of it, in the shape of a t-shirt 🙂

GUADEC 2012 Attendant T-Shirt

I cannot get all the credit of it, I was basing the final design on the previous work done by William Carlson and some drafts done by Alba Castro. You can find all the material in this public git repository hosted at Igalia.

Also, I did a small variation for the t-shirts of the staff, which will be red. This is back of the female’s version:

GUADEC 2012 Staff T-Shirt

Doing artwork for GNOME events is no new thing for me. I’ve been regularly doing some stuff for them. Some just for Igalia, my company, but also some other for the event itself.

2010

Last thing I designed before 2012 were the t-shirts (again) for the GUADEC-ES 2010 that took place also in Coruña. I got inspired that year by the soccer world cup that would be won by Spain (yeah!!!). Here you can see the 3 versions, starting by the Brazil one:

GUADEC-ES 2010 Brazil T-Shirt FrontGUADEC-ES 2010 Brazil T-Shirt Back

Denmark:

GUADEC-ES 2010 Denmark T-Shirt FrontGUADEC-ES 2010 Denmark T-Shirt Back

And a female’s version:

GUADEC-ES 2010 Female T-Shirt FrontGUADEC-ES 2010 Female T-Shirt Back

This last model is the one that holds the final sorting of the back logos that was printed for all the t-shirts. Actually, Xulia Barros, from FreeWear did a small modification to the final design leaving some space among the lines for the “7” in the back.

Again, you can find all the material in this public git repository hosted at Igalia.

2006

Even before 2010 I found myself tangled with The Gimp, Sodipodi and Inkscape, later. In 2006 I did a small design for that year’s GUADEC-ES which consisted on the header:

GUADEC-ES 2006 Header

and foot of its webpage:

GUADEC-ES 2006 Foot

The lady was inspired on Pasiphaë who has a sculpture in Vilanova’s see shore while the sea tide was inspired by The Great Wave off Kanagawa.

You can find all the material in this public git repository hosted at Igalia.

And finally getting to the end … or maybe better the beginning.

2005

In 2005 Coruña was hosting for the first of several times the GUADEC-ES. For that event I did most of the artwork that was used. Web page, printed banners, badges, talks’ book, but one of the things that I was most proud of was the animated banners that were featuring for some time in Barrapunto, the Spanish version of Slashdot:

GUADEC-ES 2005 Banner Animation

And I learn to do it the hard way. You cannot imagine how difficult was by the time to do a GIF animation with The GIMP!

Also, that year was a great one for the t-shirts. Most of the attendants liked them and we had them in several colors: red, green, blue, orange and, as always (or almost 😉 ), black. I think that was once in a lifetime for a hacker’s conference 😀

GUADEC-ES 2005 T-Shirt

Even, with Chema‘s help, the master of organizing events, I was experimenting with some sketches done directly in the sand, from which I got inspired to do the rest of the material:

GNOME in the sand

Of course, you can find all the material in this public git repository hosted at Igalia.

BTW, if you have been able to read this boring post until here, you are my hero 😀

GUADEC is at home … and I’m abroad

Or kind of … because unlike you may guess from the title, I’m actually attending mighty GUADEC 2012

Attending GUADEC 2012 badge

I’ve attended GUADEC 2006 in Vilanova i la Geltru, GUADEC 2007 in Birmingham, GUADEC 2008 in Istanbul and the Desktop Summit in Gran Canaria as a guest in all of them.

Finally, this year the event comes home but, funnily enough, I moved to Helsinki some months ago so I’m again a visitor. Now in A Coruña 🙂

Honestly, I can’t wait to attend some of the talks and meet again the GNOME folks. Also, my mates Igalians are featuring quite some talks in the program meanwhile Igalia itself has been doing quite an effort to host some of the hackfests and meetings that are happening during these days.

And not only that!. As I was saying, I’m a visitor again so I only have pending to thank Igalia again for sponsoring my trip!

Igalia