On 08/28/2016 07:10 PM, Ilia Mirkin wrote: > These are exposed in ES 3.2. However this moves all st/mesa to clamping > on the MS variants. But for now the MS variants are initialized to the > AA values.
Do you know where these are in the spec? I'm not familiar with these. > Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > src/mesa/drivers/dri/i965/brw_context.c | 5 +++++ > src/mesa/main/context.c | 3 +++ > src/mesa/main/mtypes.h | 2 ++ > src/mesa/state_tracker/st_atom_rasterizer.c | 16 ++++++++++------ > src/mesa/state_tracker/st_extensions.c | 1 + > 5 files changed, 21 insertions(+), 6 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.c > b/src/mesa/drivers/dri/i965/brw_context.c > index 888097d..b29df32 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.c > +++ b/src/mesa/drivers/dri/i965/brw_context.c > @@ -604,14 +604,19 @@ brw_initialize_context_constants(struct brw_context > *brw) > > ctx->Const.MinLineWidth = 1.0; > ctx->Const.MinLineWidthAA = 1.0; > + ctx->Const.MinLineWidthMS = 1.0; > if (brw->gen >= 6) { > ctx->Const.MaxLineWidth = 7.375; > ctx->Const.MaxLineWidthAA = 7.375; > + ctx->Const.MaxLineWidthMS = 7.375; > ctx->Const.LineWidthGranularity = 0.125; > + ctx->Const.LineWidthGranularityMS = 0.125; > } else { > ctx->Const.MaxLineWidth = 7.0; > ctx->Const.MaxLineWidthAA = 7.0; > + ctx->Const.MaxLineWidthMS = 7.0; > ctx->Const.LineWidthGranularity = 0.5; > + ctx->Const.LineWidthGranularityMS = 0.5; > } > > /* For non-antialiased lines, we have to round the line width to the > diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c > index f550b0c..f0a5d64 100644 > --- a/src/mesa/main/context.c > +++ b/src/mesa/main/context.c > @@ -575,7 +575,10 @@ _mesa_init_constants(struct gl_constants *consts, gl_api > api) > consts->MaxLineWidth = MAX_LINE_WIDTH; > consts->MinLineWidthAA = MIN_LINE_WIDTH; > consts->MaxLineWidthAA = MAX_LINE_WIDTH; > + consts->MinLineWidthMS = MIN_LINE_WIDTH; > + consts->MaxLineWidthMS = MAX_LINE_WIDTH; > consts->LineWidthGranularity = (GLfloat) LINE_WIDTH_GRANULARITY; > + consts->LineWidthGranularityMS = (GLfloat) LINE_WIDTH_GRANULARITY; > consts->MaxClipPlanes = 6; > consts->MaxLights = MAX_LIGHTS; > consts->MaxShininess = 128.0; > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index 2a93f29..a5bdf93 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -3451,7 +3451,9 @@ struct gl_constants > GLfloat PointSizeGranularity; > GLfloat MinLineWidth, MaxLineWidth; /**< aliased */ > GLfloat MinLineWidthAA, MaxLineWidthAA; /**< antialiased */ > + GLfloat MinLineWidthMS, MaxLineWidthMS; /**< multisampled */ > GLfloat LineWidthGranularity; > + GLfloat LineWidthGranularityMS; > > GLuint MaxClipPlanes; > GLuint MaxLights; > diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c > b/src/mesa/state_tracker/st_atom_rasterizer.c > index ca975aa..c364b07 100644 > --- a/src/mesa/state_tracker/st_atom_rasterizer.c > +++ b/src/mesa/state_tracker/st_atom_rasterizer.c > @@ -226,10 +226,17 @@ static void update_raster_state( struct st_context *st ) > ctx->Point.MaxSize); > } > > - /* _NEW_LINE > - */ > + /* _NEW_MULTISAMPLE */ > + raster->multisample = _mesa_is_multisample_enabled(ctx); > + > + /* _NEW_LINE | _NEW_MULTISAMPLE */ > raster->line_smooth = ctx->Line.SmoothFlag; > - if (ctx->Line.SmoothFlag) { > + if (raster->multisample) { > + raster->line_width = CLAMP(ctx->Line.Width, > + ctx->Const.MinLineWidthMS, > + ctx->Const.MaxLineWidthMS); > + } > + else if (ctx->Line.SmoothFlag) { > raster->line_width = CLAMP(ctx->Line.Width, > ctx->Const.MinLineWidthAA, > ctx->Const.MaxLineWidthAA); > @@ -245,9 +252,6 @@ static void update_raster_state( struct st_context *st ) > /* GL stipple factor is in [1,256], remap to [0, 255] here */ > raster->line_stipple_factor = ctx->Line.StippleFactor - 1; > > - /* _NEW_MULTISAMPLE */ > - raster->multisample = _mesa_is_multisample_enabled(ctx); > - > /* _NEW_MULTISAMPLE | _NEW_BUFFERS */ > raster->force_persample_interp = > !st->force_persample_in_shader && > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index f86a5a3..b8c3ece 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -121,6 +121,7 @@ void st_init_limits(struct pipe_screen *screen, > _maxf(1.0f, screen->get_paramf(screen, PIPE_CAPF_MAX_LINE_WIDTH)); > c->MaxLineWidthAA = > _maxf(1.0f, screen->get_paramf(screen, PIPE_CAPF_MAX_LINE_WIDTH_AA)); > + c->MaxLineWidthMS = c->MaxLineWidthAA; > > c->MaxPointSize = > _maxf(1.0f, screen->get_paramf(screen, PIPE_CAPF_MAX_POINT_WIDTH)); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev