#ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
#define GPU_CONFIG_GPU_FEATURE_INFO_H_
#include <stdint.h>
#include <array>
#include <string>
#include <vector>
#include "build/build_config.h"
#include "components/viz/common/resources/shared_image_format.h"
#include "gpu/config/gpu_config_export.h"
#include "gpu/config/gpu_feature_type.h"
namespace gfx {
enum class BufferFormat : uint8_t;
}
namespace gl {
class GLContext;
}
namespace gpu {
enum GpuFeatureStatus {
kGpuFeatureStatusEnabled,
kGpuFeatureStatusBlocklisted,
kGpuFeatureStatusDisabled,
kGpuFeatureStatusSoftware,
kGpuFeatureStatusUndefined,
kGpuFeatureStatusMax
};
struct GPU_CONFIG_EXPORT GpuFeatureInfo {
GpuFeatureInfo();
GpuFeatureInfo(const GpuFeatureInfo&);
GpuFeatureInfo(GpuFeatureInfo&&);
~GpuFeatureInfo();
void ApplyToGLContext(gl::GLContext* context) const;
bool IsWorkaroundEnabled(int32_t workaround) const;
bool IsInitialized() const;
GpuFeatureInfo& operator=(const GpuFeatureInfo&);
GpuFeatureInfo& operator=(GpuFeatureInfo&&);
std::array<GpuFeatureStatus, NUMBER_OF_GPU_FEATURE_TYPES> status_values;
std::vector<int32_t> enabled_gpu_driver_bug_workarounds;
std::string disabled_extensions;
std::string disabled_webgl_extensions;
std::vector<uint32_t> applied_gpu_blocklist_entries;
std::vector<uint32_t> applied_gpu_driver_bug_list_entries;
std::vector<gfx::BufferFormat>
supported_buffer_formats_for_allocation_and_texturing;
#if BUILDFLAG(IS_OZONE)
std::vector<viz::SharedImageFormat>
supported_formats_for_gl_native_pixmap_import;
#endif
};
}
#endif