Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Mon, Dec 1, 2014 at 2:47 PM, Abdiel Janulgue <abdiel.janul...@linux.intel.com> wrote: > There is a bug in the current lowering pass implementation where we lower > saturate > to clamp only for vertex shaders on drivers supporting SM 3.0. The correct > behavior > is to actually lower to clamp only when we don't support saturate which > happens > on drivers that don't support SM 3.0 > > Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> > --- > src/mesa/state_tracker/st_context.c | 2 ++ > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 5 +---- > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/src/mesa/state_tracker/st_context.c > b/src/mesa/state_tracker/st_context.c > index 1723513..9da0c77 100644 > --- a/src/mesa/state_tracker/st_context.c > +++ b/src/mesa/state_tracker/st_context.c > @@ -271,6 +271,8 @@ st_create_context_priv( struct gl_context *ctx, struct > pipe_context *pipe, > */ > st->ctx->Point.MaxSize = MAX2(ctx->Const.MaxPointSize, > ctx->Const.MaxPointSizeAA); > + /* For vertex shaders, make sure not to emit saturate when SM 3.0 is not > supported */ > + ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoSat = > !st->has_shader_model3; > > _mesa_compute_version(ctx); > > diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > index 8e91c4b..3ef7138 100644 > --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > @@ -5391,9 +5391,6 @@ st_link_shader(struct gl_context *ctx, struct > gl_shader_program *prog) > if (!pscreen->get_param(pscreen, PIPE_CAP_TEXTURE_GATHER_OFFSETS)) > lower_offset_arrays(ir); > do_mat_op_to_vec(ir); > - /* Emit saturates in the vertex shader only if SM 3.0 is supported. */ > - bool vs_sm3 = > (_mesa_shader_stage_to_program(prog->_LinkedShaders[i]->Stage) == > - GL_VERTEX_PROGRAM_ARB) && > st_context(ctx)->has_shader_model3; > lower_instructions(ir, > MOD_TO_FRACT | > DIV_TO_MUL_RCP | > @@ -5404,7 +5401,7 @@ st_link_shader(struct gl_context *ctx, struct > gl_shader_program *prog) > BORROW_TO_ARITH | > (options->EmitNoPow ? POW_TO_EXP2 : 0) | > (!ctx->Const.NativeIntegers ? INT_DIV_TO_MUL_RCP : > 0) | > - (vs_sm3 ? SAT_TO_CLAMP : 0)); > + (options->EmitNoSat ? SAT_TO_CLAMP : 0)); > > lower_ubo_reference(prog->_LinkedShaders[i], ir); > do_vec_index_to_cond_assign(ir); > -- > 1.9.1 > > _______________________________________________ > 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