diff options
| author | Ben Widawsky <ben@bwidawsk.net> | 2011-09-14 20:32:47 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-09-21 14:52:41 -0700 | 
| commit | c8c99b0f0dea1ced5d0e10cdb9143356cc16b484 (patch) | |
| tree | c7a124662da83f054bc9fb6a60735f528d8d6d30 /drivers/gpu/drm/i915/intel_ringbuffer.h | |
| parent | e0dac65ed45e72fe34cc7ccc76de0ba220bd38bb (diff) | |
| download | olio-linux-3.10-c8c99b0f0dea1ced5d0e10cdb9143356cc16b484.tar.xz olio-linux-3.10-c8c99b0f0dea1ced5d0e10cdb9143356cc16b484.zip  | |
drm/i915: Dumb down the semaphore logic
While I think the previous code is correct, it was hard to follow and
hard to debug. Since we already have a ring abstraction, might as well
use it to handle the semaphore updates and compares.
I don't expect this code to make semaphores better or worse, but you
never know...
v2:
Remove magic per Keith's suggestions.
Ran Daniel's gem_ring_sync_loop test on this.
v3:
Ignored one of Keith's suggestions.
v4:
Removed some bloat per Daniel's recommendation.
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Keith Packard <keithp@keithp.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.h')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.h | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h index 600e67abd8d..68281c96c55 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.h +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h @@ -75,7 +75,12 @@ struct  intel_ring_buffer {  	int		(*dispatch_execbuffer)(struct intel_ring_buffer *ring,  					       u32 offset, u32 length);  	void		(*cleanup)(struct intel_ring_buffer *ring); +	int		(*sync_to)(struct intel_ring_buffer *ring, +				   struct intel_ring_buffer *to, +				   u32 seqno); +	u32		semaphore_register[3]; /*our mbox written by others */ +	u32		signal_mbox[2]; /* mboxes this ring signals to */  	/**  	 * List of objects currently involved in rendering from the  	 * ringbuffer. @@ -180,9 +185,6 @@ static inline void intel_ring_emit(struct intel_ring_buffer *ring,  void intel_ring_advance(struct intel_ring_buffer *ring);  u32 intel_ring_get_seqno(struct intel_ring_buffer *ring); -int intel_ring_sync(struct intel_ring_buffer *ring, -		    struct intel_ring_buffer *to, -		    u32 seqno);  int intel_init_render_ring_buffer(struct drm_device *dev);  int intel_init_bsd_ring_buffer(struct drm_device *dev);  |