Senior Linux / Android GPU Driver Software Developer
Are you looking for an exciting and meaningful role at the edge of mobile technology? Are you motivated by learning new things and putting that knowledge into action?
Arm is seeking highly skilled and motivated engineers to join our Agile software development teams working on the latest mobile GPUs. Contributing to the driver for the next generation Mali™ mobile GPUs and the latest Linux and yet-to-be-published Android versions, you will help shape the technologies that the market will see in years to come.
What you will be involved with:
Developing multiple modules of our GPU driver, including memory management, GPU scheduling, instrumentation, window system management and power management; across kernel and user space.
You will cooperate closely with engineers working on other driver modules, modelling, HW design, emulation, verification, etc. You will see all the phases of a complex development program.
We have an excellent track record of building up expertise in people, so this is a great opportunity to learn something new and interesting in a friendly and collaborative environment. Join a multinational, dynamic and highly motivated software development group where you will enjoy the support of your colleagues while being challenged by interesting technical problems. Do you like producing high quality, high performance SW and solving complex technical problems? - then we would love to hear from you.
Recent achievements of the team include:
- Vulkan extensions to enable direct-to-display rendering.
- EGL extensions to support virtual reality (VR), such as Google Daydream.
- 3D content recording and replaying framework to aid the development of our latest GPU's with flexible visualisation and post-processing abilities.
- Complete redesign of the GPU HW interface to hit new degrees of performance in the most up-to-date content.
- Support for upcoming version of Android with the latest Linux kernels.
- Just-in-time memory allocation for Vulkan GPU jobs.
- GPU scheduling algorithm optimizations.
- Extend the intelligent power allocator (IPA) model to use hardware runtime metrics.
Day to day activities include:
- Participating in the design, implementation and testing of new features.
- Working closely with other software teams to interface driver components.
- Writing high quality, low overhead code for user and kernel space parts of the driver stack.
- Maintaining the existing codebase: fixing bugs and other quality assurance activities.
- Reviewing other people's code.
- Writing and maintaining documentation.
About Media Engineering
Media Engineering produces media processing hardware and software products for mobile and embedded devices. Our product portfolio includes GPU, ISP, Display and Video IP and our Mali™ Graphics Processor is the #1 shipping GPU. Now we are entering into a new growth phase to provide new technologies and products for new and existing markets and are looking for talented people to join the team.
In Media Engineering you will work with the world’s best companies, making world-leading products based on our IP alongside the best engineers in the world. We are a global team working across numerous sites and cultures. Your ideas will make a difference and you will have the opportunity to lead, challenge the status quo and ultimately change the world of media processing.
Please have a look at the following video to see what it's like to work with us: https://youtu.be/F4tNBNBgYEY
Skills & Experience required:
- Demonstrable expertise in C and C++ programming.
- Experience developing software for Linux, Android or Tizen based systems.
- Proficiency in problem solving and debugging skills.
- Experience with standard GNU/Linux tool chain, shells, source versioning systems such as GIT, scripting languages and build systems.
- Excellent problem solving & solution design.
- Practical, organized and analytical approach to work
- Kernel development experience.
- Knowledge of the graphics stack on any major operating system.
- Experience of driver or HAL development.
- Familiarity with Android-based systems.
At Arm, we are guided by our core beliefs that reflect our unique culture and guide our decisions, defining how we work together to defy ordinary and shape extraordinary:
We not I
- Take daily responsibility to make the Global Arm community thrive
- No individual owns the right answer. Brilliance is collective
- Information is crucial, share it
- Realise that we win when we collaborate — and that everyone misses out when we don’t
Passion for progress
- Our differences are our strength. Widen and mix up the pool of people you connect with
- Difficult things can take unexpected directions. Stick with it
- Make feedback positive and expansive, not negative and narrow
- The essence of progress is that it can’t stop. Grow with it and own your own progress
Be your brilliant self
- Be quirky not egocentric
- Recognise the power in saying ‘I don’t know’
- Make trust our default position
- Hold strong opinions lightly