[igt-dev] [PATCH i-g-t v31 05/32] lib/intel_batchbuffer: add new functions to support rendercopy

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Thu Aug 27 07:11:43 UTC 2020


On Wed, Aug 26, 2020 at 04:49:52PM +0100, Chris Wilson wrote:
> Quoting Chris Wilson (2020-08-26 16:48:41)
> > Quoting Zbigniew Kempczyński (2020-08-20 07:30:03)
> > > @@ -1364,7 +1367,7 @@ void intel_bb_destroy(struct intel_bb *ibb)
> > >  */
> > >  void intel_bb_reset(struct intel_bb *ibb, bool purge_objects_cache)
> > >  {
> > > -       uint64_t bb_address;
> > > +       uint32_t i;
> > >  
> > >         if (purge_objects_cache && ibb->refcount > 1)
> > >                 igt_warn("Cannot purge objects cache on bb, refcount > 1!");
> > > @@ -1383,10 +1386,20 @@ void intel_bb_reset(struct intel_bb *ibb, bool purge_objects_cache)
> > >         gem_close(ibb->i915, ibb->handle);
> > >         ibb->handle = gem_create(ibb->i915, ibb->size);
> > >  
> > > -       bb_address = __intel_bb_propose_offset(ibb);
> > > -       intel_bb_add_object(ibb, ibb->handle, bb_address, false);
> > > +       ibb->batch_offset = __intel_bb_propose_offset(ibb);
> > > +       intel_bb_add_object(ibb, ibb->handle, ibb->batch_offset, false);
> > >         ibb->ptr = ibb->batch;
> > >         memset(ibb->batch, 0, ibb->size);
> > > +
> > > +       if (purge_objects_cache)
> > > +               return;
> > > +
> > > +       /*
> > > +        * For reset with no purging cache ensure we keep only supports 48bit
> > (Missing noun)
> > > +        * address flag (we don't want to relocate).
> > > +        */
> > > +       for (i = 0; i < ibb->num_objects; i++)
> > > +               ibb->objects[i].flags &= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
> > >  }
> > 
> > This is confusing me.
> > 
> > We keep only the 48b flag, "because we don't want to relocate".
> > 
> > So, what I think you mean is that if the object supports a large address
> > and we have assigned a high virtual address, then we want to make sure
> > we can reuse that high virtual address next time. If we lose the flag,
> > the kernel will pick a 32b address for us.
> > 
> > Ok, that makes sense. Comment could do with a second pass :)
> 
> A second issue we don't take the 48b flag into account with
> propose_offset. :(
> -Chris

We truncate randomized 64-bit value to gtt size. Am I missed something?
--
Zbigniew


More information about the igt-dev mailing list