X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fglxextensions.c;h=caa6d9939db37039f8f2e984b2d8cde89995d066;hb=b1390c7992c457f230cb5a7a64803b194de316e0;hp=3a0e64c46d1afa623dba78b6c7b51ae94918c71b;hpb=cd6a31cd4a9ea6deef4778c2eaef2d47240c3a6e;p=mesa.git diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index 3a0e64c46d1..caa6d9939db 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -71,73 +71,35 @@ struct extension_info /* *INDENT-OFF* */ static const struct extension_info known_glx_extensions[] = { + { GLX(ARB_create_context), VER(0,0), Y, N, N, N }, + { GLX(ARB_create_context_profile), VER(0,0), Y, N, N, N }, + { GLX(ARB_create_context_robustness), VER(0,0), Y, N, N, N }, + { GLX(ARB_framebuffer_sRGB), VER(0,0), Y, Y, N, N }, { GLX(ARB_get_proc_address), VER(1,4), Y, N, Y, N }, { GLX(ARB_multisample), VER(1,4), Y, Y, N, N }, - { GLX(ARB_render_texture), VER(0,0), N, N, N, N }, { GLX(ATI_pixel_format_float), VER(0,0), N, N, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(EXT_import_context), VER(0,0), N, N, N, N }, - { GLX(EXT_visual_info), VER(0,0), N, N, N, N }, -#else { GLX(EXT_import_context), VER(0,0), Y, Y, N, N }, { GLX(EXT_visual_info), VER(0,0), Y, Y, N, N }, -#endif { GLX(EXT_visual_rating), VER(0,0), Y, Y, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(MESA_agp_offset), VER(0,0), N, N, N, N }, /* Deprecated */ - { GLX(MESA_copy_sub_buffer), VER(0,0), N, N, N, N }, -#else - { GLX(MESA_agp_offset), VER(0,0), N, N, N, Y }, /* Deprecated */ + { GLX(EXT_framebuffer_sRGB), VER(0,0), Y, Y, N, N }, + { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, Y }, { GLX(MESA_copy_sub_buffer), VER(0,0), Y, N, N, N }, -#endif - { GLX(MESA_pixmap_colormap), VER(0,0), N, N, N, N }, /* Deprecated */ - { GLX(MESA_release_buffers), VER(0,0), N, N, N, N }, /* Deprecated */ -#ifdef GLX_USE_APPLEGL - { GLX(MESA_swap_control), VER(0,0), N, N, N, N }, -#else + { GLX(MESA_multithread_makecurrent),VER(0,0), Y, N, Y, N }, { GLX(MESA_swap_control), VER(0,0), Y, N, N, Y }, -#endif { GLX(NV_float_buffer), VER(0,0), N, N, N, N }, - { GLX(NV_render_depth_texture), VER(0,0), N, N, N, N }, - { GLX(NV_render_texture_rectangle), VER(0,0), N, N, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(NV_vertex_array_range), VER(0,0), N, N, N, N }, /* Deprecated */ - { GLX(OML_swap_method), VER(0,0), N, N, N, N }, - { GLX(OML_sync_control), VER(0,0), N, N, N, N }, - { GLX(SGI_make_current_read), VER(1,3), N, N, N, N }, - { GLX(SGI_swap_control), VER(0,0), N, N, N, N }, - { GLX(SGI_video_sync), VER(0,0), N, N, N, N }, -#else - { GLX(NV_vertex_array_range), VER(0,0), N, N, N, Y }, /* Deprecated */ { GLX(OML_swap_method), VER(0,0), Y, Y, N, N }, { GLX(OML_sync_control), VER(0,0), Y, N, N, Y }, { GLX(SGI_make_current_read), VER(1,3), Y, N, N, N }, { GLX(SGI_swap_control), VER(0,0), Y, N, N, N }, { GLX(SGI_video_sync), VER(0,0), Y, N, N, Y }, -#endif - { GLX(SGIS_blended_overlay), VER(0,0), N, N, N, N }, - { GLX(SGIS_color_range), VER(0,0), N, N, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(SGIS_multisample), VER(0,0), N, N, N, N }, -#else { GLX(SGIS_multisample), VER(0,0), Y, Y, N, N }, -#endif { GLX(SGIX_fbconfig), VER(1,3), Y, Y, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(SGIX_pbuffer), VER(1,3), N, N, N, N }, -#else { GLX(SGIX_pbuffer), VER(1,3), Y, Y, N, N }, -#endif { GLX(SGIX_swap_barrier), VER(0,0), N, N, N, N }, { GLX(SGIX_swap_group), VER(0,0), N, N, N, N }, -#ifdef GLX_USE_APPLEGL - { GLX(SGIX_visual_select_group), VER(0,0), N, N, N, N }, - { GLX(EXT_texture_from_pixmap), VER(0,0), N, N, N, N }, -#else { GLX(SGIX_visual_select_group), VER(0,0), Y, Y, N, N }, { GLX(EXT_texture_from_pixmap), VER(0,0), Y, N, N, N }, -#endif - { GLX(INTEL_swap_event), VER(1,4), Y, Y, N, N }, + { GLX(INTEL_swap_event), VER(0,0), Y, N, N, N }, { NULL } }; @@ -189,6 +151,7 @@ static const struct extension_info known_gl_extensions[] = { { GL(EXT_framebuffer_blit), VER(0,0), Y, N, N, N }, { GL(EXT_framebuffer_multisample), VER(0,0), Y, N, N, N }, { GL(EXT_framebuffer_object), VER(0,0), Y, N, N, N }, + { GL(EXT_framebuffer_sRGB), VER(0,0), Y, N, N, N }, { GL(EXT_multi_draw_arrays), VER(1,4), Y, N, Y, N }, { GL(EXT_packed_depth_stencil), VER(0,0), Y, N, N, N }, { GL(EXT_packed_pixels), VER(1,2), Y, N, N, N }, @@ -547,7 +510,7 @@ __glXGetStringFromTable(const struct extension_info *ext, } } - ext_str = Xmalloc(ext_str_len + 1); + ext_str = malloc(ext_str_len + 1); if (ext_str != NULL) { point = ext_str; @@ -616,7 +579,7 @@ __glXCalculateUsableExtensions(struct glx_screen * psc, * support for GLX 1.3, enable support for the extensions that can be * "emulated" as well. */ - +#ifndef GLX_USE_APPLEGL if (minor_version >= 3) { SET_BIT(server_support, EXT_visual_info_bit); SET_BIT(server_support, EXT_visual_rating_bit); @@ -632,7 +595,7 @@ __glXCalculateUsableExtensions(struct glx_screen * psc, SET_BIT(server_support, EXT_import_context_bit); } - +#endif /* An extension is supported if the client-side (i.e., libGL) supports * it and the "server" supports it. In this case that means that either @@ -660,6 +623,16 @@ __glXCalculateUsableExtensions(struct glx_screen * psc, } } + /* This hack is necessary because GLX_ARB_create_context_profile depends on + * server support, but GLX_EXT_create_context_es2_profile is direct-only. + * Without this hack, it would be possible to advertise + * GLX_EXT_create_context_es2_profile without + * GLX_ARB_create_context_profile. That would be a problem. + */ + if (!IS_SET(server_support, ARB_create_context_profile_bit)) { + CLR_BIT(usable, EXT_create_context_es2_profile_bit); + } + psc->effectiveGLXexts = __glXGetStringFromTable(known_glx_extensions, usable); }