On Mon, Sep 28, 2015 at 8:38 PM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > This is only a half of the work. The next patch will handle > gl_SampleID/SamplePos, which is the other half of ARB_sample_shading. > --- > src/mesa/state_tracker/st_atom_rasterizer.c | 8 ++++++++ > src/mesa/state_tracker/st_atom_shader.c | 1 + > src/mesa/state_tracker/st_context.c | 2 ++ > src/mesa/state_tracker/st_context.h | 1 + > 4 files changed, 12 insertions(+) > > diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c > b/src/mesa/state_tracker/st_atom_rasterizer.c > index cceed42..3a9c461 100644 > --- a/src/mesa/state_tracker/st_atom_rasterizer.c > +++ b/src/mesa/state_tracker/st_atom_rasterizer.c > @@ -237,6 +237,14 @@ static void update_raster_state( struct st_context *st ) > /* _NEW_MULTISAMPLE */ > raster->multisample = ctx->Multisample._Enabled; > > + /* _NEW_MULTISAMPLE | _NEW_BUFFERS */ > + raster->force_persample_interp = > + st->can_force_persample_interp && > + ctx->Multisample._Enabled && > + ctx->Multisample.SampleShading && > + MAX2(ceil(ctx->Multisample.MinSampleShadingValue * > + ctx->DrawBuffer->Visual.samples), 1) > 1;
The max seems unnecessary... as does the ceil. You should just be able to do MinSampleShadingValue * samples > 1. With that fixed, Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > + > /* _NEW_SCISSOR */ > raster->scissor = ctx->Scissor.EnableFlags; > > diff --git a/src/mesa/state_tracker/st_atom_shader.c > b/src/mesa/state_tracker/st_atom_shader.c > index fee15a9..dc03156 100644 > --- a/src/mesa/state_tracker/st_atom_shader.c > +++ b/src/mesa/state_tracker/st_atom_shader.c > @@ -72,6 +72,7 @@ update_fp( struct st_context *st ) > > /* Ignore sample qualifier while computing this flag. */ > key.persample_shading = > + !st->can_force_persample_interp && > _mesa_get_min_invocations_per_fragment(st->ctx, &stfp->Base, true) > 1; > > st->fp_variant = st_get_fp_variant(st, stfp, &key); > diff --git a/src/mesa/state_tracker/st_context.c > b/src/mesa/state_tracker/st_context.c > index 72c23ca..7061191 100644 > --- a/src/mesa/state_tracker/st_context.c > +++ b/src/mesa/state_tracker/st_context.c > @@ -237,6 +237,8 @@ st_create_context_priv( struct gl_context *ctx, struct > pipe_context *pipe, > PIPE_BIND_SAMPLER_VIEW); > st->prefer_blit_based_texture_transfer = screen->get_param(screen, > PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER); > + st->can_force_persample_interp = screen->get_param(screen, > + PIPE_CAP_FORCE_PERSAMPLE_INTERP); > > st->needs_texcoord_semantic = > screen->get_param(screen, PIPE_CAP_TGSI_TEXCOORD); > diff --git a/src/mesa/state_tracker/st_context.h > b/src/mesa/state_tracker/st_context.h > index 81d5480..a4cda29 100644 > --- a/src/mesa/state_tracker/st_context.h > +++ b/src/mesa/state_tracker/st_context.h > @@ -98,6 +98,7 @@ struct st_context > boolean has_etc1; > boolean has_etc2; > boolean prefer_blit_based_texture_transfer; > + boolean can_force_persample_interp; > > boolean needs_texcoord_semantic; > boolean apply_texture_swizzle_to_border_color; > -- > 2.1.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