# ANGLE OpenGL Frame Capture and Replay ANGLE currently supports a limited OpenGL capture and replay framework. Limitations: * GLES capture has many unimplemented functions. * EGL capture and replay is not yet supported. * Mid-execution capture is supported with the Vulkan back-end. * Mid-execution capture has many unimplemented features. * Capture and replay is currently only tested on desktop platforms. * Binary replay is unimplemented. CPP replay is supported. ## Capturing and replaying an application To build ANGLE with capture and replay enabled update your GN args: ``` angle_with_capture_by_default = true ``` Once built ANGLE will capture the OpenGL ES calls to CPP replay files. By default the replay will be stored in the current working directory. The capture files will be named according to the pattern `angle_capture_context{id}_frame{n}.cpp`. Each GL Context currently has its own replay sources. ANGLE will write out data binary blobs for large Texture or Buffer contents to `angle_capture_context{id}_frame{n}.angledata`. Replay programs must be able to load data from the corresponding `angledata` files. ## Controlling Frame Capture Some simple environment variables control frame capture: * `ANGLE_CAPTURE_ENABLED`: * Set to `0` to disable capture entirely. Default is `1`. * `ANGLE_CAPTURE_COMPRESSION`: * Set to `0` to disable capture compression. Default is `1`. * `ANGLE_CAPTURE_OUT_DIR=`: * Can specify an alternate replay output directory. * Example: `ANGLE_CAPTURE_OUT_DIR=samples/capture_replay`. Default is the CWD. * `ANGLE_CAPTURE_FRAME_START=`: * Uses mid-execution capture to write "Setup" functions that starts a Context at frame `n`. * Example: `ANGLE_CAPTURE_FRAME_START=2`. Default is `0`. * `ANGLE_CAPTURE_FRAME_END=`: * By default ANGLE will capture the first ten frames. This variable can override the default. * Example: `ANGLE_CAPTURE_FRAME_END=4`. Default is `10`. * `ANGLE_CAPTURE_LABEL=