aboutsummaryrefslogtreecommitdiff
path: root/include/platform/FrontendFeatures.h
blob: 6500c9c6b46d82467762ded086aa47c9f781c479 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_features.py using data from frontend_features.json.
//
// Copyright 2022 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.
//
// FrontendFeatures.h: Features/workarounds for driver bugs and other behaviors seen
// on all platforms.

#ifndef ANGLE_PLATFORM_FRONTENDFEATURES_H_
#define ANGLE_PLATFORM_FRONTENDFEATURES_H_

#include "platform/Feature.h"

namespace angle
{

struct FrontendFeatures : FeatureSetBase
{
    FrontendFeatures();
    ~FrontendFeatures();

    FeatureInfo loseContextOnOutOfMemory = {
        "loseContextOnOutOfMemory",
        FeatureCategory::FrontendWorkarounds,
        "Some users rely on a lost context notification if a GL_OUT_OF_MEMORY error occurs",
        &members,
    };

    FeatureInfo disableProgramCachingForTransformFeedback = {
        "disableProgramCachingForTransformFeedback",
        FeatureCategory::FrontendWorkarounds,
        "On some GPUs, program binaries don't contain transform feedback varyings",
        &members,
    };

    FeatureInfo scalarizeVecAndMatConstructorArgs = {
        "scalarizeVecAndMatConstructorArgs", FeatureCategory::FrontendWorkarounds,
        "Always rewrite vec/mat constructors to be consistent", &members,
        "http://crbug.com/1165751"};

    FeatureInfo disableProgramBinary = {"disableProgramBinary", FeatureCategory::FrontendFeatures,
                                        "Disable support for GL_OES_get_program_binary", &members,
                                        "http://anglebug.com/5007"};

    FeatureInfo disableAnisotropicFiltering = {
        "disableAnisotropicFiltering",
        FeatureCategory::FrontendWorkarounds,
        "Disable support for anisotropic filtering",
        &members,
    };

    FeatureInfo allowCompressedFormats = {
        "allowCompressedFormats",
        FeatureCategory::FrontendWorkarounds,
        "Allow compressed formats",
        &members,
    };

    FeatureInfo enableCaptureLimits = {"enableCaptureLimits", FeatureCategory::FrontendFeatures,
                                       "Set the context limits like frame capturing was enabled",
                                       &members, "http://anglebug.com/5750"};

    FeatureInfo enableCompressingPipelineCacheInThreadPool = {
        "enableCompressingPipelineCacheInThreadPool", FeatureCategory::FrontendWorkarounds,
        "Enable compressing pipeline cache in thread pool.", &members, "http://anglebug.com/4722"};

    FeatureInfo forceRobustResourceInit = {
        "forceRobustResourceInit", FeatureCategory::FrontendFeatures,
        "Force-enable robust resource init", &members, "http://anglebug.com/6041"};

    FeatureInfo forceInitShaderVariables = {
        "forceInitShaderVariables",
        FeatureCategory::FrontendFeatures,
        "Force-enable shader variable initialization",
        &members,
    };

    FeatureInfo enableProgramBinaryForCapture = {
        "enableProgramBinaryForCapture", FeatureCategory::FrontendFeatures,
        "Even if FrameCapture is enabled, enable GL_OES_get_program_binary", &members,
        "http://anglebug.com/5658"};
};

inline FrontendFeatures::FrontendFeatures()  = default;
inline FrontendFeatures::~FrontendFeatures() = default;

}  // namespace angle

#endif  // ANGLE_PLATFORM_FRONTENDFEATURES_H_