+ const bool ver_4_3 = (ver_4_2 &&
+ consts->GLSLVersion >= 430 &&
+ consts->Program[MESA_SHADER_VERTEX].MaxUniformBlocks >= 14 &&
+ extensions->ARB_ES3_compatibility &&
+ extensions->ARB_arrays_of_arrays &&
+ extensions->ARB_compute_shader &&
+ extensions->ARB_copy_image &&
+ extensions->ARB_explicit_uniform_location &&
+ extensions->ARB_fragment_layer_viewport &&
+ extensions->ARB_framebuffer_no_attachments &&
+ extensions->ARB_internalformat_query2 &&
+ extensions->ARB_robust_buffer_access_behavior &&
+ extensions->ARB_shader_image_size &&
+ extensions->ARB_shader_storage_buffer_object &&
+ extensions->ARB_stencil_texturing &&
+ extensions->ARB_texture_buffer_range &&
+ extensions->ARB_texture_query_levels &&
+ extensions->ARB_texture_view);
+ const bool ver_4_4 = (ver_4_3 &&
+ consts->GLSLVersion >= 440 &&
+ extensions->ARB_buffer_storage &&
+ extensions->ARB_clear_texture &&
+ extensions->ARB_enhanced_layouts &&
+ extensions->ARB_query_buffer_object &&
+ extensions->ARB_texture_mirror_clamp_to_edge &&
+ extensions->ARB_texture_stencil8 &&
+ extensions->ARB_vertex_type_10f_11f_11f_rev);
+ const bool ver_4_5 = (ver_4_4 &&
+ consts->GLSLVersion >= 450 &&
+ extensions->ARB_ES3_1_compatibility &&
+ extensions->ARB_clip_control &&
+ extensions->ARB_conditional_render_inverted &&
+ extensions->ARB_cull_distance &&
+ extensions->ARB_derivative_control &&
+ extensions->ARB_shader_texture_image_samples &&
+ extensions->NV_texture_barrier);
+ const bool ver_4_6 = (ver_4_5 &&
+ consts->GLSLVersion >= 460 &&
+ /* extensions->ARB_gl_spirv */ 0 &&
+ /* extensions->ARB_spirv_extensions */ 0 &&
+ extensions->ARB_indirect_parameters &&
+ extensions->ARB_pipeline_statistics_query &&
+ extensions->ARB_polygon_offset_clamp &&
+ extensions->ARB_shader_atomic_counter_ops &&
+ extensions->ARB_shader_draw_parameters &&
+ extensions->ARB_shader_group_vote &&
+ extensions->ARB_texture_filter_anisotropic &&
+ extensions->ARB_transform_feedback_overflow_query);
+
+ if (ver_4_6) {
+ major = 4;
+ minor = 6;
+ }
+ else if (ver_4_5) {
+ major = 4;
+ minor = 5;
+ }
+ else if (ver_4_4) {
+ major = 4;
+ minor = 4;
+ }
+ else if (ver_4_3) {
+ major = 4;
+ minor = 3;
+ }
+ else if (ver_4_2) {