From: Ben Widawsky <ben@bwidawsk.net>
To: intel-gfx@lists.freedesktop.org
Cc: Ben Widawsky <ben@bwidawsk.net>
Subject: [PATCH 3/4] drm/i915: Make eb do more
Date: Wed, 13 Mar 2013 17:21:07 -0700 [thread overview]
Message-ID: <1363220468-1718-3-git-send-email-ben@bwidawsk.net> (raw)
In-Reply-To: <1363220468-1718-1-git-send-email-ben@bwidawsk.net>
I've written a couple of versions of this patch, and it's always in prep
for some scheduler work I am doing. Only difference this time is a new
maintainer to never merge them.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 38 +++++++++++++++++++-----------
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 354cecf..99ebb36 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -36,10 +36,17 @@
struct eb_objects {
struct list_head objects;
int and;
+
+ struct drm_file *file;
+ struct intel_ring_buffer *ring;
+ struct drm_i915_gem_execbuffer2 *args;
+ struct drm_i915_gem_exec_object2 *exec;
+
union {
struct drm_i915_gem_object *lut[0];
struct hlist_head buckets[0];
};
+ /* NB: don't put anything here */
};
static struct eb_objects *
@@ -82,11 +89,11 @@ eb_reset(struct eb_objects *eb)
}
static int
-eb_lookup_objects(struct eb_objects *eb,
- struct drm_i915_gem_exec_object2 *exec,
- const struct drm_i915_gem_execbuffer2 *args,
- struct drm_file *file)
+eb_lookup_objects(struct eb_objects *eb)
{
+ struct drm_i915_gem_exec_object2 *exec = eb->exec;
+ struct drm_i915_gem_execbuffer2 *args = eb->args;
+ struct drm_file *file = eb->file;
int i;
spin_lock(&file->table_lock);
@@ -572,18 +579,17 @@ err: /* Decrement pin count for bound objects */
}
static int
-i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
- struct drm_i915_gem_execbuffer2 *args,
- struct drm_file *file,
- struct intel_ring_buffer *ring,
- struct eb_objects *eb,
- struct drm_i915_gem_exec_object2 *exec)
+i915_gem_execbuffer_relocate_slow(struct eb_objects *eb)
{
struct drm_i915_gem_relocation_entry *reloc;
struct drm_i915_gem_object *obj;
bool need_relocs;
int *reloc_offset;
int i, total, ret;
+ struct drm_device *dev = eb->ring->dev;
+ struct drm_i915_gem_execbuffer2 *args = eb->args;
+ struct intel_ring_buffer *ring = eb->ring;
+ struct drm_i915_gem_exec_object2 *exec = eb->exec;
int count = args->buffer_count;
/* We may process another execbuffer during the unlock... */
@@ -656,7 +662,7 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
/* reacquire the objects */
eb_reset(eb);
- ret = eb_lookup_objects(eb, exec, args, file);
+ ret = eb_lookup_objects(eb);
if (ret)
goto err;
@@ -966,8 +972,13 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
goto pre_mutex_err;
}
+ eb->args = args;
+ eb->exec = exec;
+ eb->file = file;
+ eb->ring = ring;
+
/* Look up object handles */
- ret = eb_lookup_objects(eb, exec, args, file);
+ ret = eb_lookup_objects(eb);
if (ret)
goto err;
@@ -987,8 +998,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
ret = i915_gem_execbuffer_relocate(eb);
if (ret) {
if (ret == -EFAULT) {
- ret = i915_gem_execbuffer_relocate_slow(dev, args, file, ring,
- eb, exec);
+ ret = i915_gem_execbuffer_relocate_slow(eb);
BUG_ON(!mutex_is_locked(&dev->struct_mutex));
}
if (ret)
--
1.8.1.5
next prev parent reply other threads:[~2013-03-14 0:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-14 0:21 [PATCH 1/4] drm/i915: Remove unused file arg from execbuf Ben Widawsky
2013-03-14 0:21 ` [PATCH 2/4] drm/i915: Remove unneeded dev argument Ben Widawsky
2013-03-18 2:07 ` Daniel Vetter
2013-03-14 0:21 ` Ben Widawsky [this message]
2013-03-19 19:41 ` [PATCH 3/4] drm/i915: Make eb do more Jesse Barnes
2013-03-19 19:49 ` Ben Widawsky
2013-03-14 0:21 ` [PATCH 4/4] drm/i915: Extract object reserver/reloc/bind Ben Widawsky
2013-03-14 8:56 ` [PATCH 1/4] drm/i915: Remove unused file arg from execbuf Chris Wilson
2013-03-14 16:06 ` Ben Widawsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363220468-1718-3-git-send-email-ben@bwidawsk.net \
--to=ben@bwidawsk.net \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.