mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 15:33:55 +07:00
drm/i915/tgl: Add Wa_14010477008:tgl
Media decompression support should not be advertised on any display
planes for steppings A0-C0.
Bspec: 53273
Fixes: 2dfbf9d287
("drm/i915/tgl: Gen-12 display can decompress surfaces compressed by the media engine")
Cc: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200414211118.2787489-3-matthew.d.roper@intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
This commit is contained in:
parent
f96198abe8
commit
dbff5a8db9
@ -2817,19 +2817,25 @@ static bool skl_plane_format_mod_supported(struct drm_plane *_plane,
|
||||
}
|
||||
}
|
||||
|
||||
static bool gen12_plane_supports_mc_ccs(enum plane_id plane_id)
|
||||
static bool gen12_plane_supports_mc_ccs(struct drm_i915_private *dev_priv,
|
||||
enum plane_id plane_id)
|
||||
{
|
||||
/* Wa_14010477008:tgl[a0..c0] */
|
||||
if (IS_TGL_REVID(dev_priv, TGL_REVID_A0, TGL_REVID_C0))
|
||||
return false;
|
||||
|
||||
return plane_id < PLANE_SPRITE4;
|
||||
}
|
||||
|
||||
static bool gen12_plane_format_mod_supported(struct drm_plane *_plane,
|
||||
u32 format, u64 modifier)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = to_i915(_plane->dev);
|
||||
struct intel_plane *plane = to_intel_plane(_plane);
|
||||
|
||||
switch (modifier) {
|
||||
case I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS:
|
||||
if (!gen12_plane_supports_mc_ccs(plane->id))
|
||||
if (!gen12_plane_supports_mc_ccs(dev_priv, plane->id))
|
||||
return false;
|
||||
/* fall through */
|
||||
case DRM_FORMAT_MOD_LINEAR:
|
||||
@ -2998,9 +3004,10 @@ static const u32 *icl_get_plane_formats(struct drm_i915_private *dev_priv,
|
||||
}
|
||||
}
|
||||
|
||||
static const u64 *gen12_get_plane_modifiers(enum plane_id plane_id)
|
||||
static const u64 *gen12_get_plane_modifiers(struct drm_i915_private *dev_priv,
|
||||
enum plane_id plane_id)
|
||||
{
|
||||
if (gen12_plane_supports_mc_ccs(plane_id))
|
||||
if (gen12_plane_supports_mc_ccs(dev_priv, plane_id))
|
||||
return gen12_plane_format_modifiers_mc_ccs;
|
||||
else
|
||||
return gen12_plane_format_modifiers_rc_ccs;
|
||||
@ -3070,7 +3077,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
|
||||
|
||||
plane->has_ccs = skl_plane_has_ccs(dev_priv, pipe, plane_id);
|
||||
if (INTEL_GEN(dev_priv) >= 12) {
|
||||
modifiers = gen12_get_plane_modifiers(plane_id);
|
||||
modifiers = gen12_get_plane_modifiers(dev_priv, plane_id);
|
||||
plane_funcs = &gen12_plane_funcs;
|
||||
} else {
|
||||
if (plane->has_ccs)
|
||||
|
@ -1505,6 +1505,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
|
||||
(IS_ICELAKE(p) && IS_REVID(p, since, until))
|
||||
|
||||
#define TGL_REVID_A0 0x0
|
||||
#define TGL_REVID_B0 0x1
|
||||
#define TGL_REVID_C0 0x2
|
||||
|
||||
#define IS_TGL_REVID(p, since, until) \
|
||||
(IS_TIGERLAKE(p) && IS_REVID(p, since, until))
|
||||
|
Loading…
Reference in New Issue
Block a user