diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 338570e61a1f..84ce66be88f2 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -12258,6 +12258,8 @@ static void skl_update_crtcs(struct drm_atomic_state *state) | |||
12258 | bool progress; | 12258 | bool progress; |
12259 | enum pipe pipe; | 12259 | enum pipe pipe; |
12260 | int i; | 12260 | int i; |
12261 | u8 hw_enabled_slices = dev_priv->wm.skl_hw.ddb.enabled_slices; | ||
12262 | u8 required_slices = intel_state->wm_results.ddb.enabled_slices; | ||
12261 | 12263 | ||
12262 | const struct skl_ddb_entry *entries[I915_MAX_PIPES] = {}; | 12264 | const struct skl_ddb_entry *entries[I915_MAX_PIPES] = {}; |
12263 | 12265 | ||
@@ -12266,6 +12268,10 @@ static void skl_update_crtcs(struct drm_atomic_state *state) | |||
12266 | if (new_crtc_state->active) | 12268 | if (new_crtc_state->active) |
12267 | entries[i] = &to_intel_crtc_state(old_crtc_state)->wm.skl.ddb; | 12269 | entries[i] = &to_intel_crtc_state(old_crtc_state)->wm.skl.ddb; |
12268 | 12270 | ||
12271 | /* If 2nd DBuf slice required, enable it here */ | ||
12272 | if (INTEL_GEN(dev_priv) >= 11 && required_slices > hw_enabled_slices) | ||
12273 | icl_dbuf_slices_update(dev_priv, required_slices); | ||
12274 | |||
12269 | /* | 12275 | /* |
12270 | * Whenever the number of active pipes changes, we need to make sure we | 12276 | * Whenever the number of active pipes changes, we need to make sure we |
12271 | * update the pipes in the right order so that their ddb allocations | 12277 | * update the pipes in the right order so that their ddb allocations |
@@ -12316,6 +12322,10 @@ static void skl_update_crtcs(struct drm_atomic_state *state) | |||
12316 | progress = true; | 12322 | progress = true; |
12317 | } | 12323 | } |
12318 | } while (progress); | 12324 | } while (progress); |
12325 | |||
12326 | /* If 2nd DBuf slice is no more required disable it */ | ||
12327 | if (INTEL_GEN(dev_priv) >= 11 && required_slices < hw_enabled_slices) | ||
12328 | icl_dbuf_slices_update(dev_priv, required_slices); | ||
12319 | } | 12329 | } |
12320 | 12330 | ||
12321 | static void intel_atomic_helper_free_state(struct drm_i915_private *dev_priv) | 12331 | static void intel_atomic_helper_free_state(struct drm_i915_private *dev_priv) |