[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