On 9/9/2026 9:47 PM, Ville Syrjala wrote:
From: Ville Syrjälä <[email protected]> We don't have a codepath that does the color LUT update via MMIO while writing the double buffered registers via DSB/flip queue. So if we fail to allocate the DSB buffer for the LUT update we have to fall back to a full MMIO based update. Make it so. If we hit this with the current code then the entire LUT update is simply skipped. After the fix the entire update, including the LUT, will happen.
Does it need a fixes tag? Either way, LGTM. Reviewed-by: Chaitanya Kumar Borah <[email protected]>
v2: Keep the use_dsb check in intel_crtc_needs_vblank_work() for the case when we need a color update but we have no LUTs, and thus we can end up doing the update via the DSB with intel_color_uses_dsb()==false Signed-off-by: Ville Syrjälä <[email protected]> --- drivers/gpu/drm/i915/display/intel_color.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c index 87ced9f6ff40..26e92221fa19 100644 --- a/drivers/gpu/drm/i915/display/intel_color.c +++ b/drivers/gpu/drm/i915/display/intel_color.c @@ -2028,8 +2028,11 @@ void intel_color_prepare_commit(struct intel_atomic_state *state, else crtc_state->dsb_color = intel_dsb_prepare(state, crtc, INTEL_DSB_1, 1024);- if (!intel_color_uses_dsb(crtc_state))+ if (!intel_color_uses_dsb(crtc_state)) { + crtc_state->use_flipq = false; + crtc_state->use_dsb = false; return; + }display->color.funcs->load_luts(crtc_state);
