[Mesa-dev] [PATCH 3/3] radeonsi: overhaul the vertex fetch fixup mechanism

Haehnle, Nicolai Nicolai.Haehnle at amd.com
Fri May 3 11:06:31 UTC 2019


On 03.05.19 12:36, Nicolai Hähnle wrote:
> On 25.04.19 13:18, Nicolai Hähnle wrote:
>> @@ -4618,21 +4648,27 @@ static void si_bind_vertex_elements(struct 
>> pipe_context *ctx, void *state)
>>       struct si_vertex_elements *old = sctx->vertex_elements;
>>       struct si_vertex_elements *v = (struct si_vertex_elements*)state;
>>       sctx->vertex_elements = v;
>>       sctx->vertex_buffers_dirty = true;
>>       if (v &&
>>           (!old ||
>>            old->count != v->count ||
>>            old->uses_instance_divisors != v->uses_instance_divisors ||
>> -         v->uses_instance_divisors || /* we don't check which 
>> divisors changed */
>> +         /* we don't check which divisors changed */
>> +         v->uses_instance_divisors ||
>> +         /* fix_fetch_{always,opencode,unaligned} and 
>> hw_load_is_dword are
>> +          * functions of fix_fetch and the src_offset alignment.
>> +          * If they change and fix_fetch doesn't, it must be due to 
>> different
>> +          * src_offset alignment, which is reflected in 
>> fix_fetch_opencode. */
>> +         old->fix_fetch_opencode != v->fix_fetch_opencode ||
>>            memcmp(old->fix_fetch, v->fix_fetch, 
>> sizeof(v->fix_fetch[0]) * v->count)))
> 
> The following condition got dropped in a late cleanup that I was doing:
> 
>> (old->vb_alignment_check_mask ^ v->vb_alignment_check_mask) & 
>> sctx->vertex_buffer_unaligned ||

... and also this:

> 	     ((v->vb_alignment_check_mask & sctx->vertex_buffer_unaligned) &&
> 	      memcmp(old->vertex_buffer_index, v->vertex_buffer_index,
> 		     sizeof(v->vertex_buffer_index[0]) * v->count)) ||

Cheers,
Nicolai


> 
> I've fixed that locally.
> 
> Cheers,
> Nicolai


More information about the mesa-dev mailing list