// // Copyright 2026 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // frame_capture_shared.h: // Common code between the ANGLE frame-capture runtime and the replay trace fixture. // #ifndef COMMON_FRAME_CAPTURE_SHARED_H_ #define COMMON_FRAME_CAPTURE_SHARED_H_ #include #include "common/system_utils.h" namespace angle { // TODO: Consolidate to C output and remove option. http://anglebug.com/42266223 // Capture configuration environment variables. constexpr char kEnabledVarName[] = "ANGLE_CAPTURE_ENABLED"; constexpr char kOutDirectoryVarName[] = "ANGLE_CAPTURE_OUT_DIR"; constexpr char kFrameStartVarName[] = "ANGLE_CAPTURE_FRAME_START"; constexpr char kFrameEndVarName[] = "ANGLE_CAPTURE_FRAME_END"; constexpr char kBinaryDataSizeVarName[] = "ANGLE_CAPTURE_MAX_RESIDENT_BINARY_SIZE"; constexpr char kBlockSizeVarName[] = "ANGLE_CAPTURE_BLOCK_SIZE"; constexpr char kTriggerVarName[] = "ANGLE_CAPTURE_TRIGGER"; constexpr char kEndCaptureVarName[] = "ANGLE_CAPTURE_END_CAPTURE"; constexpr char kCaptureLabelVarName[] = "ANGLE_CAPTURE_LABEL"; constexpr char kCompressionVarName[] = "ANGLE_CAPTURE_COMPRESSION"; constexpr char kSerializeStateVarName[] = "ANGLE_CAPTURE_SERIALIZE_STATE"; constexpr char kValidationVarName[] = "ANGLE_CAPTURE_VALIDATION"; constexpr char kValidationExprVarName[] = "ANGLE_CAPTURE_VALIDATION_EXPR"; constexpr char kSourceExtVarName[] = "ANGLE_CAPTURE_SOURCE_EXT"; constexpr char kSourceSizeVarName[] = "ANGLE_CAPTURE_SOURCE_SIZE"; constexpr char kForceShadowVarName[] = "ANGLE_CAPTURE_FORCE_SHADOW"; // Android debug properties that correspond to the above environment variables. constexpr char kAndroidEnabled[] = "debug.angle.capture.enabled"; constexpr char kAndroidOutDir[] = "debug.angle.capture.out_dir"; constexpr char kAndroidFrameStart[] = "debug.angle.capture.frame_start"; constexpr char kAndroidFrameEnd[] = "debug.angle.capture.frame_end"; constexpr char kAndroidBinaryDataSize[] = "debug.angle.capture.max_resident_binary_size"; constexpr char kAndroidBlockSize[] = "debug.angle.capture.block_size"; constexpr char kAndroidTrigger[] = "debug.angle.capture.trigger"; constexpr char kAndroidEndCapture[] = "debug.angle.capture.end_capture"; constexpr char kAndroidCaptureLabel[] = "debug.angle.capture.label"; constexpr char kAndroidCompression[] = "debug.angle.capture.compression"; constexpr char kAndroidValidation[] = "debug.angle.capture.validation"; constexpr char kAndroidValidationExpr[] = "debug.angle.capture.validation_expr"; constexpr char kAndroidSourceExt[] = "debug.angle.capture.source_ext"; constexpr char kAndroidSourceSize[] = "debug.angle.capture.source_size"; constexpr char kAndroidForceShadow[] = "debug.angle.capture.force_shadow"; // Markers used with glDebugMessageInsert to tag fixture-injected API calls constexpr uint32_t kFixtureInjectedCommandsBeginId = 0x41494342; // 'AICB' constexpr uint32_t kFixtureInjectedCommandsEndId = 0x41494345; // 'AICE' bool IsCaptureEnabledFromEnv(); bool IsCaptureConfiguredFromEnv(); } // namespace angle #endif // COMMON_FRAME_CAPTURE_SHARED_H_