[Mesa-dev] [PATCH v2] glsl: add GL_OES_geometry_point_size and conditionalize gl_PointSize

Lofstedt, Marta marta.lofstedt at intel.com
Tue Jan 26 00:59:07 PST 2016


Reviewed-by: Marta Lofstedt <marta.lofstedt at intel.com>


> -----Original Message-----
> From: Ilia Mirkin [mailto:ibmirkin at gmail.com] On Behalf Of Ilia Mirkin
> Sent: Friday, January 22, 2016 9:24 PM
> To: mesa-dev at lists.freedesktop.org
> Cc: Lofstedt, Marta; Ilia Mirkin
> Subject: [PATCH v2] glsl: add GL_OES_geometry_point_size and
> conditionalize gl_PointSize
> 
> For now this will be enabled in tandem with GL_OES_geometry_shader.
> Should a driver come along that wants to separate them out, another enable
> can be added.
> 
> Also adds the missed GL_OES_geometry_shader define in glcpp.
> 
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> 
> v1 -> v2: add glcpp defines for both exts
> 
>  src/glsl/builtin_variables.cpp   | 7 ++++++-
>  src/glsl/glcpp/glcpp-parse.y     | 7 +++++++
>  src/glsl/glsl_parser_extras.cpp  | 1 +
>  src/glsl/glsl_parser_extras.h    | 2 ++
>  src/mesa/main/extensions_table.h | 1 +
>  5 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp index
> ccc04c0..25d92cc 100644
> --- a/src/glsl/builtin_variables.cpp
> +++ b/src/glsl/builtin_variables.cpp
> @@ -1201,7 +1201,12 @@ builtin_variable_generator::generate_varyings()
>     /* gl_Position and gl_PointSize are not visible from fragment shaders. */
>     if (state->stage != MESA_SHADER_FRAGMENT) {
>        add_varying(VARYING_SLOT_POS, vec4_t, "gl_Position");
> -      add_varying(VARYING_SLOT_PSIZ, float_t, "gl_PointSize");
> +      if (!state->es_shader ||
> +          state->stage == MESA_SHADER_VERTEX ||
> +          (state->stage == MESA_SHADER_GEOMETRY &&
> +           state->OES_geometry_point_size_enable)) {
> +         add_varying(VARYING_SLOT_PSIZ, float_t, "gl_PointSize");
> +      }
>     }
> 
>     if (state->is_version(130, 0)) {
> diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index
> ef1a657..43a1aa9 100644
> --- a/src/glsl/glcpp/glcpp-parse.y
> +++ b/src/glsl/glcpp/glcpp-parse.y
> @@ -2386,6 +2386,13 @@
> _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser,
> intmax_t versio
>                   add_builtin_define(parser,
> "GL_OES_texture_storage_multisample_2d_array", 1);
>                if (extensions->ARB_blend_func_extended)
>                   add_builtin_define(parser, "GL_EXT_blend_func_extended", 1);
> +
> +              if (version >= 310) {
> +                 if (extensions->OES_geometry_shader) {
> +                    add_builtin_define(parser, "GL_OES_geometry_point_size", 1);
> +                    add_builtin_define(parser, "GL_OES_geometry_shader", 1);
> +                 }
> +              }
>  	   }
>  	} else {
>  	   add_builtin_define(parser, "GL_ARB_draw_buffers", 1); diff
> --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index
> 6038954..7dad466 100644
> --- a/src/glsl/glsl_parser_extras.cpp
> +++ b/src/glsl/glsl_parser_extras.cpp
> @@ -598,6 +598,7 @@ static const _mesa_glsl_extension
> _mesa_glsl_supported_extensions[] = {
>     /* OES extensions go here, sorted alphabetically.
>      */
>     EXT(OES_EGL_image_external,         false, true,
> OES_EGL_image_external),
> +   EXT(OES_geometry_point_size,        false, true,      OES_geometry_shader),
>     EXT(OES_geometry_shader,            false, true,      OES_geometry_shader),
>     EXT(OES_standard_derivatives,       false, true,
> OES_standard_derivatives),
>     EXT(OES_texture_3D,                 false, true,      dummy_true),
> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h index
> 3f88e01..a905b56 100644
> --- a/src/glsl/glsl_parser_extras.h
> +++ b/src/glsl/glsl_parser_extras.h
> @@ -591,6 +591,8 @@ struct _mesa_glsl_parse_state {
>      */
>     bool OES_EGL_image_external_enable;
>     bool OES_EGL_image_external_warn;
> +   bool OES_geometry_point_size_enable;
> +   bool OES_geometry_point_size_warn;
>     bool OES_geometry_shader_enable;
>     bool OES_geometry_shader_warn;
>     bool OES_standard_derivatives_enable; diff --git
> a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
> index 7a4b8a2..7fb4de2 100644
> --- a/src/mesa/main/extensions_table.h
> +++ b/src/mesa/main/extensions_table.h
> @@ -312,6 +312,7 @@ EXT(OES_element_index_uint                  , dummy_true
>  EXT(OES_fbo_render_mipmap                   , dummy_true                             ,  x ,  x ,
> ES1, ES2, 2005)
>  EXT(OES_fixed_point                         , dummy_true                             ,  x ,  x , ES1,  x
> , 2002)
>  EXT(OES_framebuffer_object                  , dummy_true                             ,  x ,  x ,
> ES1,  x , 2005)
> +EXT(OES_geometry_point_size                 , OES_geometry_shader                    ,
> x ,  x ,  x ,  31, 2015)
>  EXT(OES_geometry_shader                     , OES_geometry_shader                    ,  x ,
> x ,  x ,  31, 2015)
>  EXT(OES_get_program_binary                  , dummy_true                             ,  x ,  x ,
> x , ES2, 2008)
>  EXT(OES_mapbuffer                           , dummy_true                             ,  x ,  x , ES1,
> ES2, 2005)
> --
> 2.4.10



More information about the mesa-dev mailing list