-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 05/02/2011 08:50 AM, Marek Olšák wrote: > It's just an alias of the ARB variant with some GLSL compiler changes.
Other than the test suggestion (below) and Brian's comment about the stand-alone compiler: Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > --- > src/glsl/glsl_parser_extras.cpp | 10 ++++++++++ > src/glsl/glsl_parser_extras.h | 2 ++ > src/glsl/ir_variable.cpp | 20 ++++++++++++++++++++ > src/mesa/main/extensions.c | 1 + > 4 files changed, 33 insertions(+), 0 deletions(-) > > diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp > index 5bb3a6f..18bff88 100644 > --- a/src/glsl/glsl_parser_extras.cpp > +++ b/src/glsl/glsl_parser_extras.cpp > @@ -255,6 +255,16 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE > *name_locp, > state->AMD_conservative_depth_enable = (ext_mode != extension_disable); > state->AMD_conservative_depth_warn = (ext_mode == extension_warn); > unsupported = !state->extensions->AMD_conservative_depth; > + } else if (strcmp(name, "GL_AMD_shader_stencil_export") == 0) { > + state->AMD_shader_stencil_export_enable = (ext_mode != > extension_disable); > + state->AMD_shader_stencil_export_warn = (ext_mode == extension_warn); > + > + /* This extension is only supported in fragment shaders. > + * Both the ARB and AMD variants share the same ARB flag > + * in gl_extensions. > + */ > + unsupported = (state->target != fragment_shader) > + || !state->extensions->ARB_shader_stencil_export; I think it's worth adding piglit tests that enabling one extension doesn't make the variables from the other magically appear. #extension GL_AMD_shader_stencil_export: require void main() { gl_FragStencilRefARB = 0; } and #extension GL_ARB_shader_stencil_export: require void main() { gl_FragStencilRefAMD = 0; } I have a sinking feeling that AMD may enable both variables if the AMD extension is enabled. > } else if (strcmp(name, "GL_OES_texture_3D") == 0 && state->es_shader) { > state->OES_texture_3D_enable = (ext_mode != extension_disable); > state->OES_texture_3D_warn = (ext_mode == extension_warn); > diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h > index 6df0e16..f914765 100644 > --- a/src/glsl/glsl_parser_extras.h > +++ b/src/glsl/glsl_parser_extras.h > @@ -172,6 +172,8 @@ struct _mesa_glsl_parse_state { > unsigned ARB_shader_stencil_export_warn:1; > unsigned AMD_conservative_depth_enable:1; > unsigned AMD_conservative_depth_warn:1; > + unsigned AMD_shader_stencil_export_enable:1; > + unsigned AMD_shader_stencil_export_warn:1; > unsigned OES_texture_3D_enable:1; > unsigned OES_texture_3D_warn:1; > /*@}*/ > diff --git a/src/glsl/ir_variable.cpp b/src/glsl/ir_variable.cpp > index f357717..b848769 100644 > --- a/src/glsl/ir_variable.cpp > +++ b/src/glsl/ir_variable.cpp > @@ -767,6 +767,22 @@ generate_ARB_shader_stencil_export_variables(exec_list > *instructions, > } > > static void > +generate_AMD_shader_stencil_export_variables(exec_list *instructions, > + struct _mesa_glsl_parse_state > *state, > + bool warn) > +{ > + /* gl_FragStencilRefAMD is only available in the fragment shader. > + */ > + ir_variable *const fd = > + add_variable(instructions, state->symbols, > + "gl_FragStencilRefAMD", glsl_type::int_type, > + ir_var_out, FRAG_RESULT_STENCIL); > + > + if (warn) > + fd->warn_extension = "GL_AMD_shader_stencil_export"; > +} > + > +static void > generate_120_fs_variables(exec_list *instructions, > struct _mesa_glsl_parse_state *state) > { > @@ -818,6 +834,10 @@ initialize_fs_variables(exec_list *instructions, > if (state->ARB_shader_stencil_export_enable) > generate_ARB_shader_stencil_export_variables(instructions, state, > > state->ARB_shader_stencil_export_warn); > + > + if (state->AMD_shader_stencil_export_enable) > + generate_AMD_shader_stencil_export_variables(instructions, state, > + > state->AMD_shader_stencil_export_warn); > } > > void > diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c > index beec70a..1062cde 100644 > --- a/src/mesa/main/extensions.c > +++ b/src/mesa/main/extensions.c > @@ -260,6 +260,7 @@ static const struct extension extension_table[] = { > { "GL_3DFX_texture_compression_FXT1", > o(TDFX_texture_compression_FXT1), GL, 1999 }, > { "GL_AMD_conservative_depth", > o(AMD_conservative_depth), GL, 2009 }, > { "GL_AMD_draw_buffers_blend", > o(ARB_draw_buffers_blend), GL, 2009 }, > + { "GL_AMD_shader_stencil_export", > o(ARB_shader_stencil_export), GL, 2009 }, > { "GL_APPLE_client_storage", o(APPLE_client_storage), > GL, 2002 }, > { "GL_APPLE_object_purgeable", > o(APPLE_object_purgeable), GL, 2006 }, > { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), > GL, 2002 }, -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk2+9foACgkQX1gOwKyEAw+KeACeNLY2Cj8rtgfr3/tfdXWj84rR cRIAnR3r3d6iwcX7woy1DZzXthV+tYyu =/KLI -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev