Sounds good to me. It matches the SM3 semantics http://msdn.microsoft.com/en-us/library/windows/desktop/bb172934(v=vs.85).aspx
It may expose driver bugs on handling saturate, but such bugs should be fixed regardless. Jose ----- Original Message ----- > v2: change the requirement from GLSL 1.30 to SM 3.0 (R500 can do > this) > --- > I'd like to know if people are okay with this. > > > src/mesa/state_tracker/st_context.c | 1 + > src/mesa/state_tracker/st_context.h | 1 + > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 7 ++++--- > 3 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/state_tracker/st_context.c > b/src/mesa/state_tracker/st_context.c > index b416319..676fc06 100644 > --- a/src/mesa/state_tracker/st_context.c > +++ b/src/mesa/state_tracker/st_context.c > @@ -182,6 +182,7 @@ st_create_context_priv( struct gl_context *ctx, > struct pipe_context *pipe, > > st->has_stencil_export = > screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT); > + st->has_shader_model3 = screen->get_param(screen, PIPE_CAP_SM3); > > /* GL limits and extensions */ > st_init_limits(st); > diff --git a/src/mesa/state_tracker/st_context.h > b/src/mesa/state_tracker/st_context.h > index 70ee671..726c64d 100644 > --- a/src/mesa/state_tracker/st_context.h > +++ b/src/mesa/state_tracker/st_context.h > @@ -84,6 +84,7 @@ struct st_context > GLboolean clamp_vert_color_in_shader; > boolean has_stencil_export; /**< can do shader stencil export? */ > boolean has_time_elapsed; > + boolean has_shader_model3; > > /* On old libGL's for linux we need to invalidate the drawables > * on glViewpport calls, this is set via a option. > diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > index 69061a8..f833321 100644 > --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > @@ -1286,11 +1286,12 @@ > glsl_to_tgsi_visitor::try_emit_mad_for_and_not(ir_expression *ir, > int try_operan > bool > glsl_to_tgsi_visitor::try_emit_sat(ir_expression *ir) > { > - /* Saturates were only introduced to vertex programs in > - * NV_vertex_program3, so don't give them to drivers in the VP. > + /* Emit saturates in the vertex shader only if SM 3.0 is > supported. > */ > - if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) > + if (this->prog->Target == GL_VERTEX_PROGRAM_ARB && > + !st_context(this->ctx)->has_shader_model3) { > return false; > + } > > ir_rvalue *sat_src = ir->as_rvalue_to_saturate(); > if (!sat_src) > -- > 1.7.10.4 > > _______________________________________________ > 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