* [PATCH] drm/i915: Recalculate FBC w/a stride when needed
@ 2020-07-10 20:34 ` Ville Syrjala
0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2020-07-10 20:34 UTC (permalink / raw)
To: intel-gfx; +Cc: stable
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we're failing to recalculate the gen9 FBC w/a stride
unless something more drastic than just the modifier itself has
changed. This often leaves us with FBC enabled with the linear
fbdev framebuffer without the w/a stride enabled. That will cause
an immediate underrun and FBC will get promptly disabled.
Fix the problem by checking if the w/a stride is about to change,
and go through the full dance if so. This part of the FBC code
is still pretty much a disaster and will need lots more work.
But this should at least fix the immediate issue.
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 29 ++++++++++++++++++------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ef2eb14f6157..ff199374ed36 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
fbc->compressed_fb.size * fbc->threshold;
}
+static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+ struct intel_fbc_state_cache *cache = &fbc->state_cache;
+
+ if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
+ cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
+ return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
+ else
+ return 0;
+}
+
+static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+
+ return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
+}
+
static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
{
struct intel_fbc *fbc = &dev_priv->fbc;
@@ -1218,7 +1237,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
if (fbc->crtc) {
if (fbc->crtc != crtc ||
- !intel_fbc_cfb_size_changed(dev_priv))
+ (!intel_fbc_cfb_size_changed(dev_priv) &&
+ !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
goto out;
__intel_fbc_disable(dev_priv);
@@ -1240,12 +1260,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
goto out;
}
- if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
- plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
- cache->gen9_wa_cfb_stride =
- DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
- else
- cache->gen9_wa_cfb_stride = 0;
+ cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
pipe_name(crtc->pipe));
--
2.26.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] [PATCH] drm/i915: Recalculate FBC w/a stride when needed
@ 2020-07-10 20:34 ` Ville Syrjala
0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2020-07-10 20:34 UTC (permalink / raw)
To: intel-gfx; +Cc: stable
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we're failing to recalculate the gen9 FBC w/a stride
unless something more drastic than just the modifier itself has
changed. This often leaves us with FBC enabled with the linear
fbdev framebuffer without the w/a stride enabled. That will cause
an immediate underrun and FBC will get promptly disabled.
Fix the problem by checking if the w/a stride is about to change,
and go through the full dance if so. This part of the FBC code
is still pretty much a disaster and will need lots more work.
But this should at least fix the immediate issue.
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 29 ++++++++++++++++++------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ef2eb14f6157..ff199374ed36 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
fbc->compressed_fb.size * fbc->threshold;
}
+static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+ struct intel_fbc_state_cache *cache = &fbc->state_cache;
+
+ if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
+ cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
+ return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
+ else
+ return 0;
+}
+
+static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+
+ return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
+}
+
static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
{
struct intel_fbc *fbc = &dev_priv->fbc;
@@ -1218,7 +1237,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
if (fbc->crtc) {
if (fbc->crtc != crtc ||
- !intel_fbc_cfb_size_changed(dev_priv))
+ (!intel_fbc_cfb_size_changed(dev_priv) &&
+ !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
goto out;
__intel_fbc_disable(dev_priv);
@@ -1240,12 +1260,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
goto out;
}
- if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
- plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
- cache->gen9_wa_cfb_stride =
- DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
- else
- cache->gen9_wa_cfb_stride = 0;
+ cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
pipe_name(crtc->pipe));
--
2.26.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: Recalculate FBC w/a stride when needed
2020-07-10 20:34 ` [Intel-gfx] " Ville Syrjala
(?)
@ 2020-07-10 22:19 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2020-07-10 22:19 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Recalculate FBC w/a stride when needed
URL : https://patchwork.freedesktop.org/series/79368/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_8731 -> Patchwork_18137
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_18137 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_18137, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/index.html
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_18137:
### IGT changes ###
#### Possible regressions ####
* igt@kms_busy@basic@flip:
- fi-whl-u: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-whl-u/igt@kms_busy@basic@flip.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-whl-u/igt@kms_busy@basic@flip.html
- fi-cml-s: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-cml-s/igt@kms_busy@basic@flip.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-cml-s/igt@kms_busy@basic@flip.html
- fi-cfl-guc: [PASS][5] -> [INCOMPLETE][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-cfl-guc/igt@kms_busy@basic@flip.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-cfl-guc/igt@kms_busy@basic@flip.html
- fi-cfl-8700k: [PASS][7] -> [INCOMPLETE][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-cfl-8700k/igt@kms_busy@basic@flip.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-cfl-8700k/igt@kms_busy@basic@flip.html
- fi-skl-6600u: [PASS][9] -> [INCOMPLETE][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-skl-6600u/igt@kms_busy@basic@flip.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-skl-6600u/igt@kms_busy@basic@flip.html
- fi-cfl-8109u: [PASS][11] -> [INCOMPLETE][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-cfl-8109u/igt@kms_busy@basic@flip.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-cfl-8109u/igt@kms_busy@basic@flip.html
- fi-cml-u2: [PASS][13] -> [INCOMPLETE][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-cml-u2/igt@kms_busy@basic@flip.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-cml-u2/igt@kms_busy@basic@flip.html
Known issues
------------
Here are the changes found in Patchwork_18137 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_module_load@reload:
- fi-tgl-u2: [PASS][15] -> [DMESG-WARN][16] ([i915#402])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-tgl-u2/igt@i915_module_load@reload.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-tgl-u2/igt@i915_module_load@reload.html
* igt@i915_pm_rpm@basic-pci-d3-state:
- fi-bsw-kefka: [PASS][17] -> [DMESG-WARN][18] ([i915#1982])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
* igt@i915_selftest@live@gem_contexts:
- fi-tgl-u2: [PASS][19] -> [INCOMPLETE][20] ([i915#2045])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-tgl-u2/igt@i915_selftest@live@gem_contexts.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-tgl-u2/igt@i915_selftest@live@gem_contexts.html
* igt@kms_busy@basic@flip:
- fi-bxt-dsi: [PASS][21] -> [INCOMPLETE][22] ([i915#1635])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-bxt-dsi/igt@kms_busy@basic@flip.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-bxt-dsi/igt@kms_busy@basic@flip.html
* igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1:
- fi-icl-u2: [PASS][23] -> [DMESG-WARN][24] ([i915#1982])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html
* igt@vgem_basic@dmabuf-fence-before:
- fi-tgl-y: [PASS][25] -> [DMESG-WARN][26] ([i915#402]) +1 similar issue
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-tgl-y/igt@vgem_basic@dmabuf-fence-before.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-tgl-y/igt@vgem_basic@dmabuf-fence-before.html
#### Possible fixes ####
* igt@gem_exec_suspend@basic-s0:
- fi-tgl-u2: [FAIL][27] ([i915#1888]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-tgl-u2/igt@gem_exec_suspend@basic-s0.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-tgl-u2/igt@gem_exec_suspend@basic-s0.html
* igt@gem_flink_basic@flink-lifetime:
- fi-tgl-y: [DMESG-WARN][29] ([i915#402]) -> [PASS][30] +1 similar issue
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-tgl-y/igt@gem_flink_basic@flink-lifetime.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-tgl-y/igt@gem_flink_basic@flink-lifetime.html
* igt@i915_pm_rpm@module-reload:
- fi-apl-guc: [DMESG-WARN][31] ([i915#1635] / [i915#1982]) -> [PASS][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-apl-guc/igt@i915_pm_rpm@module-reload.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-apl-guc/igt@i915_pm_rpm@module-reload.html
#### Warnings ####
* igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275: [SKIP][33] ([fdo#109271]) -> [DMESG-FAIL][34] ([i915#62])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- fi-kbl-x1275: [DMESG-WARN][35] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][36] ([i915#62] / [i915#92]) +3 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@prime_vgem@basic-fence-flip:
- fi-kbl-x1275: [DMESG-WARN][37] ([i915#62] / [i915#92]) -> [DMESG-WARN][38] ([i915#62] / [i915#92] / [i915#95]) +3 similar issues
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8731/fi-kbl-x1275/igt@prime_vgem@basic-fence-flip.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/fi-kbl-x1275/igt@prime_vgem@basic-fence-flip.html
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
[i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#2045]: https://gitlab.freedesktop.org/drm/intel/issues/2045
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (42 -> 35)
------------------------------
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_8731 -> Patchwork_18137
CI-20190529: 20190529
CI_DRM_8731: f88955370bca7351fd1d92420c523e35634d7e69 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5732: 8a50ca9985d2dbb0293186c3286af46468fb4b84 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_18137: 4bd6f4b8a817218b42565854e07760ac599e73c0 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
4bd6f4b8a817 drm/i915: Recalculate FBC w/a stride when needed
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18137/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2] drm/i915: Recalculate FBC w/a stride when needed
2020-07-10 20:34 ` [Intel-gfx] " Ville Syrjala
@ 2020-07-11 8:03 ` Ville Syrjala
-1 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2020-07-11 8:03 UTC (permalink / raw)
To: intel-gfx; +Cc: stable
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we're failing to recalculate the gen9 FBC w/a stride
unless something more drastic than just the modifier itself has
changed. This often leaves us with FBC enabled with the linear
fbdev framebuffer without the w/a stride enabled. That will cause
an immediate underrun and FBC will get promptly disabled.
Fix the problem by checking if the w/a stride is about to change,
and go through the full dance if so. This part of the FBC code
is still pretty much a disaster and will need lots more work.
But this should at least fix the immediate issue.
v2: Deactivate FBC when the modifier changes since that will
likely require resetting the w/a CFB stride
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 33 +++++++++++++++++++-----
drivers/gpu/drm/i915/i915_drv.h | 1 +
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ef2eb14f6157..85723fba6002 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
fbc->compressed_fb.size * fbc->threshold;
}
+static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+ struct intel_fbc_state_cache *cache = &fbc->state_cache;
+
+ if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
+ cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
+ return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
+ else
+ return 0;
+}
+
+static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+
+ return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
+}
+
static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
{
struct intel_fbc *fbc = &dev_priv->fbc;
@@ -902,6 +921,7 @@ static void intel_fbc_get_reg_params(struct intel_crtc *crtc,
params->crtc.i9xx_plane = to_intel_plane(crtc->base.primary)->i9xx_plane;
params->fb.format = cache->fb.format;
+ params->fb.modifier = cache->fb.modifier;
params->fb.stride = cache->fb.stride;
params->cfb_size = intel_fbc_calculate_cfb_size(dev_priv, cache);
@@ -931,6 +951,9 @@ static bool intel_fbc_can_flip_nuke(const struct intel_crtc_state *crtc_state)
if (params->fb.format != cache->fb.format)
return false;
+ if (params->fb.modifier != cache->fb.modifier)
+ return false;
+
if (params->fb.stride != cache->fb.stride)
return false;
@@ -1218,7 +1241,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
if (fbc->crtc) {
if (fbc->crtc != crtc ||
- !intel_fbc_cfb_size_changed(dev_priv))
+ (!intel_fbc_cfb_size_changed(dev_priv) &&
+ !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
goto out;
__intel_fbc_disable(dev_priv);
@@ -1240,12 +1264,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
goto out;
}
- if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
- plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
- cache->gen9_wa_cfb_stride =
- DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
- else
- cache->gen9_wa_cfb_stride = 0;
+ cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
pipe_name(crtc->pipe));
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 87973dedf8e7..14b095afab42 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -442,6 +442,7 @@ struct intel_fbc {
struct {
const struct drm_format_info *format;
unsigned int stride;
+ u64 modifier;
} fb;
int cfb_size;
--
2.26.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] [PATCH v2] drm/i915: Recalculate FBC w/a stride when needed
@ 2020-07-11 8:03 ` Ville Syrjala
0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2020-07-11 8:03 UTC (permalink / raw)
To: intel-gfx; +Cc: stable
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we're failing to recalculate the gen9 FBC w/a stride
unless something more drastic than just the modifier itself has
changed. This often leaves us with FBC enabled with the linear
fbdev framebuffer without the w/a stride enabled. That will cause
an immediate underrun and FBC will get promptly disabled.
Fix the problem by checking if the w/a stride is about to change,
and go through the full dance if so. This part of the FBC code
is still pretty much a disaster and will need lots more work.
But this should at least fix the immediate issue.
v2: Deactivate FBC when the modifier changes since that will
likely require resetting the w/a CFB stride
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 33 +++++++++++++++++++-----
drivers/gpu/drm/i915/i915_drv.h | 1 +
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ef2eb14f6157..85723fba6002 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
fbc->compressed_fb.size * fbc->threshold;
}
+static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+ struct intel_fbc_state_cache *cache = &fbc->state_cache;
+
+ if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
+ cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
+ return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
+ else
+ return 0;
+}
+
+static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
+{
+ struct intel_fbc *fbc = &dev_priv->fbc;
+
+ return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
+}
+
static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
{
struct intel_fbc *fbc = &dev_priv->fbc;
@@ -902,6 +921,7 @@ static void intel_fbc_get_reg_params(struct intel_crtc *crtc,
params->crtc.i9xx_plane = to_intel_plane(crtc->base.primary)->i9xx_plane;
params->fb.format = cache->fb.format;
+ params->fb.modifier = cache->fb.modifier;
params->fb.stride = cache->fb.stride;
params->cfb_size = intel_fbc_calculate_cfb_size(dev_priv, cache);
@@ -931,6 +951,9 @@ static bool intel_fbc_can_flip_nuke(const struct intel_crtc_state *crtc_state)
if (params->fb.format != cache->fb.format)
return false;
+ if (params->fb.modifier != cache->fb.modifier)
+ return false;
+
if (params->fb.stride != cache->fb.stride)
return false;
@@ -1218,7 +1241,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
if (fbc->crtc) {
if (fbc->crtc != crtc ||
- !intel_fbc_cfb_size_changed(dev_priv))
+ (!intel_fbc_cfb_size_changed(dev_priv) &&
+ !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
goto out;
__intel_fbc_disable(dev_priv);
@@ -1240,12 +1264,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
goto out;
}
- if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
- plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
- cache->gen9_wa_cfb_stride =
- DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
- else
- cache->gen9_wa_cfb_stride = 0;
+ cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
pipe_name(crtc->pipe));
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 87973dedf8e7..14b095afab42 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -442,6 +442,7 @@ struct intel_fbc {
struct {
const struct drm_format_info *format;
unsigned int stride;
+ u64 modifier;
} fb;
int cfb_size;
--
2.26.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Recalculate FBC w/a stride when needed (rev2)
2020-07-10 20:34 ` [Intel-gfx] " Ville Syrjala
` (2 preceding siblings ...)
(?)
@ 2020-07-11 8:42 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2020-07-11 8:42 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Recalculate FBC w/a stride when needed (rev2)
URL : https://patchwork.freedesktop.org/series/79368/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8732 -> Patchwork_18139
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/index.html
Known issues
------------
Here are the changes found in Patchwork_18139 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- fi-bsw-kefka: [PASS][1] -> [DMESG-WARN][2] ([i915#1982])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
- fi-icl-u2: [PASS][3] -> [DMESG-WARN][4] ([i915#1982])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html
#### Possible fixes ####
* igt@i915_pm_backlight@basic-brightness:
- fi-whl-u: [DMESG-WARN][5] ([i915#95]) -> [PASS][6] +1 similar issue
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-whl-u/igt@i915_pm_backlight@basic-brightness.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-whl-u/igt@i915_pm_backlight@basic-brightness.html
* igt@i915_pm_rpm@basic-pci-d3-state:
- fi-bsw-kefka: [DMESG-WARN][7] ([i915#1982]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
* igt@i915_selftest@live@gt_lrc:
- fi-tgl-u2: [DMESG-FAIL][9] ([i915#1233]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-tgl-u2/igt@i915_selftest@live@gt_lrc.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-tgl-u2/igt@i915_selftest@live@gt_lrc.html
* igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence:
- fi-tgl-u2: [DMESG-WARN][11] ([i915#402]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-tgl-u2/igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-tgl-u2/igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence.html
#### Warnings ####
* igt@debugfs_test@read_all_entries:
- fi-kbl-x1275: [DMESG-WARN][13] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][14] ([i915#62] / [i915#92]) +1 similar issue
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- fi-kbl-x1275: [DMESG-WARN][15] ([i915#62] / [i915#92]) -> [DMESG-WARN][16] ([i915#62] / [i915#92] / [i915#95]) +5 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#1233]: https://gitlab.freedesktop.org/drm/intel/issues/1233
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (41 -> 34)
------------------------------
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_8732 -> Patchwork_18139
CI-20190529: 20190529
CI_DRM_8732: 4c05e94181f1a8ea4c91a5bd90e81f3275b51332 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5732: 8a50ca9985d2dbb0293186c3286af46468fb4b84 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_18139: 4920b87c4fb3249ff39d8e1d6d733beb4bdc8261 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
4920b87c4fb3 drm/i915: Recalculate FBC w/a stride when needed
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Recalculate FBC w/a stride when needed (rev2)
2020-07-10 20:34 ` [Intel-gfx] " Ville Syrjala
` (3 preceding siblings ...)
(?)
@ 2020-07-11 10:17 ` Patchwork
-1 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2020-07-11 10:17 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Recalculate FBC w/a stride when needed (rev2)
URL : https://patchwork.freedesktop.org/series/79368/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_8732_full -> Patchwork_18139_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_18139_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_18139_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_18139_full:
### IGT changes ###
#### Possible regressions ####
* igt@i915_pm_rps@waitboost:
- shard-tglb: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb8/igt@i915_pm_rps@waitboost.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb7/igt@i915_pm_rps@waitboost.html
* igt@kms_cursor_legacy@all-pipes-forked-move:
- shard-tglb: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb7/igt@kms_cursor_legacy@all-pipes-forked-move.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb7/igt@kms_cursor_legacy@all-pipes-forked-move.html
Known issues
------------
Here are the changes found in Patchwork_18139_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_endless@dispatch@vcs0:
- shard-tglb: [PASS][5] -> [INCOMPLETE][6] ([i915#1958] / [i915#2119])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb8/igt@gem_exec_endless@dispatch@vcs0.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb7/igt@gem_exec_endless@dispatch@vcs0.html
* igt@gem_exec_fence@parallel@vecs0:
- shard-glk: [PASS][7] -> [DMESG-WARN][8] ([i915#118] / [i915#95]) +1 similar issue
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-glk5/igt@gem_exec_fence@parallel@vecs0.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-glk2/igt@gem_exec_fence@parallel@vecs0.html
* igt@gem_exec_reloc@basic-cpu-gtt-active:
- shard-tglb: [PASS][9] -> [DMESG-WARN][10] ([i915#402])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb3/igt@gem_exec_reloc@basic-cpu-gtt-active.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb5/igt@gem_exec_reloc@basic-cpu-gtt-active.html
* igt@gem_exec_suspend@basic-s3:
- shard-skl: [PASS][11] -> [INCOMPLETE][12] ([i915#69])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl7/igt@gem_exec_suspend@basic-s3.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl10/igt@gem_exec_suspend@basic-s3.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-snb: [PASS][13] -> [TIMEOUT][14] ([i915#1958] / [i915#2119]) +2 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-snb2/igt@gem_userptr_blits@dmabuf-sync.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-snb2/igt@gem_userptr_blits@dmabuf-sync.html
* igt@i915_selftest@mock@requests:
- shard-skl: [PASS][15] -> [INCOMPLETE][16] ([i915#198] / [i915#2110])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl4/igt@i915_selftest@mock@requests.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl10/igt@i915_selftest@mock@requests.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-kbl: [PASS][17] -> [DMESG-WARN][18] ([i915#180]) +5 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_cursor_edge_walk@pipe-b-64x64-left-edge:
- shard-skl: [PASS][19] -> [DMESG-WARN][20] ([i915#1982]) +3 similar issues
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl2/igt@kms_cursor_edge_walk@pipe-b-64x64-left-edge.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl5/igt@kms_cursor_edge_walk@pipe-b-64x64-left-edge.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-vga1-hdmi-a1:
- shard-hsw: [PASS][21] -> [DMESG-WARN][22] ([i915#1982])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-hsw1/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-vga1-hdmi-a1.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-hsw6/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-vga1-hdmi-a1.html
* igt@kms_frontbuffer_tracking@psr-suspend:
- shard-skl: [PASS][23] -> [INCOMPLETE][24] ([i915#123] / [i915#69])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl8/igt@kms_frontbuffer_tracking@psr-suspend.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl6/igt@kms_frontbuffer_tracking@psr-suspend.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-skl: [PASS][25] -> [FAIL][26] ([i915#1188]) +1 similar issue
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl1/igt@kms_hdr@bpc-switch-dpms.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl8/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl: [PASS][27] -> [FAIL][28] ([fdo#108145] / [i915#265]) +1 similar issue
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl7/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [PASS][29] -> [SKIP][30] ([fdo#109642] / [fdo#111068])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb2/igt@kms_psr2_su@frontbuffer.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb5/igt@kms_psr2_su@frontbuffer.html
* igt@kms_psr@psr2_cursor_plane_onoff:
- shard-iclb: [PASS][31] -> [SKIP][32] ([fdo#109441])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb2/igt@kms_psr@psr2_cursor_plane_onoff.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb1/igt@kms_psr@psr2_cursor_plane_onoff.html
* igt@kms_vblank@pipe-b-ts-continuation-idle:
- shard-tglb: [PASS][33] -> [DMESG-WARN][34] ([i915#1982])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb1/igt@kms_vblank@pipe-b-ts-continuation-idle.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb2/igt@kms_vblank@pipe-b-ts-continuation-idle.html
* igt@sysfs_timeslice_duration@timeout@vecs0:
- shard-apl: [PASS][35] -> [FAIL][36] ([i915#1635] / [i915#1755])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl2/igt@sysfs_timeslice_duration@timeout@vecs0.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl2/igt@sysfs_timeslice_duration@timeout@vecs0.html
#### Possible fixes ####
* igt@gem_exec_whisper@basic-contexts-forked-all:
- shard-glk: [DMESG-WARN][37] ([i915#118] / [i915#95]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-glk7/igt@gem_exec_whisper@basic-contexts-forked-all.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-glk1/igt@gem_exec_whisper@basic-contexts-forked-all.html
* igt@gem_fence_thrash@bo-copy:
- shard-tglb: [DMESG-WARN][39] ([i915#402]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb7/igt@gem_fence_thrash@bo-copy.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb1/igt@gem_fence_thrash@bo-copy.html
* igt@gem_mmap_gtt@cpuset-medium-copy:
- shard-kbl: [DMESG-WARN][41] ([i915#93] / [i915#95]) -> [PASS][42] +35 similar issues
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl4/igt@gem_mmap_gtt@cpuset-medium-copy.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl4/igt@gem_mmap_gtt@cpuset-medium-copy.html
* igt@kms_big_fb@linear-64bpp-rotate-0:
- shard-glk: [DMESG-FAIL][43] ([i915#118] / [i915#95]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-0.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-glk2/igt@kms_big_fb@linear-64bpp-rotate-0.html
* igt@kms_color@pipe-b-ctm-negative:
- shard-skl: [DMESG-WARN][45] ([i915#1982]) -> [PASS][46] +9 similar issues
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl9/igt@kms_color@pipe-b-ctm-negative.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl7/igt@kms_color@pipe-b-ctm-negative.html
* igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding:
- shard-apl: [DMESG-FAIL][47] ([i915#1635] / [i915#54] / [i915#95]) -> [PASS][48]
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl8/igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl3/igt@kms_cursor_crc@pipe-a-cursor-256x256-sliding.html
* igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen:
- shard-kbl: [DMESG-FAIL][49] ([i915#54] / [i915#95]) -> [PASS][50] +2 similar issues
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html
* igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge:
- shard-glk: [DMESG-WARN][51] ([i915#1982]) -> [PASS][52]
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-glk6/igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-glk1/igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge.html
* igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic:
- shard-apl: [DMESG-WARN][53] ([i915#1635] / [i915#95]) -> [PASS][54] +28 similar issues
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl6/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl6/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_cursor_legacy@pipe-b-single-move:
- shard-snb: [INCOMPLETE][55] ([i915#82]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-snb1/igt@kms_cursor_legacy@pipe-b-single-move.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-snb1/igt@kms_cursor_legacy@pipe-b-single-move.html
* igt@kms_fbcon_fbt@fbc:
- shard-kbl: [FAIL][57] ([i915#64]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl7/igt@kms_fbcon_fbt@fbc.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl3/igt@kms_fbcon_fbt@fbc.html
- shard-apl: [FAIL][59] ([i915#1525] / [i915#1635]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl4/igt@kms_fbcon_fbt@fbc.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl7/igt@kms_fbcon_fbt@fbc.html
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-skl: [FAIL][61] ([i915#79]) -> [PASS][62]
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl9/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl7/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@d-edp1:
- shard-tglb: [INCOMPLETE][63] -> [PASS][64]
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb8/igt@kms_flip@flip-vs-expired-vblank@d-edp1.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb2/igt@kms_flip@flip-vs-expired-vblank@d-edp1.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt:
- shard-tglb: [DMESG-WARN][65] ([i915#1982]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-tglb5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-tglb1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-skl: [FAIL][67] ([i915#1188]) -> [PASS][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl9/igt@kms_hdr@bpc-switch-suspend.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl2/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_plane@plane-panning-top-left-pipe-a-planes:
- shard-iclb: [DMESG-WARN][69] ([i915#1982]) -> [PASS][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb3/igt@kms_plane@plane-panning-top-left-pipe-a-planes.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb7/igt@kms_plane@plane-panning-top-left-pipe-a-planes.html
* igt@kms_plane_alpha_blend@pipe-a-coverage-vs-premult-vs-constant:
- shard-kbl: [DMESG-FAIL][71] ([fdo#108145] / [i915#95]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl4/igt@kms_plane_alpha_blend@pipe-a-coverage-vs-premult-vs-constant.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl6/igt@kms_plane_alpha_blend@pipe-a-coverage-vs-premult-vs-constant.html
- shard-apl: [DMESG-FAIL][73] ([fdo#108145] / [i915#1635] / [i915#95]) -> [PASS][74] +1 similar issue
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl1/igt@kms_plane_alpha_blend@pipe-a-coverage-vs-premult-vs-constant.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl4/igt@kms_plane_alpha_blend@pipe-a-coverage-vs-premult-vs-constant.html
* igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl: [FAIL][75] ([fdo#108145] / [i915#265]) -> [PASS][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl2/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
* igt@kms_plane_cursor@pipe-a-overlay-size-64:
- shard-apl: [DMESG-FAIL][77] ([i915#1635] / [i915#95]) -> [PASS][78]
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl2/igt@kms_plane_cursor@pipe-a-overlay-size-64.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl4/igt@kms_plane_cursor@pipe-a-overlay-size-64.html
- shard-kbl: [DMESG-FAIL][79] ([i915#95]) -> [PASS][80]
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl3/igt@kms_plane_cursor@pipe-a-overlay-size-64.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl6/igt@kms_plane_cursor@pipe-a-overlay-size-64.html
* igt@kms_psr@psr2_sprite_plane_onoff:
- shard-iclb: [SKIP][81] ([fdo#109441]) -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb5/igt@kms_psr@psr2_sprite_plane_onoff.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb2/igt@kms_psr@psr2_sprite_plane_onoff.html
* igt@sysfs_timeslice_duration@timeout@vecs0:
- shard-iclb: [FAIL][83] ([i915#1755]) -> [PASS][84]
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb5/igt@sysfs_timeslice_duration@timeout@vecs0.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb8/igt@sysfs_timeslice_duration@timeout@vecs0.html
#### Warnings ####
* igt@gem_ctx_persistence@file:
- shard-snb: [SKIP][85] ([fdo#109271] / [i915#1099]) -> [TIMEOUT][86] ([i915#1958] / [i915#2119])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-snb2/igt@gem_ctx_persistence@file.html
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-snb2/igt@gem_ctx_persistence@file.html
* igt@gem_exec_reloc@basic-concurrent16:
- shard-snb: [FAIL][87] ([i915#1930]) -> [TIMEOUT][88] ([i915#1958] / [i915#2119])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-snb2/igt@gem_exec_reloc@basic-concurrent16.html
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-snb2/igt@gem_exec_reloc@basic-concurrent16.html
* igt@gem_render_copy@y-tiled-ccs-to-yf-tiled:
- shard-snb: [SKIP][89] ([fdo#109271]) -> [TIMEOUT][90] ([i915#1958] / [i915#2119])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-snb2/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-snb2/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled.html
* igt@i915_pm_dc@dc3co-vpb-simulation:
- shard-iclb: [SKIP][91] ([i915#588]) -> [SKIP][92] ([i915#658])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb6/igt@i915_pm_dc@dc3co-vpb-simulation.html
* igt@i915_pm_dc@dc6-psr:
- shard-skl: [DMESG-FAIL][93] ([i915#1982]) -> [FAIL][94] ([i915#454])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-skl4/igt@i915_pm_dc@dc6-psr.html
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-skl1/igt@i915_pm_dc@dc6-psr.html
* igt@kms_content_protection@atomic:
- shard-kbl: [TIMEOUT][95] ([i915#1319] / [i915#2119]) -> [TIMEOUT][96] ([i915#1319] / [i915#1958] / [i915#2119])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-kbl6/igt@kms_content_protection@atomic.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-kbl4/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@srm:
- shard-apl: [DMESG-FAIL][97] ([fdo#110321] / [i915#1635] / [i915#95]) -> [FAIL][98] ([fdo#110321] / [i915#1635])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-apl2/igt@kms_content_protection@srm.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-apl4/igt@kms_content_protection@srm.html
* igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [DMESG-WARN][99] ([i915#1226]) -> [SKIP][100] ([fdo#109349])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8732/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/shard-iclb5/igt@kms_dp_dsc@basic-dsc-enable-edp.html
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1226]: https://gitlab.freedesktop.org/drm/intel/issues/1226
[i915#123]: https://gitlab.freedesktop.org/drm/intel/issues/123
[i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
[i915#1525]: https://gitlab.freedesktop.org/drm/intel/issues/1525
[i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
[i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1930]: https://gitlab.freedesktop.org/drm/intel/issues/1930
[i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958
[i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#2110]: https://gitlab.freedesktop.org/drm/intel/issues/2110
[i915#2119]: https://gitlab.freedesktop.org/drm/intel/issues/2119
[i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#588]: https://gitlab.freedesktop.org/drm/intel/issues/588
[i915#64]: https://gitlab.freedesktop.org/drm/intel/issues/64
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
[i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Build changes
-------------
* Linux: CI_DRM_8732 -> Patchwork_18139
CI-20190529: 20190529
CI_DRM_8732: 4c05e94181f1a8ea4c91a5bd90e81f3275b51332 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5732: 8a50ca9985d2dbb0293186c3286af46468fb4b84 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_18139: 4920b87c4fb3249ff39d8e1d6d733beb4bdc8261 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18139/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH v2] drm/i915: Recalculate FBC w/a stride when needed
2020-07-11 8:03 ` [Intel-gfx] " Ville Syrjala
@ 2020-07-13 21:15 ` Souza, Jose
-1 siblings, 0 replies; 9+ messages in thread
From: Souza, Jose @ 2020-07-13 21:15 UTC (permalink / raw)
To: ville.syrjala, intel-gfx; +Cc: stable
On Sat, 2020-07-11 at 11:03 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Currently we're failing to recalculate the gen9 FBC w/a stride
> unless something more drastic than just the modifier itself has
> changed. This often leaves us with FBC enabled with the linear
> fbdev framebuffer without the w/a stride enabled. That will cause
> an immediate underrun and FBC will get promptly disabled.
>
> Fix the problem by checking if the w/a stride is about to change,
> and go through the full dance if so. This part of the FBC code
> is still pretty much a disaster and will need lots more work.
> But this should at least fix the immediate issue.
>
> v2: Deactivate FBC when the modifier changes since that will
> likely require resetting the w/a CFB stride
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 33 +++++++++++++++++++-----
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> 2 files changed, 27 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index ef2eb14f6157..85723fba6002 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
> fbc->compressed_fb.size * fbc->threshold;
> }
>
> +static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
> +{
> + struct intel_fbc *fbc = &dev_priv->fbc;
> + struct intel_fbc_state_cache *cache = &fbc->state_cache;
> +
> + if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
> + cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
> + return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
> + else
> + return 0;
> +}
> +
> +static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
> +{
> + struct intel_fbc *fbc = &dev_priv->fbc;
> +
> + return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
> +}
> +
> static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
> {
> struct intel_fbc *fbc = &dev_priv->fbc;
> @@ -902,6 +921,7 @@ static void intel_fbc_get_reg_params(struct intel_crtc *crtc,
> params->crtc.i9xx_plane = to_intel_plane(crtc->base.primary)->i9xx_plane;
>
> params->fb.format = cache->fb.format;
> + params->fb.modifier = cache->fb.modifier;
> params->fb.stride = cache->fb.stride;
>
> params->cfb_size = intel_fbc_calculate_cfb_size(dev_priv, cache);
> @@ -931,6 +951,9 @@ static bool intel_fbc_can_flip_nuke(const struct intel_crtc_state *crtc_state)
> if (params->fb.format != cache->fb.format)
> return false;
>
> + if (params->fb.modifier != cache->fb.modifier)
> + return false;
> +
> if (params->fb.stride != cache->fb.stride)
> return false;
>
> @@ -1218,7 +1241,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
>
> if (fbc->crtc) {
> if (fbc->crtc != crtc ||
> - !intel_fbc_cfb_size_changed(dev_priv))
> + (!intel_fbc_cfb_size_changed(dev_priv) &&
> + !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
> goto out;
>
> __intel_fbc_disable(dev_priv);
> @@ -1240,12 +1264,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
> goto out;
> }
>
> - if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
> - plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
> - cache->gen9_wa_cfb_stride =
> - DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
> - else
> - cache->gen9_wa_cfb_stride = 0;
> + cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
>
> drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
> pipe_name(crtc->pipe));
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 87973dedf8e7..14b095afab42 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -442,6 +442,7 @@ struct intel_fbc {
> struct {
> const struct drm_format_info *format;
> unsigned int stride;
> + u64 modifier;
> } fb;
>
> int cfb_size;
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH v2] drm/i915: Recalculate FBC w/a stride when needed
@ 2020-07-13 21:15 ` Souza, Jose
0 siblings, 0 replies; 9+ messages in thread
From: Souza, Jose @ 2020-07-13 21:15 UTC (permalink / raw)
To: ville.syrjala, intel-gfx; +Cc: stable
On Sat, 2020-07-11 at 11:03 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Currently we're failing to recalculate the gen9 FBC w/a stride
> unless something more drastic than just the modifier itself has
> changed. This often leaves us with FBC enabled with the linear
> fbdev framebuffer without the w/a stride enabled. That will cause
> an immediate underrun and FBC will get promptly disabled.
>
> Fix the problem by checking if the w/a stride is about to change,
> and go through the full dance if so. This part of the FBC code
> is still pretty much a disaster and will need lots more work.
> But this should at least fix the immediate issue.
>
> v2: Deactivate FBC when the modifier changes since that will
> likely require resetting the w/a CFB stride
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 33 +++++++++++++++++++-----
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> 2 files changed, 27 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index ef2eb14f6157..85723fba6002 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -742,6 +742,25 @@ static bool intel_fbc_cfb_size_changed(struct drm_i915_private *dev_priv)
> fbc->compressed_fb.size * fbc->threshold;
> }
>
> +static u16 intel_fbc_gen9_wa_cfb_stride(struct drm_i915_private *dev_priv)
> +{
> + struct intel_fbc *fbc = &dev_priv->fbc;
> + struct intel_fbc_state_cache *cache = &fbc->state_cache;
> +
> + if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
> + cache->fb.modifier != I915_FORMAT_MOD_X_TILED)
> + return DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
> + else
> + return 0;
> +}
> +
> +static bool intel_fbc_gen9_wa_cfb_stride_changed(struct drm_i915_private *dev_priv)
> +{
> + struct intel_fbc *fbc = &dev_priv->fbc;
> +
> + return fbc->params.gen9_wa_cfb_stride != intel_fbc_gen9_wa_cfb_stride(dev_priv);
> +}
> +
> static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
> {
> struct intel_fbc *fbc = &dev_priv->fbc;
> @@ -902,6 +921,7 @@ static void intel_fbc_get_reg_params(struct intel_crtc *crtc,
> params->crtc.i9xx_plane = to_intel_plane(crtc->base.primary)->i9xx_plane;
>
> params->fb.format = cache->fb.format;
> + params->fb.modifier = cache->fb.modifier;
> params->fb.stride = cache->fb.stride;
>
> params->cfb_size = intel_fbc_calculate_cfb_size(dev_priv, cache);
> @@ -931,6 +951,9 @@ static bool intel_fbc_can_flip_nuke(const struct intel_crtc_state *crtc_state)
> if (params->fb.format != cache->fb.format)
> return false;
>
> + if (params->fb.modifier != cache->fb.modifier)
> + return false;
> +
> if (params->fb.stride != cache->fb.stride)
> return false;
>
> @@ -1218,7 +1241,8 @@ void intel_fbc_enable(struct intel_atomic_state *state,
>
> if (fbc->crtc) {
> if (fbc->crtc != crtc ||
> - !intel_fbc_cfb_size_changed(dev_priv))
> + (!intel_fbc_cfb_size_changed(dev_priv) &&
> + !intel_fbc_gen9_wa_cfb_stride_changed(dev_priv)))
> goto out;
>
> __intel_fbc_disable(dev_priv);
> @@ -1240,12 +1264,7 @@ void intel_fbc_enable(struct intel_atomic_state *state,
> goto out;
> }
>
> - if ((IS_GEN9_BC(dev_priv) || IS_BROXTON(dev_priv)) &&
> - plane_state->hw.fb->modifier != I915_FORMAT_MOD_X_TILED)
> - cache->gen9_wa_cfb_stride =
> - DIV_ROUND_UP(cache->plane.src_w, 32 * fbc->threshold) * 8;
> - else
> - cache->gen9_wa_cfb_stride = 0;
> + cache->gen9_wa_cfb_stride = intel_fbc_gen9_wa_cfb_stride(dev_priv);
>
> drm_dbg_kms(&dev_priv->drm, "Enabling FBC on pipe %c\n",
> pipe_name(crtc->pipe));
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 87973dedf8e7..14b095afab42 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -442,6 +442,7 @@ struct intel_fbc {
> struct {
> const struct drm_format_info *format;
> unsigned int stride;
> + u64 modifier;
> } fb;
>
> int cfb_size;
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-07-13 21:15 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-10 20:34 [PATCH] drm/i915: Recalculate FBC w/a stride when needed Ville Syrjala
2020-07-10 20:34 ` [Intel-gfx] " Ville Syrjala
2020-07-10 22:19 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
2020-07-11 8:03 ` [PATCH v2] " Ville Syrjala
2020-07-11 8:03 ` [Intel-gfx] " Ville Syrjala
2020-07-13 21:15 ` Souza, Jose
2020-07-13 21:15 ` Souza, Jose
2020-07-11 8:42 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Recalculate FBC w/a stride when needed (rev2) Patchwork
2020-07-11 10:17 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.