On Tue, Apr 30, 2013 at 9:57 AM, Ian Romanick <i...@freedesktop.org> wrote: > On 04/27/2013 04:32 PM, Jordan Justen wrote: >> >> This GLSL extension requires that AMD_vertex_shader_layer be >> enabled by the driver. > > Most (all?) extensions also add a preprocessor define. Can you poke at > AMD's driver to see if GL_AMD_vertex_shader_layer is defined? If so, then > we need to add it too.
Unfortunately, I don't have an AMD card. Anuj tried my piglit test with his AMD card, and found the extension wasn't available. -Jordan >> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> >> --- >> src/glsl/builtin_variables.cpp | 31 +++++++++++++++++++++++++++++++ >> src/glsl/glsl_parser_extras.cpp | 1 + >> src/glsl/glsl_parser_extras.h | 2 ++ >> 3 files changed, 34 insertions(+) >> >> diff --git a/src/glsl/builtin_variables.cpp >> b/src/glsl/builtin_variables.cpp >> index b0c7a20..098c3f1 100644 >> --- a/src/glsl/builtin_variables.cpp >> +++ b/src/glsl/builtin_variables.cpp >> @@ -39,6 +39,12 @@ generate_ARB_draw_instanced_variables(exec_list *, >> struct _mesa_glsl_parse_state *, >> bool, _mesa_glsl_parser_targets); >> >> +static void >> +generate_AMD_vertex_shader_layer_variables(exec_list *instructions, >> + struct _mesa_glsl_parse_state >> *state, >> + bool warn, >> + _mesa_glsl_parser_targets >> target); >> + >> struct builtin_variable { >> enum ir_variable_mode mode; >> int slot; >> @@ -818,6 +824,8 @@ generate_130_vs_variables(exec_list *instructions, >> "gl_ClipDistance", clip_distance_array_type, >> ir_var_shader_out, >> VARYING_SLOT_CLIP_DIST0); >> >> + generate_AMD_vertex_shader_layer_variables(instructions, state, false, >> + vertex_shader); >> } >> >> >> @@ -1020,6 +1028,29 @@ generate_ARB_draw_instanced_variables(exec_list >> *instructions, >> } >> } >> >> +static void >> +generate_AMD_vertex_shader_layer_variables(exec_list *instructions, >> + struct _mesa_glsl_parse_state >> *state, >> + bool warn, >> + _mesa_glsl_parser_targets >> target) >> +{ >> + /* gl_Layer is only available in the vertex shader for the >> + * AMD_vertex_shader_layer extension. It will also be available in the >> + * geometry shader when GLSL 1.50 is supported. >> + */ >> + if (target != vertex_shader) >> + return; >> + >> + if (state->AMD_vertex_shader_layer_enable) { >> + ir_variable *inst = >> + add_variable(instructions, state->symbols, >> + "gl_Layer", glsl_type::int_type, >> + ir_var_shader_out, VARYING_SLOT_LAYER); >> + >> + if (warn) >> + inst->warn_extension = "GL_AMD_vertex_shader_layer"; >> + } >> +} >> >> static void >> generate_ARB_shader_stencil_export_variables(exec_list *instructions, >> diff --git a/src/glsl/glsl_parser_extras.cpp >> b/src/glsl/glsl_parser_extras.cpp >> index 0992294..e419264 100644 >> --- a/src/glsl/glsl_parser_extras.cpp >> +++ b/src/glsl/glsl_parser_extras.cpp >> @@ -468,6 +468,7 @@ static const _mesa_glsl_extension >> _mesa_glsl_supported_extensions[] = { >> EXT(ARB_shading_language_packing, true, false, true, true, >> false, ARB_shading_language_packing), >> EXT(ARB_texture_multisample, true, false, true, true, >> false, ARB_texture_multisample), >> EXT(ARB_texture_query_lod, false, false, true, true, >> false, ARB_texture_query_lod), >> + EXT(AMD_vertex_shader_layer, true, false, false, true, false, >> AMD_vertex_shader_layer), >> }; >> >> #undef EXT >> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h >> index 95891b5..3386365 100644 >> --- a/src/glsl/glsl_parser_extras.h >> +++ b/src/glsl/glsl_parser_extras.h >> @@ -284,6 +284,8 @@ struct _mesa_glsl_parse_state { >> bool ARB_texture_multisample_warn; >> bool ARB_texture_query_lod_enable; >> bool ARB_texture_query_lod_warn; >> + bool AMD_vertex_shader_layer_enable; >> + bool AMD_vertex_shader_layer_warn; >> /*@}*/ >> >> /** Extensions supported by the OpenGL implementation. */ >> > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev