Analyzing texture performance
The texturing charts in Streamline show you whether texturing is active, and which texture filtering is in use. If your content is making heavy use of the texture unit, consider using simpler texture filters. This video explains the differences between different types of filtering.
Tip: Check the Mali GPU datasheet for details about the texturing capabilities of the GPU in the device you are testing.
Mali texture usage
The Mali Texture Usage chart shows the number of cycles where texturing was active. Some instructions take more than one cycle due to multi-cycle data access and filtering operations. Mali is optimized for 2D bilinear filtering, trilinear filtering runs at half speed and 3D filtering runs at half speed again. The cycle costs per quad vary for different GPUs, refer to the Mali GPU datasheet for details.
For Valhall-based GPUs, you can also see where the filtering unit uses 4x bilinear or 2x trilinear filtering.
Mali texture CPI
The Mali Texture CPI (cycles per instruction) chart shows the average number of texture cycles per sample.
Mali texture workload property rate
The Mali Texture Workload Property Rate chart shows the percentage of texture operations that use texture compression, mipmapping, trilinear filtering or 3D accesses.
For Valhall-based GPUs, you can see the percentage of texture filtering cycles that use the 4x data path.
Mali texture bus utilization
For Valhall-based GPUs, you can see the percentage load on the texture message input bus. Sometime bus rate can be an issue if you’re returning
highp samplers (fp32 per channel not fp16). Use this to check for texture bandwidth issues inside the shader core.
Mali texture memory usage
The Mali Texture Memory Usage chart shows the memory usage for the texture pipe normalized by the number of access cycles. For every texturing filter access you make, check how much bandwidth comes from the L2, and how much is coming from external memory. Use this to check cache efficiency.
If a high number of bytes are being requested per access, where high depends on the texture formats you are using, it can be worth reviewing texture settings:
- Enable mipmaps for offline generated textures
- Use ASTC or ETC compression for offline generated textures
- Replace run-time generated framebuffer and texture formats with a narrower format
- Reduce any use of negative LOD bias used for texture sharpening
- Reduce the MAX_ANISOTROPY level for anisotropic filtering
Read more texture optimization advice in the Texture Best Practices guide.