mesa: implement AMD_shader_stencil_export

It's just an alias of the ARB variant with some GLSL compiler changes.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Marek Olšák
2011-05-02 16:41:04 +02:00
parent 93754d8499
commit 5ba2e7adf0
4 changed files with 33 additions and 0 deletions
+20
View File
@@ -766,6 +766,22 @@ generate_ARB_shader_stencil_export_variables(exec_list *instructions,
fd->warn_extension = "GL_ARB_shader_stencil_export";
}
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