Technical Walkthrough


May 11, 2022

Advanced API Performance: Clears

By Ivan Belyavtsev

Like

This post covers best practices for clears on NVIDIA GPUs. To get a high and consistent frame rate in your applications, see all Advanced API Performance tips.

Surface clearing is a widely used accessory operation.

Recommended

Use clear functions from the graphics API to clear resources.Use any clear color to clear render targets.Hardware optimizations improves the most clear operations.Use a suitable clear value when clearing the depth buffer.Prefer clear values within the range [0.0, 0.5) when using depth test functions D3D12_COMPARISON_FUNC_GREATER or D3D12_COMPARISON_FUNC_GREATER_EQUALPrefer clear values within the range [0.5, 1.0] when using depth test functions D3D12_COMPARISON_FUNC_LESS or D3D12_COMPARISON_FUNC_LESS_EQUAL.Group clear operations into as few batches as possible.Batching reduces the performance overhead of each clear.

Not recommended

Avoid using more than a few different clear colors for surface clearing.Clearing optimization limited to 25 clear colors per frame on NVIDIA Ampere Architecture GPUs.Clearing optimization limited to 10 clear colors per frame on NVIDIA Turing GPUs.Avoid interleaving single clear calls with rendering work. Group clears into batches whenever possible.Never use clear-shaders as a replacement for API clears.It disables hardware optimizations and negatively impacts both CPU and GPU performance.Exception: Overlapping a compute clear with neighboring compute work may give better performance.

Acknowledgments

Thanks to Michael Murphy, Maurice Harris, Dmitry Zhdan, and Patric Neil for their advice and feedback.

About the Authors