On Fri, Sep 09, 2016 at 04:52:28PM +0100, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > This removes the usage of intel_ring_emit in favour of > directly writing to the ring buffer. > > intel_ring_emit was preventing the compiler for optimising > fetch and increment of the current ring buffer pointer and > therefore generating very verbose code for every write. > > It had no useful purpose since all ringbuffer operations > are started and ended with intel_ring_begin and > intel_ring_advance respectively, with no bail out in the > middle possible, so it is fine to increment the tail in > intel_ring_begin and let the code manage the pointer > itself. > > Useless instruction removal amounts to approximately > two and half kilobytes of saved text on my build. > > Not sure if this has any measurable performance > implications but executing a ton of useless instructions > on fast paths cannot be good. > > Patch is not fully polished, but it compiles and runs > on Gen9 at least. > > v2: > * Change return from intel_ring_begin to error pointer by > popular demand. > * Move tail increment to intel_ring_advance to enable some > error checking. The increment can stay in begin (it's not intel_ring_begin() anymore since it operates on the request!) as that will be smaller at no usability cost. Just check that rbuf == ring->vaddr + ring->tail at end. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx