X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fglxextensions.c;h=86dc7d03d13d1141c7f90e52a97772b1ead2c0ab;hb=3917503b9a48275f389ec1e563fdb53415b87171;hp=23161ef49a1d659b1cabf76264237e5c4055ea47;hpb=443a7e4e9a360acbc3e662c098be436f180bf81d;p=mesa.git diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index 23161ef49a1..86dc7d03d13 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -71,73 +71,42 @@ struct extension_info /* *INDENT-OFF* */ static const struct extension_info known_glx_extensions[] = { +#ifdef HAVE_XCB_GLX_CREATE_CONTEXT + { GLX(ARB_create_context), VER(0,0), Y, N, N, N }, + { GLX(ARB_create_context_profile), VER(0,0), Y, N, N, N }, +#else + { GLX(ARB_create_context), VER(0,0), N, N, N, N }, + { GLX(ARB_create_context_profile), VER(0,0), N, N, N, N }, +#endif { 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 }, + { GLX(EXT_framebuffer_sRGB), VER(0,0), Y, Y, N, N }, +#ifdef HAVE_XCB_GLX_CREATE_CONTEXT + { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, Y }, #else - { GLX(MESA_agp_offset), VER(0,0), N, N, N, Y }, /* Deprecated */ - { GLX(MESA_copy_sub_buffer), VER(0,0), Y, N, N, N }, + { GLX(EXT_create_context_es2_profile), VER(0,0), N, 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_copy_sub_buffer), VER(0,0), Y, N, N, N }, + { 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 } }; @@ -165,6 +134,7 @@ static const struct extension_info known_gl_extensions[] = { { GL(ARB_texture_mirrored_repeat), VER(1,4), Y, N, N, N }, { GL(ARB_texture_non_power_of_two), VER(1,5), Y, N, N, N }, { GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N }, + { GL(ARB_texture_rg), VER(0,0), Y, N, N, N }, { GL(ARB_transpose_matrix), VER(1,3), Y, N, Y, N }, { GL(ARB_vertex_buffer_object), VER(1,5), N, N, N, N }, { GL(ARB_vertex_program), VER(0,0), Y, N, N, N }, @@ -188,6 +158,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 }, @@ -615,7 +586,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); @@ -631,7 +602,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 @@ -659,6 +630,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); }