using System;
using BetterGenshinImpact.Core.Recognition.ONNX;
using CommunityToolkit.Mvvm.ComponentModel;
namespace BetterGenshinImpact.Core.Config;
[Serializable]
public partial class HardwareAccelerationConfig : ObservableObject
{
///
/// 推理使用的设备。默认CPU
///
[ObservableProperty]
private InferenceDeviceType _inferenceDevice = InferenceDeviceType.Cpu;
///
/// 是否强制OCR使用CPU推理。在某些环境上使用GPU进行OCR推理会导致性能下降(比如很多使用DirectML推理的情况下)。默认关闭。
///
[ObservableProperty]
private bool _cpuOcr = false;
#region 一般GPU加速设置
///
/// 强制指定gpu设备,默认为0(使用默认设备)
///
[ObservableProperty]
private int _gpuDevice = 0;
///
/// 附加path,用;分割。默认为空。
///
[ObservableProperty]
private string _additionalPath = "";
///
/// 是否输出优化后的模型文件到缓存。注意:在不支持的执行器上使用会导致异常。默认关闭。
///
[ObservableProperty]
private bool _optimizedModel = false;
#endregion
#region cuda设置
///
/// 强制指定cuda设备,默认为0(使用默认设备)
///
[ObservableProperty]
private int _cudaDevice = 0;
///
/// 自动附加cuda的path。一般情况下用这个就足够了。默认关闭。
///
[ObservableProperty]
private bool _autoAppendCudaPath = false;
#endregion
#region TensorRT缓存设置
///
/// 启用TensorRT缓存。默认开启。不开的话使用TensorRT每次加载模型会卡爆。
///
[ObservableProperty]
private bool _enableTensorRtCache = true;
///
/// 嵌入式引擎缓存。将引擎缓存嵌入到模型中。默认开启。关闭它可能会提高性能(如果不爆炸的话)。
///
[ObservableProperty]
private bool _embedTensorRtCache = true;
#endregion
#region OpenVINO设置
///
/// OpenVino 设备参数。
///
[ObservableProperty]
private string _openVinoDevice = "AUTO:GPU,CPU";
///
/// 启用 OpenVINO 缓存。默认关闭。
///
[ObservableProperty]
private bool _enableOpenVinoCache = false;
#endregion
}