Intel Has Been Quietly Developing A New Backend Compiler For Their OpenGL/Vulkan Drivers
One of the interesting reveals so far from this week's X.Org Developers' Conference in Montreal is that Intel has been developing a new back-end compiler for their OpenGL/Vulkan Linux drivers based upon their experiences so far with their NIR support and the lessons learned over the past number of years.
While Valve has been developing ACO as a new Radeon compiler back-end, Intel developers have been creating "IBC" as the new "Intel Backend Compiler" for their Iris OpenGL and ANV Vulkan driver components living within Mesa.
This new Intel back-end compiler is heavily based on the semantics of the NIR intermediate representation, aims for a sane middle-ground, was designed from the start to support SIMD32 compute and fragment shaders, handles scalar values and 8/16-bits from the start, and other modern features.
At this stage the IBC back-end is working for the ANV Vulkan and Iris Gallium3D drivers but hasn't been ported to their "i965" OpenGL driver. This compiler currently leads to around a 95% pass-rate for the Vulkan conformance tests or about 90% for Shader-DB OpenGL. As for the performance, however, they say they have yet to extensively look at that and thus no performance numbers to share. Also, there are plenty of performance optimizations to tackle once their foundation is in place.
Some basic details on IBC can be found via this slide deck. The IBC code is currently being developed out-of-tree via this Git repository.
With their Iris Gallium3D driver now in good standing and with all of the performance optimizations Intel has made to their open-source graphics driver components in recent months, it will be particularly exciting to see how this IBC back-end plays out over the months ahead.
While Valve has been developing ACO as a new Radeon compiler back-end, Intel developers have been creating "IBC" as the new "Intel Backend Compiler" for their Iris OpenGL and ANV Vulkan driver components living within Mesa.
This new Intel back-end compiler is heavily based on the semantics of the NIR intermediate representation, aims for a sane middle-ground, was designed from the start to support SIMD32 compute and fragment shaders, handles scalar values and 8/16-bits from the start, and other modern features.
At this stage the IBC back-end is working for the ANV Vulkan and Iris Gallium3D drivers but hasn't been ported to their "i965" OpenGL driver. This compiler currently leads to around a 95% pass-rate for the Vulkan conformance tests or about 90% for Shader-DB OpenGL. As for the performance, however, they say they have yet to extensively look at that and thus no performance numbers to share. Also, there are plenty of performance optimizations to tackle once their foundation is in place.
Some basic details on IBC can be found via this slide deck. The IBC code is currently being developed out-of-tree via this Git repository.
With their Iris Gallium3D driver now in good standing and with all of the performance optimizations Intel has made to their open-source graphics driver components in recent months, it will be particularly exciting to see how this IBC back-end plays out over the months ahead.
27 Comments