We need talented engineers with a strong low level graphics and GPU development background on the Android platform, ideally with experience of working in the consumer electronics industry.
The successful candidate will contribute to new, high-performance graphics solutions, integrate our solutions with new hardware platforms, optimise the Android OS graphics stack, benchmark our systems against competitors, work with 3rd party software developers and generally ensure that we have the best possible 3D graphics experience on the market.
They operate a hybrid working policy of 3 days working from the office and 2 days working from home weekly.
Role and Responsibilities
Develop innovations to optimise real-time rendering pipelines and deliver class-leading performance Implement standard features and extensions for the Android Graphics stack (SurfaceFlinger, SKIA, HWUI, etc.) Analyse different graphics workloads, identify bottlenecks and optimise for performance and power usage Develop optimal middleware libraries based on graphics and compute APIs (such as OpenGL ES & Vulkan) Bring-up and evaluate new devices, working with other teams to define and implement new UX requirements Have technical responsibility for one or more significant sections of an assigned project Translate complex functional and technical requirements into detailed design
Skills and Qualifications
A degree in Computer Science, Electronics, Natural Science, Mathematics, Engineering or any related discipline (an equivalent period of industrial experience may be substituted) A proven track record in real time embedded software development - preferably for mobile devices - with a good understanding of the latest development environments Expertise in computer graphics with experience in the design and development of middleware based on OpenGL, OpenGL ES, Vulkan or DirectX Understanding of computer graphics pipelines and modern mobile GPU architectures Expert proficiency in C and C++ programming languages System level performance analysis and strong OS fundamentals (memory management, multithreading/synchronization, user/kernel mode interaction) Excellent communication and team work skills, with a results-oriented attitude Proficiency in problem solving and debugging
Experience working on GPU Drivers
Experience designing and implementing image processing algorithms Experience working with ARM 64-bit architecture Experience developing system software for Android OS Familiarity with CPU and GPU hardware architectures Java and/or Python development experience