[Mesa-stable] [Mesa-dev] [PATCH 1/2] svga: clamp device line width to at least 1 to fix HWv8 line stippling

Andres Gomez agomez at igalia.com
Tue Jun 27 16:27:08 UTC 2017


It looks like we could want these 2 into -stable (?)

On Thu, 2017-06-15 at 11:41 -0600, Brian Paul wrote:
> The line stipple fallback code for virtual HW version 8 didn't work.
> 
> With HW version 8, we were getting zero when querying the max line
> widths (AA and non-AA).  This means we were setting the draw module's
> wide line threshold to zero.  This caused the wide line stage to always
> get enabled.  That caused the line stipple module to fall because the
> wide line stage was clobbering the rasterization state with a state
> object setting the line stipple pattern to 0xffff.
> 
> Now the wide_lines variable in draw's validate_pipeline() will not
> be incorrectly set.
> 
> Also improve debug output.
> 
> See VMware bug 1895811.
> ---
>  src/gallium/drivers/svga/svga_screen.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
> index 202f54f..3aa9945 100644
> --- a/src/gallium/drivers/svga/svga_screen.c
> +++ b/src/gallium/drivers/svga/svga_screen.c
> @@ -1142,18 +1142,18 @@ svga_screen_create(struct svga_winsys_screen *sws)
>        get_bool_cap(sws, SVGA3D_DEVCAP_LINE_STIPPLE, FALSE);
>  
>     svgascreen->maxLineWidth =
> -      get_float_cap(sws, SVGA3D_DEVCAP_MAX_LINE_WIDTH, 1.0f);
> +      MAX2(1.0, get_float_cap(sws, SVGA3D_DEVCAP_MAX_LINE_WIDTH, 1.0f));
>  
>     svgascreen->maxLineWidthAA =
> -      get_float_cap(sws, SVGA3D_DEVCAP_MAX_AA_LINE_WIDTH, 1.0f);
> +      MAX2(1.0, get_float_cap(sws, SVGA3D_DEVCAP_MAX_AA_LINE_WIDTH, 1.0f));
>  
>     if (0) {
>        debug_printf("svga: haveProvokingVertex %u\n",
>                     svgascreen->haveProvokingVertex);
>        debug_printf("svga: haveLineStip %u  "
> -                   "haveLineSmooth %u  maxLineWidth %f\n",
> +                   "haveLineSmooth %u  maxLineWidth %.2f  maxLineWidthAA %.2f\n",
>                     svgascreen->haveLineStipple, svgascreen->haveLineSmooth,
> -                   svgascreen->maxLineWidth);
> +                   svgascreen->maxLineWidth, svgascreen->maxLineWidthAA);
>        debug_printf("svga: maxPointSize %g\n", svgascreen->maxPointSize);
>        debug_printf("svga: msaa samples mask: 0x%x\n", svgascreen->ms_samples);
>     }
-- 
Br,

Andres


More information about the mesa-stable mailing list