> > > +                /* If ->gpu_access is 0, the BO is idle, and if the 
> > > WRITE flag
> > > +                 * is cleared, that means we only have readers.
> > > +                 */
> > > +                if (!bo->gpu_access)
> > > +                        return true;
> > > +                else if (!(access_type & PAN_BO_GPU_ACCESS_READ) &&
> > > +                         !(bo->gpu_access & PAN_BO_GPU_ACCESS_WRITE))
> > > +                        return true;  
> > 
> > The second condition is a little confusing, though I think it's correct.
> > Not sure if there's any way to clarify what's meant but just thought I'd
> > comment, since inevitably future readers will squint too.
> 
> I can do:
> 
>               /* If ->gpu_access is 0, the BO is idle, no need to wait. */
>               if (!bo->gpu_access)
>                       return true;
> 
>               /* If the caller only wants to wait for writers and no
>                * writes are pending, we don't have to wait.
>                */
>               if (access_type == PAN_BO_GPU_ACCESS_WRITE &&
>                   !(bo->gpu_access & PAN_BO_GPU_ACCESS_WRITE))
>                       return true;
> 
> instead.

Perfect, thank you :)

> > > +                /* Update the BO access flags so that panfrost_bo_wait() 
> > > knows
> > > +                 * about all pending accesses.
> > > +                 */
> > > +                bo->gpu_access |= flags & (PAN_BO_GPU_ACCESS_RW);  
> > 
> > This looks like black magic. Maybe just clarify in the comment why this
> > & is reasonable (relying on bit mask magic).
> 
> It's just here to clear all non-RW flags (we only care about the read/write
> information when it comes to BO idleness). I'll add a comment to explain that
> part, and maybe another one to explain why we have a '|=' and not just '='.

Yeah, I figured it out. Mostly, REing means we have so much unexplained
bit magic in the codebase already, we don't need to add more if we can
help it :) Hence the comment would be appreciated.

> > That aside, as I mentioned it would maybe make more sense to squash this
> > into the patch introduce the bo_wait ioctl() in the first place? If
> > that's too complicated with merge conflicts and stuff, don't sweat it,
> > though :)
> 
> I'm fine with that, I'll re-order things to avoid introducing the bo_wait()
> infra before we have the access type info.

+1
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to