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