On Thu, Oct 30, 2014 at 06:55:36PM +0000, John Harrison wrote: > Oops, forgot to update the text for the zero patch. This is no longer 'work > in progress' and is now intended for proper review! The description should > read as follows: > > There is a general feeling that it is better to move away from using a > simple > integer 'seqno' value to track batch buffer completion. Instead, the request > structure should be used. That provides for much more flexibility going > forwards. Especially which things like a GPU scheduler (which can re-order > batch > buffers and hence seqnos after submission to the hardware), Android sync > points > and other such features which potentially make seqno usage more and more > complex. > > This patch set does the work of converting most of the driver to use request > structures in preference to seqno values. The only place left that still > uses > seqnos is the semaphore code. It was decided to leave that alone for the > time > being as the semaphores are hardware based and the hardware only understands > seqno values. > > [Patches against drm-intel-nightly tree fetched 29/10/2014] I've done a (very) quick readthrough and looks sane - all my bikesheds seem to have been addressed. Or I've forgotten them again which means they can't be that important ;-) Anyway, please find some proper reviewer for this so I can vacuum it in. Thanks, Daniel > > > On 30/10/2014 18:40, John.C.Harrison@xxxxxxxxx wrote: > >From: John Harrison <John.C.Harrison@xxxxxxxxx> > > > >Work in progress for replacing seqno usage with requst structures. > > > >There is a general feeling that it is better to move away from using a simple > >integer 'seqno' value to track batch buffer completion. Instead, the request > >structure should be used. That provides for much more flexibility going > >forwards. Especially which things like a GPU scheduler (which can re-order batch > >buffers and hence seqnos after submission to the hardware), Android sync points > >and other such features which potentially make seqno usage more and more > >complex. > > > >The current set of patches do most of the seqno to request structure conversion. > >There are still a couple of direct seqno comparisons in the semaphore code. The > >final conversion of a seqno test into a 'completed' flag inside the request > >structure is still do to as well. Along with whatever changes are required to > >maintain such a flag. > > > >The patches are being posted now to make sure that the various people involved > >agree that it is heading in the right direction. > > > >[Patches against drm-intel-nightly tree fetched 11/09/2014] > > > >John Harrison (29): > > drm/i915: Remove redundant parameter to i915_gem_object_wait_rendering__tail() > > drm/i915: Ensure OLS & PLR are always in sync > > drm/i915: Add reference count to request structure > > drm/i915: Add helper functions to aid seqno -> request transition > > drm/i915: Replace last_[rwf]_seqno with last_[rwf]_req > > drm/i915: Convert i915_gem_ring_throttle to use requests > > drm/i915: Ensure requests stick around during waits > > drm/i915: Remove 'outstanding_lazy_seqno' > > drm/i915: Make 'i915_gem_check_olr' actually check by request not seqno > > drm/i915: Convert 'last_flip_req' to be a request not a seqno > > drm/i915: Convert i915_wait_seqno to i915_wait_request > > drm/i915: Convert __wait_seqno() to __wait_request() > > drm/i915: Remove obsolete seqno parameter from 'i915_add_request' > > drm/i915: Convert mmio_flip::seqno to struct request > > drm/i915: Add IRQ friendly request deference facility > > drm/i915: Convert 'flip_queued_seqno' into 'flip_queued_request' > > drm/i915: Convert trace functions from seqno to request > > drm/i915: Convert 'trace_irq' to use requests rather than seqnos > > drm/i915: Convert 'ring_idle()' to use requests not seqnos > > drm/i915: Connect requests to rings at creation not submission > > drm/i915: Convert 'i915_seqno_passed' calls into 'i915_gem_request_completed' > > drm/i915: Remove the now redundant 'obj->ring' > > drm/i915: Cache request completion status > > drm/i915: Zero fill the request structure > > drm/i915: Spinlock protection for request list > > drm/i915: Add uniq id to request structure for debugging > > drm/i915: Interrupt driven request completion > > drm/i915: Remove obsolete parameter to i915_gem_request_completed() > > WIP: Defer seqno allocation until actual hardware submission time > > > > drivers/gpu/drm/i915/i915_debugfs.c | 20 +- > > drivers/gpu/drm/i915/i915_drv.h | 89 ++++++- > > drivers/gpu/drm/i915/i915_gem.c | 356 +++++++++++++++++--------- > > drivers/gpu/drm/i915/i915_gem_context.c | 3 +- > > drivers/gpu/drm/i915/i915_gem_execbuffer.c | 10 +- > > drivers/gpu/drm/i915/i915_gem_gtt.h | 4 +- > > drivers/gpu/drm/i915/i915_gem_render_state.c | 2 +- > > drivers/gpu/drm/i915/i915_gem_tiling.c | 2 +- > > drivers/gpu/drm/i915/i915_gpu_error.c | 7 +- > > drivers/gpu/drm/i915/i915_irq.c | 14 +- > > drivers/gpu/drm/i915/i915_trace.h | 47 ++-- > > drivers/gpu/drm/i915/intel_display.c | 53 ++-- > > drivers/gpu/drm/i915/intel_drv.h | 4 +- > > drivers/gpu/drm/i915/intel_lrc.c | 59 +++-- > > drivers/gpu/drm/i915/intel_overlay.c | 24 +- > > drivers/gpu/drm/i915/intel_ringbuffer.c | 82 +++--- > > drivers/gpu/drm/i915/intel_ringbuffer.h | 25 +- > > 17 files changed, 505 insertions(+), 296 deletions(-) > > > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx