I'm content with waiting to add this until we're even close to supporting any of those versions... especially given all the lines like "false && // ARB_gpu_shader_fp64 &&". That's just clutter.
On 08/21/2014 05:02 AM, Olivier Galibert wrote: > 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; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev