Re: [PATCH 2/2] drm/i915: Avoid decomposing a signal-on-any fence-array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 20, 2017 at 01:32:42PM +0200, Joonas Lahtinen wrote:
> On pe, 2017-02-17 at 18:35 +0000, Chris Wilson wrote:
> > The code currently assumes that all fence arrays it sees are the normal
> > signal-on-all variety, and decomposes the array into its individual
> > fences so that it can extract the native i915 fences. If the fence array
> > is using signal-on-any, we should not decompose as we must not wait on
> > them all, just the first in *that* set.
> > 
> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> > CC: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
> 
> <SNIP>
> 
> > 
> > @@ -696,7 +696,8 @@ i915_gem_request_await_dma_fence(struct drm_i915_gem_request *req,
> >  	if (dma_fence_is_i915(fence))
> >  		return i915_gem_request_await_request(req, to_request(fence));
> >  
> > -	if (!dma_fence_is_array(fence)) {
> > +	if (!dma_fence_is_array(fence) ||
> > +	    test_bit(DMA_FENCE_ARRAY_SIGNAL_ANY, &fence->flags)) {
> 
> Smells like a helper function? While that helper is finding the way
> upstream;

Blurgh.

enum dma_fence_array_signal_mode {
        DMA_FENCE_ARRAY_SIGNAL_ON_ALL = 0,
        DMA_FENCE_ARRAY_SIGNAL_ON_ANY,
};

enum dma_fence_array_signal_mode
dma_fence_array_get_signaling_mode(struct dma_fence_array *array)
{       
        return test_bit(DMA_FENCE_ARRAY_SIGNAL_ANY, &array->base.flags) ?
                DMA_FENCE_ARRAY_SIGNAL_ON_ANY : DMA_FENCE_ARRAY_SIGNAL_ON_ALL;
}

if (!dma_fence_is_array(fence) ||
    dma_fence_array_get_signaling_mode(to_dma_fence_array(fence)) == DMA_FENCE_ARRAY_SIGNAL_ON_ANY)

Hmm. Not happy with that yet.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux