summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-12-08 10:29:18 -0800
committerEric Anholt <eric@anholt.net>2011-12-21 10:24:33 -0800
commit5547f61acddbb39ba41f87c40add6174713e4a60 (patch)
tree2dd05190a960805df26a11eb219f771cc997af36
parent78d68103cb67129738abd88535a42c771b69b571 (diff)
drm/i915: Make the update_mboxes() update both mboxes at the same time.
Futures callers will want to update both, too, so just put that logic in the function.
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index c3f0c7b4441..0a1930ff3c8 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -432,16 +432,19 @@ static void render_ring_cleanup(struct intel_ring_buffer *ring)
}
static void
-update_mboxes(struct intel_ring_buffer *ring,
- u32 seqno,
- u32 mmio_offset)
+update_mboxes(struct intel_ring_buffer *ring, u32 seqno)
{
- intel_ring_emit(ring, MI_SEMAPHORE_MBOX |
- MI_SEMAPHORE_GLOBAL_GTT |
- MI_SEMAPHORE_REGISTER |
- MI_SEMAPHORE_UPDATE);
- intel_ring_emit(ring, seqno);
- intel_ring_emit(ring, mmio_offset);
+ int i;
+
+ for (i = 0; i < 2; i++) {
+ intel_ring_emit(ring,
+ MI_SEMAPHORE_MBOX |
+ MI_SEMAPHORE_GLOBAL_GTT |
+ MI_SEMAPHORE_REGISTER |
+ MI_SEMAPHORE_UPDATE);
+ intel_ring_emit(ring, seqno);
+ intel_ring_emit(ring, ring->signal_mbox[i]);
+ }
}
/**
@@ -457,21 +460,15 @@ static int
gen6_add_request(struct intel_ring_buffer *ring,
u32 *seqno)
{
- u32 mbox1_reg;
- u32 mbox2_reg;
int ret;
ret = intel_ring_begin(ring, 10);
if (ret)
return ret;
- mbox1_reg = ring->signal_mbox[0];
- mbox2_reg = ring->signal_mbox[1];
-
*seqno = i915_gem_get_seqno(ring->dev);
- update_mboxes(ring, *seqno, mbox1_reg);
- update_mboxes(ring, *seqno, mbox2_reg);
+ update_mboxes(ring, *seqno);
intel_ring_emit(ring, MI_STORE_DWORD_INDEX);
intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT);
intel_ring_emit(ring, *seqno);