All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Allow concurrent read access between CPU and GPU domain
@ 2012-04-10 10:52 Chris Wilson
  2012-04-10 21:35 ` Chris Wilson
  0 siblings, 1 reply; 3+ messages in thread
From: Chris Wilson @ 2012-04-10 10:52 UTC (permalink / raw)
  To: intel-gfx

Similar to allowing a buffer to be simultaneously read by the GPU and
through the GTT, we wish to allow readback of the pages through the CPU
domain whilst they are also being read by the GPU. Domain coherency
is managed by allowing multiple readers, but only a single writer.

This is used by mesa for its program cache which it may search for every
new program every frame and then renews should it need to add. During
renewal, mesa copies the program bo currently executing through a CPU
mapping onto the new bo. This patch allows the search and that copy to
proceed without causing a stall on the current batch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d2b5326..704d3a6 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3179,9 +3179,11 @@ i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write)
 	if (ret)
 		return ret;
 
-	ret = i915_gem_object_wait_rendering(obj);
-	if (ret)
-		return ret;
+	if (write || obj->pending_gpu_write) {
+		ret = i915_gem_object_wait_rendering(obj);
+		if (ret)
+			return ret;
+	}
 
 	i915_gem_object_flush_gtt_write_domain(obj);
 
-- 
1.7.9.5

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

* Re: [PATCH] drm/i915: Allow concurrent read access between CPU and GPU domain
  2012-04-10 10:52 [PATCH] drm/i915: Allow concurrent read access between CPU and GPU domain Chris Wilson
@ 2012-04-10 21:35 ` Chris Wilson
  2012-04-11 10:09   ` Daniel Vetter
  0 siblings, 1 reply; 3+ messages in thread
From: Chris Wilson @ 2012-04-10 21:35 UTC (permalink / raw)
  To: intel-gfx

On Tue, 10 Apr 2012 11:52:50 +0100, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> Similar to allowing a buffer to be simultaneously read by the GPU and
> through the GTT, we wish to allow readback of the pages through the CPU
> domain whilst they are also being read by the GPU. Domain coherency
> is managed by allowing multiple readers, but only a single writer.
> 
> This is used by mesa for its program cache which it may search for every
> new program every frame and then renews should it need to add. During
> renewal, mesa copies the program bo currently executing through a CPU
> mapping onto the new bo. This patch allows the search and that copy to
> proceed without causing a stall on the current batch.

At Daniel's request, I added i-g-t/gem_cpu_concurrent_blit to catch the
possible bugs that may have been introduced by this patch.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

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

* Re: [PATCH] drm/i915: Allow concurrent read access between CPU and GPU domain
  2012-04-10 21:35 ` Chris Wilson
@ 2012-04-11 10:09   ` Daniel Vetter
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Vetter @ 2012-04-11 10:09 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Tue, Apr 10, 2012 at 10:35:19PM +0100, Chris Wilson wrote:
> On Tue, 10 Apr 2012 11:52:50 +0100, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > Similar to allowing a buffer to be simultaneously read by the GPU and
> > through the GTT, we wish to allow readback of the pages through the CPU
> > domain whilst they are also being read by the GPU. Domain coherency
> > is managed by allowing multiple readers, but only a single writer.
> > 
> > This is used by mesa for its program cache which it may search for every
> > new program every frame and then renews should it need to add. During
> > renewal, mesa copies the program bo currently executing through a CPU
> > mapping onto the new bo. This patch allows the search and that copy to
> > proceed without causing a stall on the current batch.
> 
> At Daniel's request, I added i-g-t/gem_cpu_concurrent_blit to catch the
> possible bugs that may have been introduced by this patch.
Queued for -next, thanks for the patch.
-Daniel
-- 
Daniel Vetter
Mail: daniel@ffwll.ch
Mobile: +41 (0)79 365 57 48

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

end of thread, other threads:[~2012-04-11 10:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-10 10:52 [PATCH] drm/i915: Allow concurrent read access between CPU and GPU domain Chris Wilson
2012-04-10 21:35 ` Chris Wilson
2012-04-11 10:09   ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.