Quoting Chris Wilson (2020-05-04 14:50:24) > A simplified example of out-of-order execution that is required by iris: > > struct drm_i915_gem_exec_object2 obj = { > .offset = 24 << 20, > .handle = future_submit_batch(i915, 24 << 20), > .flags = EXEC_OBJECT_PINNED, > }; > struct drm_i915_gem_exec_fence fence = { > .handle = syncobj_create(i915, 0), > }; > struct drm_i915_gem_execbuffer2 execbuf = { > .buffers_ptr = to_user_pointer(&obj), > .buffer_count = 1, > .cliprects_ptr = to_user_pointer(&fence), > .num_cliprects = 1, > .flags = engine | I915_EXEC_FENCE_ARRAY, > }; > uint32_t result; > int out; > > /* > * Here we submit client A waiting on client B, but internally client > * B has a semaphore that waits on client A. This relies on timeslicing > * to reorder B before A, even though userspace has asked to submit A before B _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx