From: Oscar Mateo <[email protected]>

Execlists need a new submission mechanism, so split the preparation
from the submission.

Signed-off-by: Oscar Mateo <[email protected]>
---
 drivers/gpu/drm/i915/i915_gem_render_state.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c 
b/drivers/gpu/drm/i915/i915_gem_render_state.c
index 3521f99..5944c0a 100644
--- a/drivers/gpu/drm/i915/i915_gem_render_state.c
+++ b/drivers/gpu/drm/i915/i915_gem_render_state.c
@@ -159,7 +159,8 @@ static int render_state_setup(const int gen,
        return 0;
 }
 
-int i915_gem_render_state_init(struct intel_engine_cs *ring)
+static struct i915_render_state *
+render_state_prepare(struct intel_engine_cs *ring)
 {
        const int gen = INTEL_INFO(ring->dev)->gen;
        struct i915_render_state *so;
@@ -167,19 +168,33 @@ int i915_gem_render_state_init(struct intel_engine_cs 
*ring)
        int ret;
 
        if (WARN_ON(ring->id != RCS))
-               return -ENOENT;
+               return ERR_PTR(-ENOENT);
 
        rodata = render_state_get_rodata(ring->dev, gen);
        if (rodata == NULL)
-               return 0;
+               return NULL;
 
        so = render_state_alloc(ring->dev);
        if (IS_ERR(so))
-               return PTR_ERR(so);
+               return so;
 
        ret = render_state_setup(gen, rodata, so);
-       if (ret)
-               goto out;
+       if (ret) {
+               render_state_free(so);
+               return ERR_PTR(ret);
+       }
+
+       return so;
+}
+
+int i915_gem_render_state_init(struct intel_engine_cs *ring)
+{
+       struct i915_render_state *so;
+       int ret;
+
+       so = render_state_prepare(ring);
+       if (IS_ERR_OR_NULL(so))
+               return PTR_ERR(so);
 
        ret = ring->dispatch_execbuffer(ring,
                                        i915_gem_obj_ggtt_offset(so->obj),
-- 
1.9.0

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to