xref: /aosp_15_r20/external/mesa3d/src/mesa/main/consts_exts.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Mesa 3-D graphics library
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5*61046927SAndroid Build Coastguard Worker  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
6*61046927SAndroid Build Coastguard Worker  *
7*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
8*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
9*61046927SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
10*61046927SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
12*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
13*61046927SAndroid Build Coastguard Worker  *
14*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included
15*61046927SAndroid Build Coastguard Worker  * in all copies or substantial portions of the Software.
16*61046927SAndroid Build Coastguard Worker  *
17*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18*61046927SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20*61046927SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21*61046927SAndroid Build Coastguard Worker  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22*61046927SAndroid Build Coastguard Worker  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23*61046927SAndroid Build Coastguard Worker  * OTHER DEALINGS IN THE SOFTWARE.
24*61046927SAndroid Build Coastguard Worker  */
25*61046927SAndroid Build Coastguard Worker 
26*61046927SAndroid Build Coastguard Worker /**
27*61046927SAndroid Build Coastguard Worker  * \file consts_exts.h
28*61046927SAndroid Build Coastguard Worker  * Mesa Constants and GL Extensions data structures.
29*61046927SAndroid Build Coastguard Worker  */
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker #ifndef __CONSTS_EXTS_H__
32*61046927SAndroid Build Coastguard Worker #define __CONSTS_EXTS_H__
33*61046927SAndroid Build Coastguard Worker 
34*61046927SAndroid Build Coastguard Worker #include "util/glheader.h"
35*61046927SAndroid Build Coastguard Worker #include "compiler/shader_enums.h"
36*61046927SAndroid Build Coastguard Worker #include "compiler/shader_info.h"
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker struct nir_shader_compiler_options;
39*61046927SAndroid Build Coastguard Worker 
40*61046927SAndroid Build Coastguard Worker /**
41*61046927SAndroid Build Coastguard Worker  * Enable flag for each OpenGL extension.  Different device drivers will
42*61046927SAndroid Build Coastguard Worker  * enable different extensions at runtime.
43*61046927SAndroid Build Coastguard Worker  */
44*61046927SAndroid Build Coastguard Worker struct gl_extensions
45*61046927SAndroid Build Coastguard Worker {
46*61046927SAndroid Build Coastguard Worker    GLboolean dummy;  /* don't remove this! */
47*61046927SAndroid Build Coastguard Worker    GLboolean dummy_true;  /* Set true by _mesa_init_extensions(). */
48*61046927SAndroid Build Coastguard Worker    GLboolean ANGLE_texture_compression_dxt;
49*61046927SAndroid Build Coastguard Worker    GLboolean ARB_ES2_compatibility;
50*61046927SAndroid Build Coastguard Worker    GLboolean ARB_ES3_compatibility;
51*61046927SAndroid Build Coastguard Worker    GLboolean ARB_ES3_1_compatibility;
52*61046927SAndroid Build Coastguard Worker    GLboolean ARB_ES3_2_compatibility;
53*61046927SAndroid Build Coastguard Worker    GLboolean ARB_arrays_of_arrays;
54*61046927SAndroid Build Coastguard Worker    GLboolean ARB_base_instance;
55*61046927SAndroid Build Coastguard Worker    GLboolean ARB_bindless_texture;
56*61046927SAndroid Build Coastguard Worker    GLboolean ARB_blend_func_extended;
57*61046927SAndroid Build Coastguard Worker    GLboolean ARB_buffer_storage;
58*61046927SAndroid Build Coastguard Worker    GLboolean ARB_clip_control;
59*61046927SAndroid Build Coastguard Worker    GLboolean ARB_color_buffer_float;
60*61046927SAndroid Build Coastguard Worker    GLboolean ARB_compatibility;
61*61046927SAndroid Build Coastguard Worker    GLboolean ARB_compute_shader;
62*61046927SAndroid Build Coastguard Worker    GLboolean ARB_compute_variable_group_size;
63*61046927SAndroid Build Coastguard Worker    GLboolean ARB_conditional_render_inverted;
64*61046927SAndroid Build Coastguard Worker    GLboolean ARB_conservative_depth;
65*61046927SAndroid Build Coastguard Worker    GLboolean ARB_copy_image;
66*61046927SAndroid Build Coastguard Worker    GLboolean ARB_cull_distance;
67*61046927SAndroid Build Coastguard Worker    GLboolean ARB_depth_buffer_float;
68*61046927SAndroid Build Coastguard Worker    GLboolean ARB_depth_clamp;
69*61046927SAndroid Build Coastguard Worker    GLboolean ARB_derivative_control;
70*61046927SAndroid Build Coastguard Worker    GLboolean ARB_draw_buffers_blend;
71*61046927SAndroid Build Coastguard Worker    GLboolean ARB_draw_elements_base_vertex;
72*61046927SAndroid Build Coastguard Worker    GLboolean ARB_draw_indirect;
73*61046927SAndroid Build Coastguard Worker    GLboolean ARB_draw_instanced;
74*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_coord_conventions;
75*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_layer_viewport;
76*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_program;
77*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_program_shadow;
78*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_shader;
79*61046927SAndroid Build Coastguard Worker    GLboolean ARB_framebuffer_no_attachments;
80*61046927SAndroid Build Coastguard Worker    GLboolean ARB_framebuffer_object;
81*61046927SAndroid Build Coastguard Worker    GLboolean ARB_fragment_shader_interlock;
82*61046927SAndroid Build Coastguard Worker    GLboolean ARB_enhanced_layouts;
83*61046927SAndroid Build Coastguard Worker    GLboolean ARB_explicit_attrib_location;
84*61046927SAndroid Build Coastguard Worker    GLboolean ARB_explicit_uniform_location;
85*61046927SAndroid Build Coastguard Worker    GLboolean ARB_gl_spirv;
86*61046927SAndroid Build Coastguard Worker    GLboolean ARB_gpu_shader5;
87*61046927SAndroid Build Coastguard Worker    GLboolean ARB_gpu_shader_fp64;
88*61046927SAndroid Build Coastguard Worker    GLboolean ARB_gpu_shader_int64;
89*61046927SAndroid Build Coastguard Worker    GLboolean ARB_half_float_vertex;
90*61046927SAndroid Build Coastguard Worker    GLboolean ARB_indirect_parameters;
91*61046927SAndroid Build Coastguard Worker    GLboolean ARB_instanced_arrays;
92*61046927SAndroid Build Coastguard Worker    GLboolean ARB_internalformat_query;
93*61046927SAndroid Build Coastguard Worker    GLboolean ARB_internalformat_query2;
94*61046927SAndroid Build Coastguard Worker    GLboolean ARB_map_buffer_range;
95*61046927SAndroid Build Coastguard Worker    GLboolean ARB_occlusion_query;
96*61046927SAndroid Build Coastguard Worker    GLboolean ARB_occlusion_query2;
97*61046927SAndroid Build Coastguard Worker    GLboolean ARB_pipeline_statistics_query;
98*61046927SAndroid Build Coastguard Worker    GLboolean ARB_polygon_offset_clamp;
99*61046927SAndroid Build Coastguard Worker    GLboolean ARB_post_depth_coverage;
100*61046927SAndroid Build Coastguard Worker    GLboolean ARB_query_buffer_object;
101*61046927SAndroid Build Coastguard Worker    GLboolean ARB_robust_buffer_access_behavior;
102*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sample_locations;
103*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sample_shading;
104*61046927SAndroid Build Coastguard Worker    GLboolean ARB_seamless_cube_map;
105*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_atomic_counter_ops;
106*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_atomic_counters;
107*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_ballot;
108*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_bit_encoding;
109*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_clock;
110*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_draw_parameters;
111*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_group_vote;
112*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_image_load_store;
113*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_image_size;
114*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_precision;
115*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_stencil_export;
116*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_storage_buffer_object;
117*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_texture_image_samples;
118*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_texture_lod;
119*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shader_viewport_layer_array;
120*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shading_language_packing;
121*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shading_language_420pack;
122*61046927SAndroid Build Coastguard Worker    GLboolean ARB_shadow;
123*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sparse_buffer;
124*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sparse_texture;
125*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sparse_texture2;
126*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sparse_texture_clamp;
127*61046927SAndroid Build Coastguard Worker    GLboolean ARB_stencil_texturing;
128*61046927SAndroid Build Coastguard Worker    GLboolean ARB_spirv_extensions;
129*61046927SAndroid Build Coastguard Worker    GLboolean ARB_sync;
130*61046927SAndroid Build Coastguard Worker    GLboolean ARB_tessellation_shader;
131*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_buffer_object;
132*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_buffer_object_rgb32;
133*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_buffer_range;
134*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_compression_bptc;
135*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_compression_rgtc;
136*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_cube_map_array;
137*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_filter_anisotropic;
138*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_filter_minmax;
139*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_float;
140*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_gather;
141*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_mirror_clamp_to_edge;
142*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_multisample;
143*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_non_power_of_two;
144*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_stencil8;
145*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_query_levels;
146*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_query_lod;
147*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_rg;
148*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_rgb10_a2ui;
149*61046927SAndroid Build Coastguard Worker    GLboolean ARB_texture_view;
150*61046927SAndroid Build Coastguard Worker    GLboolean ARB_timer_query;
151*61046927SAndroid Build Coastguard Worker    GLboolean ARB_transform_feedback2;
152*61046927SAndroid Build Coastguard Worker    GLboolean ARB_transform_feedback3;
153*61046927SAndroid Build Coastguard Worker    GLboolean ARB_transform_feedback_instanced;
154*61046927SAndroid Build Coastguard Worker    GLboolean ARB_transform_feedback_overflow_query;
155*61046927SAndroid Build Coastguard Worker    GLboolean ARB_uniform_buffer_object;
156*61046927SAndroid Build Coastguard Worker    GLboolean ARB_vertex_attrib_64bit;
157*61046927SAndroid Build Coastguard Worker    GLboolean ARB_vertex_program;
158*61046927SAndroid Build Coastguard Worker    GLboolean ARB_vertex_shader;
159*61046927SAndroid Build Coastguard Worker    GLboolean ARB_vertex_type_10f_11f_11f_rev;
160*61046927SAndroid Build Coastguard Worker    GLboolean ARB_vertex_type_2_10_10_10_rev;
161*61046927SAndroid Build Coastguard Worker    GLboolean ARB_viewport_array;
162*61046927SAndroid Build Coastguard Worker    GLboolean EXT_blend_equation_separate;
163*61046927SAndroid Build Coastguard Worker    GLboolean EXT_color_buffer_float;
164*61046927SAndroid Build Coastguard Worker    GLboolean EXT_color_buffer_half_float;
165*61046927SAndroid Build Coastguard Worker    GLboolean EXT_demote_to_helper_invocation;
166*61046927SAndroid Build Coastguard Worker    GLboolean EXT_depth_bounds_test;
167*61046927SAndroid Build Coastguard Worker    GLboolean EXT_disjoint_timer_query;
168*61046927SAndroid Build Coastguard Worker    GLboolean EXT_draw_buffers2;
169*61046927SAndroid Build Coastguard Worker    GLboolean EXT_EGL_image_storage;
170*61046927SAndroid Build Coastguard Worker    GLboolean EXT_float_blend;
171*61046927SAndroid Build Coastguard Worker    GLboolean EXT_framebuffer_multisample;
172*61046927SAndroid Build Coastguard Worker    GLboolean EXT_framebuffer_multisample_blit_scaled;
173*61046927SAndroid Build Coastguard Worker    GLboolean EXT_framebuffer_sRGB;
174*61046927SAndroid Build Coastguard Worker    GLboolean EXT_gpu_program_parameters;
175*61046927SAndroid Build Coastguard Worker    GLboolean EXT_gpu_shader4;
176*61046927SAndroid Build Coastguard Worker    GLboolean EXT_memory_object;
177*61046927SAndroid Build Coastguard Worker    GLboolean EXT_memory_object_fd;
178*61046927SAndroid Build Coastguard Worker    GLboolean EXT_memory_object_win32;
179*61046927SAndroid Build Coastguard Worker    GLboolean EXT_multisampled_render_to_texture;
180*61046927SAndroid Build Coastguard Worker    GLboolean EXT_packed_float;
181*61046927SAndroid Build Coastguard Worker    GLboolean EXT_provoking_vertex;
182*61046927SAndroid Build Coastguard Worker    GLboolean EXT_render_snorm;
183*61046927SAndroid Build Coastguard Worker    GLboolean EXT_semaphore;
184*61046927SAndroid Build Coastguard Worker    GLboolean EXT_semaphore_fd;
185*61046927SAndroid Build Coastguard Worker    GLboolean EXT_semaphore_win32;
186*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_image_load_formatted;
187*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_image_load_store;
188*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_integer_mix;
189*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_samples_identical;
190*61046927SAndroid Build Coastguard Worker    GLboolean EXT_sRGB;
191*61046927SAndroid Build Coastguard Worker    GLboolean EXT_stencil_two_side;
192*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shadow_samplers;
193*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_array;
194*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_buffer_object;
195*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_compression_astc_decode_mode;
196*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_compression_latc;
197*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_compression_s3tc;
198*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_compression_s3tc_srgb;
199*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_env_dot3;
200*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_filter_anisotropic;
201*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_filter_minmax;
202*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_integer;
203*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_mirror_clamp;
204*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_norm16;
205*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_shadow_lod;
206*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_shared_exponent;
207*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_snorm;
208*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_sRGB;
209*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_sRGB_R8;
210*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_sRGB_RG8;
211*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_sRGB_decode;
212*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_swizzle;
213*61046927SAndroid Build Coastguard Worker    GLboolean EXT_texture_type_2_10_10_10_REV;
214*61046927SAndroid Build Coastguard Worker    GLboolean EXT_transform_feedback;
215*61046927SAndroid Build Coastguard Worker    GLboolean EXT_timer_query;
216*61046927SAndroid Build Coastguard Worker    GLboolean EXT_vertex_array_bgra;
217*61046927SAndroid Build Coastguard Worker    GLboolean EXT_window_rectangles;
218*61046927SAndroid Build Coastguard Worker    GLboolean OES_copy_image;
219*61046927SAndroid Build Coastguard Worker    GLboolean OES_primitive_bounding_box;
220*61046927SAndroid Build Coastguard Worker    GLboolean OES_sample_variables;
221*61046927SAndroid Build Coastguard Worker    GLboolean OES_standard_derivatives;
222*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_buffer;
223*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_cube_map_array;
224*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_view;
225*61046927SAndroid Build Coastguard Worker    GLboolean OES_viewport_array;
226*61046927SAndroid Build Coastguard Worker    GLboolean OVR_multiview;
227*61046927SAndroid Build Coastguard Worker    GLboolean OVR_multiview2;
228*61046927SAndroid Build Coastguard Worker    /* vendor extensions */
229*61046927SAndroid Build Coastguard Worker    GLboolean AMD_compressed_ATC_texture;
230*61046927SAndroid Build Coastguard Worker    GLboolean AMD_framebuffer_multisample_advanced;
231*61046927SAndroid Build Coastguard Worker    GLboolean AMD_depth_clamp_separate;
232*61046927SAndroid Build Coastguard Worker    GLboolean AMD_gpu_shader_half_float;
233*61046927SAndroid Build Coastguard Worker    GLboolean AMD_performance_monitor;
234*61046927SAndroid Build Coastguard Worker    GLboolean AMD_pinned_memory;
235*61046927SAndroid Build Coastguard Worker    GLboolean AMD_seamless_cubemap_per_texture;
236*61046927SAndroid Build Coastguard Worker    GLboolean AMD_vertex_shader_layer;
237*61046927SAndroid Build Coastguard Worker    GLboolean AMD_vertex_shader_viewport_index;
238*61046927SAndroid Build Coastguard Worker    GLboolean ANDROID_extension_pack_es31a;
239*61046927SAndroid Build Coastguard Worker    GLboolean ARM_shader_framebuffer_fetch_depth_stencil;
240*61046927SAndroid Build Coastguard Worker    GLboolean ATI_meminfo;
241*61046927SAndroid Build Coastguard Worker    GLboolean ATI_texture_compression_3dc;
242*61046927SAndroid Build Coastguard Worker    GLboolean ATI_texture_mirror_once;
243*61046927SAndroid Build Coastguard Worker    GLboolean ATI_texture_env_combine3;
244*61046927SAndroid Build Coastguard Worker    GLboolean ATI_fragment_shader;
245*61046927SAndroid Build Coastguard Worker    GLboolean GREMEDY_string_marker;
246*61046927SAndroid Build Coastguard Worker    GLboolean INTEL_blackhole_render;
247*61046927SAndroid Build Coastguard Worker    GLboolean INTEL_conservative_rasterization;
248*61046927SAndroid Build Coastguard Worker    GLboolean INTEL_performance_query;
249*61046927SAndroid Build Coastguard Worker    GLboolean INTEL_shader_atomic_float_minmax;
250*61046927SAndroid Build Coastguard Worker    GLboolean INTEL_shader_integer_functions2;
251*61046927SAndroid Build Coastguard Worker    GLboolean KHR_blend_equation_advanced;
252*61046927SAndroid Build Coastguard Worker    GLboolean KHR_blend_equation_advanced_coherent;
253*61046927SAndroid Build Coastguard Worker    GLboolean KHR_robustness;
254*61046927SAndroid Build Coastguard Worker    GLboolean KHR_shader_subgroup;
255*61046927SAndroid Build Coastguard Worker    GLboolean KHR_texture_compression_astc_hdr;
256*61046927SAndroid Build Coastguard Worker    GLboolean KHR_texture_compression_astc_ldr;
257*61046927SAndroid Build Coastguard Worker    GLboolean KHR_texture_compression_astc_sliced_3d;
258*61046927SAndroid Build Coastguard Worker    GLboolean MESA_framebuffer_flip_y;
259*61046927SAndroid Build Coastguard Worker    GLboolean MESA_texture_const_bandwidth;
260*61046927SAndroid Build Coastguard Worker    GLboolean MESA_pack_invert;
261*61046927SAndroid Build Coastguard Worker    GLboolean MESA_tile_raster_order;
262*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_framebuffer_fetch;
263*61046927SAndroid Build Coastguard Worker    GLboolean EXT_shader_framebuffer_fetch_non_coherent;
264*61046927SAndroid Build Coastguard Worker    GLboolean MESA_shader_integer_functions;
265*61046927SAndroid Build Coastguard Worker    GLboolean MESA_window_pos;
266*61046927SAndroid Build Coastguard Worker    GLboolean MESA_ycbcr_texture;
267*61046927SAndroid Build Coastguard Worker    GLboolean NV_alpha_to_coverage_dither_control;
268*61046927SAndroid Build Coastguard Worker    GLboolean NV_compute_shader_derivatives;
269*61046927SAndroid Build Coastguard Worker    GLboolean NV_conditional_render;
270*61046927SAndroid Build Coastguard Worker    GLboolean NV_copy_depth_to_color;
271*61046927SAndroid Build Coastguard Worker    GLboolean NV_copy_image;
272*61046927SAndroid Build Coastguard Worker    GLboolean NV_fill_rectangle;
273*61046927SAndroid Build Coastguard Worker    GLboolean NV_fog_distance;
274*61046927SAndroid Build Coastguard Worker    GLboolean NV_primitive_restart;
275*61046927SAndroid Build Coastguard Worker    GLboolean NV_shader_atomic_float;
276*61046927SAndroid Build Coastguard Worker    GLboolean NV_shader_atomic_int64;
277*61046927SAndroid Build Coastguard Worker    GLboolean NV_texture_barrier;
278*61046927SAndroid Build Coastguard Worker    GLboolean NV_texture_env_combine4;
279*61046927SAndroid Build Coastguard Worker    GLboolean NV_texture_rectangle;
280*61046927SAndroid Build Coastguard Worker    GLboolean NV_vdpau_interop;
281*61046927SAndroid Build Coastguard Worker    GLboolean NV_conservative_raster;
282*61046927SAndroid Build Coastguard Worker    GLboolean NV_conservative_raster_dilate;
283*61046927SAndroid Build Coastguard Worker    GLboolean NV_conservative_raster_pre_snap_triangles;
284*61046927SAndroid Build Coastguard Worker    GLboolean NV_conservative_raster_pre_snap;
285*61046927SAndroid Build Coastguard Worker    GLboolean NV_viewport_array2;
286*61046927SAndroid Build Coastguard Worker    GLboolean NV_viewport_swizzle;
287*61046927SAndroid Build Coastguard Worker    GLboolean NVX_gpu_memory_info;
288*61046927SAndroid Build Coastguard Worker    GLboolean TDFX_texture_compression_FXT1;
289*61046927SAndroid Build Coastguard Worker    GLboolean OES_EGL_image;
290*61046927SAndroid Build Coastguard Worker    GLboolean OES_draw_texture;
291*61046927SAndroid Build Coastguard Worker    GLboolean OES_depth_texture_cube_map;
292*61046927SAndroid Build Coastguard Worker    GLboolean OES_EGL_image_external;
293*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_3D;
294*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_float;
295*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_float_linear;
296*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_half_float;
297*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_half_float_linear;
298*61046927SAndroid Build Coastguard Worker    GLboolean OES_compressed_ETC1_RGB8_texture;
299*61046927SAndroid Build Coastguard Worker    GLboolean OES_geometry_shader;
300*61046927SAndroid Build Coastguard Worker    GLboolean OES_texture_compression_astc;
301*61046927SAndroid Build Coastguard Worker    GLboolean extension_sentinel;
302*61046927SAndroid Build Coastguard Worker    /** The extension string */
303*61046927SAndroid Build Coastguard Worker    const GLubyte *String;
304*61046927SAndroid Build Coastguard Worker    /** Number of supported extensions */
305*61046927SAndroid Build Coastguard Worker    GLuint Count;
306*61046927SAndroid Build Coastguard Worker    /**
307*61046927SAndroid Build Coastguard Worker     * The context version which extension helper functions compare against.
308*61046927SAndroid Build Coastguard Worker     * By default, the value is equal to ctx->Version. This changes to ~0
309*61046927SAndroid Build Coastguard Worker     * while meta is in progress.
310*61046927SAndroid Build Coastguard Worker     */
311*61046927SAndroid Build Coastguard Worker    GLubyte Version;
312*61046927SAndroid Build Coastguard Worker };
313*61046927SAndroid Build Coastguard Worker 
314*61046927SAndroid Build Coastguard Worker /**
315*61046927SAndroid Build Coastguard Worker  * Compiler options for a single GLSL shaders type
316*61046927SAndroid Build Coastguard Worker  */
317*61046927SAndroid Build Coastguard Worker struct gl_shader_compiler_options
318*61046927SAndroid Build Coastguard Worker {
319*61046927SAndroid Build Coastguard Worker    /** Driver-selectable options: */
320*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoCont;                  /**< Emit CONT opcode? */
321*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoMainReturn;            /**< Emit CONT/RET opcodes? */
322*61046927SAndroid Build Coastguard Worker    GLbitfield LowerBuiltinVariablesXfb;   /**< Which builtin variables should
323*61046927SAndroid Build Coastguard Worker                                            * be lowered for transform feedback
324*61046927SAndroid Build Coastguard Worker                                            **/
325*61046927SAndroid Build Coastguard Worker 
326*61046927SAndroid Build Coastguard Worker    /**
327*61046927SAndroid Build Coastguard Worker     * If we can lower the precision of variables based on precision
328*61046927SAndroid Build Coastguard Worker     * qualifiers
329*61046927SAndroid Build Coastguard Worker     */
330*61046927SAndroid Build Coastguard Worker    GLboolean LowerPrecisionFloat16;
331*61046927SAndroid Build Coastguard Worker    GLboolean LowerPrecisionInt16;
332*61046927SAndroid Build Coastguard Worker    GLboolean LowerPrecisionDerivatives;
333*61046927SAndroid Build Coastguard Worker    GLboolean LowerPrecisionFloat16Uniforms;
334*61046927SAndroid Build Coastguard Worker 
335*61046927SAndroid Build Coastguard Worker    /**
336*61046927SAndroid Build Coastguard Worker     * This enables lowering of 16b constants.  Some drivers may not
337*61046927SAndroid Build Coastguard Worker     * to lower constants to 16b (ie. if the hw can do automatic
338*61046927SAndroid Build Coastguard Worker     * narrowing on constant load)
339*61046927SAndroid Build Coastguard Worker     */
340*61046927SAndroid Build Coastguard Worker    GLboolean LowerPrecisionConstants;
341*61046927SAndroid Build Coastguard Worker 
342*61046927SAndroid Build Coastguard Worker    /**
343*61046927SAndroid Build Coastguard Worker     * \name Forms of indirect addressing the driver cannot do.
344*61046927SAndroid Build Coastguard Worker     */
345*61046927SAndroid Build Coastguard Worker    /*@{*/
346*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoIndirectInput;   /**< No indirect addressing of inputs */
347*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoIndirectOutput;  /**< No indirect addressing of outputs */
348*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoIndirectTemp;    /**< No indirect addressing of temps */
349*61046927SAndroid Build Coastguard Worker    GLboolean EmitNoIndirectUniform; /**< No indirect addressing of constants */
350*61046927SAndroid Build Coastguard Worker    /*@}*/
351*61046927SAndroid Build Coastguard Worker 
352*61046927SAndroid Build Coastguard Worker    GLuint MaxIfDepth;               /**< Maximum nested IF blocks */
353*61046927SAndroid Build Coastguard Worker 
354*61046927SAndroid Build Coastguard Worker    /**
355*61046927SAndroid Build Coastguard Worker     * Optimize code for array of structures backends.
356*61046927SAndroid Build Coastguard Worker     *
357*61046927SAndroid Build Coastguard Worker     * This is a proxy for:
358*61046927SAndroid Build Coastguard Worker     *   - preferring DP4 instructions (rather than MUL/MAD) for
359*61046927SAndroid Build Coastguard Worker     *     matrix * vector operations, such as position transformation.
360*61046927SAndroid Build Coastguard Worker     */
361*61046927SAndroid Build Coastguard Worker    GLboolean OptimizeForAOS;
362*61046927SAndroid Build Coastguard Worker 
363*61046927SAndroid Build Coastguard Worker    /** Clamp UBO and SSBO block indices so they don't go out-of-bounds. */
364*61046927SAndroid Build Coastguard Worker    GLboolean ClampBlockIndicesToArrayBounds;
365*61046927SAndroid Build Coastguard Worker 
366*61046927SAndroid Build Coastguard Worker    /** (driconf) Force gl_Position to be considered invariant */
367*61046927SAndroid Build Coastguard Worker    GLboolean PositionAlwaysInvariant;
368*61046927SAndroid Build Coastguard Worker 
369*61046927SAndroid Build Coastguard Worker    /** (driconf) Force gl_Position to be considered precise */
370*61046927SAndroid Build Coastguard Worker    GLboolean PositionAlwaysPrecise;
371*61046927SAndroid Build Coastguard Worker 
372*61046927SAndroid Build Coastguard Worker    const struct nir_shader_compiler_options *NirOptions;
373*61046927SAndroid Build Coastguard Worker };
374*61046927SAndroid Build Coastguard Worker 
375*61046927SAndroid Build Coastguard Worker /**
376*61046927SAndroid Build Coastguard Worker  * Precision info for shader datatypes.  See glGetShaderPrecisionFormat().
377*61046927SAndroid Build Coastguard Worker  */
378*61046927SAndroid Build Coastguard Worker struct gl_precision
379*61046927SAndroid Build Coastguard Worker {
380*61046927SAndroid Build Coastguard Worker    GLushort RangeMin;   /**< min value exponent */
381*61046927SAndroid Build Coastguard Worker    GLushort RangeMax;   /**< max value exponent */
382*61046927SAndroid Build Coastguard Worker    GLushort Precision;  /**< number of mantissa bits */
383*61046927SAndroid Build Coastguard Worker };
384*61046927SAndroid Build Coastguard Worker 
385*61046927SAndroid Build Coastguard Worker /**
386*61046927SAndroid Build Coastguard Worker  * Limits for vertex, geometry and fragment programs/shaders.
387*61046927SAndroid Build Coastguard Worker  */
388*61046927SAndroid Build Coastguard Worker struct gl_program_constants
389*61046927SAndroid Build Coastguard Worker {
390*61046927SAndroid Build Coastguard Worker    /* logical limits */
391*61046927SAndroid Build Coastguard Worker    GLuint MaxInstructions;
392*61046927SAndroid Build Coastguard Worker    GLuint MaxAluInstructions;
393*61046927SAndroid Build Coastguard Worker    GLuint MaxTexInstructions;
394*61046927SAndroid Build Coastguard Worker    GLuint MaxTexIndirections;
395*61046927SAndroid Build Coastguard Worker    GLuint MaxAttribs;
396*61046927SAndroid Build Coastguard Worker    GLuint MaxTemps;
397*61046927SAndroid Build Coastguard Worker    GLuint MaxAddressRegs;
398*61046927SAndroid Build Coastguard Worker    GLuint MaxAddressOffset;  /**< [-MaxAddressOffset, MaxAddressOffset-1] */
399*61046927SAndroid Build Coastguard Worker    GLuint MaxParameters;
400*61046927SAndroid Build Coastguard Worker    GLuint MaxLocalParams;
401*61046927SAndroid Build Coastguard Worker    GLuint MaxEnvParams;
402*61046927SAndroid Build Coastguard Worker    /* native/hardware limits */
403*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeInstructions;
404*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeAluInstructions;
405*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeTexInstructions;
406*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeTexIndirections;
407*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeAttribs;
408*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeTemps;
409*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeAddressRegs;
410*61046927SAndroid Build Coastguard Worker    GLuint MaxNativeParameters;
411*61046927SAndroid Build Coastguard Worker    /* For shaders */
412*61046927SAndroid Build Coastguard Worker    GLuint MaxUniformComponents;  /**< Usually == MaxParameters * 4 */
413*61046927SAndroid Build Coastguard Worker 
414*61046927SAndroid Build Coastguard Worker    /**
415*61046927SAndroid Build Coastguard Worker     * \name Per-stage input / output limits
416*61046927SAndroid Build Coastguard Worker     *
417*61046927SAndroid Build Coastguard Worker     * Previous to OpenGL 3.2, the intrastage data limits were advertised with
418*61046927SAndroid Build Coastguard Worker     * a single value: GL_MAX_VARYING_COMPONENTS (GL_MAX_VARYING_VECTORS in
419*61046927SAndroid Build Coastguard Worker     * ES).  This is stored as \c gl_constants::MaxVarying.
420*61046927SAndroid Build Coastguard Worker     *
421*61046927SAndroid Build Coastguard Worker     * Starting with OpenGL 3.2, the limits are advertised with per-stage
422*61046927SAndroid Build Coastguard Worker     * variables.  Each stage as a certain number of outputs that it can feed
423*61046927SAndroid Build Coastguard Worker     * to the next stage and a certain number inputs that it can consume from
424*61046927SAndroid Build Coastguard Worker     * the previous stage.
425*61046927SAndroid Build Coastguard Worker     *
426*61046927SAndroid Build Coastguard Worker     * Vertex shader inputs do not participate this in this accounting.
427*61046927SAndroid Build Coastguard Worker     * These are tracked exclusively by \c gl_program_constants::MaxAttribs.
428*61046927SAndroid Build Coastguard Worker     *
429*61046927SAndroid Build Coastguard Worker     * Fragment shader outputs do not participate this in this accounting.
430*61046927SAndroid Build Coastguard Worker     * These are tracked exclusively by \c gl_constants::MaxDrawBuffers.
431*61046927SAndroid Build Coastguard Worker     */
432*61046927SAndroid Build Coastguard Worker    /*@{*/
433*61046927SAndroid Build Coastguard Worker    GLuint MaxInputComponents;
434*61046927SAndroid Build Coastguard Worker    GLuint MaxOutputComponents;
435*61046927SAndroid Build Coastguard Worker    /*@}*/
436*61046927SAndroid Build Coastguard Worker 
437*61046927SAndroid Build Coastguard Worker    /* ES 2.0 and GL_ARB_ES2_compatibility */
438*61046927SAndroid Build Coastguard Worker    struct gl_precision LowFloat, MediumFloat, HighFloat;
439*61046927SAndroid Build Coastguard Worker    struct gl_precision LowInt, MediumInt, HighInt;
440*61046927SAndroid Build Coastguard Worker    /* GL_ARB_uniform_buffer_object */
441*61046927SAndroid Build Coastguard Worker    GLuint MaxUniformBlocks;
442*61046927SAndroid Build Coastguard Worker    uint64_t MaxCombinedUniformComponents;
443*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureImageUnits;
444*61046927SAndroid Build Coastguard Worker 
445*61046927SAndroid Build Coastguard Worker    /* GL_ARB_shader_atomic_counters */
446*61046927SAndroid Build Coastguard Worker    GLuint MaxAtomicBuffers;
447*61046927SAndroid Build Coastguard Worker    GLuint MaxAtomicCounters;
448*61046927SAndroid Build Coastguard Worker 
449*61046927SAndroid Build Coastguard Worker    /* GL_ARB_shader_image_load_store */
450*61046927SAndroid Build Coastguard Worker    GLuint MaxImageUniforms;
451*61046927SAndroid Build Coastguard Worker 
452*61046927SAndroid Build Coastguard Worker    /* GL_ARB_shader_storage_buffer_object */
453*61046927SAndroid Build Coastguard Worker    GLuint MaxShaderStorageBlocks;
454*61046927SAndroid Build Coastguard Worker };
455*61046927SAndroid Build Coastguard Worker 
456*61046927SAndroid Build Coastguard Worker /**
457*61046927SAndroid Build Coastguard Worker  * Constants which may be overridden by device driver during context creation
458*61046927SAndroid Build Coastguard Worker  * but are never changed after that.
459*61046927SAndroid Build Coastguard Worker  */
460*61046927SAndroid Build Coastguard Worker struct gl_constants
461*61046927SAndroid Build Coastguard Worker {
462*61046927SAndroid Build Coastguard Worker    /**
463*61046927SAndroid Build Coastguard Worker     * Bitmask of valid primitive types supported by the driver,
464*61046927SAndroid Build Coastguard Worker     */
465*61046927SAndroid Build Coastguard Worker    GLbitfield DriverSupportedPrimMask;
466*61046927SAndroid Build Coastguard Worker 
467*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureMbytes;      /**< Max memory per image, in MB */
468*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureSize;        /**< Max 1D/2D texture size, in pixels*/
469*61046927SAndroid Build Coastguard Worker    GLuint Max3DTextureLevels;    /**< Max mipmap levels for 3D textures */
470*61046927SAndroid Build Coastguard Worker    GLuint MaxCubeTextureLevels;  /**< Max mipmap levels for cube textures */
471*61046927SAndroid Build Coastguard Worker    GLuint MaxArrayTextureLayers; /**< Max layers in array textures */
472*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureRectSize;    /**< Max rectangle texture size, in pixes */
473*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureCoordUnits;
474*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedTextureImageUnits;
475*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureUnits; /**< = MIN(CoordUnits, FragmentProgram.ImageUnits) */
476*61046927SAndroid Build Coastguard Worker    GLfloat MaxTextureMaxAnisotropy;  /**< GL_EXT_texture_filter_anisotropic */
477*61046927SAndroid Build Coastguard Worker    GLfloat MaxTextureLodBias;        /**< GL_EXT_texture_lod_bias */
478*61046927SAndroid Build Coastguard Worker    GLuint MaxTextureBufferSize;      /**< GL_ARB_texture_buffer_object */
479*61046927SAndroid Build Coastguard Worker 
480*61046927SAndroid Build Coastguard Worker    GLuint TextureBufferOffsetAlignment; /**< GL_ARB_texture_buffer_range */
481*61046927SAndroid Build Coastguard Worker 
482*61046927SAndroid Build Coastguard Worker    GLuint MaxArrayLockSize;
483*61046927SAndroid Build Coastguard Worker 
484*61046927SAndroid Build Coastguard Worker    GLint SubPixelBits;
485*61046927SAndroid Build Coastguard Worker 
486*61046927SAndroid Build Coastguard Worker    GLfloat MinPointSize, MaxPointSize;	     /**< aliased */
487*61046927SAndroid Build Coastguard Worker    GLfloat MinPointSizeAA, MaxPointSizeAA;   /**< antialiased */
488*61046927SAndroid Build Coastguard Worker    GLfloat PointSizeGranularity;
489*61046927SAndroid Build Coastguard Worker    GLfloat MinLineWidth, MaxLineWidth;       /**< aliased */
490*61046927SAndroid Build Coastguard Worker    GLfloat MinLineWidthAA, MaxLineWidthAA;   /**< antialiased */
491*61046927SAndroid Build Coastguard Worker    GLfloat LineWidthGranularity;
492*61046927SAndroid Build Coastguard Worker 
493*61046927SAndroid Build Coastguard Worker    GLuint MaxClipPlanes;
494*61046927SAndroid Build Coastguard Worker    GLuint MaxLights;
495*61046927SAndroid Build Coastguard Worker    GLfloat MaxShininess;                     /**< GL_NV_light_max_exponent */
496*61046927SAndroid Build Coastguard Worker    GLfloat MaxSpotExponent;                  /**< GL_NV_light_max_exponent */
497*61046927SAndroid Build Coastguard Worker 
498*61046927SAndroid Build Coastguard Worker    GLuint MaxViewportWidth, MaxViewportHeight;
499*61046927SAndroid Build Coastguard Worker    GLuint MaxViewports;                      /**< GL_ARB_viewport_array */
500*61046927SAndroid Build Coastguard Worker    GLuint ViewportSubpixelBits;              /**< GL_ARB_viewport_array */
501*61046927SAndroid Build Coastguard Worker    struct {
502*61046927SAndroid Build Coastguard Worker       GLfloat Min;
503*61046927SAndroid Build Coastguard Worker       GLfloat Max;
504*61046927SAndroid Build Coastguard Worker    } ViewportBounds;                         /**< GL_ARB_viewport_array */
505*61046927SAndroid Build Coastguard Worker    GLuint MaxWindowRectangles;               /**< GL_EXT_window_rectangles */
506*61046927SAndroid Build Coastguard Worker 
507*61046927SAndroid Build Coastguard Worker    struct gl_program_constants Program[MESA_SHADER_STAGES];
508*61046927SAndroid Build Coastguard Worker    GLuint MaxProgramMatrices;
509*61046927SAndroid Build Coastguard Worker    GLuint MaxProgramMatrixStackDepth;
510*61046927SAndroid Build Coastguard Worker 
511*61046927SAndroid Build Coastguard Worker    struct {
512*61046927SAndroid Build Coastguard Worker       GLuint SamplesPassed;
513*61046927SAndroid Build Coastguard Worker       GLuint TimeElapsed;
514*61046927SAndroid Build Coastguard Worker       GLuint Timestamp;
515*61046927SAndroid Build Coastguard Worker       GLuint PrimitivesGenerated;
516*61046927SAndroid Build Coastguard Worker       GLuint PrimitivesWritten;
517*61046927SAndroid Build Coastguard Worker       GLuint VerticesSubmitted;
518*61046927SAndroid Build Coastguard Worker       GLuint PrimitivesSubmitted;
519*61046927SAndroid Build Coastguard Worker       GLuint VsInvocations;
520*61046927SAndroid Build Coastguard Worker       GLuint TessPatches;
521*61046927SAndroid Build Coastguard Worker       GLuint TessInvocations;
522*61046927SAndroid Build Coastguard Worker       GLuint GsInvocations;
523*61046927SAndroid Build Coastguard Worker       GLuint GsPrimitives;
524*61046927SAndroid Build Coastguard Worker       GLuint FsInvocations;
525*61046927SAndroid Build Coastguard Worker       GLuint ComputeInvocations;
526*61046927SAndroid Build Coastguard Worker       GLuint ClInPrimitives;
527*61046927SAndroid Build Coastguard Worker       GLuint ClOutPrimitives;
528*61046927SAndroid Build Coastguard Worker    } QueryCounterBits;
529*61046927SAndroid Build Coastguard Worker 
530*61046927SAndroid Build Coastguard Worker    GLuint MaxDrawBuffers;    /**< GL_ARB_draw_buffers */
531*61046927SAndroid Build Coastguard Worker 
532*61046927SAndroid Build Coastguard Worker    GLuint MaxColorAttachments;   /**< GL_EXT_framebuffer_object */
533*61046927SAndroid Build Coastguard Worker    GLuint MaxRenderbufferSize;   /**< GL_EXT_framebuffer_object */
534*61046927SAndroid Build Coastguard Worker    GLuint MaxSamples;            /**< GL_ARB_framebuffer_object */
535*61046927SAndroid Build Coastguard Worker 
536*61046927SAndroid Build Coastguard Worker    /**
537*61046927SAndroid Build Coastguard Worker     * GL_ARB_framebuffer_no_attachments
538*61046927SAndroid Build Coastguard Worker     */
539*61046927SAndroid Build Coastguard Worker    GLuint MaxFramebufferWidth;
540*61046927SAndroid Build Coastguard Worker    GLuint MaxFramebufferHeight;
541*61046927SAndroid Build Coastguard Worker    GLuint MaxFramebufferLayers;
542*61046927SAndroid Build Coastguard Worker    GLuint MaxFramebufferSamples;
543*61046927SAndroid Build Coastguard Worker 
544*61046927SAndroid Build Coastguard Worker    /** Number of varying vectors between any two shader stages. */
545*61046927SAndroid Build Coastguard Worker    GLuint MaxVarying;
546*61046927SAndroid Build Coastguard Worker 
547*61046927SAndroid Build Coastguard Worker    /** @{
548*61046927SAndroid Build Coastguard Worker     * GL_ARB_uniform_buffer_object
549*61046927SAndroid Build Coastguard Worker     */
550*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedUniformBlocks;
551*61046927SAndroid Build Coastguard Worker    GLuint MaxUniformBufferBindings;
552*61046927SAndroid Build Coastguard Worker    GLuint MaxUniformBlockSize;
553*61046927SAndroid Build Coastguard Worker    GLuint UniformBufferOffsetAlignment;
554*61046927SAndroid Build Coastguard Worker    /** @} */
555*61046927SAndroid Build Coastguard Worker 
556*61046927SAndroid Build Coastguard Worker    /** @{
557*61046927SAndroid Build Coastguard Worker     * GL_ARB_shader_storage_buffer_object
558*61046927SAndroid Build Coastguard Worker     */
559*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedShaderStorageBlocks;
560*61046927SAndroid Build Coastguard Worker    GLuint MaxShaderStorageBufferBindings;
561*61046927SAndroid Build Coastguard Worker    GLuint MaxShaderStorageBlockSize;
562*61046927SAndroid Build Coastguard Worker    GLuint ShaderStorageBufferOffsetAlignment;
563*61046927SAndroid Build Coastguard Worker    /** @} */
564*61046927SAndroid Build Coastguard Worker 
565*61046927SAndroid Build Coastguard Worker    /**
566*61046927SAndroid Build Coastguard Worker     * GL_ARB_explicit_uniform_location
567*61046927SAndroid Build Coastguard Worker     */
568*61046927SAndroid Build Coastguard Worker    GLuint MaxUserAssignableUniformLocations;
569*61046927SAndroid Build Coastguard Worker 
570*61046927SAndroid Build Coastguard Worker    /** geometry shader */
571*61046927SAndroid Build Coastguard Worker    GLuint MaxGeometryOutputVertices;
572*61046927SAndroid Build Coastguard Worker    GLuint MaxGeometryTotalOutputComponents;
573*61046927SAndroid Build Coastguard Worker    GLuint MaxGeometryShaderInvocations;
574*61046927SAndroid Build Coastguard Worker 
575*61046927SAndroid Build Coastguard Worker    GLuint GLSLVersion;  /**< Desktop GLSL version supported (ex: 120 = 1.20) */
576*61046927SAndroid Build Coastguard Worker    GLuint GLSLVersionCompat;  /**< Desktop compat GLSL version supported  */
577*61046927SAndroid Build Coastguard Worker 
578*61046927SAndroid Build Coastguard Worker    /**
579*61046927SAndroid Build Coastguard Worker     * Changes default GLSL extension behavior from "error" to "warn".  It's out
580*61046927SAndroid Build Coastguard Worker     * of spec, but it can make some apps work that otherwise wouldn't.
581*61046927SAndroid Build Coastguard Worker     */
582*61046927SAndroid Build Coastguard Worker    GLboolean ForceGLSLExtensionsWarn;
583*61046927SAndroid Build Coastguard Worker 
584*61046927SAndroid Build Coastguard Worker    /**
585*61046927SAndroid Build Coastguard Worker     * Force all shaders to behave as if they were declared with the
586*61046927SAndroid Build Coastguard Worker     * compatibility token.
587*61046927SAndroid Build Coastguard Worker     */
588*61046927SAndroid Build Coastguard Worker    GLboolean ForceCompatShaders;
589*61046927SAndroid Build Coastguard Worker 
590*61046927SAndroid Build Coastguard Worker    /**
591*61046927SAndroid Build Coastguard Worker     * If non-zero, forces GLSL shaders to behave as if they began
592*61046927SAndroid Build Coastguard Worker     * with "#version ForceGLSLVersion".
593*61046927SAndroid Build Coastguard Worker     */
594*61046927SAndroid Build Coastguard Worker    GLuint ForceGLSLVersion;
595*61046927SAndroid Build Coastguard Worker 
596*61046927SAndroid Build Coastguard Worker    /**
597*61046927SAndroid Build Coastguard Worker     * Allow GLSL #extension directives in the middle of shaders.
598*61046927SAndroid Build Coastguard Worker     */
599*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLExtensionDirectiveMidShader;
600*61046927SAndroid Build Coastguard Worker 
601*61046927SAndroid Build Coastguard Worker    /**
602*61046927SAndroid Build Coastguard Worker     * Allow a subset of GLSL 1.20 in GLSL 1.10 as needed by SPECviewperf13.
603*61046927SAndroid Build Coastguard Worker     */
604*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSL120SubsetIn110;
605*61046927SAndroid Build Coastguard Worker 
606*61046927SAndroid Build Coastguard Worker    /**
607*61046927SAndroid Build Coastguard Worker     * Allow builtins as part of constant expressions. This was not allowed
608*61046927SAndroid Build Coastguard Worker     * until GLSL 1.20 this allows it everywhere.
609*61046927SAndroid Build Coastguard Worker     */
610*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLBuiltinConstantExpression;
611*61046927SAndroid Build Coastguard Worker 
612*61046927SAndroid Build Coastguard Worker    /**
613*61046927SAndroid Build Coastguard Worker     * Allow some relaxation of GLSL ES shader restrictions. This encompasses
614*61046927SAndroid Build Coastguard Worker     * a number of relaxations to the ES shader rules.
615*61046927SAndroid Build Coastguard Worker     */
616*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLRelaxedES;
617*61046927SAndroid Build Coastguard Worker 
618*61046927SAndroid Build Coastguard Worker    /**
619*61046927SAndroid Build Coastguard Worker     * Allow GLSL built-in variables to be redeclared verbatim
620*61046927SAndroid Build Coastguard Worker     */
621*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLBuiltinVariableRedeclaration;
622*61046927SAndroid Build Coastguard Worker 
623*61046927SAndroid Build Coastguard Worker    /**
624*61046927SAndroid Build Coastguard Worker     * Allow GLSL interpolation qualifier mismatch across shader stages.
625*61046927SAndroid Build Coastguard Worker     */
626*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLCrossStageInterpolationMismatch;
627*61046927SAndroid Build Coastguard Worker 
628*61046927SAndroid Build Coastguard Worker    /**
629*61046927SAndroid Build Coastguard Worker     * Allow creating a higher compat profile (version 3.1+) for apps that
630*61046927SAndroid Build Coastguard Worker     * request it. Be careful when adding that driconf option because some
631*61046927SAndroid Build Coastguard Worker     * features are unimplemented and might not work correctly.
632*61046927SAndroid Build Coastguard Worker     */
633*61046927SAndroid Build Coastguard Worker    GLboolean AllowHigherCompatVersion;
634*61046927SAndroid Build Coastguard Worker 
635*61046927SAndroid Build Coastguard Worker    /**
636*61046927SAndroid Build Coastguard Worker     * Allow GLSL shaders with the compatibility version directive
637*61046927SAndroid Build Coastguard Worker     * in non-compatibility profiles. (for shader-db)
638*61046927SAndroid Build Coastguard Worker     */
639*61046927SAndroid Build Coastguard Worker    GLboolean AllowGLSLCompatShaders;
640*61046927SAndroid Build Coastguard Worker 
641*61046927SAndroid Build Coastguard Worker    /**
642*61046927SAndroid Build Coastguard Worker     * Allow extra tokens at end of preprocessor directives. The CTS now tests
643*61046927SAndroid Build Coastguard Worker     * to make sure these are not allowed. However, previously drivers would
644*61046927SAndroid Build Coastguard Worker     * allow them to exist and just issue a warning so some old applications
645*61046927SAndroid Build Coastguard Worker     * depend on this.
646*61046927SAndroid Build Coastguard Worker     */
647*61046927SAndroid Build Coastguard Worker    GLboolean AllowExtraPPTokens;
648*61046927SAndroid Build Coastguard Worker 
649*61046927SAndroid Build Coastguard Worker    /**
650*61046927SAndroid Build Coastguard Worker     * The spec forbids a shader to "statically write both gl_ClipVertex
651*61046927SAndroid Build Coastguard Worker     * and gl_ClipDistance".
652*61046927SAndroid Build Coastguard Worker     * This option adds a tolerance for shader that statically writes to
653*61046927SAndroid Build Coastguard Worker     * both but at least one of the write can be removed by a dead code
654*61046927SAndroid Build Coastguard Worker     * elimination pass.
655*61046927SAndroid Build Coastguard Worker     */
656*61046927SAndroid Build Coastguard Worker    GLboolean DoDCEBeforeClipCullAnalysis;
657*61046927SAndroid Build Coastguard Worker 
658*61046927SAndroid Build Coastguard Worker    /**
659*61046927SAndroid Build Coastguard Worker     * Force computing the absolute value for sqrt() and inversesqrt() to follow
660*61046927SAndroid Build Coastguard Worker     * D3D9 when apps rely on this behaviour.
661*61046927SAndroid Build Coastguard Worker     */
662*61046927SAndroid Build Coastguard Worker    GLboolean ForceGLSLAbsSqrt;
663*61046927SAndroid Build Coastguard Worker 
664*61046927SAndroid Build Coastguard Worker    /**
665*61046927SAndroid Build Coastguard Worker     * Forces the GLSL compiler to ignore writes to readonly vars rather than
666*61046927SAndroid Build Coastguard Worker     * throwing an error.
667*61046927SAndroid Build Coastguard Worker     */
668*61046927SAndroid Build Coastguard Worker    GLboolean GLSLIgnoreWriteToReadonlyVar;
669*61046927SAndroid Build Coastguard Worker 
670*61046927SAndroid Build Coastguard Worker    /**
671*61046927SAndroid Build Coastguard Worker     * Types of variable to default initialized to zero. Supported values are:
672*61046927SAndroid Build Coastguard Worker     *   - 0: no zero initialization
673*61046927SAndroid Build Coastguard Worker     *   - 1: all shader variables and gl_FragColor are initialiazed to 0
674*61046927SAndroid Build Coastguard Worker     *   - 2: same as 1, but shader out variables are *not* initialized, while
675*61046927SAndroid Build Coastguard Worker     *        function out variables are now initialized.
676*61046927SAndroid Build Coastguard Worker     */
677*61046927SAndroid Build Coastguard Worker    GLchar GLSLZeroInit;
678*61046927SAndroid Build Coastguard Worker 
679*61046927SAndroid Build Coastguard Worker    /**
680*61046927SAndroid Build Coastguard Worker     * Force GL names reuse. Needed by SPECviewperf13.
681*61046927SAndroid Build Coastguard Worker     */
682*61046927SAndroid Build Coastguard Worker    GLboolean ForceGLNamesReuse;
683*61046927SAndroid Build Coastguard Worker 
684*61046927SAndroid Build Coastguard Worker    /**
685*61046927SAndroid Build Coastguard Worker     * Treat integer textures using GL_LINEAR filters as GL_NEAREST.
686*61046927SAndroid Build Coastguard Worker     */
687*61046927SAndroid Build Coastguard Worker    GLboolean ForceIntegerTexNearest;
688*61046927SAndroid Build Coastguard Worker 
689*61046927SAndroid Build Coastguard Worker    /**
690*61046927SAndroid Build Coastguard Worker     * Treat 32-bit floating-point textures using GL_LINEAR filters as
691*61046927SAndroid Build Coastguard Worker     * GL_NEAREST.
692*61046927SAndroid Build Coastguard Worker     */
693*61046927SAndroid Build Coastguard Worker    GLboolean ForceFloat32TexNearest;
694*61046927SAndroid Build Coastguard Worker 
695*61046927SAndroid Build Coastguard Worker    /**
696*61046927SAndroid Build Coastguard Worker     * Does the driver support real 32-bit integers?  (Otherwise, integers are
697*61046927SAndroid Build Coastguard Worker     * simulated via floats.)
698*61046927SAndroid Build Coastguard Worker     */
699*61046927SAndroid Build Coastguard Worker    GLboolean NativeIntegers;
700*61046927SAndroid Build Coastguard Worker 
701*61046927SAndroid Build Coastguard Worker    /**
702*61046927SAndroid Build Coastguard Worker     * If the driver supports real 32-bit integers, what integer value should be
703*61046927SAndroid Build Coastguard Worker     * used for boolean true in uniform uploads?  (Usually 1 or ~0.)
704*61046927SAndroid Build Coastguard Worker     */
705*61046927SAndroid Build Coastguard Worker    GLuint UniformBooleanTrue;
706*61046927SAndroid Build Coastguard Worker 
707*61046927SAndroid Build Coastguard Worker    /**
708*61046927SAndroid Build Coastguard Worker     * Maximum amount of time, measured in nanseconds, that the server can wait.
709*61046927SAndroid Build Coastguard Worker     */
710*61046927SAndroid Build Coastguard Worker    GLuint64 MaxServerWaitTimeout;
711*61046927SAndroid Build Coastguard Worker 
712*61046927SAndroid Build Coastguard Worker    /** GL_EXT_provoking_vertex */
713*61046927SAndroid Build Coastguard Worker    GLboolean QuadsFollowProvokingVertexConvention;
714*61046927SAndroid Build Coastguard Worker 
715*61046927SAndroid Build Coastguard Worker    /** GL_ARB_viewport_array */
716*61046927SAndroid Build Coastguard Worker    GLenum16 LayerAndVPIndexProvokingVertex;
717*61046927SAndroid Build Coastguard Worker 
718*61046927SAndroid Build Coastguard Worker    /** OpenGL version 3.0 */
719*61046927SAndroid Build Coastguard Worker    GLbitfield ContextFlags;  /**< Ex: GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */
720*61046927SAndroid Build Coastguard Worker 
721*61046927SAndroid Build Coastguard Worker    /** OpenGL version 3.2 */
722*61046927SAndroid Build Coastguard Worker    GLbitfield ProfileMask;   /**< Mask of CONTEXT_x_PROFILE_BIT */
723*61046927SAndroid Build Coastguard Worker 
724*61046927SAndroid Build Coastguard Worker    /** OpenGL version 4.4 */
725*61046927SAndroid Build Coastguard Worker    GLuint MaxVertexAttribStride;
726*61046927SAndroid Build Coastguard Worker 
727*61046927SAndroid Build Coastguard Worker    /** GL_EXT_transform_feedback */
728*61046927SAndroid Build Coastguard Worker    GLuint MaxTransformFeedbackBuffers;
729*61046927SAndroid Build Coastguard Worker    GLuint MaxTransformFeedbackSeparateComponents;
730*61046927SAndroid Build Coastguard Worker    GLuint MaxTransformFeedbackInterleavedComponents;
731*61046927SAndroid Build Coastguard Worker    GLuint MaxVertexStreams;
732*61046927SAndroid Build Coastguard Worker 
733*61046927SAndroid Build Coastguard Worker    /** GL_EXT_gpu_shader4 */
734*61046927SAndroid Build Coastguard Worker    GLint MinProgramTexelOffset, MaxProgramTexelOffset;
735*61046927SAndroid Build Coastguard Worker 
736*61046927SAndroid Build Coastguard Worker    /** GL_ARB_texture_gather */
737*61046927SAndroid Build Coastguard Worker    GLuint MinProgramTextureGatherOffset;
738*61046927SAndroid Build Coastguard Worker    GLuint MaxProgramTextureGatherOffset;
739*61046927SAndroid Build Coastguard Worker    GLuint MaxProgramTextureGatherComponents;
740*61046927SAndroid Build Coastguard Worker 
741*61046927SAndroid Build Coastguard Worker    /* GL_ARB_robustness */
742*61046927SAndroid Build Coastguard Worker    GLenum16 ResetStrategy;
743*61046927SAndroid Build Coastguard Worker 
744*61046927SAndroid Build Coastguard Worker    /* GL_KHR_robustness */
745*61046927SAndroid Build Coastguard Worker    GLboolean RobustAccess;
746*61046927SAndroid Build Coastguard Worker 
747*61046927SAndroid Build Coastguard Worker    /* GL_ARB_blend_func_extended */
748*61046927SAndroid Build Coastguard Worker    GLuint MaxDualSourceDrawBuffers;
749*61046927SAndroid Build Coastguard Worker 
750*61046927SAndroid Build Coastguard Worker    /**
751*61046927SAndroid Build Coastguard Worker     * For drivers which can do a better job at eliminating unused uniforms
752*61046927SAndroid Build Coastguard Worker     * than the GLSL compiler.
753*61046927SAndroid Build Coastguard Worker     *
754*61046927SAndroid Build Coastguard Worker     * XXX Remove these as soon as a better solution is available.
755*61046927SAndroid Build Coastguard Worker     */
756*61046927SAndroid Build Coastguard Worker    GLboolean GLSLSkipStrictMaxUniformLimitCheck;
757*61046927SAndroid Build Coastguard Worker 
758*61046927SAndroid Build Coastguard Worker    GLboolean GLSLHasHalfFloatPacking;
759*61046927SAndroid Build Coastguard Worker 
760*61046927SAndroid Build Coastguard Worker    /**
761*61046927SAndroid Build Coastguard Worker     * Whether gl_FragCoord, gl_PointCoord and gl_FrontFacing
762*61046927SAndroid Build Coastguard Worker     * are system values.
763*61046927SAndroid Build Coastguard Worker     **/
764*61046927SAndroid Build Coastguard Worker    bool GLSLFragCoordIsSysVal;
765*61046927SAndroid Build Coastguard Worker    bool GLSLPointCoordIsSysVal;
766*61046927SAndroid Build Coastguard Worker    bool GLSLFrontFacingIsSysVal;
767*61046927SAndroid Build Coastguard Worker 
768*61046927SAndroid Build Coastguard Worker    /**
769*61046927SAndroid Build Coastguard Worker     * Whether to call lower_const_arrays_to_uniforms() during linking.
770*61046927SAndroid Build Coastguard Worker     */
771*61046927SAndroid Build Coastguard Worker    bool GLSLLowerConstArrays;
772*61046927SAndroid Build Coastguard Worker 
773*61046927SAndroid Build Coastguard Worker    /**
774*61046927SAndroid Build Coastguard Worker     * True if gl_TessLevelInner/Outer[] in the TES should be inputs
775*61046927SAndroid Build Coastguard Worker     * (otherwise, they're system values).
776*61046927SAndroid Build Coastguard Worker     */
777*61046927SAndroid Build Coastguard Worker    bool GLSLTessLevelsAsInputs;
778*61046927SAndroid Build Coastguard Worker 
779*61046927SAndroid Build Coastguard Worker    /** GL_ARB_map_buffer_alignment */
780*61046927SAndroid Build Coastguard Worker    GLuint MinMapBufferAlignment;
781*61046927SAndroid Build Coastguard Worker 
782*61046927SAndroid Build Coastguard Worker    /**
783*61046927SAndroid Build Coastguard Worker     * Disable varying packing.  This is out of spec, but potentially useful
784*61046927SAndroid Build Coastguard Worker     * for older platforms that supports a limited number of texture
785*61046927SAndroid Build Coastguard Worker     * indirections--on these platforms, unpacking the varyings in the fragment
786*61046927SAndroid Build Coastguard Worker     * shader increases the number of texture indirections by 1, which might
787*61046927SAndroid Build Coastguard Worker     * make some shaders not executable at all.
788*61046927SAndroid Build Coastguard Worker     *
789*61046927SAndroid Build Coastguard Worker     * Drivers that support transform feedback must set this value to GL_FALSE.
790*61046927SAndroid Build Coastguard Worker     */
791*61046927SAndroid Build Coastguard Worker    GLboolean DisableVaryingPacking;
792*61046927SAndroid Build Coastguard Worker 
793*61046927SAndroid Build Coastguard Worker    /**
794*61046927SAndroid Build Coastguard Worker     * Disable varying packing if used for transform feedback.  This is needed
795*61046927SAndroid Build Coastguard Worker     * for some drivers (e.g. Panfrost) where transform feedback requires
796*61046927SAndroid Build Coastguard Worker     * unpacked varyings.
797*61046927SAndroid Build Coastguard Worker     *
798*61046927SAndroid Build Coastguard Worker     * This variable is mutually exlusive with DisableVaryingPacking.
799*61046927SAndroid Build Coastguard Worker     */
800*61046927SAndroid Build Coastguard Worker    GLboolean DisableTransformFeedbackPacking;
801*61046927SAndroid Build Coastguard Worker 
802*61046927SAndroid Build Coastguard Worker    /**
803*61046927SAndroid Build Coastguard Worker     * Disable the glsl optimisation that resizes uniform arrays.
804*61046927SAndroid Build Coastguard Worker     */
805*61046927SAndroid Build Coastguard Worker    bool DisableUniformArrayResize;
806*61046927SAndroid Build Coastguard Worker 
807*61046927SAndroid Build Coastguard Worker    /**
808*61046927SAndroid Build Coastguard Worker     * Alias extension e.g. GL_ATI_shader_texture_lod to GL_ARB_shader_texture_lod.
809*61046927SAndroid Build Coastguard Worker     */
810*61046927SAndroid Build Coastguard Worker    char *AliasShaderExtension;
811*61046927SAndroid Build Coastguard Worker 
812*61046927SAndroid Build Coastguard Worker    /**
813*61046927SAndroid Build Coastguard Worker     * Allow fs-only bias argument in vertex shaders.
814*61046927SAndroid Build Coastguard Worker     */
815*61046927SAndroid Build Coastguard Worker    GLboolean AllowVertexTextureBias;
816*61046927SAndroid Build Coastguard Worker 
817*61046927SAndroid Build Coastguard Worker    /**
818*61046927SAndroid Build Coastguard Worker     * Align varyings to POT in a slot
819*61046927SAndroid Build Coastguard Worker     *
820*61046927SAndroid Build Coastguard Worker     * Drivers that prefer varyings to be aligned to POT must set this value to GL_TRUE
821*61046927SAndroid Build Coastguard Worker     */
822*61046927SAndroid Build Coastguard Worker    GLboolean PreferPOTAlignedVaryings;
823*61046927SAndroid Build Coastguard Worker 
824*61046927SAndroid Build Coastguard Worker 
825*61046927SAndroid Build Coastguard Worker    /**
826*61046927SAndroid Build Coastguard Worker     * UBOs and SSBOs can be packed tightly by the OpenGL implementation when
827*61046927SAndroid Build Coastguard Worker     * layout is set as shared (the default) or packed. However most Mesa drivers
828*61046927SAndroid Build Coastguard Worker     * just use STD140 for these layouts. This flag allows drivers to use STD430
829*61046927SAndroid Build Coastguard Worker     * for packed and shared layouts which allows arrays to be packed more
830*61046927SAndroid Build Coastguard Worker     * tightly.
831*61046927SAndroid Build Coastguard Worker     */
832*61046927SAndroid Build Coastguard Worker    bool UseSTD430AsDefaultPacking;
833*61046927SAndroid Build Coastguard Worker 
834*61046927SAndroid Build Coastguard Worker    /**
835*61046927SAndroid Build Coastguard Worker     * Should meaningful names be generated for compiler temporary variables?
836*61046927SAndroid Build Coastguard Worker     *
837*61046927SAndroid Build Coastguard Worker     * Generally, it is not useful to have the compiler generate "meaningful"
838*61046927SAndroid Build Coastguard Worker     * names for temporary variables that it creates.  This can, however, be a
839*61046927SAndroid Build Coastguard Worker     * useful debugging aid.  In Mesa debug builds or release builds when
840*61046927SAndroid Build Coastguard Worker     * MESA_GLSL is set at run-time, meaningful names will be generated.
841*61046927SAndroid Build Coastguard Worker     * Drivers can also force names to be generated by setting this field.
842*61046927SAndroid Build Coastguard Worker     * For example, the i965 driver may set it when INTEL_DEBUG=vs (to dump
843*61046927SAndroid Build Coastguard Worker     * vertex shader assembly) is set at run-time.
844*61046927SAndroid Build Coastguard Worker     */
845*61046927SAndroid Build Coastguard Worker    bool GenerateTemporaryNames;
846*61046927SAndroid Build Coastguard Worker 
847*61046927SAndroid Build Coastguard Worker    /*
848*61046927SAndroid Build Coastguard Worker     * Maximum value supported for an index in DrawElements and friends.
849*61046927SAndroid Build Coastguard Worker     *
850*61046927SAndroid Build Coastguard Worker     * This must be at least (1ull<<24)-1.  The default value is
851*61046927SAndroid Build Coastguard Worker     * (1ull<<32)-1.
852*61046927SAndroid Build Coastguard Worker     *
853*61046927SAndroid Build Coastguard Worker     * \since ES 3.0 or GL_ARB_ES3_compatibility
854*61046927SAndroid Build Coastguard Worker     * \sa _mesa_init_constants
855*61046927SAndroid Build Coastguard Worker     */
856*61046927SAndroid Build Coastguard Worker    GLuint64 MaxElementIndex;
857*61046927SAndroid Build Coastguard Worker 
858*61046927SAndroid Build Coastguard Worker    /**
859*61046927SAndroid Build Coastguard Worker     * Disable interpretation of line continuations (lines ending with a
860*61046927SAndroid Build Coastguard Worker     * backslash character ('\') in GLSL source.
861*61046927SAndroid Build Coastguard Worker     */
862*61046927SAndroid Build Coastguard Worker    GLboolean DisableGLSLLineContinuations;
863*61046927SAndroid Build Coastguard Worker 
864*61046927SAndroid Build Coastguard Worker    /** GL_ARB_texture_multisample */
865*61046927SAndroid Build Coastguard Worker    GLint MaxColorTextureSamples;
866*61046927SAndroid Build Coastguard Worker    GLint MaxDepthTextureSamples;
867*61046927SAndroid Build Coastguard Worker    GLint MaxIntegerSamples;
868*61046927SAndroid Build Coastguard Worker 
869*61046927SAndroid Build Coastguard Worker    /** GL_AMD_framebuffer_multisample_advanced */
870*61046927SAndroid Build Coastguard Worker    GLint MaxColorFramebufferSamples;
871*61046927SAndroid Build Coastguard Worker    GLint MaxColorFramebufferStorageSamples;
872*61046927SAndroid Build Coastguard Worker    GLint MaxDepthStencilFramebufferSamples;
873*61046927SAndroid Build Coastguard Worker 
874*61046927SAndroid Build Coastguard Worker    /* An array of supported MSAA modes allowing different sample
875*61046927SAndroid Build Coastguard Worker     * counts per attachment type.
876*61046927SAndroid Build Coastguard Worker     */
877*61046927SAndroid Build Coastguard Worker    struct {
878*61046927SAndroid Build Coastguard Worker       GLint NumColorSamples;
879*61046927SAndroid Build Coastguard Worker       GLint NumColorStorageSamples;
880*61046927SAndroid Build Coastguard Worker       GLint NumDepthStencilSamples;
881*61046927SAndroid Build Coastguard Worker    } SupportedMultisampleModes[40];
882*61046927SAndroid Build Coastguard Worker    GLint NumSupportedMultisampleModes;
883*61046927SAndroid Build Coastguard Worker 
884*61046927SAndroid Build Coastguard Worker    /** GL_ARB_shader_atomic_counters */
885*61046927SAndroid Build Coastguard Worker    GLuint MaxAtomicBufferBindings;
886*61046927SAndroid Build Coastguard Worker    GLuint MaxAtomicBufferSize;
887*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedAtomicBuffers;
888*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedAtomicCounters;
889*61046927SAndroid Build Coastguard Worker 
890*61046927SAndroid Build Coastguard Worker    /** GL_ARB_vertex_attrib_binding */
891*61046927SAndroid Build Coastguard Worker    GLint MaxVertexAttribRelativeOffset;
892*61046927SAndroid Build Coastguard Worker    GLint MaxVertexAttribBindings;
893*61046927SAndroid Build Coastguard Worker 
894*61046927SAndroid Build Coastguard Worker    /* GL_ARB_shader_image_load_store */
895*61046927SAndroid Build Coastguard Worker    GLuint MaxImageUnits;
896*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedShaderOutputResources;
897*61046927SAndroid Build Coastguard Worker    GLuint MaxImageSamples;
898*61046927SAndroid Build Coastguard Worker    GLuint MaxCombinedImageUniforms;
899*61046927SAndroid Build Coastguard Worker 
900*61046927SAndroid Build Coastguard Worker    /** GL_ARB_compute_shader */
901*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeWorkGroupCount[3]; /* Array of x, y, z dimensions */
902*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeWorkGroupSize[3]; /* Array of x, y, z dimensions */
903*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeWorkGroupInvocations;
904*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeSharedMemorySize;
905*61046927SAndroid Build Coastguard Worker 
906*61046927SAndroid Build Coastguard Worker    /** GL_ARB_compute_variable_group_size */
907*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeVariableGroupSize[3]; /* Array of x, y, z dimensions */
908*61046927SAndroid Build Coastguard Worker    GLuint MaxComputeVariableGroupInvocations;
909*61046927SAndroid Build Coastguard Worker 
910*61046927SAndroid Build Coastguard Worker    /** GL_ARB_gpu_shader5 */
911*61046927SAndroid Build Coastguard Worker    GLfloat MinFragmentInterpolationOffset;
912*61046927SAndroid Build Coastguard Worker    GLfloat MaxFragmentInterpolationOffset;
913*61046927SAndroid Build Coastguard Worker 
914*61046927SAndroid Build Coastguard Worker    GLboolean FakeSWMSAA;
915*61046927SAndroid Build Coastguard Worker 
916*61046927SAndroid Build Coastguard Worker    /** GL_KHR_context_flush_control */
917*61046927SAndroid Build Coastguard Worker    GLenum16 ContextReleaseBehavior;
918*61046927SAndroid Build Coastguard Worker 
919*61046927SAndroid Build Coastguard Worker    struct gl_shader_compiler_options ShaderCompilerOptions[MESA_SHADER_STAGES];
920*61046927SAndroid Build Coastguard Worker 
921*61046927SAndroid Build Coastguard Worker    /** GL_ARB_tessellation_shader */
922*61046927SAndroid Build Coastguard Worker    GLuint MaxPatchVertices;
923*61046927SAndroid Build Coastguard Worker    GLuint MaxTessGenLevel;
924*61046927SAndroid Build Coastguard Worker    GLuint MaxTessPatchComponents;
925*61046927SAndroid Build Coastguard Worker    GLuint MaxTessControlTotalOutputComponents;
926*61046927SAndroid Build Coastguard Worker    bool PrimitiveRestartForPatches;
927*61046927SAndroid Build Coastguard Worker 
928*61046927SAndroid Build Coastguard Worker    /** GL_OES_primitive_bounding_box */
929*61046927SAndroid Build Coastguard Worker    bool NoPrimitiveBoundingBoxOutput;
930*61046927SAndroid Build Coastguard Worker 
931*61046927SAndroid Build Coastguard Worker    /** GL_ARB_sparse_buffer */
932*61046927SAndroid Build Coastguard Worker    GLuint SparseBufferPageSize;
933*61046927SAndroid Build Coastguard Worker 
934*61046927SAndroid Build Coastguard Worker    /** Used as an input for sha1 generation in the on-disk shader cache */
935*61046927SAndroid Build Coastguard Worker    unsigned char *dri_config_options_sha1;
936*61046927SAndroid Build Coastguard Worker 
937*61046927SAndroid Build Coastguard Worker    /** When drivers are OK with mapped buffers during draw and other calls. */
938*61046927SAndroid Build Coastguard Worker    bool AllowMappedBuffersDuringExecution;
939*61046927SAndroid Build Coastguard Worker 
940*61046927SAndroid Build Coastguard Worker    /** Override GL_MAP_UNSYNCHRONIZED_BIT */
941*61046927SAndroid Build Coastguard Worker    bool ForceMapBufferSynchronized;
942*61046927SAndroid Build Coastguard Worker 
943*61046927SAndroid Build Coastguard Worker    /** GL_ARB_get_program_binary */
944*61046927SAndroid Build Coastguard Worker    GLuint NumProgramBinaryFormats;
945*61046927SAndroid Build Coastguard Worker 
946*61046927SAndroid Build Coastguard Worker    /** GL_ARB_gl_spirv */
947*61046927SAndroid Build Coastguard Worker    GLuint NumShaderBinaryFormats;
948*61046927SAndroid Build Coastguard Worker 
949*61046927SAndroid Build Coastguard Worker    /** GL_NV_conservative_raster */
950*61046927SAndroid Build Coastguard Worker    GLuint MaxSubpixelPrecisionBiasBits;
951*61046927SAndroid Build Coastguard Worker 
952*61046927SAndroid Build Coastguard Worker    /** GL_NV_conservative_raster_dilate */
953*61046927SAndroid Build Coastguard Worker    GLfloat ConservativeRasterDilateRange[2];
954*61046927SAndroid Build Coastguard Worker    GLfloat ConservativeRasterDilateGranularity;
955*61046927SAndroid Build Coastguard Worker 
956*61046927SAndroid Build Coastguard Worker    /** Is the drivers uniform storage packed or padded to 16 bytes. */
957*61046927SAndroid Build Coastguard Worker    bool PackedDriverUniformStorage;
958*61046927SAndroid Build Coastguard Worker 
959*61046927SAndroid Build Coastguard Worker    bool HasFBFetch;
960*61046927SAndroid Build Coastguard Worker 
961*61046927SAndroid Build Coastguard Worker    bool CombinedClipCullDistanceArrays;
962*61046927SAndroid Build Coastguard Worker 
963*61046927SAndroid Build Coastguard Worker    bool PointSizeFixed;
964*61046927SAndroid Build Coastguard Worker 
965*61046927SAndroid Build Coastguard Worker    /** Wether or not glBitmap uses red textures rather than alpha */
966*61046927SAndroid Build Coastguard Worker    bool BitmapUsesRed;
967*61046927SAndroid Build Coastguard Worker 
968*61046927SAndroid Build Coastguard Worker    /** Whether the vertex buffer offset is a signed 32-bit integer. */
969*61046927SAndroid Build Coastguard Worker    bool VertexBufferOffsetIsInt32;
970*61046927SAndroid Build Coastguard Worker 
971*61046927SAndroid Build Coastguard Worker    /** Whether out-of-order draw (Begin/End) optimizations are allowed. */
972*61046927SAndroid Build Coastguard Worker    bool AllowDrawOutOfOrder;
973*61046927SAndroid Build Coastguard Worker 
974*61046927SAndroid Build Coastguard Worker    /** Whether to force the fast path for binding VAOs. It has much lower
975*61046927SAndroid Build Coastguard Worker     *  overhead due to not spending CPU cycles on trying to find interleaved
976*61046927SAndroid Build Coastguard Worker     *  vertex attribs and binding them.
977*61046927SAndroid Build Coastguard Worker     */
978*61046927SAndroid Build Coastguard Worker    bool UseVAOFastPath;
979*61046927SAndroid Build Coastguard Worker 
980*61046927SAndroid Build Coastguard Worker    /** Whether the driver can support primitive restart with a fixed index.
981*61046927SAndroid Build Coastguard Worker     * This is essentially a subset of NV_primitive_restart with enough support
982*61046927SAndroid Build Coastguard Worker     * to be able to enable GLES 3.1. Some hardware can support this but not the
983*61046927SAndroid Build Coastguard Worker     * full NV extension with arbitrary restart indices.
984*61046927SAndroid Build Coastguard Worker     */
985*61046927SAndroid Build Coastguard Worker    bool PrimitiveRestartFixedIndex;
986*61046927SAndroid Build Coastguard Worker 
987*61046927SAndroid Build Coastguard Worker    /** GL_ARB_spirv_extensions */
988*61046927SAndroid Build Coastguard Worker    struct spirv_supported_extensions *SpirVExtensions;
989*61046927SAndroid Build Coastguard Worker 
990*61046927SAndroid Build Coastguard Worker    char *VendorOverride;
991*61046927SAndroid Build Coastguard Worker    char *RendererOverride;
992*61046927SAndroid Build Coastguard Worker 
993*61046927SAndroid Build Coastguard Worker    /** Buffer size used to upload vertices from glBegin/glEnd. */
994*61046927SAndroid Build Coastguard Worker    unsigned glBeginEndBufferSize;
995*61046927SAndroid Build Coastguard Worker 
996*61046927SAndroid Build Coastguard Worker    /** Whether the driver doesn't want x/y/width/height clipped based on src size
997*61046927SAndroid Build Coastguard Worker     *  when doing a copy texture operation (eg: may want out-of-bounds reads that
998*61046927SAndroid Build Coastguard Worker     *  produce 0 instead of leaving the texture content undefined).
999*61046927SAndroid Build Coastguard Worker     */
1000*61046927SAndroid Build Coastguard Worker    bool NoClippingOnCopyTex;
1001*61046927SAndroid Build Coastguard Worker 
1002*61046927SAndroid Build Coastguard Worker    /**
1003*61046927SAndroid Build Coastguard Worker     * Force glthread to always return GL_FRAMEBUFFER_COMPLETE to prevent
1004*61046927SAndroid Build Coastguard Worker     * synchronization. Used for apps that call it every frame or multiple times
1005*61046927SAndroid Build Coastguard Worker     * a frame, but always getting framebuffer completeness.
1006*61046927SAndroid Build Coastguard Worker     */
1007*61046927SAndroid Build Coastguard Worker    bool GLThreadNopCheckFramebufferStatus;
1008*61046927SAndroid Build Coastguard Worker 
1009*61046927SAndroid Build Coastguard Worker    /** GL_ARB_sparse_texture */
1010*61046927SAndroid Build Coastguard Worker    GLuint MaxSparseTextureSize;
1011*61046927SAndroid Build Coastguard Worker    GLuint MaxSparse3DTextureSize;
1012*61046927SAndroid Build Coastguard Worker    GLuint MaxSparseArrayTextureLayers;
1013*61046927SAndroid Build Coastguard Worker    bool SparseTextureFullArrayCubeMipmaps;
1014*61046927SAndroid Build Coastguard Worker 
1015*61046927SAndroid Build Coastguard Worker    /** Use hardware accelerated GL_SELECT */
1016*61046927SAndroid Build Coastguard Worker    bool HardwareAcceleratedSelect;
1017*61046927SAndroid Build Coastguard Worker 
1018*61046927SAndroid Build Coastguard Worker    /** Allow GLThread to convert glBuffer */
1019*61046927SAndroid Build Coastguard Worker    bool AllowGLThreadBufferSubDataOpt;
1020*61046927SAndroid Build Coastguard Worker 
1021*61046927SAndroid Build Coastguard Worker    /** Whether pipe_context::draw_vertex_state is supported. */
1022*61046927SAndroid Build Coastguard Worker    bool HasDrawVertexState;
1023*61046927SAndroid Build Coastguard Worker 
1024*61046927SAndroid Build Coastguard Worker    /** GL_KHR_shader_subgroup */
1025*61046927SAndroid Build Coastguard Worker    GLuint ShaderSubgroupSize;
1026*61046927SAndroid Build Coastguard Worker    GLuint ShaderSubgroupSupportedStages;
1027*61046927SAndroid Build Coastguard Worker    GLuint ShaderSubgroupSupportedFeatures;
1028*61046927SAndroid Build Coastguard Worker    bool ShaderSubgroupQuadAllStages;
1029*61046927SAndroid Build Coastguard Worker };
1030*61046927SAndroid Build Coastguard Worker 
1031*61046927SAndroid Build Coastguard Worker #endif
1032