[Mesa-dev] [PATCH] llvmpipe: initialize llvmpipe->dirty with LP_NEW_SCISSOR

Brian Paul brianp at vmware.com
Wed Aug 30 02:49:14 UTC 2017


On 08/29/2017 06:17 PM, Roland Scheidegger wrote:
> Looks good to me, thanks.
>
> Reviewed-by: Roland Scheidegger <sroland at vmware.com>
>
> Albeit I'm not quite sure why it is never set here?

This particular test sets a 0 x 0 scissor region.  All the 
pipe_scissor_state members are zero and when the state tracker does a 
memcmp() with its copy it sees no difference and skips the call to 
pipe->set_scissor_state().

-Brian


> This bug looks similar in nature to the uninitialized fb (see
> 8bfe451ed30918244618608871423b2a72cf9767) and I thought that was
> impossible to hit with gl state tracker...
>
> Roland
>
> Am 28.08.2017 um 22:20 schrieb Brian Paul:
>> If llvmpipe_set_scissor_states() is never called, we still need to be sure
>> that derived scissor/clip state is updated.  As of commit 743ad599a97d09b1
>> that function might not be called.
>>
>> Fixes regressed Piglit gl-1.0-scissor-offscreen -fbo -auto test.
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101709
>> ---
>>   src/gallium/drivers/llvmpipe/lp_context.c | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c
>> index 599a9f1..613d60f 100644
>> --- a/src/gallium/drivers/llvmpipe/lp_context.c
>> +++ b/src/gallium/drivers/llvmpipe/lp_context.c
>> @@ -227,6 +227,12 @@ llvmpipe_create_context(struct pipe_screen *screen, void *priv,
>>
>>      lp_reset_counters();
>>
>> +   /* If llvmpipe_set_scissor_states() is never called, we still need to
>> +    * make sure that derived scissor state is computed.
>> +    * See https://bugs.freedesktop.org/show_bug.cgi?id=101709
>> +    */
>> +   llvmpipe->dirty |= LP_NEW_SCISSOR;
>> +
>>      return &llvmpipe->pipe;
>>
>>    fail:
>>
>



More information about the mesa-dev mailing list