I just try to run this:
int main(int argc, char **argv) {
EGLDisplay display;
EGLConfig config;
EGLContext context;
EGLint num_config;
display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
if (display == EGL_NO_DISPLAY)
{
std:: cout << "ERROR: EGL could not be initialized"<< std::endl;
exit(EXIT_FAILURE);
}
if (!eglInitialize(display, nullptr, nullptr))
{
std:: cout << "ERROR: Could not start EGL display connection"<< std::endl;
exit(EXIT_FAILURE);
}
if (eglChooseConfig(display, nullptr, &config, 1, &num_config) != EGL_TRUE)
{
std:: cout << "ERROR: Configuration selection failed" << std::endl;
exit(EXIT_FAILURE);
}
eglBindAPI(EGL_OPENGL_API);
context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
if (eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, context) != EGL_TRUE) {
std:: cout << "ERROR: Display was not made current one"<< std::endl;
exit(EXIT_FAILURE);
}
GLenum err = glewInit();
if (GLEW_OK != err)
{
std:: cout << "GLEW Error: " << glewGetErrorString(err) << std::endl;
exit(EXIT_FAILURE);
}
// ... some code here
}
But when running it I have:
GLEW Error: Missing GL version
It looks like my glewInit() fails with the GL context but I don't understand why, because my glewInit() is called after context creation. And there is no error from EGL.
The purpose of this code is to be able to have an Opengl context without any window. This code was working in the past but not since I upgraded my Ubuntu 17.10 with Nvidia 384, working on Quadro K2000M.
Here is my glxinfo:
glxinfo
name of display: :1
display: :1 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness,
GLX_ARB_fbconfig_float, GLX_ARB_multisample, GLX_EXT_buffer_age,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_libglvnd,
GLX_EXT_stereo_tree, GLX_EXT_swap_control, GLX_EXT_swap_control_tear,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_NV_copy_buffer, GLX_NV_copy_image, GLX_NV_delay_before_swap,
GLX_NV_float_buffer, GLX_NV_robustness_video_memory_purge,
GLX_NV_swap_group, GLX_NV_video_capture, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness,
GLX_ARB_fbconfig_float, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float,
GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_stereo_tree,
GLX_EXT_swap_control, GLX_EXT_swap_control_tear,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_NV_copy_buffer, GLX_NV_copy_image, GLX_NV_delay_before_swap,
GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_NV_present_video,
GLX_NV_robustness_video_memory_purge, GLX_NV_swap_group,
GLX_NV_video_capture, GLX_NV_video_out, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness,
GLX_ARB_fbconfig_float, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_create_context_es_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_stereo_tree, GLX_EXT_swap_control,
GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_copy_buffer,
GLX_NV_copy_image, GLX_NV_delay_before_swap, GLX_NV_float_buffer,
GLX_NV_robustness_video_memory_purge, GLX_NV_swap_group,
GLX_NV_video_capture, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: Quadro M2000M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 384.90
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
GL_AMD_multi_draw_indirect, GL_AMD_seamless_cubemap_per_texture,
GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility,
GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility,
GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_bindless_texture,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage, GL_ARB_cl_event,
GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_compute_shader, GL_ARB_compute_variable_group_size,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_cull_distance,
GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp,
GL_ARB_depth_texture, GL_ARB_derivative_control,
GL_ARB_direct_state_access, GL_ARB_draw_buffers,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments,
GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
GL_ARB_geometry_shader4, GL_ARB_get_program_binary,
GL_ARB_get_texture_sub_image, GL_ARB_gl_spirv, GL_ARB_gpu_shader5,
GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_indirect_parameters,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata,
GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind,
GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_parallel_shader_compile, GL_ARB_pipeline_statistics_query,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_program_interface_query, GL_ARB_provoking_vertex,
GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior,
GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects,
GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture,
GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops,
GL_ARB_shader_atomic_counters, GL_ARB_shader_ballot,
GL_ARB_shader_bit_encoding, GL_ARB_shader_clock,
GL_ARB_shader_draw_parameters, GL_ARB_shader_group_vote,
GL_ARB_shader_image_load_store, GL_ARB_shader_image_size,
GL_ARB_shader_objects, GL_ARB_shader_precision,
GL_ARB_shader_storage_buffer_object, GL_ARB_shader_subroutine,
GL_ARB_shader_texture_image_samples, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
GL_ARB_shadow, GL_ARB_sparse_buffer, GL_ARB_sparse_texture,
GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader,
GL_ARB_texture_barrier, GL_ARB_texture_border_clamp,
GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32,
GL_ARB_texture_buffer_range, GL_ARB_texture_compression,
GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_stencil8, GL_ARB_texture_storage,
GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle,
GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2,
GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced,
GL_ARB_transform_feedback_overflow_query, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit,
GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers,
GL_ATI_texture_float, GL_ATI_texture_mirror_once,
GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_import_sync_object, GL_EXT_memory_object, GL_EXT_memory_object_fd,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_semaphore, GL_EXT_semaphore_fd, GL_EXT_separate_shader_objects,
GL_EXT_separate_specular_color, GL_EXT_shader_image_load_formatted,
GL_EXT_shader_image_load_store, GL_EXT_shader_integer_mix,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_buffer_object,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_storage, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback2, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
GL_EXT_vertex_attrib_64bit, GL_EXT_window_rectangles,
GL_EXT_x11_sync_object, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced,
GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control,
GL_KHR_debug, GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior,
GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render,
GL_NVX_gpu_memory_info, GL_NVX_nvenc_interop, GL_NV_ES1_1_compatibility,
GL_NV_ES3_1_compatibility, GL_NV_alpha_to_coverage_dither_control,
GL_NV_bindless_multi_draw_indirect,
GL_NV_bindless_multi_draw_indirect_count, GL_NV_bindless_texture,
GL_NV_blend_equation_advanced, GL_NV_blend_equation_advanced_coherent,
GL_NV_blend_square, GL_NV_command_list, GL_NV_compute_program5,
GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image,
GL_NV_deep_texture3D, GL_NV_depth_buffer_float, GL_NV_depth_clamp,
GL_NV_draw_texture, GL_NV_draw_vulkan_image, GL_NV_explicit_multisample,
GL_NV_fence, GL_NV_float_buffer, GL_NV_fog_distance,
GL_NV_fragment_program, GL_NV_fragment_program2,
GL_NV_fragment_program_option, GL_NV_framebuffer_multisample_coverage,
GL_NV_geometry_shader4, GL_NV_gpu_program4, GL_NV_gpu_program4_1,
GL_NV_gpu_program5, GL_NV_gpu_program5_mem_extended,
GL_NV_gpu_program_fp64, GL_NV_gpu_shader5, GL_NV_half_float,
GL_NV_internalformat_sample_query, GL_NV_light_max_exponent,
GL_NV_multisample_coverage, GL_NV_multisample_filter_hint,
GL_NV_occlusion_query, GL_NV_packed_depth_stencil,
GL_NV_parameter_buffer_object, GL_NV_parameter_buffer_object2,
GL_NV_path_rendering, GL_NV_pixel_data_range, GL_NV_point_sprite,
GL_NV_primitive_restart, GL_NV_register_combiners,
GL_NV_register_combiners2, GL_NV_robustness_video_memory_purge,
GL_NV_shader_atomic_counters, GL_NV_shader_atomic_float,
GL_NV_shader_atomic_int64, GL_NV_shader_buffer_load,
GL_NV_shader_storage_buffer_object, GL_NV_shader_thread_group,
GL_NV_shader_thread_shuffle, GL_NV_texgen_reflection,
GL_NV_texture_barrier, GL_NV_texture_compression_vtc,
GL_NV_texture_env_combine4, GL_NV_texture_multisample,
GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2,
GL_NV_texture_shader3, GL_NV_transform_feedback,
GL_NV_transform_feedback2, GL_NV_uniform_buffer_unified_memory,
GL_NV_vdpau_interop, GL_NV_vertex_array_range, GL_NV_vertex_array_range2,
GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory,
GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
OpenGL version string: 4.5.0 NVIDIA 384.90
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
GL_AMD_multi_draw_indirect, GL_AMD_seamless_cubemap_per_texture,
GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility,
GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility,
GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_bindless_texture,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage, GL_ARB_cl_event,
GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compatibility,
GL_ARB_compressed_texture_pixel_storage, GL_ARB_compute_shader,
GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted,
GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_copy_image,
GL_ARB_cull_distance, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_derivative_control,
GL_ARB_direct_state_access, GL_ARB_draw_buffers,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments,
GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
GL_ARB_geometry_shader4, GL_ARB_get_program_binary,
GL_ARB_get_texture_sub_image, GL_ARB_gl_spirv, GL_ARB_gpu_shader5,
GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_indirect_parameters,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata,
GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind,
GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_parallel_shader_compile, GL_ARB_pipeline_statistics_query,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_program_interface_query, GL_ARB_provoking_vertex,
GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior,
GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects,
GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture,
GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops,
GL_ARB_shader_atomic_counters, GL_ARB_shader_ballot,
GL_ARB_shader_bit_encoding, GL_ARB_shader_clock,
GL_ARB_shader_draw_parameters, GL_ARB_shader_group_vote,
GL_ARB_shader_image_load_store, GL_ARB_shader_image_size,
GL_ARB_shader_objects, GL_ARB_shader_precision,
GL_ARB_shader_storage_buffer_object, GL_ARB_shader_subroutine,
GL_ARB_shader_texture_image_samples, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
GL_ARB_shadow, GL_ARB_sparse_buffer, GL_ARB_sparse_texture,
GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader,
GL_ARB_texture_barrier, GL_ARB_texture_border_clamp,
GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32,
GL_ARB_texture_buffer_range, GL_ARB_texture_compression,
GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_stencil8, GL_ARB_texture_storage,
GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle,
GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2,
GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced,
GL_ARB_transform_feedback_overflow_query, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit,
GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers,
GL_ATI_texture_float, GL_ATI_texture_mirror_once,
GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_import_sync_object, GL_EXT_memory_object, GL_EXT_memory_object_fd,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_semaphore, GL_EXT_semaphore_fd, GL_EXT_separate_shader_objects,
GL_EXT_separate_specular_color, GL_EXT_shader_image_load_formatted,
GL_EXT_shader_image_load_store, GL_EXT_shader_integer_mix,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_buffer_object,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_storage, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback2, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
GL_EXT_vertex_attrib_64bit, GL_EXT_window_rectangles,
GL_EXT_x11_sync_object, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced,
GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control,
GL_KHR_debug, GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior,
GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render,
GL_NVX_gpu_memory_info, GL_NVX_nvenc_interop, GL_NV_ES1_1_compatibility,
GL_NV_ES3_1_compatibility, GL_NV_alpha_to_coverage_dither_control,
GL_NV_bindless_multi_draw_indirect,
GL_NV_bindless_multi_draw_indirect_count, GL_NV_bindless_texture,
GL_NV_blend_equation_advanced, GL_NV_blend_equation_advanced_coherent,
GL_NV_blend_square, GL_NV_command_list, GL_NV_compute_program5,
GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image,
GL_NV_deep_texture3D, GL_NV_depth_buffer_float, GL_NV_depth_clamp,
GL_NV_draw_texture, GL_NV_draw_vulkan_image, GL_NV_explicit_multisample,
GL_NV_fence, GL_NV_float_buffer, GL_NV_fog_distance,
GL_NV_fragment_program, GL_NV_fragment_program2,
GL_NV_fragment_program_option, GL_NV_framebuffer_multisample_coverage,
GL_NV_geometry_shader4, GL_NV_gpu_program4, GL_NV_gpu_program4_1,
GL_NV_gpu_program5, GL_NV_gpu_program5_mem_extended,
GL_NV_gpu_program_fp64, GL_NV_gpu_shader5, GL_NV_half_float,
GL_NV_internalformat_sample_query, GL_NV_light_max_exponent,
GL_NV_multisample_coverage, GL_NV_multisample_filter_hint,
GL_NV_occlusion_query, GL_NV_packed_depth_stencil,
GL_NV_parameter_buffer_object, GL_NV_parameter_buffer_object2,
GL_NV_path_rendering, GL_NV_pixel_data_range, GL_NV_point_sprite,
GL_NV_primitive_restart, GL_NV_register_combiners,
GL_NV_register_combiners2, GL_NV_robustness_video_memory_purge,
GL_NV_shader_atomic_counters, GL_NV_shader_atomic_float,
GL_NV_shader_atomic_int64, GL_NV_shader_buffer_load,
GL_NV_shader_storage_buffer_object, GL_NV_shader_thread_group,
GL_NV_shader_thread_shuffle, GL_NV_texgen_reflection,
GL_NV_texture_barrier, GL_NV_texture_compression_vtc,
GL_NV_texture_env_combine4, GL_NV_texture_multisample,
GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2,
GL_NV_texture_shader3, GL_NV_transform_feedback,
GL_NV_transform_feedback2, GL_NV_uniform_buffer_unified_memory,
GL_NV_vdpau_interop, GL_NV_vertex_array_range, GL_NV_vertex_array_range2,
GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory,
GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 384.90
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
GL_ANDROID_extension_pack_es31a, GL_EXT_base_instance,
GL_EXT_blend_func_extended, GL_EXT_blend_minmax, GL_EXT_buffer_storage,
GL_EXT_clip_cull_distance, GL_EXT_color_buffer_float,
GL_EXT_color_buffer_half_float, GL_EXT_compressed_ETC1_RGB8_sub_texture,
GL_EXT_copy_image, GL_EXT_debug_label, GL_EXT_discard_framebuffer,
GL_EXT_disjoint_timer_query, GL_EXT_draw_buffers_indexed,
GL_EXT_draw_elements_base_vertex, GL_EXT_draw_transform_feedback,
GL_EXT_float_blend, GL_EXT_frag_depth, GL_EXT_geometry_point_size,
GL_EXT_geometry_shader, GL_EXT_gpu_shader5, GL_EXT_map_buffer_range,
GL_EXT_memory_object, GL_EXT_memory_object_fd, GL_EXT_multi_draw_indirect,
GL_EXT_multisample_compatibility, GL_EXT_occlusion_query_boolean,
GL_EXT_polygon_offset_clamp, GL_EXT_primitive_bounding_box,
GL_EXT_protected_textures, GL_EXT_render_snorm, GL_EXT_robustness,
GL_EXT_sRGB, GL_EXT_sRGB_write_control, GL_EXT_semaphore,
GL_EXT_semaphore_fd, GL_EXT_separate_shader_objects,
GL_EXT_shader_group_vote, GL_EXT_shader_implicit_conversions,
GL_EXT_shader_integer_mix, GL_EXT_shader_io_blocks,
GL_EXT_shader_non_constant_global_initializers, GL_EXT_shader_texture_lod,
GL_EXT_shadow_samplers, GL_EXT_sparse_texture,
GL_EXT_tessellation_point_size, GL_EXT_tessellation_shader,
GL_EXT_texture_border_clamp, GL_EXT_texture_buffer,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map_array, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_format_BGRA8888, GL_EXT_texture_norm16, GL_EXT_texture_rg,
GL_EXT_texture_sRGB_R8, GL_EXT_texture_sRGB_decode,
GL_EXT_texture_storage, GL_EXT_texture_view, GL_EXT_unpack_subimage,
GL_EXT_window_rectangles, GL_KHR_blend_equation_advanced,
GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control,
GL_KHR_debug, GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior,
GL_KHR_robustness, GL_NV_bgr, GL_NV_bindless_texture,
GL_NV_blend_equation_advanced, GL_NV_blend_equation_advanced_coherent,
GL_NV_conditional_render, GL_NV_copy_buffer, GL_NV_copy_image,
GL_NV_draw_buffers, GL_NV_draw_instanced, GL_NV_draw_texture,
GL_NV_draw_vulkan_image, GL_NV_explicit_attrib_location,
GL_NV_fbo_color_attachments, GL_NV_framebuffer_blit,
GL_NV_framebuffer_multisample, GL_NV_generate_mipmap_sRGB,
GL_NV_gpu_shader5, GL_NV_image_formats, GL_NV_instanced_arrays,
GL_NV_internalformat_sample_query, GL_NV_non_square_matrices,
GL_NV_occlusion_query_samples, GL_NV_pack_subimage, GL_NV_packed_float,
GL_NV_packed_float_linear, GL_NV_path_rendering,
GL_NV_pixel_buffer_object, GL_NV_polygon_mode, GL_NV_read_buffer,
GL_NV_read_depth, GL_NV_read_depth_stencil, GL_NV_read_stencil,
GL_NV_sRGB_formats, GL_NV_shader_noperspective_interpolation,
GL_NV_shadow_samplers_array, GL_NV_shadow_samplers_cube,
GL_NV_texture_array, GL_NV_texture_barrier, GL_NV_texture_border_clamp,
GL_NV_texture_compression_latc, GL_NV_texture_compression_s3tc,
GL_NV_texture_compression_s3tc_update, GL_NV_timer_query,
GL_NV_viewport_array, GL_OES_compressed_ETC1_RGB8_texture,
GL_OES_copy_image, GL_OES_depth24, GL_OES_depth32, GL_OES_depth_texture,
GL_OES_depth_texture_cube_map, GL_OES_draw_buffers_indexed,
GL_OES_draw_elements_base_vertex, GL_OES_element_index_uint,
GL_OES_fbo_render_mipmap, GL_OES_geometry_point_size,
GL_OES_geometry_shader, GL_OES_get_program_binary, GL_OES_gpu_shader5,
GL_OES_mapbuffer, GL_OES_packed_depth_stencil,
GL_OES_primitive_bounding_box, GL_OES_rgb8_rgba8, GL_OES_sample_shading,
GL_OES_sample_variables, GL_OES_shader_image_atomic,
GL_OES_shader_io_blocks, GL_OES_shader_multisample_interpolation,
GL_OES_standard_derivatives, GL_OES_tessellation_point_size,
GL_OES_tessellation_shader, GL_OES_texture_border_clamp,
GL_OES_texture_buffer, GL_OES_texture_cube_map_array,
GL_OES_texture_float, GL_OES_texture_float_linear,
GL_OES_texture_half_float, GL_OES_texture_half_float_linear,
GL_OES_texture_npot, GL_OES_texture_stencil8,
GL_OES_texture_storage_multisample_2d_array, GL_OES_texture_view,
GL_OES_vertex_array_object, GL_OES_vertex_half_float,
GL_OES_viewport_array
Any clue? Am I doing something wrong?
Edit:
From es2_info:
EGL_VERSION: 1.4
EGL_VENDOR: NVIDIA
EGL_CLIENT_APIS: OpenGL_ES OpenGL
GL_VERSION: OpenGL ES 3.2 NVIDIA 384.90
GL_RENDERER: Quadro M2000M/PCIe/SSE2
I removed extensions. Limitation of stackoverflow
ORIGINAL ANSWER 28th Nov 2017:
I think this is a bug in a recent version of the nvidia package:
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-384/+bug/1731968
My EGL program works fine for me on my prod server, where I have these nvidia packages:
But it started failing on my test server after installing updates (
apt-get updatefollowed byapt-get upgrade), where I then had these nvidia packages:I downgraded the nvidia-384 package to the older version:
Then rebooted. After that I now have this:
And now my EGL program works again!
UPDATE 15th Jan 2018:
A few days ago Ubuntu released the 384.111 update, which contains a fix for one of the Spectre vulnerabilities:
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-384/+bug/1741807
This update was auto-applied and again broke EGL on my server, with the following packages installed:
The previous fix to downgrade to 384.90-0ubuntu0.16.04.1 no longer works:
This is because it was superseded and removed on the 10th of Jan 2018:
https://launchpad.net/ubuntu/+source/nvidia-graphics-drivers-384/+publishinghistory
I was able to work around this by removing all NVIDIA packages:
And then manually installing the 384.90 driver:
My EGL program now worked again. However note that it is now running an unpatched driver, so this may not be suitable for you as it may open your system to vulnerabilities.
UPDATE 15th Jan 2018 (part 2):
Just for some extra background / reference, I have also tried the beta of 390.12 from here, which was released on the 13th of Jan:
https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
I did the following:
Which results in the following list of installed packages:
However EGL still doesn't work.
UPDATE 16th Mar 2018:
The beta of 390.25 was released on the 30th of Jan. To try that I did the following again:
Which results in the following list of installed packages:
However EGL still doesn't work.
UPDATE 17th May 2018:
I was setting up a new server, and so tried this again.
From https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa the 'long-lived branch release' is now at 390.48 (released 18th April), and the 'short-lived branch release' is now at 396.24 (released 3rd May).
I tried 390.48:
Which resulted in the following list of installed packages:
However EGL still doesn't work.
I tried 396.24:
Which resulted in the following list of installed packages:
However EGL still doesn't work.
Manually installing the 384.90 driver still works.
I had previously been installing on AWS g2.2xlarge servers. This time I was installing on an Azure NC6 server, and I had to disable unified memory or else the installation would fail, ie:
Note that without unified memory, CUDA is not available.
Also note as mentioned above, this is still an unpatched driver from before the Spectre vulnerability patches.
UPDATE 25th June 2018:
From https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa the latest versions are now 390.67 (released 7th June), and 396.24.02 (released 4th June).
I tried 390.67:
EGL still didn't work.
I tried 396.24.02:
EGL still didn't work.
I also tried 384.130 (released 29th March 2018), which is the "old long-lived branch release":
EGL still didn't work.
The reason I tried these again today is that EGL stopped working on my server after a reboot.
A manual install of the old 384.90 driver (which had worked for me before as described in the earlier updates) would fail with the following errors in /var/log/nvidia-installer.log:
This error was because the Linux timers API was changed in kernel 4.15:
https://lwn.net/Articles/735887/
https://github.com/torvalds/linux/commit/513ae785c63c30741e46f43960213d4ae5382ec0#diff-ba8897e9349509c7ca4d37b0704bee9c
And my server had recently upgraded to kernel 4.15:
To allow the old driver to work, I reverted back to kernel 4.13 by using these instructions to change the grub config. First I checked what grub menu items were available:
The kernel I wanted was
Ubuntu, with Linux 4.13.0-1018-azureunder theAdvanced options for Ubuntusubmenu.So I edited /etc/default/grub to change the GRUB_DEFAULT line to:
Then:
Then reboot, and check the kernel:
I was then able to get EGL to work again with the old 384.90 driver.
UPDATE 8th January 2019:
From https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa the latest versions are now 410.78 (long-lived branch, released 26th November 2018), and 415.25 (released 20th December 2018).
I tried 410.78:
EGL still didn't work.
I tried 415.25:
EGL still didn't work.
For a different approach, I also tried installing the drivers via the cuda drivers package, based on the steps described at https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html:
EGL still didn't work.
I did the following to remove the cuda installation:
Manually installing the old 384.90 driver still worked.
A comment from August 2018 on the original bug report says:
To test this I tried manually installing the latest driver from https://www.nvidia.com/object/unix.html (currently 410.93 on the long-lived branch):
Running the test case from the original bug report now worked!
It even worked when I reinstated the 4.15 kernel that I had previously had to disable.
The following is required to uninstall this manually-installed driver:
For comparison I also tried a manual install of the latest CUDA driver (which includes version 410.48 of the nvidia driver) using the runfile instead of the package method:
This also worked.
UPDATE 13th February 2019:
I hit the 30,000 character limit for this answer, and had to continue in a separate answer.