Structure your answer as a chronological walkthrough of the pipeline, explicitly labeling each stage as fixed-function or programmable. Emphasize how the GPU's SIMD/SIMT execution model processes vertices and fragments in parallel, and connect this to ARM's Mali architecture where relevant.
Pro tip: Mention that while the pipeline is conceptually sequential, modern GPUs use tile-based rendering (especially ARM Mali) to keep fragment data on-chip, reducing memory bandwidth—a key trade-off in mobile graphics.
Describe how the application prepares vertex data (positions, attributes) in buffers and issues a draw call. Mention that this stage is fixed-function from the GPU's perspective, but the data layout and draw call parameters are controlled by the application.
Explain the programmable vertex shader stage where each vertex is transformed from object space to clip space. Then describe fixed-function primitive assembly (triangle setup) and clipping/culling.
Cover the fixed-function rasterizer that converts the triangle into fragments (pixels) and interpolates vertex attributes. Highlight that this stage determines coverage and generates fragments for parallel processing.
Detail the programmable fragment shader that computes color and depth per fragment. Then describe fixed-function output merging: depth/stencil test, blending, and framebuffer write.
Explain how vertices and fragments are processed in parallel using SIMD/SIMT: many vertices/fragments are executed simultaneously in warps/wavefronts. Mention that this hides latency and maximizes throughput, but requires careful handling of divergence.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.