[Mesa-dev] [PATCH v2 01/82] mesa: define ARB_shader_storage_buffer_object extension

Jordan Justen jordan.l.justen at intel.com
Thu Jun 4 00:07:01 PDT 2015


Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2015-06-03 00:00:51, Iago Toral Quiroga wrote:
> From: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
> 
> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
> ---
>  src/glsl/glcpp/glcpp-parse.y    |  3 ++
>  src/glsl/glsl_parser_extras.cpp | 63 +++++++++++++++++++++--------------------
>  src/glsl/glsl_parser_extras.h   |  7 +++++
>  src/mesa/main/extensions.c      |  1 +
>  src/mesa/main/mtypes.h          |  1 +
>  5 files changed, 44 insertions(+), 31 deletions(-)
> 
> diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
> index a11b6b2..ed1bffb 100644
> --- a/src/glsl/glcpp/glcpp-parse.y
> +++ b/src/glsl/glcpp/glcpp-parse.y
> @@ -2483,6 +2483,9 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio
>  
>                if (extensions->ARB_shader_precision)
>                   add_builtin_define(parser, "GL_ARB_shader_precision", 1);
> +
> +             if (extensions->ARB_shader_storage_buffer_object)
> +                add_builtin_define(parser, "GL_ARB_shader_storage_buffer_object", 1);
>            }
>         }
>  
> diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
> index 046d5d7..0d7e521 100644
> --- a/src/glsl/glsl_parser_extras.cpp
> +++ b/src/glsl/glsl_parser_extras.cpp
> @@ -551,37 +551,38 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
>  
>     /* ARB extensions go here, sorted alphabetically.
>      */
> -   EXT(ARB_arrays_of_arrays,           true,  false,     ARB_arrays_of_arrays),
> -   EXT(ARB_compute_shader,             true,  false,     ARB_compute_shader),
> -   EXT(ARB_conservative_depth,         true,  false,     ARB_conservative_depth),
> -   EXT(ARB_derivative_control,         true,  false,     ARB_derivative_control),
> -   EXT(ARB_draw_buffers,               true,  false,     dummy_true),
> -   EXT(ARB_draw_instanced,             true,  false,     ARB_draw_instanced),
> -   EXT(ARB_explicit_attrib_location,   true,  false,     ARB_explicit_attrib_location),
> -   EXT(ARB_explicit_uniform_location,  true,  false,     ARB_explicit_uniform_location),
> -   EXT(ARB_fragment_coord_conventions, true,  false,     ARB_fragment_coord_conventions),
> -   EXT(ARB_fragment_layer_viewport,    true,  false,     ARB_fragment_layer_viewport),
> -   EXT(ARB_gpu_shader5,                true,  false,     ARB_gpu_shader5),
> -   EXT(ARB_gpu_shader_fp64,            true,  false,     ARB_gpu_shader_fp64),
> -   EXT(ARB_sample_shading,             true,  false,     ARB_sample_shading),
> -   EXT(ARB_separate_shader_objects,    true,  false,     dummy_true),
> -   EXT(ARB_shader_atomic_counters,     true,  false,     ARB_shader_atomic_counters),
> -   EXT(ARB_shader_bit_encoding,        true,  false,     ARB_shader_bit_encoding),
> -   EXT(ARB_shader_image_load_store,    true,  false,     ARB_shader_image_load_store),
> -   EXT(ARB_shader_precision,           true,  false,     ARB_shader_precision),
> -   EXT(ARB_shader_stencil_export,      true,  false,     ARB_shader_stencil_export),
> -   EXT(ARB_shader_texture_lod,         true,  false,     ARB_shader_texture_lod),
> -   EXT(ARB_shading_language_420pack,   true,  false,     ARB_shading_language_420pack),
> -   EXT(ARB_shading_language_packing,   true,  false,     ARB_shading_language_packing),
> -   EXT(ARB_texture_cube_map_array,     true,  false,     ARB_texture_cube_map_array),
> -   EXT(ARB_texture_gather,             true,  false,     ARB_texture_gather),
> -   EXT(ARB_texture_multisample,        true,  false,     ARB_texture_multisample),
> -   EXT(ARB_texture_query_levels,       true,  false,     ARB_texture_query_levels),
> -   EXT(ARB_texture_query_lod,          true,  false,     ARB_texture_query_lod),
> -   EXT(ARB_texture_rectangle,          true,  false,     dummy_true),
> -   EXT(ARB_uniform_buffer_object,      true,  false,     ARB_uniform_buffer_object),
> -   EXT(ARB_vertex_attrib_64bit,        true,  false,     ARB_vertex_attrib_64bit),
> -   EXT(ARB_viewport_array,             true,  false,     ARB_viewport_array),
> +   EXT(ARB_arrays_of_arrays,             true,  false,     ARB_arrays_of_arrays),
> +   EXT(ARB_compute_shader,               true,  false,     ARB_compute_shader),
> +   EXT(ARB_conservative_depth,           true,  false,     ARB_conservative_depth),
> +   EXT(ARB_derivative_control,           true,  false,     ARB_derivative_control),
> +   EXT(ARB_draw_buffers,                 true,  false,     dummy_true),
> +   EXT(ARB_draw_instanced,               true,  false,     ARB_draw_instanced),
> +   EXT(ARB_explicit_attrib_location,     true,  false,     ARB_explicit_attrib_location),
> +   EXT(ARB_explicit_uniform_location,    true,  false,     ARB_explicit_uniform_location),
> +   EXT(ARB_fragment_coord_conventions,   true,  false,     ARB_fragment_coord_conventions),
> +   EXT(ARB_fragment_layer_viewport,      true,  false,     ARB_fragment_layer_viewport),
> +   EXT(ARB_gpu_shader5,                  true,  false,     ARB_gpu_shader5),
> +   EXT(ARB_gpu_shader_fp64,              true,  false,     ARB_gpu_shader_fp64),
> +   EXT(ARB_sample_shading,               true,  false,     ARB_sample_shading),
> +   EXT(ARB_separate_shader_objects,      true,  false,     dummy_true),
> +   EXT(ARB_shader_atomic_counters,       true,  false,     ARB_shader_atomic_counters),
> +   EXT(ARB_shader_bit_encoding,          true,  false,     ARB_shader_bit_encoding),
> +   EXT(ARB_shader_image_load_store,      true,  false,     ARB_shader_image_load_store),
> +   EXT(ARB_shader_precision,             true,  false,     ARB_shader_precision),
> +   EXT(ARB_shader_stencil_export,        true,  false,     ARB_shader_stencil_export),
> +   EXT(ARB_shader_storage_buffer_object, true,  false,     ARB_shader_storage_buffer_object),
> +   EXT(ARB_shader_texture_lod,           true,  false,     ARB_shader_texture_lod),
> +   EXT(ARB_shading_language_420pack,     true,  false,     ARB_shading_language_420pack),
> +   EXT(ARB_shading_language_packing,     true,  false,     ARB_shading_language_packing),
> +   EXT(ARB_texture_cube_map_array,       true,  false,     ARB_texture_cube_map_array),
> +   EXT(ARB_texture_gather,               true,  false,     ARB_texture_gather),
> +   EXT(ARB_texture_multisample,          true,  false,     ARB_texture_multisample),
> +   EXT(ARB_texture_query_levels,         true,  false,     ARB_texture_query_levels),
> +   EXT(ARB_texture_query_lod,            true,  false,     ARB_texture_query_lod),
> +   EXT(ARB_texture_rectangle,            true,  false,     dummy_true),
> +   EXT(ARB_uniform_buffer_object,        true,  false,     ARB_uniform_buffer_object),
> +   EXT(ARB_vertex_attrib_64bit,          true,  false,     ARB_vertex_attrib_64bit),
> +   EXT(ARB_viewport_array,               true,  false,     ARB_viewport_array),
>  
>     /* KHR extensions go here, sorted alphabetically.
>      */
> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
> index 9a0c24e..a49548b 100644
> --- a/src/glsl/glsl_parser_extras.h
> +++ b/src/glsl/glsl_parser_extras.h
> @@ -215,6 +215,11 @@ struct _mesa_glsl_parse_state {
>        return ARB_uniform_buffer_object_enable || is_version(140, 300);
>     }
>  
> +   bool has_shader_storage_buffer_objects() const
> +   {
> +      return ARB_shader_storage_buffer_object_enable || is_version(430, 0);
> +   }
> +
>     bool has_separate_shader_objects() const
>     {
>        return ARB_separate_shader_objects_enable || is_version(410, 310)
> @@ -462,6 +467,8 @@ struct _mesa_glsl_parse_state {
>     bool ARB_shader_precision_warn;
>     bool ARB_shader_stencil_export_enable;
>     bool ARB_shader_stencil_export_warn;
> +   bool ARB_shader_storage_buffer_object_enable;
> +   bool ARB_shader_storage_buffer_object_warn;
>     bool ARB_shader_texture_lod_enable;
>     bool ARB_shader_texture_lod_warn;
>     bool ARB_shading_language_420pack_enable;
> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
> index f9bf503..905efb7 100644
> --- a/src/mesa/main/extensions.c
> +++ b/src/mesa/main/extensions.c
> @@ -153,6 +153,7 @@ static const struct extension extension_table[] = {
>     { "GL_ARB_shader_objects",                      o(dummy_true),                              GL,             2002 },
>     { "GL_ARB_shader_precision",                    o(ARB_shader_precision),                    GL,             2010 },
>     { "GL_ARB_shader_stencil_export",               o(ARB_shader_stencil_export),               GL,             2009 },
> +   { "GL_ARB_shader_storage_buffer_object",        o(ARB_shader_storage_buffer_object),        GL,             2012 },
>     { "GL_ARB_shader_texture_lod",                  o(ARB_shader_texture_lod),                  GL,             2009 },
>     { "GL_ARB_shading_language_100",                o(dummy_true),                              GLL,            2003 },
>     { "GL_ARB_shading_language_packing",            o(ARB_shading_language_packing),            GL,             2011 },
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 737f0be..631e01b 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3651,6 +3651,7 @@ struct gl_extensions
>     GLboolean ARB_shader_image_load_store;
>     GLboolean ARB_shader_precision;
>     GLboolean ARB_shader_stencil_export;
> +   GLboolean ARB_shader_storage_buffer_object;
>     GLboolean ARB_shader_texture_lod;
>     GLboolean ARB_shading_language_packing;
>     GLboolean ARB_shading_language_420pack;
> -- 
> 1.9.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list