Career Boost: A Look into Vulkan Conformance Testing with Mobica
Picture this: you're a talented developer or engineer, and you've got the world at your feet. You've spent countless hours honing your skills, and now it's time to put them to use. But there's a catch! In the career market, finding the right company to join can be like searching for a needle in a haystack.
Fear not, fellow coder! The company that could propel your career to new heights (or possibly save you from a mundane career) is none other than us, Mobica.
Many years ago, Mobica started its collaboration with the Khronos Group with the goal of creating and developing graphics standards for the IT industry. We have dedicated countless hours to conformance tests, and our open-source work within the Khronos Group has earned us a respected reputation in the GPU world.
The importance of standardisation
Whenever a shiny new tech invention pops up and showers its creator with oodles of profit, you can bet your boots that competitors will scramble to whip up their own snazzy versions. In the case of GPUs, this means one thing: every competitor tries to roll out their own unique API, leaving software developers juggling a whole bunch of different solutions. It's like asking someone to make a different driver’s licence for different car brands. That can get complicated very quickly.
Thankfully, GPU companies caught on to the madness and decided to join forces, like superheroes assembling to save the day. They created common APIs so that software developers could write their code once and it would work, no matter which GPU was in play. The first such standard created for graphics programming was OpenGL API, soon followed by DirectX.
This combined effort by GPU vendors and various software companies including us, Mobica created the Khronos consortium which is a place for the discussion, creation and development of new GPU standards. Since its inception, the Khronos Group has implemented a set of major industry standards that drive the evolution of GPU technology, listed below. And thanks to our participation in the Group, Mobicans can stay up to date with everything happening on the cutting-edge playing field of GPUs.
Khronos Group industry standards
- OpenGL - for graphics rendering
- OpenGL ES - for graphics rendering on mobile devices
- OpenGL SC - for graphics rendering in safety-critical environments (aviation, automotive, etc)
- Vulkan - the successor of OpenGL, better suited for modern computer architecture
- Vulkan SC - for graphics rendering in safety-critical environments
- OpenCL - for writing general computing programs on heterogeneous devices such as multicore CPUs, GPUs, etc.
- SYCL - for writing general computing programs on heterogeneous devices using pure C++17 language
- SYCL SC - same as SYCL but for safety-critical applications
- OpenVX - for standardisation of computer vision solutions
- OpenXR - for access to virtual reality and augmented reality platforms
- and many more, including solutions for machine learning
All these standards improve the productivity of software developers by allowing them to bring their applications to devices from different vendors with minimal effort.
The benefits of Mobica’s conformance testing initiatives for our developers, and potentially you;
- Conformance testing expertise: Gain a deep understanding of industry standards and the importance of compliance.
- Early access to new features: Enjoy the unique opportunity to work on new features before they become publicly available, giving you a competitive edge.
- Collaborative environment: Connect with industry pros and GPU vendors worldwide as part of the Khronos Group.
- Skill enhancement: Hone your C++, problem-solving, and understanding of graphics functionality with projects such as the Vulkan Conformance Test Suite.
To get a deeper appreciation of how awesome today’s standardisation efforts are, let's dive into a timeline of GPU progress by reflecting on the history of GPUs, and how it all started.
The Past, Present and Future of GPUs
Non-programmable graphics algorithms and Shaders
Two decades have passed since GPUs conquered the PC world, and even longer since their integration into gaming consoles. Initially, they were used solely for accelerating transform and lighting computations through fixed, non-programmable graphics algorithms. The NVidia Riva TNT2 and 3dfx Voodoo3 cards were facilitators of this early technology. Do you remember those?
Excitingly, GPUs have transcended their non-programmable fixed pipeline origins and evolved into programmable pipelines! Programs that were able to run on GPUs were called shaders. Initially, shaders were written in languages similar to assembler, but after a few years, the first higher-level languages were created for this specific purpose - languages such as GLSL and HLSL were born.
NVidia PhysX Engine
But still - the scope of the graphics cards was limited to making graphics.
One of the first companies that realised that external PCI cards can be used not only for graphics computations was Ageia. This company created a physics computing unit (PPU) - a dedicated card for the simulation of physics in games. Ageia was acquired by NVidia and together they created a physics engine that was able to perform physics computations on GPU in parallel to typical graphics computations (NVidia PhysX engine).
At this moment many people realised that highly parallelised computations made on GPU may be used not only for graphics rendering or simple physics simulations but in other more generic computing domains as well.
CUDA and OpenCL
For some time such data processing was performed using specialised graphics shaders (vertex and fragment shaders), but soon companies such as ATI and NVidia created the first generic non-graphic APIs that could facilitate and deliver whole GPU power to applications written in C++ or other languages - among these APIs were CUDA and OpenCL.
But today’s popularity and importance of GPUs wouldn’t be so huge if not for one very important observation - Huang’s law. According to this law, the evolution of GPUs advances much faster than Moore's law, which means that over time GPUs are becoming faster than CPUs.
Today there are few domains that are very demanding in terms of computational power, such as machine learning (and artificial intelligence in general), computer vision, graphics programming (including its new computationally costly paradigm - raytracing), scientific simulations, industrial IoT, etc - and this growing demand drives further evolution of GPUs. GPUs find their new applications in subsequent industries like automotive, aviation, military and so on. GPUs were also added to embedded devices in order to secure this demand.
Development of conformance tests
Mobica saw the writing on the wall and realised the criticality of standards in the GPU tech world, so we joined Khronos Group and have been a driving force in moulding and developing various industry standards that will shape the future of the IT industry for many years to come.
Currently, Mobica’s main area of interest in the Khronos Group revolves around conformance tests. Each Khronos standard consists of two parts: a text document that specifies a standard and a set of conformance tests that verify whether a specific product is conformant with this standard.
Vulkan Conformance Test Suite is an example of conformance tests that Mobica helps to develop. Although test coverage isn’t full yet - the number of tests performed on Vulkan implementation reaches 2 million. Conformance tests cover each core Vulkan version as well as a group of more prominent extensions, such as raytracing extensions for example.
What does a typical Vulkan test look like?
Mobica’s developers who are responsible for writing Vulkan Tests, write them in C++ using the Vulkan API, get results from the Vulkan driver and compare them with results expected by Vulkan specifications. Often these expected results must be precomputed on the CPU. It means that sometimes a developer has to implement some graphics functionality on the CPU side, for example; parts of the triangle rasterization pipeline.
For new functionalities (new Vulkan version, or important extension) the Khronos Group wants to publish specifications, conformance tests and at least two conformant implementations from different GPU vendors at once. As a result - Mobica’s developers have the chance to work on new Vulkan features long before these features are publicly available. In addition, they sometimes have a chance to catch some issues and influence the future shape of these extensions.
After the new test is accepted by Khronos members - it’s added to the next version of the conformance test suite and from now on each Vulkan implementation must pass this test in order to be considered as Vulkan conformant.
In conclusion, the world of GPUs is an exciting and rapidly evolving domain in tech, with new applications emerging every day. At Mobica, we're at the forefront of this evolution, working closely with the Khronos Group to develop and implement industry standards and conformance tests that drive the progress of GPU technology.
As a Mobican, you'll have the opportunity to gain deep expertise in industry standards, work on cutting-edge features, and collaborate with industry pros and GPU vendors worldwide. With our focus on skill enhancement and a collaborative environment, you'll be well-equipped to take your career to the next level.
So if you're a talented developer or engineer looking to join a dynamic and innovative team, Explore our Career offers.
Join us today and let's shape the future of GPU technology!
Get started with Mobica today!
Principal Engineer, Embedded Competence Centre at Mobica
A Principal Engineer passionate about the exciting world of graphics programming. With a strong focus on the Vulkan and Vulkan SC APIs and their respective environments, Paweł has become a leading authority in this complex field. Since joining Mobica in 2019, he has made remarkable contributions to the industry, including his instrumental role in developing the Vulkan Conformance Tests for Khronos Group, as well as spearheading a range of other notable projects, spanning from traditional Vulkan applications to advanced Vulkan graphics drivers for embedded devices.