| # Enable Metal Validation without Xcode. |
| |
| Metal validation can be enabled for command-line application using environment |
| variables. |
| |
| Apple [documents these environment variables on their developer site](https://developer.apple.com/documentation/xcode/validating-your-apps-metal-api-usage#Enable-API-Validation-with-environment-variables). |
| More documentation about these environment variables is also available via a man |
| page entry: `man MetalValidation` |
| |
| To enable all relevant Metal API and shader validation without using Xcode, add |
| the following to your `.rc` file. |
| |
| ``` sh |
| # Metal Validation Defaults |
| export MTL_DEBUG_LAYER=1 |
| export MTL_DEBUG_LAYER_ERROR_MODE=assert |
| # Set this to assert for stricter runtime checks. Set to "ignore" if too chatty. |
| export MTL_DEBUG_LAYER_WARNING_MODE=nslog |
| export MTL_SHADER_VALIDATION=1 |
| ``` |
| |
| These environment variable are good defaults but there are more validation |
| related knobs and dials to turn. See `man MetalValidation`. |
| |
| # Enable Metal Profiling HUD without Xcode |
| |
| Applications can optionally display a HUD that displays real-time information |
| about Metal related performance. |
| |
|  |
| |
| More documentation about the specific elements of the HUD is present on the |
| [Apple developer site](https://developer.apple.com/documentation/xcode/monitoring-your-metal-apps-graphics-performance). |
| |
| The Profiling HUD is separate from Metal Validation and can be enabled for apps |
| that are launched from the command like (like Impeller Playgrounds) using |
| environment variables. Add the following to your `.rc` file. |
| |
| ```sh |
| export MTL_HUD_ENABLED=1 |
| ``` |