Commit 022d3093 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin Committed by Mika Kuoppala

drm/i915/icl: Prepare for more rings

Gen11 will add more VCS and VECS rings so prepare the
infrastructure to support that.

Bspec: 7021

v2: Rebase.
v3: Rebase.
v4: Rebase.
v5: Rebase.
v6:
  - Update for POR changes. (Daniele Ceraolo Spurio)
  - Add provisional guc engine ids - to be checked and confirmed.
v7:
  - Rebased.
  - Added the new ring masks.
  - Added the new HW ids.
v8:
  - Introduce I915_MAX_VCS/VECS to avoid magic numbers (Michal)

v9: increase MAX_ENGINE_INSTANCE to 3

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: default avatarOscar Mateo <oscar.mateo@intel.com>
Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180228101153.7224-1-mika.kuoppala@linux.intel.com
parent bba73071
...@@ -2746,6 +2746,9 @@ intel_info(const struct drm_i915_private *dev_priv) ...@@ -2746,6 +2746,9 @@ intel_info(const struct drm_i915_private *dev_priv)
#define BLT_RING ENGINE_MASK(BCS) #define BLT_RING ENGINE_MASK(BCS)
#define VEBOX_RING ENGINE_MASK(VECS) #define VEBOX_RING ENGINE_MASK(VECS)
#define BSD2_RING ENGINE_MASK(VCS2) #define BSD2_RING ENGINE_MASK(VCS2)
#define BSD3_RING ENGINE_MASK(VCS3)
#define BSD4_RING ENGINE_MASK(VCS4)
#define VEBOX2_RING ENGINE_MASK(VECS2)
#define ALL_ENGINES (~0) #define ALL_ENGINES (~0)
#define HAS_ENGINE(dev_priv, id) \ #define HAS_ENGINE(dev_priv, id) \
......
...@@ -57,6 +57,6 @@ ...@@ -57,6 +57,6 @@
#define GEM_TRACE(...) do { } while (0) #define GEM_TRACE(...) do { } while (0)
#endif #endif
#define I915_NUM_ENGINES 5 #define I915_NUM_ENGINES 8
#endif /* __I915_GEM_H__ */ #endif /* __I915_GEM_H__ */
...@@ -178,6 +178,9 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg) ...@@ -178,6 +178,9 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
#define BCS_HW 2 #define BCS_HW 2
#define VECS_HW 3 #define VECS_HW 3
#define VCS2_HW 4 #define VCS2_HW 4
#define VCS3_HW 6
#define VCS4_HW 7
#define VECS2_HW 12
/* Engine class */ /* Engine class */
...@@ -188,7 +191,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg) ...@@ -188,7 +191,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
#define OTHER_CLASS 4 #define OTHER_CLASS 4
#define MAX_ENGINE_CLASS 4 #define MAX_ENGINE_CLASS 4
#define MAX_ENGINE_INSTANCE 1 #define MAX_ENGINE_INSTANCE 3
/* PCI config space */ /* PCI config space */
......
...@@ -542,6 +542,9 @@ void intel_device_info_runtime_init(struct intel_device_info *info) ...@@ -542,6 +542,9 @@ void intel_device_info_runtime_init(struct intel_device_info *info)
info->num_scalers[PIPE_C] = 1; info->num_scalers[PIPE_C] = 1;
} }
BUILD_BUG_ON(I915_NUM_ENGINES >
sizeof(intel_ring_mask_t) * BITS_PER_BYTE);
/* /*
* Skylake and Broxton currently don't expose the topmost plane as its * Skylake and Broxton currently don't expose the topmost plane as its
* use is exclusive with the legacy cursor and we only want to expose * use is exclusive with the legacy cursor and we only want to expose
......
...@@ -125,6 +125,8 @@ struct sseu_dev_info { ...@@ -125,6 +125,8 @@ struct sseu_dev_info {
u8 has_eu_pg:1; u8 has_eu_pg:1;
}; };
typedef u8 intel_ring_mask_t;
struct intel_device_info { struct intel_device_info {
u16 device_id; u16 device_id;
u16 gen_mask; u16 gen_mask;
...@@ -132,7 +134,7 @@ struct intel_device_info { ...@@ -132,7 +134,7 @@ struct intel_device_info {
u8 gen; u8 gen;
u8 gt; /* GT number, 0 if undefined */ u8 gt; /* GT number, 0 if undefined */
u8 num_rings; u8 num_rings;
u8 ring_mask; /* Rings supported by the HW */ intel_ring_mask_t ring_mask; /* Rings supported by the HW */
enum intel_platform platform; enum intel_platform platform;
u32 platform_mask; u32 platform_mask;
......
...@@ -160,6 +160,9 @@ struct i915_ctx_workarounds { ...@@ -160,6 +160,9 @@ struct i915_ctx_workarounds {
struct i915_request; struct i915_request;
#define I915_MAX_VCS 4
#define I915_MAX_VECS 2
/* /*
* Engine IDs definitions. * Engine IDs definitions.
* Keep instances of the same type engine together. * Keep instances of the same type engine together.
...@@ -169,8 +172,12 @@ enum intel_engine_id { ...@@ -169,8 +172,12 @@ enum intel_engine_id {
BCS, BCS,
VCS, VCS,
VCS2, VCS2,
VCS3,
VCS4,
#define _VCS(n) (VCS + (n)) #define _VCS(n) (VCS + (n))
VECS VECS,
VECS2
#define _VECS(n) (VECS + (n))
}; };
struct i915_priolist { struct i915_priolist {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment