On Wed, Sep 24, 2014 at 10:43 AM, Ian Romanick <i...@freedesktop.org> wrote:
> On 08/28/2014 08:10 PM, Matt Turner wrote:
>> ---
>>  src/mesa/drivers/dri/i965/brw_eu_compact.c | 39 
>> ++++++++++++++++++------------
>>  1 file changed, 24 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c 
>> b/src/mesa/drivers/dri/i965/brw_eu_compact.c
>> index 5008ba6..9c23d55 100644
>> --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c
>> +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c
>> @@ -23,12 +23,12 @@
>>
>>  /** @file brw_eu_compact.c
>>   *
>> - * Instruction compaction is a feature of gm45 and newer hardware that 
>> allows
>> + * Instruction compaction is a feature of G45 and newer hardware that allows
>>   * for a smaller instruction encoding.
>>   *
>>   * The instruction cache is on the order of 32KB, and many programs generate
>>   * far more instructions than that.  The instruction cache is built to 
>> barely
>> - * keep up with instruction dispatch abaility in cache hit cases -- L1
>> + * keep up with instruction dispatch ability in cache hit cases -- L1
>>   * instruction cache misses that still hit in the next level could limit
>>   * throughput by around 50%.
>>   *
>> @@ -1207,14 +1207,15 @@ static void
>>  update_gen4_jump_count(struct brw_context *brw, brw_inst *insn,
>>                         int this_old_ip, int *compacted_counts)
>>  {
>> -   assert(brw->gen == 5);
>> +   assert(brw->gen == 5 || brw->is_g4x);
>>
>>     /* Jump Count is in units of:
>> +    *    - uncompacted instructions on G45; and
>>      *    - compacted instructions on Gen5.
>>      */
>>     int jump_count = brw_inst_gen4_jump_count(brw, insn);
>> -   int jump_count_compacted = jump_count;
>> -   int jump_count_uncompacted = jump_count / 2;
>> +   int jump_count_compacted = jump_count * (brw->is_g4x ? 2 : 1);
>> +   int jump_count_uncompacted = jump_count / (brw->is_g4x ? 1 : 2);
>>
>>     int target_old_ip = this_old_ip + jump_count_uncompacted;
>>
>> @@ -1222,7 +1223,8 @@ update_gen4_jump_count(struct brw_context *brw, 
>> brw_inst *insn,
>>     int target_compacted_count = compacted_counts[target_old_ip];
>>
>>     jump_count_compacted -= (target_compacted_count - this_compacted_count);
>> -   brw_inst_set_gen4_jump_count(brw, insn, jump_count_compacted);
>> +   brw_inst_set_gen4_jump_count(brw, insn, jump_count_compacted /
>> +                                           (brw->is_g4x ? 2 : 1));
>>  }
>>
>>  void
>> @@ -1265,13 +1267,14 @@ brw_init_compaction_tables(struct brw_context *brw)
>>        src_index_table = gen6_src_index_table;
>>        break;
>>     case 5:
>> +   case 4:
>>        control_index_table = g45_control_index_table;
>>        datatype_table = g45_datatype_table;
>>        subreg_table = g45_subreg_table;
>>        src_index_table = g45_src_index_table;
>>        break;
>
> The check a couple hunks below prevents us from getting here on GEN4?

Right, there's no instruction compaction on the original 965. No harm
in setting the table pointers on it though.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to