I'm trying to take a stab at adding core profile support to XQuartz. As a first step, I'm trying to add GLX_ARB_create_context and GLX_ARB_create_context_profile.
For now, I want to make sure that GLX_ARB_create_context and GLX_ARB_create_context_profile are only advertised as being available when in a testing mode (so as to not enable breakage by default while working on these changes). To this end, I'm the following to applegl_create_screen: @@ -183,6 +191,12 @@ applegl_create_screen(int screen, struct glx_display * priv) glx_screen_init(psc, screen, priv); psc->vtable = &applegl_screen_vtable; + /* Testing support for core profiles is guarded by an envvar for now */ + if (getenv("LIBGL_PROFILE_CORE")) { + __glXEnableDirectExtension(psc, "GLX_ARB_create_context"); + __glXEnableDirectExtension(psc, "GLX_ARB_create_context_profile"); + } + return psc; } The goal of this change is that these extensions would only be advertised as available to clients if they set the LIBGL_PROFILE_CORE environment variable. Unfortunately, it seems that GLX_ARB_create_context and GLX_ARB_create_context_profile are always advertised on current mesa. __glXExtensionsCtr sets them up as client supported (but not direct supported) by default, so I'm confused why they're being listed as available GLX extensions when using direct rendering. Can someone fill me in on how to best prevent GLX_ARB_create_context and GLX_ARB_create_context_profile from being advertised (short of adding more #ifdef GLX_USE_APPLEGL)? Thanks, Jeremy (lldb) print known_glx_extensions (const extension_info [34]) $2 = { [0] = { name = 0x00000001004896b4 "GLX_ARB_create_context" name_len = 22 bit = '\0' version_major = '\0' version_minor = '\0' client_support = '\x01' direct_support = '\0' client_only = '\0' direct_only = '\0' } [1] = { name = 0x000000010048aa82 "GLX_ARB_create_context_profile" name_len = 30 bit = '\x01' version_major = '\0' version_minor = '\0' client_support = '\x01' direct_support = '\0' client_only = '\0' direct_only = '\0' } display: /tmp/launch-l5xfi8/org.macosforge.xquartz:0 screen: 0 direct rendering: Yes server glx vendor string: SGI server glx version string: 1.4 server glx extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig client glx vendor string: Mesa Project and SGI client glx version string: 1.4 client glx extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, GLX_EXT_create_context_es2_profile, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event, GLX_EXT_buffer_age GLX version: 1.4 GLX extensions: GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_multithread_makecurrent, GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig OpenGL vendor string: ATI Technologies Inc. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev