xref: /aosp_15_r20/external/angle/include/platform/frontend_features.json (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1{
2    "description": [
3        "Copyright 2022 The ANGLE Project Authors. All rights reserved.",
4        "Use of this source code is governed by a BSD-style license that can be",
5        "found in the LICENSE file.",
6        "",
7        "frontend_features.json: Features/workarounds for driver bugs and other behaviors seen",
8        "on all platforms."
9    ],
10    "features": [
11        {
12            "name": "lose_context_on_out_of_memory",
13            "category": "Workarounds",
14            "description": [
15                "Some users rely on a lost context notification if a GL_OUT_OF_MEMORY error occurs"
16            ]
17        },
18        {
19            "name": "disable_program_caching_for_transform_feedback",
20            "category": "Workarounds",
21            "description": [
22                "On some GPUs, program binaries don't contain transform feedback varyings"
23            ]
24        },
25        {
26            "name": "disable_program_binary",
27            "category": "Features",
28            "description": [
29                "Disable support for GL_OES_get_program_binary"
30            ],
31            "issue": "http://anglebug.com/42263580"
32        },
33        {
34            "name": "disable_draw_buffers_indexed",
35            "category": "Features",
36            "description": [
37                "Disable support for OES_draw_buffers_indexed and EXT_draw_buffers_indexed"
38            ],
39            "issue": "http://anglebug.com/42266194"
40        },
41        {
42            "name": "disable_anisotropic_filtering",
43            "category": "Workarounds",
44            "description": [
45                "Disable support for anisotropic filtering"
46            ]
47        },
48        {
49            "name": "allow_compressed_formats",
50            "category": "Workarounds",
51            "description": [
52                "Allow compressed formats"
53            ]
54        },
55        {
56            "name": "single_threaded_texture_decompression",
57            "category": "Workarounds",
58            "description": [
59                "Disables multi-threaded decompression of compressed texture formats"
60            ]
61        },
62        {
63            "name": "force_depth_attachment_init_on_clear",
64            "category": "Workarounds",
65            "description": [
66                "Force depth attachment initialization on clear ops"
67            ],
68            "issue": "https://anglebug.com/42265720"
69        },
70        {
71            "name": "enable_capture_limits",
72            "category": "Features",
73            "description": [
74                "Set the context limits like frame capturing was enabled"
75            ],
76            "issue": "http://anglebug.com/42264287"
77        },
78        {
79            "name": "force_robust_resource_init",
80            "category": "Features",
81            "description": [
82                "Force-enable robust resource init"
83            ],
84            "issue": "http://anglebug.com/42264571"
85        },
86        {
87            "name": "force_init_shader_variables",
88            "category": "Features",
89            "description": [
90                "Force-enable shader variable initialization"
91            ]
92        },
93        {
94            "name": "enable_program_binary_for_capture",
95            "category": "Features",
96            "description": [
97                "Even if FrameCapture is enabled, enable GL_OES_get_program_binary"
98            ],
99            "issue": "http://anglebug.com/42264193"
100        },
101        {
102            "name": "force_gl_error_checking",
103            "category": "Features",
104            "description": [
105                "Force GL error checking (i.e. prevent applications from disabling error checking"
106            ],
107            "issue": "https://issuetracker.google.com/220069903"
108        },
109        {
110            "name": "emulate_pixel_local_storage",
111            "category": "Features",
112            "description": [
113                "Emulate ANGLE_shader_pixel_local_storage using shader images"
114            ],
115            "issue": "http://anglebug.com/40096838"
116        },
117        {
118            "name": "cache_compiled_shader",
119            "category": "Features",
120            "description": [
121                "Enable to cache compiled shaders"
122            ],
123            "issue": "http://anglebug.com/42265509"
124        },
125        {
126            "name": "dump_shader_source",
127            "category": "Features",
128            "description": [
129                "Write shader source to temp directory"
130            ],
131            "issue": "http://anglebug.com/42266231"
132        },
133        {
134            "name": "enable_shader_substitution",
135            "category": "Workarounds",
136            "description": [
137                "Check the filesystem for shaders to use instead of those provided through glShaderSource"
138            ],
139            "issue": "http://anglebug.com/42266232"
140        },
141        {
142            "name": "disable_program_caching",
143            "category": "Features",
144            "description": [
145                "Disables saving programs to the cache"
146            ],
147            "issue": "http://anglebug.com/1423136"
148        },
149        {
150            "name": "dump_translated_shaders",
151            "category": "Features",
152            "description": [
153                "Write translated shaders to temp directory"
154            ],
155            "issue": "http://anglebug.com/40644912"
156        },
157        {
158            "name": "enable_translated_shader_substitution",
159            "category": "Workarounds",
160            "description": [
161                "Check the filesystem for translated shaders to use instead of the shader translator's"
162            ],
163            "issue": "http://anglebug.com/40644912"
164        },
165        {
166            "name": "compile_job_is_thread_safe",
167            "category": "Features",
168            "description": [
169                "If false, parts of the compile job cannot be parallelized"
170            ],
171            "issue": "http://anglebug.com/41488637"
172        },
173        {
174            "name": "link_job_is_thread_safe",
175            "category": "Features",
176            "description": [
177                "If false, parts of the link job cannot be parallelized"
178            ],
179            "issue": "http://anglebug.com/41488637"
180        },
181        {
182            "name": "always_run_link_sub_jobs_threaded",
183            "category": "Features",
184            "description": [
185                "If true, sub tasks of the link job are always threaded, regardless of GL_KHR_parallel_shader_compile"
186            ],
187            "issue": "http://anglebug.com/42266842"
188        },
189        {
190            "name": "uncurrent_egl_surface_upon_surface_destroy",
191            "category": "Workarounds",
192            "description": [
193                "Make egl surface uncurrent when calling eglDestroySurface(), if the surface is still bound by the context of current render thread"
194            ],
195            "issue": "https://issuetracker.google.com/292285899"
196        },
197        {
198            "name": "force_minimum_max_vertex_attributes",
199            "category": "Features",
200            "description": [
201                "Force the minimum GL_MAX_VERTEX_ATTRIBS that the context's client version allows."
202            ],
203            "issue": ""
204        },
205        {
206            "name": "force_flush_after_drawcall_using_shadowmap",
207            "category": "Workarounds",
208            "description": [
209                "Force flush after drawcall use shadow map for intel device."
210            ],
211            "issue": "https://issuetracker.google.com/349489248"
212        },
213        {
214            "name": "reject_webgl_shaders_with_undefined_behavior",
215            "category": "Workarounds",
216            "description": [
217                "Attempts to detect undefined behavior when in WebGL mode and reject shaders if any detected."
218            ],
219            "issue": "http://crbug.com/350528343"
220        },
221        {
222            "name": "always_enable_emulated_multidraw_extensions",
223            "category": "Workarounds",
224            "description": [
225                "Enable multi-draw and base vertex base instance extensions for non-WebGL contexts if they are emulated."
226            ],
227            "issue": "http://anglebug.com/355645824"
228        }
229    ]
230}
231