Microsoft is offering an exciting opportunity for a Software Development Engineer (Contract) focused on graphics performance and systems analysis. The role involves diagnosing complex performance issues in gaming applications, analyzing GPU and CPU traces, and collaborating with engineers to improve performance.
Responsibilities:
- Reproduce reported DirectX 12 performance issues from data produced by testing lab environments
- Capture GPU and CPU profiles and traces using tools such as PIX timing captures, GPUView/ETW, and vendor profilers to identify bottlenecks including GPU-bound versus CPU-bound issues, synchronization problems, shader occupancy, and pipelining concerns
- Analyze traces and performance counters to isolate likely root causes and propose actionable next steps for resolution
- Create clear performance write-ups with reproduction steps, captures, metrics, and concise summaries of suspected hotspots
- Partner with graphics driver and runtime engineers to validate hypotheses, test fixes, and confirm performance improvements and regressions
- Compare performance differences between Windows and Linux graphics stacks including runtime, drivers, and compilers
- Communicate findings and recommended next steps clearly to technical stakeholders
Requirements:
- Bachelor's degree in Computer Science, Software Engineering, or relevant field
- 2-4 years of relevant experience in graphics performance analysis or related field
- Understanding of real-time rendering fundamentals and the GPU graphics pipeline including draw calls, state changes, shaders, textures, and buffers
- Understanding of GPU architecture basics including waves/warps, occupancy, caches, and memory bandwidth, along with shader ISA at a high level
- DirectX 12 familiarity with core concepts such as command queues/lists, descriptor heaps, and resource states/barriers
- Basic shader concepts in HLSL and SPIRV
- Hands-on experience with profiling tools including PIX, Radeon GPU Profiler, GPUView, and WPA/WPR, with ability to interpret timing and counter data
- Programming skills in C/C++ with ability to read and reason about performance-sensitive code
- Comfortable working in Windows environments including command line basics and driver/runtime builds
- Strong written communication skills for bug reports and triage summaries
- Comfortable working in Linux including shell, services, and basic scripting
- Scripting for automation using Python, PowerShell, or Bash
- Basic data analysis capabilities with CSV files, spreadsheets, and simple plots
- Exposure to Windows graphics stack and debugging concepts including WDDM, DXGI, ETW providers, and driver symbol debugging