#ifndef GPU_CONFIG_DEVICE_PERF_INFO_H_
#define GPU_CONFIG_DEVICE_PERF_INFO_H_
#include <cstdint>
#include <optional>
#include "build/build_config.h"
#include "gpu/config/gpu_config_export.h"
#if BUILDFLAG(IS_WIN)
#include <d3dcommon.h>
#endif
namespace gpu {
enum class IntelGpuGeneration {
kNonIntel = 0,
kUnknownIntel = 1,
kGen4 = 4,
kGen5 = 5,
kGen6 = 6,
kGen7 = 7,
kGen8 = 8,
kGen9 = 9,
kGen10 = 10,
kGen11 = 11,
kXe = 12,
kXe2 = 13,
kXe3 = 14,
kMaxValue = kXe3,
};
enum class HasDiscreteGpu {
kNo = 0,
kYes = 1,
kUnknown = 2,
kMaxValue = kUnknown,
};
struct GPU_CONFIG_EXPORT DevicePerfInfo {
uint32_t total_physical_memory_mb = 0u;
uint32_t total_disk_space_mb = 0u;
uint32_t hardware_concurrency = 0u;
#if BUILDFLAG(IS_WIN)
uint32_t system_commit_limit_mb = 0u;
D3D_FEATURE_LEVEL d3d11_feature_level = D3D_FEATURE_LEVEL_1_0_CORE;
HasDiscreteGpu has_discrete_gpu = HasDiscreteGpu::kUnknown;
#endif
IntelGpuGeneration intel_gpu_generation = IntelGpuGeneration::kNonIntel;
bool software_rendering = false;
};
GPU_CONFIG_EXPORT std::optional<DevicePerfInfo> GetDevicePerfInfo();
GPU_CONFIG_EXPORT void SetDevicePerfInfo(
const DevicePerfInfo& device_perf_info);
}
#endif