drm/i915: Remove duplicate golden render state init from execlists
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 2 Aug 2016 21:50:36 +0000 (22:50 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 2 Aug 2016 21:58:30 +0000 (22:58 +0100)
Now that we use the same vfuncs for emitting the batch buffer in both
execlists and legacy, the golden render state initialisation is
identical between both.

v2: gcc wants so.ggtt_offset initialised (even though it is not used)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1469432687-22756-28-git-send-email-chris@chris-wilson.co.uk
Link: http://patchwork.freedesktop.org/patch/msgid/1470174640-18242-19-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_render_state.c
drivers/gpu/drm/i915/i915_gem_render_state.h
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_renderstate.h

index 2ba759f3ab6f87e47334c6479a5a7458c926a2b7..a9b56d18a93bcfd0191d07861f1a57f5c6900445 100644 (file)
 #include "i915_drv.h"
 #include "intel_renderstate.h"
 
+struct render_state {
+       const struct intel_renderstate_rodata *rodata;
+       struct drm_i915_gem_object *obj;
+       u64 ggtt_offset;
+       int gen;
+       u32 aux_batch_size;
+       u32 aux_batch_offset;
+};
+
 static const struct intel_renderstate_rodata *
 render_state_get_rodata(const int gen)
 {
@@ -51,6 +60,7 @@ static int render_state_init(struct render_state *so,
        int ret;
 
        so->gen = INTEL_GEN(dev_priv);
+       so->ggtt_offset = 0; /* keep gcc quiet */
        so->rodata = render_state_get_rodata(so->gen);
        if (so->rodata == NULL)
                return 0;
@@ -192,14 +202,14 @@ err_out:
 
 #undef OUT_BATCH
 
-void i915_gem_render_state_fini(struct render_state *so)
+static void render_state_fini(struct render_state *so)
 {
        i915_gem_object_ggtt_unpin(so->obj);
        i915_gem_object_put(so->obj);
 }
 
-int i915_gem_render_state_prepare(struct intel_engine_cs *engine,
-                                 struct render_state *so)
+static int render_state_prepare(struct intel_engine_cs *engine,
+                               struct render_state *so)
 {
        int ret;
 
@@ -215,7 +225,7 @@ int i915_gem_render_state_prepare(struct intel_engine_cs *engine,
 
        ret = render_state_setup(so);
        if (ret) {
-               i915_gem_render_state_fini(so);
+               render_state_fini(so);
                return ret;
        }
 
@@ -227,7 +237,7 @@ int i915_gem_render_state_init(struct drm_i915_gem_request *req)
        struct render_state so;
        int ret;
 
-       ret = i915_gem_render_state_prepare(req->engine, &so);
+       ret = render_state_prepare(req->engine, &so);
        if (ret)
                return ret;
 
@@ -251,8 +261,7 @@ int i915_gem_render_state_init(struct drm_i915_gem_request *req)
        }
 
        i915_vma_move_to_active(i915_gem_obj_to_ggtt(so.obj), req);
-
 out:
-       i915_gem_render_state_fini(&so);
+       render_state_fini(&so);
        return ret;
 }
index 6aaa3a10a6309e2f79539fe4df2a79714ea97f26..c44fca8599bbe1f5a95b581b64f2d139a4f1b77f 100644 (file)
 
 #include <linux/types.h>
 
-struct intel_renderstate_rodata {
-       const u32 *reloc;
-       const u32 *batch;
-       const u32 batch_items;
-};
-
-struct render_state {
-       const struct intel_renderstate_rodata *rodata;
-       struct drm_i915_gem_object *obj;
-       u64 ggtt_offset;
-       int gen;
-       u32 aux_batch_size;
-       u32 aux_batch_offset;
-};
-
 int i915_gem_render_state_init(struct drm_i915_gem_request *req);
-void i915_gem_render_state_fini(struct render_state *so);
-int i915_gem_render_state_prepare(struct intel_engine_cs *engine,
-                                 struct render_state *so);
 
 #endif /* _I915_GEM_RENDER_STATE_H_ */
index e8f855bc95d04ceddde22c6c27810002c7c3a4f3..8f6324b89083391e096d9e2fb96bac63a9102f85 100644 (file)
@@ -1796,38 +1796,6 @@ static int gen8_emit_request_render(struct drm_i915_gem_request *request)
        return intel_logical_ring_advance(request);
 }
 
-static int intel_lr_context_render_state_init(struct drm_i915_gem_request *req)
-{
-       struct render_state so;
-       int ret;
-
-       ret = i915_gem_render_state_prepare(req->engine, &so);
-       if (ret)
-               return ret;
-
-       if (so.rodata == NULL)
-               return 0;
-
-       ret = req->engine->emit_bb_start(req, so.ggtt_offset,
-                                        so.rodata->batch_items * 4,
-                                        I915_DISPATCH_SECURE);
-       if (ret)
-               goto out;
-
-       ret = req->engine->emit_bb_start(req,
-                                        (so.ggtt_offset + so.aux_batch_offset),
-                                        so.aux_batch_size,
-                                        I915_DISPATCH_SECURE);
-       if (ret)
-               goto out;
-
-       i915_vma_move_to_active(i915_gem_obj_to_ggtt(so.obj), req);
-
-out:
-       i915_gem_render_state_fini(&so);
-       return ret;
-}
-
 static int gen8_init_rcs_context(struct drm_i915_gem_request *req)
 {
        int ret;
@@ -1844,7 +1812,7 @@ static int gen8_init_rcs_context(struct drm_i915_gem_request *req)
        if (ret)
                DRM_ERROR("MOCS failed to program: expect performance issues.\n");
 
-       return intel_lr_context_render_state_init(req);
+       return i915_gem_render_state_init(req);
 }
 
 /**
index 5bd69852752c663ae22ccf4aedd1616518962225..08f6fea05a2c40a7710eea1cfa26de693671e7c0 100644 (file)
 #ifndef _INTEL_RENDERSTATE_H
 #define _INTEL_RENDERSTATE_H
 
-#include "i915_drv.h"
+#include <linux/types.h>
 
-extern const struct intel_renderstate_rodata gen6_null_state;
-extern const struct intel_renderstate_rodata gen7_null_state;
-extern const struct intel_renderstate_rodata gen8_null_state;
-extern const struct intel_renderstate_rodata gen9_null_state;
+struct intel_renderstate_rodata {
+       const u32 *reloc;
+       const u32 *batch;
+       const u32 batch_items;
+};
 
 #define RO_RENDERSTATE(_g)                                             \
        const struct intel_renderstate_rodata gen ## _g ## _null_state = { \
@@ -38,4 +39,9 @@ extern const struct intel_renderstate_rodata gen9_null_state;
                .batch_items = sizeof(gen ## _g ## _null_state_batch)/4, \
        }
 
+extern const struct intel_renderstate_rodata gen6_null_state;
+extern const struct intel_renderstate_rodata gen7_null_state;
+extern const struct intel_renderstate_rodata gen8_null_state;
+extern const struct intel_renderstate_rodata gen9_null_state;
+
 #endif /* INTEL_RENDERSTATE_H */