-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 05/02/2011 08:57 AM, Brian Paul wrote: > On 05/02/2011 09:50 AM, Marek Olšák wrote: >> It's just an alias of the ARB variant with some GLSL compiler changes. >> --- >> 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; >> } 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 }, > > Does the ARB/AMD extension also need to be enabled in src/glsl/main.cpp > for bootstrapping the compiler? I'm not clear on that myself.
That's only required if the extension adds new functions, but it's probably a good idea. > Otherwise, Reviewed-by: <bri...@vmware.com> > > You might want to wait for Ian or Eric to take a look too. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk2+9KIACgkQX1gOwKyEAw/8FwCZAVgJESlNvrOHr5BRAqPTnlh1 EwEAmwSF+aVRQ5o9puyUXm5FAF+YoN3j =GtIk -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev