On Tue, Mar 23, 2021 at 08:57:42PM +0300, Dmitry Osipenko wrote: > 23.03.2021 18:54, Thierry Reding пишет: > > @@ -920,15 +934,42 @@ static void tegra_cursor_atomic_update(struct drm_plane *plane, > > value = tegra_dc_readl(dc, DC_DISP_BLEND_CURSOR_CONTROL); > > value &= ~CURSOR_DST_BLEND_MASK; > > value &= ~CURSOR_SRC_BLEND_MASK; > > - value |= CURSOR_MODE_NORMAL; > > + > > + if (dc->soc->has_nvdisplay) > > + value &= ~CURSOR_COMPOSITION_MODE_XOR; > > + else > > + value |= CURSOR_MODE_NORMAL; > > + > > value |= CURSOR_DST_BLEND_NEG_K1_TIMES_SRC; > > value |= CURSOR_SRC_BLEND_K1_TIMES_SRC; > > value |= CURSOR_ALPHA; > > tegra_dc_writel(dc, value, DC_DISP_BLEND_CURSOR_CONTROL); > > > > + /* nvdisplay relies on software for clipping */ > > + if (dc->soc->has_nvdisplay) { > > But coordinates already should be clipped by > drm_atomic_helper_check_plane_state(). Yes, and the driver goes on to use the clipped coordinates later on in this function. Thierry