@@ -88,6 +88,8 @@ static Cvar::Cvar<bool> r_arb_map_buffer_range( "r_arb_map_buffer_range",
8888 " Use GL_ARB_map_buffer_range if available" , Cvar::NONE, true );
8989static Cvar::Cvar<bool > r_arb_multi_draw_indirect ( " r_arb_multi_draw_indirect" ,
9090 " Use GL_ARB_multi_draw_indirect if available" , Cvar::NONE, true );
91+ static Cvar::Cvar<bool > r_arb_program_interface_query ( " r_arb_program_interface_query" ,
92+ " Load GL_ARB_program_interface_query if available" , Cvar::NONE, true );
9193static Cvar::Cvar<bool > r_arb_shader_draw_parameters ( " r_arb_shader_draw_parameters" ,
9294 " Use GL_ARB_shader_draw_parameters if available" , Cvar::NONE, true );
9395static Cvar::Cvar<bool > r_arb_shader_atomic_counters ( " r_arb_shader_atomic_counters" ,
@@ -2509,6 +2511,12 @@ static void GLimp_InitExtensions()
25092511 // made required in OpenGL 4.6
25102512 glConfig.shaderDrawParametersAvailable = LOAD_EXTENSION_WITH_TEST ( ExtFlag_NONE, ARB_shader_draw_parameters, shaderDrawParametersEnabled );
25112513
2514+ // made required in OpenGL 4.3
2515+ // We don't use it but the ARB_shader_storage_buffer_object spec says "OpenGL 4.3 or ARB_program_interface_query is required" and
2516+ // Intel's driver interprets that as meaning we must explicitly load the extension for SSBOs to work?
2517+ // But don't stop ourselves from using SSBOs if this fails.
2518+ LOAD_EXTENSION_WITH_TEST ( ExtFlag_NONE, ARB_program_interface_query, r_arb_program_interface_query.Get () );
2519+
25122520 // made required in OpenGL 4.3
25132521 glConfig.SSBOAvailable = LOAD_EXTENSION_WITH_TEST ( ExtFlag_NONE, ARB_shader_storage_buffer_object, r_arb_shader_storage_buffer_object.Get () );
25142522
0 commit comments