[Mesa-dev] [PATCH 1/2] i965/fs: Fix texelFetchOffset() on pre-Gen7.

Kenneth Graunke kenneth at whitecape.org
Tue Jun 5 20:07:44 CEST 2012


On 06/05/2012 10:59 AM, Eric Anholt wrote:
> On Mon,  4 Jun 2012 14:15:10 -0700, Kenneth Graunke <kenneth at whitecape.org> wrote:
>> Commit f41ecade7b458c02d504158b522acb2231585040 fixed texelFetchOffset()
>> on Ivybridge, but didn't update the Ironlake/Sandybridge code.
>>
>> +15 piglits on Sandybridge.
>>
>> NOTE: This and f41ecade7b458 are both candidates for stable branches.
>>
>> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
>> ---
>>  src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |   45 +++++++++++++++++++-------
>>  1 file changed, 33 insertions(+), 12 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
>> index 275a1f4..8d124a0 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
>> @@ -884,20 +884,41 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate,
>>     const int vector_elements =
>>        ir->coordinate ? ir->coordinate->type->vector_elements : 0;
>>  
>> -   if (ir->offset) {
>> -      /* The offsets set up by the ir_texture visitor are in the
>> -       * m1 header, so we can't go headerless.
>> +   if (ir->offset != NULL && ir->op == ir_txf) {
>> +      /* It appears that the ld instruction used for txf does its
>> +       * address bounds check before adding in the offset.  To work
>> +       * around this, just add the integer offset to the integer texel
>> +       * coordinate, and don't put the offset in the header.
>>         */
>> -      header_present = true;
>> -      mlen++;
>> -      base_mrf--;
>> -   }
>> +      int offsets[3];
>> +      ir_constant *offset = ir->offset->as_constant();
>> +      offsets[0] = offset->value.i[0];
>> +      offsets[1] = offset->value.i[1];
>> +      offsets[2] = offset->value.i[2];
> 
> No need for this temporary array (unlike in the fs where it was shared
> with a non-offset path).
> 
> Other than that,
> 
> Reviewed-by: Eric Anholt <eric at anholt.net>

Eheh...right.  Fixed that, thanks :)


More information about the mesa-dev mailing list