[Mesa-dev] [PATCH 10/11] i965/vec4: Calculate live intervals with subregister granularity.

Francisco Jerez currojerez at riseup.net
Fri Mar 20 11:24:20 PDT 2015


Matt Turner <mattst88 at gmail.com> writes:

> On Fri, Mar 20, 2015 at 7:50 AM, Francisco Jerez <currojerez at riseup.net> wrote:
>> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
>> index 4b87af2..34df61e 100644
>> --- a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
>> @@ -179,7 +183,7 @@ vec4_live_variables::vec4_live_variables(const simple_allocator &alloc,
>>  {
>>     mem_ctx = ralloc_context(NULL);
>>
>> -   num_vars = alloc.count * 4;
>> +   num_vars = alloc.total_size * 4;
>>     block_data = rzalloc_array(mem_ctx, struct block_data, cfg->num_blocks);
>>
>>     bitset_words = BITSET_WORDS(num_vars);
>> @@ -229,14 +233,14 @@ vec4_visitor::calculate_live_intervals()
>>     if (this->live_intervals)
>>        return;
>>
>> -   int *start = ralloc_array(mem_ctx, int, this->alloc.count * 4);
>> -   int *end = ralloc_array(mem_ctx, int, this->alloc.count * 4);
>> +   int *start = ralloc_array(mem_ctx, int, this->alloc.total_size * 4);
>> +   int *end = ralloc_array(mem_ctx, int, this->alloc.total_size * 4);
>>     ralloc_free(this->virtual_grf_start);
>>     ralloc_free(this->virtual_grf_end);
>>     this->virtual_grf_start = start;
>>     this->virtual_grf_end = end;
>>
>> -   for (unsigned i = 0; i < this->alloc.count * 4; i++) {
>> +   for (unsigned i = 0; i < this->alloc.total_size * 4; i++) {
>>        start[i] = MAX_INSTRUCTION;
>>        end[i] = -1;
>>     }
>
> I don't follow the count -> total_size change. What's going on?

We have "count" virtual GRFs, each with sizes[i] subregisters, what
amounts to total_size individual subregisters.  We now keep track of
each subregister as a separate variable so the liveness interval arrays
need as many entries as the total number of subregisters.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150320/45d1570b/attachment-0001.sig>


More information about the mesa-dev mailing list