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

Brian Paul brianp at vmware.com
Thu Jun 29 13:22:40 UTC 2017


If the patches apply cleanly, sure.

-Brian

On 06/27/2017 10:27 AM, Andres Gomez wrote:
> 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);
>>      }



More information about the mesa-dev mailing list