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