Signed-off-by: Olivier Galibert <galib...@pobox.com> --- src/mesa/main/getstring.c | 6 ++ src/mesa/main/version.c | 140 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 143 insertions(+), 3 deletions(-)
diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c index 431d60b..f9d13a7 100644 --- a/src/mesa/main/getstring.c +++ b/src/mesa/main/getstring.c @@ -58,6 +58,12 @@ shading_language_version(struct gl_context *ctx) return (const GLubyte *) "4.10"; case 420: return (const GLubyte *) "4.20"; + case 430: + return (const GLubyte *) "4.30"; + case 440: + return (const GLubyte *) "4.40"; + case 450: + return (const GLubyte *) "4.50"; default: _mesa_problem(ctx, "Invalid GLSL version in shading_language_version()"); diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index 4dea530..c7a2381 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -290,7 +290,122 @@ compute_version(const struct gl_extensions *extensions, extensions->EXT_texture_swizzle); /* ARB_sampler_objects is always enabled in mesa */ - if (ver_3_3) { + const GLboolean ver_4_0 = (ver_3_3 && + consts->GLSLVersion >= 400 && + extensions->ARB_draw_buffers_blend && + extensions->ARB_draw_indirect && + extensions->ARB_gpu_shader5 && + false && // ARB_gpu_shader_fp64 && + extensions->ARB_sample_shading && + false && // ARB_shader_subroutine + false && // ARB_tesselation_shader + extensions->ARB_texture_buffer_object_rgb32 && + extensions->ARB_texture_cube_map_array && + extensions->ARB_texture_gather && + extensions->ARB_texture_query_lod && + extensions->ARB_transform_feedback2 && + extensions->ARB_transform_feedback3); + + const GLboolean ver_4_1 = (ver_4_0 && + consts->GLSLVersion >= 410 && + extensions->ARB_ES2_compatibility && + false && // ARB_shader_precision + false && // ARB_vertex_attrib_64bit + extensions->ARB_viewport_array); + /* ARB_get_program_binary and + ARB_separate_shader_objects are always enabled in mesa */ + + const GLboolean ver_4_2 = (ver_4_1 && + consts->GLSLVersion >= 420 && + extensions->ARB_texture_compression_bptc && + extensions->ARB_shader_atomic_counters && + extensions->ARB_transform_feedback_instanced && + extensions->ARB_base_instance && + extensions->ARB_shader_image_load_store && + extensions->ARB_conservative_depth && + extensions->ARB_shading_language_420pack && + extensions->ARB_internalformat_query); + /* ARB_compressed_texture_pixel_storage, + ARB_texture_storage and + ARB_map_buffer_alignment are always enabled in mesa */ + + const GLboolean ver_4_3 = (ver_4_2 && + consts->GLSLVersion >= 430 && + false && // ARB_arrays_of_arrays + extensions->ARB_ES3_compatibility && + extensions->ARB_compute_shader && + extensions->ARB_copy_image && + extensions->ARB_explicit_uniform_location && + extensions->ARB_fragment_layer_viewport && + false && // ARB_framebuffer_no_attachments + false && // ARB_internalformat_query2 + extensions->ARB_draw_indirect && + false && // ARB_program_interface_query + false && // ARB_robust_buffer_access_behavior + false && // ARB_shader_image_size + false && // ARB_shader_storage_buffer_object + extensions->ARB_stencil_texturing && + extensions->ARB_texture_buffer_range && + extensions->ARB_texture_query_levels && + extensions->ARB_texture_multisample && + extensions->ARB_texture_view); + /* ARB_clear_buffer_object, + KHR_debug, + ARB_invalidate_subdata and + ARB_vertex_attrib_binding are always enabled in mesa */ + + const GLboolean ver_4_4 = (ver_4_3 && + consts->GLSLVersion >= 440 && + false && // GL_MAX_VERTEX_ATTRIB_STRIDE + extensions->ARB_buffer_storage && + extensions->ARB_clear_texture && + false && // ARB_enhanced_layouts + false && // ARB_query_buffer_object + extensions->ARB_texture_mirror_clamp_to_edge && + false && // ARB_texture_stencil8 + extensions->ARB_vertex_type_10f_11f_11f_rev); + /* ARB_multi_bind is always enabled in mesa */ + + const GLboolean ver_4_5 = (ver_4_4 && + consts->GLSLVersion >= 450 && + false && // ARB_ES3_1_compatibility + false && // ARB_clip_control + extensions->ARB_conditional_render_inverted && + false && // ARB_cull_distance + extensions->ARB_derivative_control && + false && // ARB_direct_state_access + false && // ARB_get_texture_sub_image + false && // ARB_shader_texture_image_samples + extensions->NV_texture_barrier && + false && // KHR_context_flush_control + false && // KHR_robust_buffer_access_behavior + false); // KHR_robustness + + if (ver_4_5) { + major = 4; + minor = 5; + } + else if (ver_4_4) { + major = 4; + minor = 4; + } + else if (ver_4_3) { + major = 4; + minor = 3; + } + else if (ver_4_2) { + major = 4; + minor = 2; + } + else if (ver_4_1) { + major = 4; + minor = 1; + } + else if (ver_4_0) { + major = 4; + minor = 0; + } + else if (ver_3_3) { major = 3; minor = 3; } @@ -371,7 +486,8 @@ compute_version_es2(const struct gl_extensions *extensions) extensions->ARB_texture_non_power_of_two && extensions->EXT_blend_equation_separate); /* FINISHME: This list isn't quite right. */ - const GLboolean ver_3_0 = (extensions->ARB_half_float_vertex && + const GLboolean ver_3_0 = (ver_2_0 && + extensions->ARB_half_float_vertex && extensions->ARB_internalformat_query && extensions->ARB_map_buffer_range && extensions->ARB_shader_texture_lod && @@ -391,7 +507,25 @@ compute_version_es2(const struct gl_extensions *extensions) extensions->EXT_texture_snorm && extensions->NV_primitive_restart && extensions->OES_depth_texture_cube_map); - if (ver_3_0) { + + const GLboolean ver_3_1 = (ver_3_0 && + false && // ARB_arrays_of_arrays + extensions->ARB_compute_shader && + extensions->ARB_explicit_uniform_location && + false && // ARB_framebuffer_no_attachments + false && // ARB_program_interface_query + extensions->ARB_shader_atomic_counters && + extensions->ARB_shader_image_load_store && + false && // ARB_shader_storage_buffer_object + extensions->ARB_stencil_texturing && + extensions->ARB_gpu_shader5 && // Too much? + extensions->EXT_shader_integer_mix); + /* ARB_separate_shader_objects and + ARB_vertex_attrib_binding are always enabled in mesa */ + + if (ver_3_1) { + return 31; + } else if (ver_3_0) { return 30; } else if (ver_2_0) { return 20; -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev