drm/i915: Use the engine class to get the context size
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Tue, 11 Apr 2017 10:11:12 +0000 (03:11 -0700)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 11 Apr 2017 18:44:04 +0000 (19:44 +0100)
Technically speaking, the context size is per engine class, not per
instance.

v2: Add MISSING_CASE (Tvrtko)

v3: Rebased

v4: Restore the interface back to hiding the class lookup (Chris)

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1491905472-16189-1-git-send-email-oscar.mateo@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/intel_lrc.c

index 0dc1cc4ad6e7aa52f2f3300f7d141ea773c71785..711125a7624c1fb035c194ffae70e41b037cb419 100644 (file)
@@ -1923,21 +1923,30 @@ populate_lr_context(struct i915_gem_context *ctx,
  */
 uint32_t intel_lr_context_size(struct intel_engine_cs *engine)
 {
-       int ret = 0;
+       struct drm_i915_private *dev_priv = engine->i915;
+       int ret;
 
-       WARN_ON(INTEL_GEN(engine->i915) < 8);
+       WARN_ON(INTEL_GEN(dev_priv) < 8);
 
-       switch (engine->id) {
-       case RCS:
-               if (INTEL_GEN(engine->i915) >= 9)
+       switch (engine->class) {
+       case RENDER_CLASS:
+               switch (INTEL_GEN(dev_priv)) {
+               default:
+                       MISSING_CASE(INTEL_GEN(dev_priv));
+               case 9:
                        ret = GEN9_LR_CONTEXT_RENDER_SIZE;
-               else
+                       break;
+               case 8:
                        ret = GEN8_LR_CONTEXT_RENDER_SIZE;
+                       break;
+               }
                break;
-       case VCS:
-       case BCS:
-       case VECS:
-       case VCS2:
+
+       default:
+               MISSING_CASE(engine->class);
+       case VIDEO_DECODE_CLASS:
+       case VIDEO_ENHANCEMENT_CLASS:
+       case COPY_ENGINE_CLASS:
                ret = GEN8_LR_CONTEXT_OTHER_SIZE;
                break;
        }