Mesa (master): glx: Enable pure-client-library extensions explicitly
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Apr 16 10:43:37 UTC 2021
Module: Mesa
Branch: master
Commit: 9f97f994c3f65e44e46b464d3257adfeafac87e5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f97f994c3f65e44e46b464d3257adfeafac87e5
Author: Adam Jackson <ajax at redhat.com>
Date: Tue Apr 13 18:40:51 2021 -0400
glx: Enable pure-client-library extensions explicitly
These are rare enough to not be worth tracking separately. Especially
since after this change all the known_gl_extensions have N for both
direct_support and direct_only (unsurprising, since that's only used to
compute usable indirect extensions).
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10223>
---
src/glx/glxextensions.c | 390 ++++++++++++++++++++++--------------------------
1 file changed, 181 insertions(+), 209 deletions(-)
diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index 1695b2c55b6..fd797ab9df5 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -68,21 +68,6 @@ struct extension_info
*/
unsigned char direct_support;
- /**
- * The extension depends only on client support.
- *
- * This is for extensions like GLX_ARB_get_proc_address that are contained
- * entirely in the client library. There is no dependency on the server or
- * the direct-renderer.
- *
- * \note
- * An extension \b cannot be both client-only and direct-only because being
- * direct-only implies a dependency on the direct renderer.
- *
- * \sa ::direct_only
- */
- unsigned char client_only;
-
/**
* The extension only functions with direct-rendering contexts
*
@@ -90,199 +75,192 @@ struct extension_info
* dependency on the server. The functionality is contained entirely in
* the client library and the direct renderer. A few of the swap-related
* extensions are intended to behave this way.
- *
- * \note
- * An extension \b cannot be both client-only and direct-only because being
- * client-only implies that all functionality is outside the
- * direct-renderer.
- *
- * \sa ::client_only
*/
unsigned char direct_only;
};
/* *INDENT-OFF* */
static const struct extension_info known_glx_extensions[] = {
- { GLX(ARB_context_flush_control), N, N, N },
- { GLX(ARB_create_context), N, N, N },
- { GLX(ARB_create_context_no_error), N, N, N },
- { GLX(ARB_create_context_profile), N, N, N },
- { GLX(ARB_create_context_robustness), N, N, N },
- { GLX(ARB_fbconfig_float), Y, N, N },
- { GLX(ARB_framebuffer_sRGB), Y, N, N },
- { GLX(ARB_get_proc_address), N, Y, N },
- { GLX(ARB_multisample), Y, N, N },
- { GLX(EXT_buffer_age), N, N, Y },
- { GLX(EXT_create_context_es2_profile), N, N, N },
- { GLX(EXT_create_context_es_profile), N, N, N },
- { GLX(EXT_fbconfig_packed_float), Y, N, N },
- { GLX(EXT_framebuffer_sRGB), Y, N, N },
- { GLX(EXT_import_context), Y, N, N },
- { GLX(EXT_swap_control), N, N, Y },
- { GLX(EXT_swap_control_tear), N, N, Y },
- { GLX(EXT_texture_from_pixmap), N, N, N },
- { GLX(EXT_visual_info), Y, N, N },
- { GLX(EXT_visual_rating), Y, N, N },
- { GLX(ATI_pixel_format_float), N, N, N },
- { GLX(INTEL_swap_event), N, N, N },
- { GLX(MESA_copy_sub_buffer), N, N, N },
- { GLX(MESA_multithread_makecurrent), N, N, Y },
- { GLX(MESA_query_renderer), N, N, Y },
- { GLX(MESA_swap_control), N, N, Y },
- { GLX(NV_float_buffer), N, N, N },
- { GLX(OML_swap_method), Y, N, N },
- { GLX(OML_sync_control), N, N, Y },
- { GLX(SGIS_multisample), Y, N, N },
- { GLX(SGIX_fbconfig), Y, N, N },
- { GLX(SGIX_pbuffer), Y, N, N },
- { GLX(SGIX_visual_select_group), Y, N, N },
- { GLX(SGI_make_current_read), N, N, N },
- { GLX(SGI_swap_control), N, N, N },
- { GLX(SGI_video_sync), N, N, Y },
+ { GLX(ARB_context_flush_control), N, N },
+ { GLX(ARB_create_context), N, N },
+ { GLX(ARB_create_context_no_error), N, N },
+ { GLX(ARB_create_context_profile), N, N },
+ { GLX(ARB_create_context_robustness), N, N },
+ { GLX(ARB_fbconfig_float), Y, N },
+ { GLX(ARB_framebuffer_sRGB), Y, N },
+ { GLX(ARB_get_proc_address), N, N },
+ { GLX(ARB_multisample), Y, N },
+ { GLX(EXT_buffer_age), N, Y },
+ { GLX(EXT_create_context_es2_profile), N, N },
+ { GLX(EXT_create_context_es_profile), N, N },
+ { GLX(EXT_fbconfig_packed_float), Y, N },
+ { GLX(EXT_framebuffer_sRGB), Y, N },
+ { GLX(EXT_import_context), Y, N },
+ { GLX(EXT_swap_control), N, Y },
+ { GLX(EXT_swap_control_tear), N, Y },
+ { GLX(EXT_texture_from_pixmap), N, N },
+ { GLX(EXT_visual_info), Y, N },
+ { GLX(EXT_visual_rating), Y, N },
+ { GLX(ATI_pixel_format_float), N, N },
+ { GLX(INTEL_swap_event), N, N },
+ { GLX(MESA_copy_sub_buffer), N, N },
+ { GLX(MESA_multithread_makecurrent), N, Y },
+ { GLX(MESA_query_renderer), N, Y },
+ { GLX(MESA_swap_control), N, Y },
+ { GLX(NV_float_buffer), N, N },
+ { GLX(OML_swap_method), Y, N },
+ { GLX(OML_sync_control), N, Y },
+ { GLX(SGIS_multisample), Y, N },
+ { GLX(SGIX_fbconfig), Y, N },
+ { GLX(SGIX_pbuffer), Y, N },
+ { GLX(SGIX_visual_select_group), Y, N },
+ { GLX(SGI_make_current_read), N, N },
+ { GLX(SGI_swap_control), N, N },
+ { GLX(SGI_video_sync), N, Y },
{ NULL }
};
static const struct extension_info known_gl_extensions[] = {
- { GL(ARB_depth_texture), N, N, N },
- { GL(ARB_draw_buffers), N, N, N },
- { GL(ARB_fragment_program), N, N, N },
- { GL(ARB_fragment_program_shadow), N, N, N },
- { GL(ARB_framebuffer_object), N, N, N },
- { GL(ARB_imaging), N, N, N },
- { GL(ARB_multisample), N, N, N },
- { GL(ARB_multitexture), N, N, N },
- { GL(ARB_occlusion_query), N, N, N },
- { GL(ARB_point_parameters), N, N, N },
- { GL(ARB_point_sprite), N, N, N },
- { GL(ARB_shadow), N, N, N },
- { GL(ARB_shadow_ambient), N, N, N },
- { GL(ARB_texture_border_clamp), N, N, N },
- { GL(ARB_texture_compression), N, N, N },
- { GL(ARB_texture_cube_map), N, N, N },
- { GL(ARB_texture_env_add), N, N, N },
- { GL(ARB_texture_env_combine), N, N, N },
- { GL(ARB_texture_env_crossbar), N, N, N },
- { GL(ARB_texture_env_dot3), N, N, N },
- { GL(ARB_texture_filter_anisotropic), N, N, N },
- { GL(ARB_texture_mirrored_repeat), N, N, N },
- { GL(ARB_texture_non_power_of_two), N, N, N },
- { GL(ARB_texture_rectangle), N, N, N },
- { GL(ARB_texture_rg), N, N, N },
- { GL(ARB_transpose_matrix), N, Y, N },
- { GL(ARB_vertex_program), N, N, N },
- { GL(ARB_window_pos), N, N, N },
- { GL(EXT_abgr), N, N, N },
- { GL(EXT_bgra), N, N, N },
- { GL(EXT_blend_color), N, N, N },
- { GL(EXT_blend_equation_separate), N, N, N },
- { GL(EXT_blend_func_separate), N, N, N },
- { GL(EXT_blend_logic_op), N, N, N },
- { GL(EXT_blend_minmax), N, N, N },
- { GL(EXT_blend_subtract), N, N, N },
- { GL(EXT_clip_volume_hint), N, N, N },
- { GL(EXT_copy_texture), N, N, N },
- { GL(EXT_draw_range_elements), N, Y, N },
- { GL(EXT_fog_coord), N, N, N },
- { GL(EXT_framebuffer_blit), N, N, N },
- { GL(EXT_framebuffer_multisample), N, N, N },
- { GL(EXT_framebuffer_object), N, N, N },
- { GL(EXT_framebuffer_sRGB), N, N, N },
- { GL(EXT_multi_draw_arrays), N, Y, N },
- { GL(EXT_packed_depth_stencil), N, N, N },
- { GL(EXT_packed_pixels), N, N, N },
- { GL(EXT_paletted_texture), N, N, N },
- { GL(EXT_point_parameters), N, N, N },
- { GL(EXT_polygon_offset), N, N, N },
- { GL(EXT_rescale_normal), N, N, N },
- { GL(EXT_secondary_color), N, N, N },
- { GL(EXT_separate_specular_color), N, N, N },
- { GL(EXT_shadow_funcs), N, N, N },
- { GL(EXT_shared_texture_palette), N, N, N },
- { GL(EXT_stencil_two_side), N, N, N },
- { GL(EXT_stencil_wrap), N, N, N },
- { GL(EXT_subtexture), N, N, N },
- { GL(EXT_texture), N, N, N },
- { GL(EXT_texture3D), N, N, N },
- { GL(EXT_texture_compression_dxt1), N, N, N },
- { GL(EXT_texture_compression_s3tc), N, N, N },
- { GL(EXT_texture_edge_clamp), N, N, N },
- { GL(EXT_texture_env_add), N, N, N },
- { GL(EXT_texture_env_combine), N, N, N },
- { GL(EXT_texture_env_dot3), N, N, N },
- { GL(EXT_texture_filter_anisotropic), N, N, N },
- { GL(EXT_texture_integer), N, N, N },
- { GL(EXT_texture_lod), N, N, N },
- { GL(EXT_texture_lod_bias), N, N, N },
- { GL(EXT_texture_mirror_clamp), N, N, N },
- { GL(EXT_texture_object), N, N, N },
- { GL(EXT_texture_rectangle), N, N, N },
- { GL(EXT_vertex_array), N, N, N },
- { GL(3DFX_texture_compression_FXT1), N, N, N },
- { GL(APPLE_packed_pixels), N, N, N },
- { GL(APPLE_ycbcr_422), N, N, N },
- { GL(ATI_draw_buffers), N, N, N },
- { GL(ATI_text_fragment_shader), N, N, N },
- { GL(ATI_texture_env_combine3), N, N, N },
- { GL(ATI_texture_float), N, N, N },
- { GL(ATI_texture_mirror_once), N, N, N },
- { GL(ATIX_texture_env_combine3), N, N, N },
- { GL(HP_convolution_border_modes), N, N, N },
- { GL(HP_occlusion_test), N, N, N },
- { GL(IBM_cull_vertex), N, N, N },
- { GL(IBM_pixel_filter_hint), N, N, N },
- { GL(IBM_rasterpos_clip), N, N, N },
- { GL(IBM_texture_clamp_nodraw), N, N, N },
- { GL(IBM_texture_mirrored_repeat), N, N, N },
- { GL(INGR_blend_func_separate), N, N, N },
- { GL(INGR_interlace_read), N, N, N },
- { GL(MESA_pack_invert), N, N, N },
- { GL(MESA_ycbcr_texture), N, N, N },
- { GL(NV_blend_square), N, N, N },
- { GL(NV_copy_depth_to_color), N, N, N },
- { GL(NV_depth_clamp), N, N, N },
- { GL(NV_fog_distance), N, N, N },
- { GL(NV_fragment_program), N, N, N },
- { GL(NV_fragment_program_option), N, N, N },
- { GL(NV_fragment_program2), N, N, N },
- { GL(NV_light_max_exponent), N, N, N },
- { GL(NV_multisample_filter_hint), N, N, N },
- { GL(NV_packed_depth_stencil), N, N, N },
- { GL(NV_point_sprite), N, N, N },
- { GL(NV_texgen_reflection), N, N, N },
- { GL(NV_texture_compression_vtc), N, N, N },
- { GL(NV_texture_env_combine4), N, N, N },
- { GL(NV_texture_rectangle), N, N, N },
- { GL(NV_vertex_program), N, N, N },
- { GL(NV_vertex_program1_1), N, N, N },
- { GL(NV_vertex_program2), N, N, N },
- { GL(NV_vertex_program2_option), N, N, N },
- { GL(NV_vertex_program3), N, N, N },
- { GL(OES_read_format), N, N, N },
- { GL(OES_compressed_paletted_texture), N, N, N },
- { GL(SGI_color_matrix), N, N, N },
- { GL(SGI_color_table), N, N, N },
- { GL(SGI_texture_color_table), N, N, N },
- { GL(SGIS_generate_mipmap), N, N, N },
- { GL(SGIS_multisample), N, N, N },
- { GL(SGIS_texture_border_clamp), N, N, N },
- { GL(SGIS_texture_edge_clamp), N, N, N },
- { GL(SGIS_texture_lod), N, N, N },
- { GL(SGIX_blend_alpha_minmax), N, N, N },
- { GL(SGIX_clipmap), N, N, N },
- { GL(SGIX_depth_texture), N, N, N },
- { GL(SGIX_fog_offset), N, N, N },
- { GL(SGIX_shadow), N, N, N },
- { GL(SGIX_shadow_ambient), N, N, N },
- { GL(SGIX_texture_coordinate_clamp), N, N, N },
- { GL(SGIX_texture_lod_bias), N, N, N },
- { GL(SGIX_texture_range), N, N, N },
- { GL(SGIX_texture_scale_bias), N, N, N },
- { GL(SGIX_vertex_preclip), N, N, N },
- { GL(SGIX_vertex_preclip_hint), N, N, N },
- { GL(SGIX_ycrcb), N, N, N },
- { GL(SUN_convolution_border_modes), N, N, N },
- { GL(SUN_multi_draw_arrays), N, Y, N },
- { GL(SUN_slice_accum), N, N, N },
+ { GL(ARB_depth_texture), N, N },
+ { GL(ARB_draw_buffers), N, N },
+ { GL(ARB_fragment_program), N, N },
+ { GL(ARB_fragment_program_shadow), N, N },
+ { GL(ARB_framebuffer_object), N, N },
+ { GL(ARB_imaging), N, N },
+ { GL(ARB_multisample), N, N },
+ { GL(ARB_multitexture), N, N },
+ { GL(ARB_occlusion_query), N, N },
+ { GL(ARB_point_parameters), N, N },
+ { GL(ARB_point_sprite), N, N },
+ { GL(ARB_shadow), N, N },
+ { GL(ARB_shadow_ambient), N, N },
+ { GL(ARB_texture_border_clamp), N, N },
+ { GL(ARB_texture_compression), N, N },
+ { GL(ARB_texture_cube_map), N, N },
+ { GL(ARB_texture_env_add), N, N },
+ { GL(ARB_texture_env_combine), N, N },
+ { GL(ARB_texture_env_crossbar), N, N },
+ { GL(ARB_texture_env_dot3), N, N },
+ { GL(ARB_texture_filter_anisotropic), N, N },
+ { GL(ARB_texture_mirrored_repeat), N, N },
+ { GL(ARB_texture_non_power_of_two), N, N },
+ { GL(ARB_texture_rectangle), N, N },
+ { GL(ARB_texture_rg), N, N },
+ { GL(ARB_transpose_matrix), N, N },
+ { GL(ARB_vertex_program), N, N },
+ { GL(ARB_window_pos), N, N },
+ { GL(EXT_abgr), N, N },
+ { GL(EXT_bgra), N, N },
+ { GL(EXT_blend_color), N, N },
+ { GL(EXT_blend_equation_separate), N, N },
+ { GL(EXT_blend_func_separate), N, N },
+ { GL(EXT_blend_logic_op), N, N },
+ { GL(EXT_blend_minmax), N, N },
+ { GL(EXT_blend_subtract), N, N },
+ { GL(EXT_clip_volume_hint), N, N },
+ { GL(EXT_copy_texture), N, N },
+ { GL(EXT_draw_range_elements), N, N },
+ { GL(EXT_fog_coord), N, N },
+ { GL(EXT_framebuffer_blit), N, N },
+ { GL(EXT_framebuffer_multisample), N, N },
+ { GL(EXT_framebuffer_object), N, N },
+ { GL(EXT_framebuffer_sRGB), N, N },
+ { GL(EXT_multi_draw_arrays), N, N },
+ { GL(EXT_packed_depth_stencil), N, N },
+ { GL(EXT_packed_pixels), N, N },
+ { GL(EXT_paletted_texture), N, N },
+ { GL(EXT_point_parameters), N, N },
+ { GL(EXT_polygon_offset), N, N },
+ { GL(EXT_rescale_normal), N, N },
+ { GL(EXT_secondary_color), N, N },
+ { GL(EXT_separate_specular_color), N, N },
+ { GL(EXT_shadow_funcs), N, N },
+ { GL(EXT_shared_texture_palette), N, N },
+ { GL(EXT_stencil_two_side), N, N },
+ { GL(EXT_stencil_wrap), N, N },
+ { GL(EXT_subtexture), N, N },
+ { GL(EXT_texture), N, N },
+ { GL(EXT_texture3D), N, N },
+ { GL(EXT_texture_compression_dxt1), N, N },
+ { GL(EXT_texture_compression_s3tc), N, N },
+ { GL(EXT_texture_edge_clamp), N, N },
+ { GL(EXT_texture_env_add), N, N },
+ { GL(EXT_texture_env_combine), N, N },
+ { GL(EXT_texture_env_dot3), N, N },
+ { GL(EXT_texture_filter_anisotropic), N, N },
+ { GL(EXT_texture_integer), N, N },
+ { GL(EXT_texture_lod), N, N },
+ { GL(EXT_texture_lod_bias), N, N },
+ { GL(EXT_texture_mirror_clamp), N, N },
+ { GL(EXT_texture_object), N, N },
+ { GL(EXT_texture_rectangle), N, N },
+ { GL(EXT_vertex_array), N, N },
+ { GL(3DFX_texture_compression_FXT1), N, N },
+ { GL(APPLE_packed_pixels), N, N },
+ { GL(APPLE_ycbcr_422), N, N },
+ { GL(ATI_draw_buffers), N, N },
+ { GL(ATI_text_fragment_shader), N, N },
+ { GL(ATI_texture_env_combine3), N, N },
+ { GL(ATI_texture_float), N, N },
+ { GL(ATI_texture_mirror_once), N, N },
+ { GL(ATIX_texture_env_combine3), N, N },
+ { GL(HP_convolution_border_modes), N, N },
+ { GL(HP_occlusion_test), N, N },
+ { GL(IBM_cull_vertex), N, N },
+ { GL(IBM_pixel_filter_hint), N, N },
+ { GL(IBM_rasterpos_clip), N, N },
+ { GL(IBM_texture_clamp_nodraw), N, N },
+ { GL(IBM_texture_mirrored_repeat), N, N },
+ { GL(INGR_blend_func_separate), N, N },
+ { GL(INGR_interlace_read), N, N },
+ { GL(MESA_pack_invert), N, N },
+ { GL(MESA_ycbcr_texture), N, N },
+ { GL(NV_blend_square), N, N },
+ { GL(NV_copy_depth_to_color), N, N },
+ { GL(NV_depth_clamp), N, N },
+ { GL(NV_fog_distance), N, N },
+ { GL(NV_fragment_program), N, N },
+ { GL(NV_fragment_program_option), N, N },
+ { GL(NV_fragment_program2), N, N },
+ { GL(NV_light_max_exponent), N, N },
+ { GL(NV_multisample_filter_hint), N, N },
+ { GL(NV_packed_depth_stencil), N, N },
+ { GL(NV_point_sprite), N, N },
+ { GL(NV_texgen_reflection), N, N },
+ { GL(NV_texture_compression_vtc), N, N },
+ { GL(NV_texture_env_combine4), N, N },
+ { GL(NV_texture_rectangle), N, N },
+ { GL(NV_vertex_program), N, N },
+ { GL(NV_vertex_program1_1), N, N },
+ { GL(NV_vertex_program2), N, N },
+ { GL(NV_vertex_program2_option), N, N },
+ { GL(NV_vertex_program3), N, N },
+ { GL(OES_read_format), N, N },
+ { GL(OES_compressed_paletted_texture), N, N },
+ { GL(SGI_color_matrix), N, N },
+ { GL(SGI_color_table), N, N },
+ { GL(SGI_texture_color_table), N, N },
+ { GL(SGIS_generate_mipmap), N, N },
+ { GL(SGIS_multisample), N, N },
+ { GL(SGIS_texture_border_clamp), N, N },
+ { GL(SGIS_texture_edge_clamp), N, N },
+ { GL(SGIS_texture_lod), N, N },
+ { GL(SGIX_blend_alpha_minmax), N, N },
+ { GL(SGIX_clipmap), N, N },
+ { GL(SGIX_depth_texture), N, N },
+ { GL(SGIX_fog_offset), N, N },
+ { GL(SGIX_shadow), N, N },
+ { GL(SGIX_shadow_ambient), N, N },
+ { GL(SGIX_texture_coordinate_clamp), N, N },
+ { GL(SGIX_texture_lod_bias), N, N },
+ { GL(SGIX_texture_range), N, N },
+ { GL(SGIX_texture_scale_bias), N, N },
+ { GL(SGIX_vertex_preclip), N, N },
+ { GL(SGIX_vertex_preclip_hint), N, N },
+ { GL(SGIX_ycrcb), N, N },
+ { GL(SUN_convolution_border_modes), N, N },
+ { GL(SUN_multi_draw_arrays), N, N },
+ { GL(SUN_slice_accum), N, N },
{ NULL }
};
/* *INDENT-ON* */
@@ -521,6 +499,7 @@ __glXExtensionsCtr(void)
(void) memset(client_gl_only, 0, sizeof(client_gl_only));
+ SET_BIT(client_glx_only, ARB_get_proc_address_bit);
for (i = 0; known_glx_extensions[i].name != NULL; i++) {
const unsigned bit = known_glx_extensions[i].bit;
@@ -528,22 +507,15 @@ __glXExtensionsCtr(void)
SET_BIT(direct_glx_support, bit);
}
- if (known_glx_extensions[i].client_only) {
- SET_BIT(client_glx_only, bit);
- }
-
if (known_glx_extensions[i].direct_only) {
SET_BIT(direct_glx_only, bit);
}
}
- for (i = 0; known_gl_extensions[i].name != NULL; i++) {
- const unsigned bit = known_gl_extensions[i].bit;
-
- if (known_gl_extensions[i].client_only) {
- SET_BIT(client_gl_only, bit);
- }
- }
+ SET_BIT(client_gl_only, GL_ARB_transpose_matrix_bit);
+ SET_BIT(client_gl_only, GL_EXT_draw_range_elements_bit);
+ SET_BIT(client_gl_only, GL_EXT_multi_draw_arrays_bit);
+ SET_BIT(client_gl_only, GL_SUN_multi_draw_arrays_bit);
#if 0
fprintf(stderr, "[%s:%u] Maximum client library version: %u.%u\n",
More information about the mesa-commit
mailing list