[Mesa-dev] Mesa (master): draw: fix flat shading and screen-space linear interpolation in clipper

Stéphane Marchesin stephane.marchesin at gmail.com
Fri Jun 29 12:03:53 PDT 2012


I'll send a revert for those, is there a way to do it without
reverting the rest of the series?

Stéphane

On Mon, Jun 25, 2012 at 11:41 AM, Stéphane Marchesin
<stephane.marchesin at gmail.com> wrote:
> The specific commit that seems to break it is:
> 46931ecf480e1d231bb6c2236d91b5390f2465ac llvmpipe: Simplify and fix
> system variables fetch.
>
> On Mon, Jun 25, 2012 at 10:46 AM, Stéphane Marchesin
> <stephane.marchesin at gmail.com> wrote:
>> Hi Olivier,
>>
>> On top of the GL_SELECT regressions reported by Brian, this patch
>> series is causing regressions on i915g for:
>>
>> draw-instanced
>> draw-instanced-divisor
>> draw-elements-instanced-base-vertex
>> draw-elements-instanced-base-vertex-user_varrays
>> draw-non-instanced
>> instance-array-dereference
>>
>> Stéphane
>>
>>
>> On Thu, Jun 21, 2012 at 10:39 AM, Olivier Galibert <galibert at pobox.com> wrote:
>>> On Thu, Jun 21, 2012 at 10:28:22AM -0700, Jose Fonseca wrote:
>>>> This patch series is causing regressions in select/feedback mode. Can you take a look?
>>>
>>> Sure.  I wouldn't have expected that case to ever happen, but it makes
>>> sense now that I think of it.
>>>
>>> commit edc7b26b03c0393582ff5ec8c963207c7553850a
>>> Author: Olivier Galibert <galibert at pobox.com>
>>> Date:   Thu Jun 21 19:37:11 2012 +0200
>>>
>>>    clip_init_state: Handle the case when there isn't a fragment shader.
>>>
>>>    Signed-off-by: Olivier Galibert <galibert at pobox.com>
>>>
>>> diff --git a/src/gallium/auxiliary/draw/draw_pipe_clip.c b/src/gallium/auxiliary/draw/draw_pipe_clip.c
>>> index 2d36eb3..c02d0ef 100644
>>> --- a/src/gallium/auxiliary/draw/draw_pipe_clip.c
>>> +++ b/src/gallium/auxiliary/draw/draw_pipe_clip.c
>>> @@ -586,6 +586,9 @@ clip_init_state( struct draw_stage *stage )
>>>     * two outputs for one input, so we tuck the information in a
>>>     * specific array.  Second if they don't have qualifiers, the
>>>     * default value has to be picked from the global shade mode.
>>> +    *
>>> +    * Of course, if we don't have a fragment shader in the first
>>> +    * place, defaults should be used.
>>>     */
>>>
>>>    /* First pick up the interpolation mode for
>>> @@ -595,10 +598,12 @@ clip_init_state( struct draw_stage *stage )
>>>    indexed_interp[0] = indexed_interp[1] = stage->draw->rasterizer->flatshade ?
>>>       TGSI_INTERPOLATE_CONSTANT : TGSI_INTERPOLATE_PERSPECTIVE;
>>>
>>> -   for (i = 0; i < fs->info.num_inputs; i++) {
>>> -      if (fs->info.input_semantic_name[i] == TGSI_SEMANTIC_COLOR) {
>>> -         if (fs->info.input_interpolate[i] != TGSI_INTERPOLATE_COLOR)
>>> -            indexed_interp[fs->info.input_semantic_index[i]] = fs->info.input_interpolate[i];
>>> +   if (fs) {
>>> +      for (i = 0; i < fs->info.num_inputs; i++) {
>>> +         if (fs->info.input_semantic_name[i] == TGSI_SEMANTIC_COLOR) {
>>> +            if (fs->info.input_interpolate[i] != TGSI_INTERPOLATE_COLOR)
>>> +               indexed_interp[fs->info.input_semantic_index[i]] = fs->info.input_interpolate[i];
>>> +         }
>>>       }
>>>    }
>>>
>>> @@ -627,12 +632,14 @@ clip_init_state( struct draw_stage *stage )
>>>           */
>>>          uint j;
>>>          interp = TGSI_INTERPOLATE_PERSPECTIVE;
>>> -         for (j = 0; j < fs->info.num_inputs; j++) {
>>> -            if (vs->info.output_semantic_name[i] == fs->info.input_semantic_name[j] &&
>>> -                vs->info.output_semantic_index[i] == fs->info.input_semantic_index[j]) {
>>> -               interp = fs->info.input_interpolate[j];
>>> -               break;
>>> -            }
>>> +         if (fs) {
>>> +            for (j = 0; j < fs->info.num_inputs; j++) {
>>> +               if (vs->info.output_semantic_name[i] == fs->info.input_semantic_name[j] &&
>>> +                   vs->info.output_semantic_index[i] == fs->info.input_semantic_index[j]) {
>>> +                  interp = fs->info.input_interpolate[j];
>>> +                  break;
>>> +               }
>>> +            }
>>>          }
>>>       }
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list