blob: ae089e1e361fafae4d941b6e16f0656846006b76 [file] [edit]
//
// 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 <cstdint>
#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_