On 9/9/2026 9:47 PM, Ville Syrjala wrote:
From: Ville Syrjälä <[email protected]>
We can't currently do full modesets, fastsets, nor async
flips via either DSB nor flip qeueu. Let's checks for those
up front to reduce the clutter in the if statements.
typo: queue, check
And while at it, throw in some TODO comments to remind
us that we may want to implement these via DSB/flip queue
eventually.
Reviewed-by: Chaitanya Kumar Borah <[email protected]>
Signed-off-by: Ville Syrjälä <[email protected]>
---
drivers/gpu/drm/i915/display/intel_display.c | 22 +++++++++++++-------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c
b/drivers/gpu/drm/i915/display/intel_display.c
index 9a24eb16025a..eea2c2b40304 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7388,21 +7388,27 @@ intel_atomic_commit_type(struct intel_atomic_state
*state,
if (state->base.legacy_cursor_update)
return INTEL_COMMIT_MMIO;
- /* FIXME deal with everything */
+ /* TODO maybe enable/disable planes via DSB/flip queue during modeset?
*/
+ if (intel_crtc_needs_modeset(new_crtc_state))
+ return INTEL_COMMIT_MMIO;
+
+ /* TODO implement fastsets via DSB/flip queue */
+ if (intel_crtc_needs_fastset(new_crtc_state))
+ return INTEL_COMMIT_MMIO;
+
+ /* TODO implement async flips via DSB/flip queue */
+ if (new_crtc_state->do_async_flip)
+ return INTEL_COMMIT_MMIO;
+
+ /* TODO handle VRR with flip queue */
if (intel_flipq_supported(display) &&
- !new_crtc_state->do_async_flip &&
!new_crtc_state->vrr.enable &&
!new_crtc_state->has_psr &&
- !intel_crtc_needs_modeset(new_crtc_state) &&
- !intel_crtc_needs_fastset(new_crtc_state) &&
!intel_crtc_needs_color_update(new_crtc_state))
return INTEL_COMMIT_FLIPQ;
if (intel_dsb_supported(display) &&
- !new_crtc_state->do_async_flip &&
- (DISPLAY_VER(display) >= 20 || !new_crtc_state->has_psr) &&
- !intel_crtc_needs_modeset(new_crtc_state) &&
- !intel_crtc_needs_fastset(new_crtc_state))
+ (DISPLAY_VER(display) >= 20 || !new_crtc_state->has_psr))
return INTEL_COMMIT_DSB;
return INTEL_COMMIT_MMIO;