public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Emit even number of dwords when emitting LRIs
@ 2014-10-22 17:59 Arun Siluvery
  2014-10-22 21:59 ` Damien Lespiau
  2014-10-23 12:21 ` Daniel Vetter
  0 siblings, 2 replies; 12+ messages in thread
From: Arun Siluvery @ 2014-10-22 17:59 UTC (permalink / raw)
  To: intel-gfx; +Cc: Mika Kuoppala

The number of DWords should be even when doing ring emits as
command sequences require QWord alignment.

v2: user LRI variant that can write multiple regs in one go (Damien).
We can simply insert one NOP at the end instead of one per register write.

Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 497b836..a8f72e8 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -680,15 +680,16 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring)
 	if (ret)
 		return ret;
 
-	ret = intel_ring_begin(ring, w->count * 3);
+	ret = intel_ring_begin(ring, (w->count * 2 + 2));
 	if (ret)
 		return ret;
 
+	intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(w->count));
 	for (i = 0; i < w->count; i++) {
-		intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
 		intel_ring_emit(ring, w->reg[i].addr);
 		intel_ring_emit(ring, w->reg[i].value);
 	}
+	intel_ring_emit(ring, MI_NOOP);
 
 	intel_ring_advance(ring);
 
-- 
2.1.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread
* [PATCH] drm/i915: Emit even number of dwords when emitting LRIs
@ 2014-10-22  9:09 Arun Siluvery
  2014-10-22 10:40 ` Damien Lespiau
  0 siblings, 1 reply; 12+ messages in thread
From: Arun Siluvery @ 2014-10-22  9:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: Mika Kuoppala

The number of DWords should be even when doing ring emits as
command sequences require QWord alignment.

Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 12a546f..79211ae 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -680,7 +680,7 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring)
 	if (ret)
 		return ret;
 
-	ret = intel_ring_begin(ring, w->count * 3);
+	ret = intel_ring_begin(ring, w->count * 4);
 	if (ret)
 		return ret;
 
@@ -688,6 +688,7 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring)
 		intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
 		intel_ring_emit(ring, w->reg[i].addr);
 		intel_ring_emit(ring, w->reg[i].value);
+		intel_ring_emit(ring, MI_NOOP);
 	}
 
 	intel_ring_advance(ring);
-- 
2.1.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-10-23 15:49 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-22 17:59 [PATCH] drm/i915: Emit even number of dwords when emitting LRIs Arun Siluvery
2014-10-22 21:59 ` Damien Lespiau
2014-10-23 12:21 ` Daniel Vetter
2014-10-23 12:42   ` Damien Lespiau
2014-10-23 12:50     ` Chris Wilson
2014-10-23 13:41       ` Ville Syrjälä
2014-10-23 13:55         ` Siluvery, Arun
2014-10-23 14:42       ` Mika Kuoppala
2014-10-23 15:49         ` Daniel Vetter
  -- strict thread matches above, loose matches on Subject: below --
2014-10-22  9:09 Arun Siluvery
2014-10-22 10:40 ` Damien Lespiau
2014-10-22 10:54   ` Damien Lespiau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox